<?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>161440</bug_id>
          
          <creation_ts>2016-08-31 09:53:18 -0700</creation_ts>
          <short_desc>[GTK] Remove unused GObject DOM unstable API</short_desc>
          <delta_ts>2016-09-08 02:02:38 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>WebKit Local 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>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>161438</dependson>
    
    <dependson>161681</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>tpopela</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1224980</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-08-31 09:53:18 -0700</bug_when>
    <thetext>Once patch in bug #161438 lands, GObject DOM API code will no longer be auto-generated, so it doesn&apos;t make sense to keep the unstable API. All API will be stable, since it can&apos;t be automatically changed. There&apos;s no API compatibility guarantee of the unstable part at all, but I don&apos;t want to break any application using any of the unstable APIS, so my plan is to move part of the unstable part API to stable. The approach could be something like this:

 1.- Move any unstable method/property of stable classes to stable.
 2.- Check if there&apos;s any application using API from any unstable class and move that entire class to stable.
 3.- Remove all other unstable classes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224997</commentid>
    <comment_count>1</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-08-31 10:57:01 -0700</bug_when>
    <thetext>Yes, yes, yes, thank you!

FYI: in GNOME unstable API is used by Epiphany, Evolution, and Yelp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1225279</commentid>
    <comment_count>2</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-09-01 00:17:03 -0700</bug_when>
    <thetext>epiphany
--------

WebKitDOMDOMSelection
webkit_dom_dom_window_get_selection
webkit_dom_element_get_class_list

yelp
----

webkit_dom_element_webkit_matches_selector

evolution
---------

webkit_dom_html_element_get_hidden
webkit_dom_html_element_set_hidden
WebKitDOMDOMSelection
webkit_dom_dom_window_get_selection
webkit_dom_element_insert_adjacent_html
webkit_dom_document_caret_range_from_point
webkit_dom_document_fragment_query_selector
webkit_dom_html_element_set_spellcheck
webkit_dom_range_expand

So, for now making WebKitDOMDOMSelection stable and moving all unstable methods of WebKitDOMDOMWindow, WebKitDOMHTMLElement, WebKitDOMDocument, WebKitDOMDocumentFragment, WebKitDOMRange and WebKitDOMElement to stable would work for ephy, evo and yelp. I&apos;ll ask in the mailing list if someone else is using unstable API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1227143</commentid>
    <comment_count>3</comment_count>
      <attachid>288129</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-09-07 06:06:28 -0700</bug_when>
    <thetext>Created attachment 288129
Patch

I hope I haven&apos;t missed anything. In any case we can bring back from unstable whatever we need on demand.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1227153</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-09-07 06:43:48 -0700</bug_when>
    <thetext>Committed r205543: &lt;http://trac.webkit.org/changeset/205543&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1227571</commentid>
    <comment_count>5</comment_count>
    <who name="Tomas Popela">tpopela</who>
    <bug_when>2016-09-08 02:02:38 -0700</bug_when>
    <thetext>Carlos thank you for doing this!

(In reply to comment #2)
&gt; evolution
&gt; ---------
&gt; 
&gt; webkit_dom_html_element_get_hidden
&gt; webkit_dom_html_element_set_hidden
&gt; webkit_dom_html_element_set_spellcheck

I think we don&apos;t need to expose these things as we can use the webkit_dom_element_set/get_attribute so you can remove them from the API if you want.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288129</attachid>
            <date>2016-09-07 06:06:28 -0700</date>
            <delta_ts>2016-09-07 06:20:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wkdom-unstable-api.diff</filename>
            <type>text/plain</type>
            <size>1599014</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA0M2FiNTU0Li40OTU1ODcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNTU1
IEBACiAyMDE2LTA5LTA3ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNv
bT4KIAorICAgICAgICBbR1RLXSBSZW1vdmUgdW51c2VkIEdPYmplY3QgRE9NIHVuc3RhYmxlIEFQ
SQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxNDQw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3Zl
IHVuc3RhYmxlIEdPYmplY3QgRE9NIEFQSSBub3cgdGhhdCB3ZSBubyBsb25nZXIgYXV0by1nZW5l
cmF0ZSB0aGUgYmluZGluZ3MuCisKKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUFuaW1h
dGFibGUuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2d0ay9ET00vV2ViS2l0RE9NQW5pbWF0YWJsZS5oOiBSZW1vdmVkLgorICAgICAgICAqIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NQW5pbWF0aW9uRWZm
ZWN0LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9ndGsvRE9NL1dlYktpdERPTUFuaW1hdGlvbkVmZmVjdC5oOiBSZW1vdmVkLgorICAgICAgICAq
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NQW5pbWF0aW9u
RWZmZWN0UHJpdmF0ZS5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NQW5pbWF0aW9uVGltZWxpbmUuY3BwOiBSZW1vdmVk
LgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0
RE9NQW5pbWF0aW9uVGltZWxpbmUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUFuaW1hdGlvblRpbWVsaW5lUHJpdmF0
ZS5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0
ay9ET00vV2ViS2l0RE9NQXR0ci5jcHA6CisgICAgICAgICh3ZWJraXRfZG9tX2F0dHJfZ2V0X3By
b3BlcnR5KToKKyAgICAgICAgKHdlYmtpdF9kb21fYXR0cl9jbGFzc19pbml0KToKKyAgICAgICAg
KHdlYmtpdF9kb21fYXR0cl9nZXRfcHJlZml4KTogRGVsZXRlZC4KKyAgICAgICAgKHdlYmtpdF9k
b21fYXR0cl9nZXRfbG9jYWxfbmFtZSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01BdHRyVW5zdGFibGUuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktp
dERPTUF1ZGlvVHJhY2suY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NQXVkaW9UcmFjay5oOiBSZW1vdmVkLgorICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NQXVk
aW9UcmFja0xpc3QuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NQXVkaW9UcmFja0xpc3QuaDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUF1
ZGlvVHJhY2tMaXN0UHJpdmF0ZS5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NQXVkaW9UcmFja1ByaXZhdGUuaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dl
YktpdERPTUJhclByb3AuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NQmFyUHJvcC5oOiBSZW1vdmVkLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NQmFyUHJv
cFByaXZhdGUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9ndGsvRE9NL1dlYktpdERPTUJhdHRlcnlNYW5hZ2VyLmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUJhdHRl
cnlNYW5hZ2VyLmg6IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01CYXR0ZXJ5TWFuYWdlclByaXZhdGUuaDogUmVtb3ZlZC4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERP
TUJsb2IuY3BwOgorICAgICAgICAod2Via2l0X2RvbV9ibG9iX2dldF9wcm9wZXJ0eSk6CisgICAg
ICAgICh3ZWJraXRfZG9tX2Jsb2JfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRfZG9tX2Js
b2JfZ2V0X3NpemUpOgorICAgICAgICAod2Via2l0X2RvbV9ibG9iX2luaXQpOiBEZWxldGVkLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9N
QmxvYlVuc3RhYmxlLmg6IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01DU1NSdWxlLmNwcDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUNTU1J1bGVVbnN0YWJsZS5o
OiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9E
T00vV2ViS2l0RE9NQ2hhcmFjdGVyRGF0YS5jcHA6CisgICAgICAgICh3ZWJraXRfZG9tX2NoYXJh
Y3Rlcl9kYXRhX2dldF9wcm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRfZG9tX2NoYXJhY3Rlcl9k
YXRhX2NsYXNzX2luaXQpOgorICAgICAgICAod2Via2l0X2RvbV9jaGFyYWN0ZXJfZGF0YV9nZXRf
bGVuZ3RoKToKKyAgICAgICAgKHdlYmtpdF9kb21fY2hhcmFjdGVyX2RhdGFfc2V0X3Byb3BlcnR5
KTogRGVsZXRlZC4KKyAgICAgICAgKHdlYmtpdF9kb21fY2hhcmFjdGVyX2RhdGFfc3Vic3RyaW5n
X2RhdGEpOiBEZWxldGVkLgorICAgICAgICAod2Via2l0X2RvbV9jaGFyYWN0ZXJfZGF0YV9hcHBl
bmRfZGF0YSk6IERlbGV0ZWQuCisgICAgICAgICh3ZWJraXRfZG9tX2NoYXJhY3Rlcl9kYXRhX2lu
c2VydF9kYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9ndGsvRE9NL1dlYktpdERPTUNoYXJhY3RlckRhdGFVbnN0YWJsZS5oOiBSZW1vdmVkLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9N
RE9NQXBwbGljYXRpb25DYWNoZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01ET01BcHBsaWNhdGlvbkNhY2hlLmg6
IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RP
TS9XZWJLaXRET01ET01BcHBsaWNhdGlvbkNhY2hlUHJpdmF0ZS5oOiBSZW1vdmVkLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRE9NQ1NT
TmFtZXNwYWNlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURPTUNTU05hbWVzcGFjZS5oOiBSZW1vdmVkLgorICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRE9N
Q1NTTmFtZXNwYWNlUHJpdmF0ZS5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRE9NTWltZVR5cGUuY3BwOiBSZW1vdmVk
LgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0
RE9NRE9NTWltZVR5cGUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURPTU1pbWVUeXBlQXJyYXkuY3BwOiBSZW1vdmVk
LgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0
RE9NRE9NTWltZVR5cGVBcnJheS5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRE9NTWltZVR5cGVBcnJheVByaXZhdGUu
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsv
RE9NL1dlYktpdERPTURPTU1pbWVUeXBlUHJpdmF0ZS5oOiBSZW1vdmVkLgorICAgICAgICAqIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRE9NTmFtZWRGbG93
Q29sbGVjdGlvbi5jcHA6IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01ET01OYW1lZEZsb3dDb2xsZWN0aW9uLmg6IFJlbW92
ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJL
aXRET01ET01OYW1lZEZsb3dDb2xsZWN0aW9uUHJpdmF0ZS5oOiBSZW1vdmVkLgorICAgICAgICAq
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRE9NUGx1Z2lu
LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
dGsvRE9NL1dlYktpdERPTURPTVBsdWdpbi5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRE9NUGx1Z2luQXJyYXkuY3Bw
OiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9E
T00vV2ViS2l0RE9NRE9NUGx1Z2luQXJyYXkuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURPTVBsdWdpbkFycmF5UHJp
dmF0ZS5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2d0ay9ET00vV2ViS2l0RE9NRE9NUGx1Z2luUHJpdmF0ZS5oOiBSZW1vdmVkLgorICAgICAgICAq
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRE9NU3RyaW5n
TGlzdC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ3RrL0RPTS9XZWJLaXRET01ET01TdHJpbmdMaXN0Lmg6IFJlbW92ZWQuCisgICAgICAgICog
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01ET01TdHJpbmdM
aXN0UHJpdmF0ZS5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRE9NU3RyaW5nTWFwLmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURPTVN0
cmluZ01hcC5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2d0ay9ET00vV2ViS2l0RE9NRE9NU3RyaW5nTWFwUHJpdmF0ZS5oOiBSZW1vdmVkLgorICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRE9N
VG9rZW5MaXN0Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3Rr
L0RPTS9XZWJLaXRET01ET01XaW5kb3dTcGVlY2hTeW50aGVzaXMuY3BwOiBSZW1vdmVkLgorICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRE9N
V2luZG93U3BlZWNoU3ludGhlc2lzLmg6IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01EYXRhQ3VlLmNwcDogUmVtb3ZlZC4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERP
TURhdGFDdWUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9ndGsvRE9NL1dlYktpdERPTURhdGFDdWVQcml2YXRlLmg6IFJlbW92ZWQuCisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01EYXRhYmFz
ZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z3RrL0RPTS9XZWJLaXRET01EYXRhYmFzZS5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRGF0YWJhc2VQcml2YXRlLmg6
IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RP
TS9XZWJLaXRET01Eb2N1bWVudEFuaW1hdGlvbi5jcHA6IFJlbW92ZWQuCisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01Eb2N1bWVudEFuaW1h
dGlvbi5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2d0ay9ET00vV2ViS2l0RE9NRG9jdW1lbnRUaW1lbGluZS5jcHA6IFJlbW92ZWQuCisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01Eb2N1bWVu
dFRpbWVsaW5lLmg6IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01Eb2N1bWVudFRpbWVsaW5lUHJpdmF0ZS5oOiBSZW1vdmVk
LgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0
RE9NRG9jdW1lbnRUeXBlLmNwcDoKKyAgICAgICAgKHdlYmtpdF9kb21fZG9jdW1lbnRfdHlwZV9n
ZXRfbmFtZSk6IERlbGV0ZWQuCisgICAgICAgICh3ZWJraXRfZG9tX2RvY3VtZW50X3R5cGVfZ2V0
X2VudGl0aWVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9ndGsvRE9NL1dlYktpdERPTURvY3VtZW50VHlwZVVuc3RhYmxlLmg6IFJlbW92ZWQuCisg
ICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01F
dmVudC5jcHA6CisgICAgICAgICh3ZWJraXRfZG9tX2V2ZW50X2dldF9wcm9wZXJ0eSk6CisgICAg
ICAgICh3ZWJraXRfZG9tX2V2ZW50X2NsYXNzX2luaXQpOgorICAgICAgICAod2Via2l0X2RvbV9l
dmVudF9pbml0KTogRGVsZXRlZC4KKyAgICAgICAgKHdlYmtpdF9kb21fZXZlbnRfc3RvcF9wcm9w
YWdhdGlvbik6IERlbGV0ZWQuCisgICAgICAgICh3ZWJraXRfZG9tX2V2ZW50X2dldF9idWJibGVz
KTogRGVsZXRlZC4KKyAgICAgICAgKHdlYmtpdF9kb21fZXZlbnRfZ2V0X2NhbmNlbGFibGUpOiBE
ZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00v
V2ViS2l0RE9NRXZlbnRVbnN0YWJsZS5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRmlsZS5jcHA6CisgICAgICAgICh3
ZWJraXRfZG9tX2ZpbGVfZ2V0X3Byb3BlcnR5KToKKyAgICAgICAgKHdlYmtpdF9kb21fZmlsZV9j
bGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdF9kb21fZmlsZV9nZXRfbmFtZSk6CisgICAgICAg
ICh3ZWJraXRfZG9tX2ZpbGVfaW5pdCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01GaWxlVW5zdGFibGUuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktp
dERPTUdhbWVwYWQuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NR2FtZXBhZC5oOiBSZW1vdmVkLgorICAgICAgICAq
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NR2FtZXBhZExp
c3QuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2d0ay9ET00vV2ViS2l0RE9NR2FtZXBhZExpc3QuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUdlb2xvY2F0aW9uLmNw
cDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsv
RE9NL1dlYktpdERPTUdlb2xvY2F0aW9uLmg6IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01HZW9sb2NhdGlvblByaXZhdGUu
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsv
RE9NL1dlYktpdERPTUhUTUxBbmNob3JFbGVtZW50LmNwcDoKKyAgICAgICAgKHdlYmtpdF9kb21f
aHRtbF9hbmNob3JfZWxlbWVudF9zZXRfcHJvcGVydHkpOgorICAgICAgICAod2Via2l0X2RvbV9o
dG1sX2FuY2hvcl9lbGVtZW50X2dldF9wcm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRfZG9tX2h0
bWxfYW5jaG9yX2VsZW1lbnRfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRfZG9tX2h0bWxf
YW5jaG9yX2VsZW1lbnRfaW5pdCk6IERlbGV0ZWQuCisgICAgICAgICh3ZWJraXRfZG9tX2h0bWxf
YW5jaG9yX2VsZW1lbnRfZ2V0X2NoYXJzZXQpOiBEZWxldGVkLgorICAgICAgICAod2Via2l0X2Rv
bV9odG1sX2FuY2hvcl9lbGVtZW50X3NldF9jaGFyc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKHdl
YmtpdF9kb21faHRtbF9hbmNob3JfZWxlbWVudF9nZXRfY29vcmRzKTogRGVsZXRlZC4KKyAgICAg
ICAgKHdlYmtpdF9kb21faHRtbF9hbmNob3JfZWxlbWVudF9zZXRfY29vcmRzKTogRGVsZXRlZC4K
KyAgICAgICAgKHdlYmtpdF9kb21faHRtbF9hbmNob3JfZWxlbWVudF9nZXRfdGFyZ2V0KTogRGVs
ZXRlZC4KKyAgICAgICAgKHdlYmtpdF9kb21faHRtbF9hbmNob3JfZWxlbWVudF9zZXRfdGFyZ2V0
KTogRGVsZXRlZC4KKyAgICAgICAgKHdlYmtpdF9kb21faHRtbF9hbmNob3JfZWxlbWVudF9nZXRf
dHlwZV9hdHRyKTogRGVsZXRlZC4KKyAgICAgICAgKHdlYmtpdF9kb21faHRtbF9hbmNob3JfZWxl
bWVudF9zZXRfdHlwZV9hdHRyKTogRGVsZXRlZC4KKyAgICAgICAgKHdlYmtpdF9kb21faHRtbF9h
bmNob3JfZWxlbWVudF9zZXRfaHJlZik6IERlbGV0ZWQuCisgICAgICAgICh3ZWJraXRfZG9tX2h0
bWxfYW5jaG9yX2VsZW1lbnRfZ2V0X3Byb3RvY29sKTogRGVsZXRlZC4KKyAgICAgICAgKHdlYmtp
dF9kb21faHRtbF9hbmNob3JfZWxlbWVudF9zZXRfcHJvdG9jb2wpOiBEZWxldGVkLgorICAgICAg
ICAod2Via2l0X2RvbV9odG1sX2FuY2hvcl9lbGVtZW50X3NldF9oYXNoKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhU
TUxBbmNob3JFbGVtZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MQW5jaG9yRWxlbWVudFVuc3RhYmxlLmg6IFJlbW92ZWQu
CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRE
T01IVE1MQXJlYUVsZW1lbnQuY3BwOgorICAgICAgICAod2Via2l0X2RvbV9odG1sX2FyZWFfZWxl
bWVudF9zZXRfcHJvcGVydHkpOgorICAgICAgICAod2Via2l0X2RvbV9odG1sX2FyZWFfZWxlbWVu
dF9nZXRfcHJvcGVydHkpOgorICAgICAgICAod2Via2l0X2RvbV9odG1sX2FyZWFfZWxlbWVudF9j
bGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdF9kb21faHRtbF9hcmVhX2VsZW1lbnRfaW5pdCk6
IERlbGV0ZWQuCisgICAgICAgICh3ZWJraXRfZG9tX2h0bWxfYXJlYV9lbGVtZW50X2dldF9hbHQp
OiBEZWxldGVkLgorICAgICAgICAod2Via2l0X2RvbV9odG1sX2FyZWFfZWxlbWVudF9zZXRfYWx0
KTogRGVsZXRlZC4KKyAgICAgICAgKHdlYmtpdF9kb21faHRtbF9hcmVhX2VsZW1lbnRfZ2V0X2Nv
b3Jkcyk6IERlbGV0ZWQuCisgICAgICAgICh3ZWJraXRfZG9tX2h0bWxfYXJlYV9lbGVtZW50X3Nl
dF9jb29yZHMpOiBEZWxldGVkLgorICAgICAgICAod2Via2l0X2RvbV9odG1sX2FyZWFfZWxlbWVu
dF9nZXRfaG9zdG5hbWUpOiBEZWxldGVkLgorICAgICAgICAod2Via2l0X2RvbV9odG1sX2FyZWFf
ZWxlbWVudF9zZXRfaG9zdG5hbWUpOiBEZWxldGVkLgorICAgICAgICAod2Via2l0X2RvbV9odG1s
X2FyZWFfZWxlbWVudF9nZXRfcG9ydCk6IERlbGV0ZWQuCisgICAgICAgICh3ZWJraXRfZG9tX2h0
bWxfYXJlYV9lbGVtZW50X3NldF9wb3J0KTogRGVsZXRlZC4KKyAgICAgICAgKHdlYmtpdF9kb21f
aHRtbF9hcmVhX2VsZW1lbnRfZ2V0X3BhdGhuYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKHdlYmtp
dF9kb21faHRtbF9hcmVhX2VsZW1lbnRfZ2V0X2hhc2gpOiBEZWxldGVkLgorICAgICAgICAod2Vi
a2l0X2RvbV9odG1sX2FyZWFfZWxlbWVudF9zZXRfaGFzaCk6IERlbGV0ZWQuCisgICAgICAgICog
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MQXJlYUVs
ZW1lbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9N
L1dlYktpdERPTUhUTUxBcmVhRWxlbWVudFVuc3RhYmxlLmg6IFJlbW92ZWQuCisgICAgICAgICog
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MQXVkaW9F
bGVtZW50LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxBdWRpb0VsZW1lbnQuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxB
dWRpb0VsZW1lbnRQcml2YXRlLmg6IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MQnV0dG9uRWxlbWVudC5jcHA6Cisg
ICAgICAgICh3ZWJraXRfZG9tX2h0bWxfYnV0dG9uX2VsZW1lbnRfc2V0X3Byb3BlcnR5KToKKyAg
ICAgICAgKHdlYmtpdF9kb21faHRtbF9idXR0b25fZWxlbWVudF9nZXRfcHJvcGVydHkpOgorICAg
ICAgICAod2Via2l0X2RvbV9odG1sX2J1dHRvbl9lbGVtZW50X2NsYXNzX2luaXQpOgorICAgICAg
ICAod2Via2l0X2RvbV9odG1sX2J1dHRvbl9lbGVtZW50X2dldF93aWxsX3ZhbGlkYXRlKToKKyAg
ICAgICAgKHdlYmtpdF9kb21faHRtbF9idXR0b25fZWxlbWVudF9nZXRfYXV0b2ZvY3VzKTogRGVs
ZXRlZC4KKyAgICAgICAgKHdlYmtpdF9kb21faHRtbF9idXR0b25fZWxlbWVudF9zZXRfYXV0b2Zv
Y3VzKTogRGVsZXRlZC4KKyAgICAgICAgKHdlYmtpdF9kb21faHRtbF9idXR0b25fZWxlbWVudF9n
ZXRfZGlzYWJsZWQpOiBEZWxldGVkLgorICAgICAgICAod2Via2l0X2RvbV9odG1sX2J1dHRvbl9l
bGVtZW50X3NldF9kaXNhYmxlZCk6IERlbGV0ZWQuCisgICAgICAgICh3ZWJraXRfZG9tX2h0bWxf
YnV0dG9uX2VsZW1lbnRfZ2V0X2Zvcm0pOiBEZWxldGVkLgorICAgICAgICAod2Via2l0X2RvbV9o
dG1sX2J1dHRvbl9lbGVtZW50X2dldF9idXR0b25fdHlwZSk6IERlbGV0ZWQuCisgICAgICAgICh3
ZWJraXRfZG9tX2h0bWxfYnV0dG9uX2VsZW1lbnRfc2V0X2J1dHRvbl90eXBlKTogRGVsZXRlZC4K
KyAgICAgICAgKHdlYmtpdF9kb21faHRtbF9idXR0b25fZWxlbWVudF9nZXRfbmFtZSk6IERlbGV0
ZWQuCisgICAgICAgICh3ZWJraXRfZG9tX2h0bWxfYnV0dG9uX2VsZW1lbnRfc2V0X3ZhbHVlKTog
RGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9N
L1dlYktpdERPTUhUTUxCdXR0b25FbGVtZW50VW5zdGFibGUuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxEZXRh
aWxzRWxlbWVudC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MRGV0YWlsc0VsZW1lbnQuaDogUmVtb3ZlZC4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERP
TUhUTUxEZXRhaWxzRWxlbWVudFByaXZhdGUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxGaWVsZFNldEVsZW1l
bnQuY3BwOgorICAgICAgICAod2Via2l0X2RvbV9odG1sX2ZpZWxkX3NldF9lbGVtZW50X2dldF9w
cm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRfZG9tX2h0bWxfZmllbGRfc2V0X2VsZW1lbnRfY2xh
c3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRfZG9tX2h0bWxfZmllbGRfc2V0X2VsZW1lbnRfZ2V0
X2Zvcm0pOgorICAgICAgICAod2Via2l0X2RvbV9odG1sX2ZpZWxkX3NldF9lbGVtZW50X2luaXQp
OiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9E
T00vV2ViS2l0RE9NSFRNTEZpZWxkU2V0RWxlbWVudFVuc3RhYmxlLmg6IFJlbW92ZWQuCisgICAg
ICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1M
Rm9ybUVsZW1lbnQuY3BwOgorICAgICAgICAod2Via2l0X2RvbV9odG1sX2Zvcm1fZWxlbWVudF9z
ZXRfcHJvcGVydHkpOgorICAgICAgICAod2Via2l0X2RvbV9odG1sX2Zvcm1fZWxlbWVudF9nZXRf
cHJvcGVydHkpOgorICAgICAgICAod2Via2l0X2RvbV9odG1sX2Zvcm1fZWxlbWVudF9jbGFzc19p
bml0KToKKyAgICAgICAgKHdlYmtpdF9kb21faHRtbF9mb3JtX2VsZW1lbnRfZ2V0X2xlbmd0aCk6
CisgICAgICAgICh3ZWJraXRfZG9tX2h0bWxfZm9ybV9lbGVtZW50X3N1Ym1pdCk6IERlbGV0ZWQu
CisgICAgICAgICh3ZWJraXRfZG9tX2h0bWxfZm9ybV9lbGVtZW50X3Jlc2V0KTogRGVsZXRlZC4K
KyAgICAgICAgKHdlYmtpdF9kb21faHRtbF9mb3JtX2VsZW1lbnRfZ2V0X2FjdGlvbik6IERlbGV0
ZWQuCisgICAgICAgICh3ZWJraXRfZG9tX2h0bWxfZm9ybV9lbGVtZW50X3NldF9hY3Rpb24pOiBE
ZWxldGVkLgorICAgICAgICAod2Via2l0X2RvbV9odG1sX2Zvcm1fZWxlbWVudF9nZXRfZW5jdHlw
ZSk6IERlbGV0ZWQuCisgICAgICAgICh3ZWJraXRfZG9tX2h0bWxfZm9ybV9lbGVtZW50X3NldF9l
bmNvZGluZyk6IERlbGV0ZWQuCisgICAgICAgICh3ZWJraXRfZG9tX2h0bWxfZm9ybV9lbGVtZW50
X2dldF9tZXRob2QpOiBEZWxldGVkLgorICAgICAgICAod2Via2l0X2RvbV9odG1sX2Zvcm1fZWxl
bWVudF9zZXRfbWV0aG9kKTogRGVsZXRlZC4KKyAgICAgICAgKHdlYmtpdF9kb21faHRtbF9mb3Jt
X2VsZW1lbnRfc2V0X3RhcmdldCk6IERlbGV0ZWQuCisgICAgICAgICh3ZWJraXRfZG9tX2h0bWxf
Zm9ybV9lbGVtZW50X2dldF9lbGVtZW50cyk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MRm9ybUVsZW1lbnRVbnN0
YWJsZS5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2d0ay9ET00vV2ViS2l0RE9NSFRNTEh0bWxFbGVtZW50LmNwcDoKKyAgICAgICAgKHdlYmtpdF9k
b21faHRtbF9odG1sX2VsZW1lbnRfc2V0X3Byb3BlcnR5KToKKyAgICAgICAgKHdlYmtpdF9kb21f
aHRtbF9odG1sX2VsZW1lbnRfZ2V0X3Byb3BlcnR5KToKKyAgICAgICAgKHdlYmtpdF9kb21faHRt
bF9odG1sX2VsZW1lbnRfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRfZG9tX2h0bWxfaHRt
bF9lbGVtZW50X3NldF92ZXJzaW9uKToKKyAgICAgICAgKHdlYmtpdF9kb21faHRtbF9odG1sX2Vs
ZW1lbnRfZ2V0X3ZlcnNpb24pOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTEh0bWxFbGVtZW50VW5zdGFibGUuaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9N
L1dlYktpdERPTUhUTUxJRnJhbWVFbGVtZW50LmNwcDoKKyAgICAgICAgKHdlYmtpdF9kb21faHRt
bF9pZnJhbWVfZWxlbWVudF9zZXRfcHJvcGVydHkpOgorICAgICAgICAod2Via2l0X2RvbV9odG1s
X2lmcmFtZV9lbGVtZW50X2dldF9wcm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRfZG9tX2h0bWxf
aWZyYW1lX2VsZW1lbnRfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRfZG9tX2h0bWxfaWZy
YW1lX2VsZW1lbnRfaW5pdCk6IERlbGV0ZWQuCisgICAgICAgICh3ZWJraXRfZG9tX2h0bWxfaWZy
YW1lX2VsZW1lbnRfc2V0X3NyYyk6IERlbGV0ZWQuCisgICAgICAgICh3ZWJraXRfZG9tX2h0bWxf
aWZyYW1lX2VsZW1lbnRfZ2V0X3dpZHRoKTogRGVsZXRlZC4KKyAgICAgICAgKHdlYmtpdF9kb21f
aHRtbF9pZnJhbWVfZWxlbWVudF9zZXRfd2lkdGgpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTElGcmFtZUVsZW1l
bnRVbnN0YWJsZS5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTEltYWdlRWxlbWVudC5jcHA6CisgICAgICAgICh3
ZWJraXRfZG9tX2h0bWxfaW1hZ2VfZWxlbWVudF9zZXRfcHJvcGVydHkpOgorICAgICAgICAod2Vi
a2l0X2RvbV9odG1sX2ltYWdlX2VsZW1lbnRfZ2V0X3Byb3BlcnR5KToKKyAgICAgICAgKHdlYmtp
dF9kb21faHRtbF9pbWFnZV9lbGVtZW50X2NsYXNzX2luaXQpOgorICAgICAgICAod2Via2l0X2Rv
bV9odG1sX2ltYWdlX2VsZW1lbnRfc2V0X2xvbmdfZGVzYyk6IERlbGV0ZWQuCisgICAgICAgICh3
ZWJraXRfZG9tX2h0bWxfaW1hZ2VfZWxlbWVudF9nZXRfc3JjKTogRGVsZXRlZC4KKyAgICAgICAg
KHdlYmtpdF9kb21faHRtbF9pbWFnZV9lbGVtZW50X3NldF9zcmMpOiBEZWxldGVkLgorICAgICAg
ICAod2Via2l0X2RvbV9odG1sX2ltYWdlX2VsZW1lbnRfZ2V0X25hdHVyYWxfaGVpZ2h0KTogRGVs
ZXRlZC4KKyAgICAgICAgKHdlYmtpdF9kb21faHRtbF9pbWFnZV9lbGVtZW50X2dldF9uYXR1cmFs
X3dpZHRoKTogRGVsZXRlZC4KKyAgICAgICAgKHdlYmtpdF9kb21faHRtbF9pbWFnZV9lbGVtZW50
X2dldF94KTogRGVsZXRlZC4KKyAgICAgICAgKHdlYmtpdF9kb21faHRtbF9pbWFnZV9lbGVtZW50
X2dldF95KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9ndGsvRE9NL1dlYktpdERPTUhUTUxJbWFnZUVsZW1lbnRVbnN0YWJsZS5oOiBSZW1vdmVkLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9N
SFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgICh3ZWJraXRfZG9tX2h0bWxfaW5wdXRfZWxl
bWVudF9zZXRfcHJvcGVydHkpOgorICAgICAgICAod2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1l
bnRfZ2V0X3Byb3BlcnR5KToKKyAgICAgICAgKHdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50
X2NsYXNzX2luaXQpOgorICAgICAgICAod2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1lbnRfc2V0
X2NhcHR1cmVfdHlwZSk6CisgICAgICAgICh3ZWJraXRfZG9tX2h0bWxfaW5wdXRfZWxlbWVudF9p
bml0KTogRGVsZXRlZC4KKyAgICAgICAgKHdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50X3Nl
bGVjdCk6IERlbGV0ZWQuCisgICAgICAgICh3ZWJraXRfZG9tX2h0bWxfaW5wdXRfZWxlbWVudF9n
ZXRfYWNjZXB0KTogRGVsZXRlZC4KKyAgICAgICAgKHdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVt
ZW50X3NldF9hY2NlcHQpOiBEZWxldGVkLgorICAgICAgICAod2Via2l0X2RvbV9odG1sX2lucHV0
X2VsZW1lbnRfZ2V0X2FsdCk6IERlbGV0ZWQuCisgICAgICAgICh3ZWJraXRfZG9tX2h0bWxfaW5w
dXRfZWxlbWVudF9zZXRfYWx0KTogRGVsZXRlZC4KKyAgICAgICAgKHdlYmtpdF9kb21faHRtbF9p
bnB1dF9lbGVtZW50X2dldF9kZWZhdWx0X2NoZWNrZWQpOiBEZWxldGVkLgorICAgICAgICAod2Vi
a2l0X2RvbV9odG1sX2lucHV0X2VsZW1lbnRfc2V0X2RlZmF1bHRfY2hlY2tlZCk6IERlbGV0ZWQu
CisgICAgICAgICh3ZWJraXRfZG9tX2h0bWxfaW5wdXRfZWxlbWVudF9nZXRfY2hlY2tlZCk6IERl
bGV0ZWQuCisgICAgICAgICh3ZWJraXRfZG9tX2h0bWxfaW5wdXRfZWxlbWVudF9zZXRfY2hlY2tl
ZCk6IERlbGV0ZWQuCisgICAgICAgICh3ZWJraXRfZG9tX2h0bWxfaW5wdXRfZWxlbWVudF9nZXRf
ZGlzYWJsZWQpOiBEZWxldGVkLgorICAgICAgICAod2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1l
bnRfZ2V0X2ZpbGVzKTogRGVsZXRlZC4KKyAgICAgICAgKHdlYmtpdF9kb21faHRtbF9pbnB1dF9l
bGVtZW50X3NldF9maWxlcyk6IERlbGV0ZWQuCisgICAgICAgICh3ZWJraXRfZG9tX2h0bWxfaW5w
dXRfZWxlbWVudF9zZXRfaGVpZ2h0KTogRGVsZXRlZC4KKyAgICAgICAgKHdlYmtpdF9kb21faHRt
bF9pbnB1dF9lbGVtZW50X2dldF9pbmRldGVybWluYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKHdl
YmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50X2dldF9tYXhfbGVuZ3RoKTogRGVsZXRlZC4KKyAg
ICAgICAgKHdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50X3NldF9tYXhfbGVuZ3RoKTogRGVs
ZXRlZC4KKyAgICAgICAgKHdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50X2dldF9uYW1lKTog
RGVsZXRlZC4KKyAgICAgICAgKHdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50X3NldF9uYW1l
KTogRGVsZXRlZC4KKyAgICAgICAgKHdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50X2dldF9z
aXplKTogRGVsZXRlZC4KKyAgICAgICAgKHdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50X3Nl
dF9zaXplKTogRGVsZXRlZC4KKyAgICAgICAgKHdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50
X2dldF9zcmMpOiBEZWxldGVkLgorICAgICAgICAod2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1l
bnRfc2V0X2lucHV0X3R5cGUpOiBEZWxldGVkLgorICAgICAgICAod2Via2l0X2RvbV9odG1sX2lu
cHV0X2VsZW1lbnRfZ2V0X2RlZmF1bHRfdmFsdWUpOiBEZWxldGVkLgorICAgICAgICAod2Via2l0
X2RvbV9odG1sX2lucHV0X2VsZW1lbnRfc2V0X2RlZmF1bHRfdmFsdWUpOiBEZWxldGVkLgorICAg
ICAgICAod2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1lbnRfc2V0X3ZhbHVlKTogRGVsZXRlZC4K
KyAgICAgICAgKHdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50X2dldF93aWR0aCk6IERlbGV0
ZWQuCisgICAgICAgICh3ZWJraXRfZG9tX2h0bWxfaW5wdXRfZWxlbWVudF9zZXRfd2lkdGgpOiBE
ZWxldGVkLgorICAgICAgICAod2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1lbnRfZ2V0X3dpbGxf
dmFsaWRhdGUpOiBEZWxldGVkLgorICAgICAgICAod2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1l
bnRfZ2V0X2FsaWduKTogRGVsZXRlZC4KKyAgICAgICAgKHdlYmtpdF9kb21faHRtbF9pbnB1dF9l
bGVtZW50X3NldF9hbGlnbik6IERlbGV0ZWQuCisgICAgICAgICh3ZWJraXRfZG9tX2h0bWxfaW5w
dXRfZWxlbWVudF9nZXRfdXNlX21hcCk6IERlbGV0ZWQuCisgICAgICAgICh3ZWJraXRfZG9tX2h0
bWxfaW5wdXRfZWxlbWVudF9zZXRfdXNlX21hcCk6IERlbGV0ZWQuCisgICAgICAgICh3ZWJraXRf
ZG9tX2h0bWxfaW5wdXRfZWxlbWVudF9nZXRfY2FwdHVyZV90eXBlKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxJ
bnB1dEVsZW1lbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
dGsvRE9NL1dlYktpdERPTUhUTUxJbnB1dEVsZW1lbnRVbnN0YWJsZS5oOiBSZW1vdmVkLgorICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRN
TEtleWdlbkVsZW1lbnQuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTEtleWdlbkVsZW1lbnQuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktp
dERPTUhUTUxLZXlnZW5FbGVtZW50UHJpdmF0ZS5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTExhYmVsRWxlbWVu
dC5jcHA6CisgICAgICAgICh3ZWJraXRfZG9tX2h0bWxfbGFiZWxfZWxlbWVudF9nZXRfcHJvcGVy
dHkpOgorICAgICAgICAod2Via2l0X2RvbV9odG1sX2xhYmVsX2VsZW1lbnRfY2xhc3NfaW5pdCk6
CisgICAgICAgICh3ZWJraXRfZG9tX2h0bWxfbGFiZWxfZWxlbWVudF9pbml0KTogRGVsZXRlZC4K
KyAgICAgICAgKHdlYmtpdF9kb21faHRtbF9sYWJlbF9lbGVtZW50X2dldF9mb3JtKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktp
dERPTUhUTUxMYWJlbEVsZW1lbnRVbnN0YWJsZS5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTExpbmtFbGVtZW50
LmNwcDoKKyAgICAgICAgKHdlYmtpdF9kb21faHRtbF9saW5rX2VsZW1lbnRfc2V0X3Byb3BlcnR5
KToKKyAgICAgICAgKHdlYmtpdF9kb21faHRtbF9saW5rX2VsZW1lbnRfZ2V0X3Byb3BlcnR5KToK
KyAgICAgICAgKHdlYmtpdF9kb21faHRtbF9saW5rX2VsZW1lbnRfY2xhc3NfaW5pdCk6CisgICAg
ICAgICh3ZWJraXRfZG9tX2h0bWxfbGlua19lbGVtZW50X2dldF9kaXNhYmxlZCk6IERlbGV0ZWQu
CisgICAgICAgICh3ZWJraXRfZG9tX2h0bWxfbGlua19lbGVtZW50X3NldF9kaXNhYmxlZCk6IERl
bGV0ZWQuCisgICAgICAgICh3ZWJraXRfZG9tX2h0bWxfbGlua19lbGVtZW50X2dldF9jaGFyc2V0
KTogRGVsZXRlZC4KKyAgICAgICAgKHdlYmtpdF9kb21faHRtbF9saW5rX2VsZW1lbnRfc2V0X2No
YXJzZXQpOiBEZWxldGVkLgorICAgICAgICAod2Via2l0X2RvbV9odG1sX2xpbmtfZWxlbWVudF9n
ZXRfaHJlZik6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MTGlua0VsZW1lbnQuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxMaW5rRWxlbWVudFVu
c3RhYmxlLmg6IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MTWFycXVlZUVsZW1lbnQuY3BwOgorICAgICAgICAod2Vi
a2l0X2RvbV9odG1sX21hcnF1ZWVfZWxlbWVudF9jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtp
dF9kb21faHRtbF9tYXJxdWVlX2VsZW1lbnRfc3RvcCk6CisgICAgICAgICh3ZWJraXRfZG9tX2h0
bWxfbWFycXVlZV9lbGVtZW50X2luaXQpOiBEZWxldGVkLgorICAgICAgICAod2Via2l0X2RvbV9o
dG1sX21hcnF1ZWVfZWxlbWVudF9zdGFydCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MTWFycXVlZUVsZW1lbnRV
bnN0YWJsZS5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTE1lZGlhRWxlbWVudC5jcHA6IFJlbW92ZWQuCisgICAg
ICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1M
TWVkaWFFbGVtZW50Lmg6IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MTWVkaWFFbGVtZW50UHJpdmF0ZS5oOiBSZW1v
dmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2Vi
S2l0RE9NSFRNTE9MaXN0RWxlbWVudC5jcHA6CisgICAgICAgICh3ZWJraXRfZG9tX2h0bWxfb19s
aXN0X2VsZW1lbnRfc2V0X3Byb3BlcnR5KToKKyAgICAgICAgKHdlYmtpdF9kb21faHRtbF9vX2xp
c3RfZWxlbWVudF9nZXRfcHJvcGVydHkpOgorICAgICAgICAod2Via2l0X2RvbV9odG1sX29fbGlz
dF9lbGVtZW50X2NsYXNzX2luaXQpOgorICAgICAgICAod2Via2l0X2RvbV9odG1sX29fbGlzdF9l
bGVtZW50X2luaXQpOiBEZWxldGVkLgorICAgICAgICAod2Via2l0X2RvbV9odG1sX29fbGlzdF9l
bGVtZW50X2dldF9jb21wYWN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxPTGlzdEVsZW1lbnRVbnN0YWJsZS5o
OiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9E
T00vV2ViS2l0RE9NSFRNTE9iamVjdEVsZW1lbnQuY3BwOgorICAgICAgICAod2Via2l0X2RvbV9o
dG1sX29iamVjdF9lbGVtZW50X2dldF9wcm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRfZG9tX2h0
bWxfb2JqZWN0X2VsZW1lbnRfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRfZG9tX2h0bWxf
b2JqZWN0X2VsZW1lbnRfc2V0X3Byb3BlcnR5KTogRGVsZXRlZC4KKyAgICAgICAgKHdlYmtpdF9k
b21faHRtbF9vYmplY3RfZWxlbWVudF9nZXRfZm9ybSk6IERlbGV0ZWQuCisgICAgICAgICh3ZWJr
aXRfZG9tX2h0bWxfb2JqZWN0X2VsZW1lbnRfZ2V0X2NvZGUpOiBEZWxldGVkLgorICAgICAgICAo
d2Via2l0X2RvbV9odG1sX29iamVjdF9lbGVtZW50X3NldF9jb2RlKTogRGVsZXRlZC4KKyAgICAg
ICAgKHdlYmtpdF9kb21faHRtbF9vYmplY3RfZWxlbWVudF9nZXRfYWxpZ24pOiBEZWxldGVkLgor
ICAgICAgICAod2Via2l0X2RvbV9odG1sX29iamVjdF9lbGVtZW50X3NldF9hbGlnbik6IERlbGV0
ZWQuCisgICAgICAgICh3ZWJraXRfZG9tX2h0bWxfb2JqZWN0X2VsZW1lbnRfZ2V0X2FyY2hpdmUp
OiBEZWxldGVkLgorICAgICAgICAod2Via2l0X2RvbV9odG1sX29iamVjdF9lbGVtZW50X3NldF9h
cmNoaXZlKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9ndGsvRE9NL1dlYktpdERPTUhUTUxPYmplY3RFbGVtZW50VW5zdGFibGUuaDogUmVtb3ZlZC4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERP
TUhUTUxPcHRpb25zQ29sbGVjdGlvbi5jcHA6CisgICAgICAgICh3ZWJraXRfZG9tX2h0bWxfb3B0
aW9uc19jb2xsZWN0aW9uX2dldF9zZWxlY3RlZF9pbmRleCk6IERlbGV0ZWQuCisgICAgICAgICh3
ZWJraXRfZG9tX2h0bWxfb3B0aW9uc19jb2xsZWN0aW9uX3NldF9zZWxlY3RlZF9pbmRleCk6IERl
bGV0ZWQuCisgICAgICAgICh3ZWJraXRfZG9tX2h0bWxfb3B0aW9uc19jb2xsZWN0aW9uX2dldF9s
ZW5ndGgpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2d0ay9ET00vV2ViS2l0RE9NSFRNTE9wdGlvbnNDb2xsZWN0aW9uVW5zdGFibGUuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktp
dERPTUhUTUxQcml2YXRlLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxTY3JpcHRFbGVtZW50LmNwcDoKKyAgICAgICAgKHdl
YmtpdF9kb21faHRtbF9zY3JpcHRfZWxlbWVudF9zZXRfcHJvcGVydHkpOgorICAgICAgICAod2Vi
a2l0X2RvbV9odG1sX3NjcmlwdF9lbGVtZW50X2dldF9wcm9wZXJ0eSk6CisgICAgICAgICh3ZWJr
aXRfZG9tX2h0bWxfc2NyaXB0X2VsZW1lbnRfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRf
ZG9tX2h0bWxfc2NyaXB0X2VsZW1lbnRfc2V0X3R5cGVfYXR0cik6CisgICAgICAgICh3ZWJraXRf
ZG9tX2h0bWxfc2NyaXB0X2VsZW1lbnRfaW5pdCk6IERlbGV0ZWQuCisgICAgICAgICh3ZWJraXRf
ZG9tX2h0bWxfc2NyaXB0X2VsZW1lbnRfZ2V0X2h0bWxfZm9yKTogRGVsZXRlZC4KKyAgICAgICAg
KHdlYmtpdF9kb21faHRtbF9zY3JpcHRfZWxlbWVudF9zZXRfaHRtbF9mb3IpOiBEZWxldGVkLgor
ICAgICAgICAod2Via2l0X2RvbV9odG1sX3NjcmlwdF9lbGVtZW50X2dldF9ldmVudCk6IERlbGV0
ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJL
aXRET01IVE1MU2NyaXB0RWxlbWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTFNjcmlwdEVsZW1lbnRVbnN0YWJsZS5oOiBS
ZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00v
V2ViS2l0RE9NSFRNTFNlbGVjdEVsZW1lbnQuY3BwOgorICAgICAgICAod2Via2l0X2RvbV9odG1s
X3NlbGVjdF9lbGVtZW50X3NldF9wcm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRfZG9tX2h0bWxf
c2VsZWN0X2VsZW1lbnRfZ2V0X3Byb3BlcnR5KToKKyAgICAgICAgKHdlYmtpdF9kb21faHRtbF9z
ZWxlY3RfZWxlbWVudF9jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdF9kb21faHRtbF9zZWxl
Y3RfZWxlbWVudF9nZXRfd2lsbF92YWxpZGF0ZSk6CisgICAgICAgICh3ZWJraXRfZG9tX2h0bWxf
c2VsZWN0X2VsZW1lbnRfbmFtZWRfaXRlbSk6IERlbGV0ZWQuCisgICAgICAgICh3ZWJraXRfZG9t
X2h0bWxfc2VsZWN0X2VsZW1lbnRfZ2V0X2F1dG9mb2N1cyk6IERlbGV0ZWQuCisgICAgICAgICh3
ZWJraXRfZG9tX2h0bWxfc2VsZWN0X2VsZW1lbnRfc2V0X2F1dG9mb2N1cyk6IERlbGV0ZWQuCisg
ICAgICAgICh3ZWJraXRfZG9tX2h0bWxfc2VsZWN0X2VsZW1lbnRfZ2V0X2Rpc2FibGVkKTogRGVs
ZXRlZC4KKyAgICAgICAgKHdlYmtpdF9kb21faHRtbF9zZWxlY3RfZWxlbWVudF9zZXRfZGlzYWJs
ZWQpOiBEZWxldGVkLgorICAgICAgICAod2Via2l0X2RvbV9odG1sX3NlbGVjdF9lbGVtZW50X2dl
dF9mb3JtKTogRGVsZXRlZC4KKyAgICAgICAgKHdlYmtpdF9kb21faHRtbF9zZWxlY3RfZWxlbWVu
dF9zZXRfc2l6ZSk6IERlbGV0ZWQuCisgICAgICAgICh3ZWJraXRfZG9tX2h0bWxfc2VsZWN0X2Vs
ZW1lbnRfZ2V0X3NlbGVjdF90eXBlKTogRGVsZXRlZC4KKyAgICAgICAgKHdlYmtpdF9kb21faHRt
bF9zZWxlY3RfZWxlbWVudF9nZXRfb3B0aW9ucyk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MU2VsZWN0RWxlbWVu
dFVuc3RhYmxlLmg6IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MU3R5bGVFbGVtZW50LmNwcDoKKyAgICAgICAgKHdl
YmtpdF9kb21faHRtbF9zdHlsZV9lbGVtZW50X3NldF9wcm9wZXJ0eSk6CisgICAgICAgICh3ZWJr
aXRfZG9tX2h0bWxfc3R5bGVfZWxlbWVudF9nZXRfcHJvcGVydHkpOgorICAgICAgICAod2Via2l0
X2RvbV9odG1sX3N0eWxlX2VsZW1lbnRfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRfZG9t
X2h0bWxfc3R5bGVfZWxlbWVudF9nZXRfc2hlZXQpOgorICAgICAgICAod2Via2l0X2RvbV9odG1s
X3N0eWxlX2VsZW1lbnRfZ2V0X2Rpc2FibGVkKTogRGVsZXRlZC4KKyAgICAgICAgKHdlYmtpdF9k
b21faHRtbF9zdHlsZV9lbGVtZW50X3NldF9kaXNhYmxlZCk6IERlbGV0ZWQuCisgICAgICAgICog
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MU3R5bGVF
bGVtZW50VW5zdGFibGUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxUYWJsZUVsZW1lbnQuY3BwOgorICAgICAg
ICAod2Via2l0X2RvbV9odG1sX3RhYmxlX2VsZW1lbnRfc2V0X3Byb3BlcnR5KToKKyAgICAgICAg
KHdlYmtpdF9kb21faHRtbF90YWJsZV9lbGVtZW50X2dldF9wcm9wZXJ0eSk6CisgICAgICAgICh3
ZWJraXRfZG9tX2h0bWxfdGFibGVfZWxlbWVudF9jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtp
dF9kb21faHRtbF90YWJsZV9lbGVtZW50X2luc2VydF9yb3cpOiBEZWxldGVkLgorICAgICAgICAo
d2Via2l0X2RvbV9odG1sX3RhYmxlX2VsZW1lbnRfc2V0X3N1bW1hcnkpOiBEZWxldGVkLgorICAg
ICAgICAod2Via2l0X2RvbV9odG1sX3RhYmxlX2VsZW1lbnRfZ2V0X3dpZHRoKTogRGVsZXRlZC4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERP
TUhUTUxUYWJsZUVsZW1lbnRVbnN0YWJsZS5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTFRleHRBcmVhRWxlbWVu
dC5jcHA6CisgICAgICAgICh3ZWJraXRfZG9tX2h0bWxfdGV4dF9hcmVhX2VsZW1lbnRfc2V0X3By
b3BlcnR5KToKKyAgICAgICAgKHdlYmtpdF9kb21faHRtbF90ZXh0X2FyZWFfZWxlbWVudF9nZXRf
cHJvcGVydHkpOgorICAgICAgICAod2Via2l0X2RvbV9odG1sX3RleHRfYXJlYV9lbGVtZW50X2Ns
YXNzX2luaXQpOgorICAgICAgICAod2Via2l0X2RvbV9odG1sX3RleHRfYXJlYV9lbGVtZW50X2lu
aXQpOiBEZWxldGVkLgorICAgICAgICAod2Via2l0X2RvbV9odG1sX3RleHRfYXJlYV9lbGVtZW50
X3NldF9zZWxlY3Rpb25fcmFuZ2UpOiBEZWxldGVkLgorICAgICAgICAod2Via2l0X2RvbV9odG1s
X3RleHRfYXJlYV9lbGVtZW50X3NldF9hdXRvZm9jdXMpOiBEZWxldGVkLgorICAgICAgICAod2Vi
a2l0X2RvbV9odG1sX3RleHRfYXJlYV9lbGVtZW50X2dldF9kaXNhYmxlZCk6IERlbGV0ZWQuCisg
ICAgICAgICh3ZWJraXRfZG9tX2h0bWxfdGV4dF9hcmVhX2VsZW1lbnRfZ2V0X2Zvcm0pOiBEZWxl
dGVkLgorICAgICAgICAod2Via2l0X2RvbV9odG1sX3RleHRfYXJlYV9lbGVtZW50X2dldF9uYW1l
KTogRGVsZXRlZC4KKyAgICAgICAgKHdlYmtpdF9kb21faHRtbF90ZXh0X2FyZWFfZWxlbWVudF9n
ZXRfcm93cyk6IERlbGV0ZWQuCisgICAgICAgICh3ZWJraXRfZG9tX2h0bWxfdGV4dF9hcmVhX2Vs
ZW1lbnRfc2V0X3Jvd3MpOiBEZWxldGVkLgorICAgICAgICAod2Via2l0X2RvbV9odG1sX3RleHRf
YXJlYV9lbGVtZW50X2dldF9jb2xzKTogRGVsZXRlZC4KKyAgICAgICAgKHdlYmtpdF9kb21faHRt
bF90ZXh0X2FyZWFfZWxlbWVudF9zZXRfY29scyk6IERlbGV0ZWQuCisgICAgICAgICh3ZWJraXRf
ZG9tX2h0bWxfdGV4dF9hcmVhX2VsZW1lbnRfZ2V0X2FyZWFfdHlwZSk6IERlbGV0ZWQuCisgICAg
ICAgICh3ZWJraXRfZG9tX2h0bWxfdGV4dF9hcmVhX2VsZW1lbnRfZ2V0X2RlZmF1bHRfdmFsdWUp
OiBEZWxldGVkLgorICAgICAgICAod2Via2l0X2RvbV9odG1sX3RleHRfYXJlYV9lbGVtZW50X2dl
dF92YWx1ZSk6IERlbGV0ZWQuCisgICAgICAgICh3ZWJraXRfZG9tX2h0bWxfdGV4dF9hcmVhX2Vs
ZW1lbnRfc2V0X3ZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKHdlYmtpdF9kb21faHRtbF90ZXh0
X2FyZWFfZWxlbWVudF9nZXRfd2lsbF92YWxpZGF0ZSk6IERlbGV0ZWQuCisgICAgICAgICh3ZWJr
aXRfZG9tX2h0bWxfdGV4dF9hcmVhX2VsZW1lbnRfZ2V0X3NlbGVjdGlvbl9zdGFydCk6IERlbGV0
ZWQuCisgICAgICAgICh3ZWJraXRfZG9tX2h0bWxfdGV4dF9hcmVhX2VsZW1lbnRfc2V0X3NlbGVj
dGlvbl9zdGFydCk6IERlbGV0ZWQuCisgICAgICAgICh3ZWJraXRfZG9tX2h0bWxfdGV4dF9hcmVh
X2VsZW1lbnRfZ2V0X3NlbGVjdGlvbl9lbmQpOiBEZWxldGVkLgorICAgICAgICAod2Via2l0X2Rv
bV9odG1sX3RleHRfYXJlYV9lbGVtZW50X3NldF9zZWxlY3Rpb25fZW5kKTogRGVsZXRlZC4KKyAg
ICAgICAgKHdlYmtpdF9kb21faHRtbF90ZXh0X2FyZWFfZWxlbWVudF9pc19lZGl0ZWQpOiBEZWxl
dGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2Vi
S2l0RE9NSFRNTFRleHRBcmVhRWxlbWVudFVuc3RhYmxlLmg6IFJlbW92ZWQuCisgICAgICAgICog
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MVmlkZW9F
bGVtZW50LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxWaWRlb0VsZW1lbnQuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxW
aWRlb0VsZW1lbnRQcml2YXRlLmg6IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IaXN0b3J5LmNwcDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhp
c3RvcnkuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9ndGsvRE9NL1dlYktpdERPTUhpc3RvcnlQcml2YXRlLmg6IFJlbW92ZWQuCisgICAgICAgICog
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01LZXlmcmFtZUVm
ZmVjdC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ3RrL0RPTS9XZWJLaXRET01LZXlmcmFtZUVmZmVjdC5oOiBSZW1vdmVkLgorICAgICAgICAq
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NS2V5ZnJhbWVF
ZmZlY3RQcml2YXRlLmg6IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01Mb2NhdGlvbi5jcHA6IFJlbW92ZWQuCisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01Mb2NhdGlv
bi5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0
ay9ET00vV2ViS2l0RE9NTG9jYXRpb25Qcml2YXRlLmg6IFJlbW92ZWQuCisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01NZWRpYUNvbnRyb2xs
ZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2d0ay9ET00vV2ViS2l0RE9NTWVkaWFDb250cm9sbGVyLmg6IFJlbW92ZWQuCisgICAgICAgICog
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01NZWRpYUNvbnRy
b2xsZXJQcml2YXRlLmg6IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01NZWRpYURldmljZXMuY3BwOiBSZW1vdmVkLgorICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NTWVk
aWFEZXZpY2VzLmg6IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01NZWRpYURldmljZXNQcml2YXRlLmg6IFJlbW92ZWQuCisg
ICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01N
ZWRpYUVycm9yLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTU1lZGlhRXJyb3IuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTU1lZGlhRXJy
b3JQcml2YXRlLmg6IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01NZWRpYVF1ZXJ5TGlzdC5jcHA6IFJlbW92ZWQuCisgICAg
ICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01NZWRp
YVF1ZXJ5TGlzdC5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NTWVkaWFRdWVyeUxpc3RQcml2YXRlLmg6IFJlbW92ZWQu
CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRE
T01NZWRpYVRyYWNrU3VwcG9ydGVkQ29uc3RyYWludHMuY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NTWVkaWFUcmFj
a1N1cHBvcnRlZENvbnN0cmFpbnRzLmg6IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01NZWRpYVRyYWNrU3VwcG9ydGVkQ29u
c3RyYWludHNQcml2YXRlLmg6IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01NZXNzYWdlUG9ydC5jcHA6IFJlbW92ZWQuCisg
ICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01N
ZXNzYWdlUG9ydC5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NTWVzc2FnZVBvcnRQcml2YXRlLmg6IFJlbW92ZWQuCisg
ICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01N
b3VzZUV2ZW50LmNwcDoKKyAgICAgICAgKHdlYmtpdF9kb21fbW91c2VfZXZlbnRfZ2V0X3Byb3Bl
cnR5KToKKyAgICAgICAgKHdlYmtpdF9kb21fbW91c2VfZXZlbnRfY2xhc3NfaW5pdCk6CisgICAg
ICAgICh3ZWJraXRfZG9tX21vdXNlX2V2ZW50X2dldF95KTogRGVsZXRlZC4KKyAgICAgICAgKHdl
YmtpdF9kb21fbW91c2VfZXZlbnRfZ2V0X2Zyb21fZWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAg
ICh3ZWJraXRfZG9tX21vdXNlX2V2ZW50X2dldF90b19lbGVtZW50KTogRGVsZXRlZC4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTU1vdXNl
RXZlbnRVbnN0YWJsZS5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NTmF2aWdhdG9yLmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTU5hdmln
YXRvci5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2d0ay9ET00vV2ViS2l0RE9NTmF2aWdhdG9yTWVkaWFEZXZpY2VzLmNwcDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTU5h
dmlnYXRvck1lZGlhRGV2aWNlcy5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NTmF2aWdhdG9yUHJpdmF0ZS5oOiBSZW1v
dmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2Vi
S2l0RE9NTm9kZS5jcHA6CisgICAgICAgICh3ZWJraXRfZG9tX25vZGVfZ2V0X3Byb3BlcnR5KToK
KyAgICAgICAgKHdlYmtpdF9kb21fbm9kZV9jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdF9k
b21fbm9kZV9pbml0KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTU5vZGVVbnN0YWJsZS5oOiBSZW1vdmVkLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NUGVyZm9y
bWFuY2UuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2d0ay9ET00vV2ViS2l0RE9NUGVyZm9ybWFuY2UuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVBlcmZvcm1hbmNl
RW50cnkuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2d0ay9ET00vV2ViS2l0RE9NUGVyZm9ybWFuY2VFbnRyeS5oOiBSZW1vdmVkLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NUGVyZm9y
bWFuY2VFbnRyeVByaXZhdGUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVBlcmZvcm1hbmNlTmF2aWdhdGlvbi5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RP
TS9XZWJLaXRET01QZXJmb3JtYW5jZU5hdmlnYXRpb24uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVBlcmZvcm1hbmNl
TmF2aWdhdGlvblByaXZhdGUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVBlcmZvcm1hbmNlUHJpdmF0ZS5oOiBSZW1v
dmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2Vi
S2l0RE9NUGVyZm9ybWFuY2VUaW1pbmcuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NUGVyZm9ybWFuY2VUaW1pbmcu
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsv
RE9NL1dlYktpdERPTVBlcmZvcm1hbmNlVGltaW5nUHJpdmF0ZS5oOiBSZW1vdmVkLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NUHJpdmF0
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OndyYXApOiBEZWxldGVkLgorICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NUHJpdmF0ZS5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NU2Ny
ZWVuLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9ndGsvRE9NL1dlYktpdERPTVNjcmVlbi5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NU2NyZWVuUHJpdmF0ZS5oOiBS
ZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00v
V2ViS2l0RE9NU3BlZWNoU3ludGhlc2lzLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVNwZWVjaFN5bnRoZXNpcy5o
OiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9E
T00vV2ViS2l0RE9NU3BlZWNoU3ludGhlc2lzRXZlbnQuY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NU3BlZWNoU3lu
dGhlc2lzRXZlbnQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVNwZWVjaFN5bnRoZXNpc0V2ZW50UHJpdmF0ZS5oOiBS
ZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00v
V2ViS2l0RE9NU3BlZWNoU3ludGhlc2lzUHJpdmF0ZS5oOiBSZW1vdmVkLgorICAgICAgICAqIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NU3BlZWNoU3ludGhl
c2lzVXR0ZXJhbmNlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oOiBS
ZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00v
V2ViS2l0RE9NU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlUHJpdmF0ZS5oOiBSZW1vdmVkLgorICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NU3Bl
ZWNoU3ludGhlc2lzVm9pY2UuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NU3BlZWNoU3ludGhlc2lzVm9pY2UuaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9N
L1dlYktpdERPTVNwZWVjaFN5bnRoZXNpc1ZvaWNlUHJpdmF0ZS5oOiBSZW1vdmVkLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NU3RvcmFn
ZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z3RrL0RPTS9XZWJLaXRET01TdG9yYWdlLmg6IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01TdG9yYWdlSW5mby5jcHA6IFJl
bW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9X
ZWJLaXRET01TdG9yYWdlSW5mby5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NU3RvcmFnZVByaXZhdGUuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktp
dERPTVN0b3JhZ2VRdW90YS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01TdG9yYWdlUXVvdGEuaDogUmVtb3ZlZC4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERP
TVN0eWxlTWVkaWEuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NU3R5bGVNZWRpYS5oOiBSZW1vdmVkLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NU3R5bGVN
ZWRpYVByaXZhdGUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVRleHRUcmFjay5jcHA6IFJlbW92ZWQuCisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01UZXh0VHJh
Y2suaDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
dGsvRE9NL1dlYktpdERPTVRleHRUcmFja0N1ZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01UZXh0VHJhY2tDdWUu
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsv
RE9NL1dlYktpdERPTVRleHRUcmFja0N1ZUxpc3QuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NVGV4dFRyYWNrQ3Vl
TGlzdC5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2d0ay9ET00vV2ViS2l0RE9NVGV4dFRyYWNrQ3VlTGlzdFByaXZhdGUuaDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVRl
eHRUcmFja0N1ZVByaXZhdGUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVRleHRUcmFja0xpc3QuY3BwOiBSZW1vdmVk
LgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0
RE9NVGV4dFRyYWNrTGlzdC5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NVGV4dFRyYWNrTGlzdFByaXZhdGUuaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dl
YktpdERPTVRleHRUcmFja1ByaXZhdGUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVRpbWVSYW5nZXMuY3BwOiBSZW1v
dmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2Vi
S2l0RE9NVGltZVJhbmdlcy5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NVGltZVJhbmdlc1ByaXZhdGUuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktp
dERPTVRvdWNoLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVRvdWNoLmg6IFJlbW92ZWQuCisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01Ub3VjaFByaXZhdGUu
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsv
RE9NL1dlYktpdERPTVRyYWNrRXZlbnQuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NVHJhY2tFdmVudC5oOiBSZW1v
dmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2Vi
S2l0RE9NVHJhY2tFdmVudFByaXZhdGUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVVJRXZlbnQuY3BwOgorICAgICAg
ICAod2Via2l0X2RvbV91aV9ldmVudF9nZXRfcHJvcGVydHkpOgorICAgICAgICAod2Via2l0X2Rv
bV91aV9ldmVudF9jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdF9kb21fdWlfZXZlbnRfZ2V0
X3BhZ2VfeSk6CisgICAgICAgICh3ZWJraXRfZG9tX3VpX2V2ZW50X2luaXQpOiBEZWxldGVkLgor
ICAgICAgICAod2Via2l0X2RvbV91aV9ldmVudF9pbml0X3VpX2V2ZW50KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVVJ
RXZlbnRVbnN0YWJsZS5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NVXNlck1lc3NhZ2VIYW5kbGVyLmNwcDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktp
dERPTVVzZXJNZXNzYWdlSGFuZGxlci5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NVXNlck1lc3NhZ2VIYW5kbGVyUHJp
dmF0ZS5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2d0ay9ET00vV2ViS2l0RE9NVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZS5jcHA6IFJlbW92
ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJL
aXRET01Vc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlLmg6IFJlbW92ZWQuCisgICAgICAgICog
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01Vc2VyTWVzc2Fn
ZUhhbmRsZXJzTmFtZXNwYWNlUHJpdmF0ZS5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NVlRUQ3VlLmNwcDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktp
dERPTVZUVEN1ZS5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NVlRUQ3VlUHJpdmF0ZS5oOiBSZW1vdmVkLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NVmFsaWRp
dHlTdGF0ZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01WYWxpZGl0eVN0YXRlLmg6IFJlbW92ZWQuCisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01WYWxpZGl0
eVN0YXRlUHJpdmF0ZS5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NVmlkZW9QbGF5YmFja1F1YWxpdHkuY3BwOiBSZW1v
dmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2Vi
S2l0RE9NVmlkZW9QbGF5YmFja1F1YWxpdHkuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVZpZGVvUGxheWJhY2tRdWFs
aXR5UHJpdmF0ZS5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NVmlkZW9UcmFjay5jcHA6IFJlbW92ZWQuCisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01WaWRlb1Ry
YWNrLmg6IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z3RrL0RPTS9XZWJLaXRET01WaWRlb1RyYWNrTGlzdC5jcHA6IFJlbW92ZWQuCisgICAgICAgICog
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01WaWRlb1RyYWNr
TGlzdC5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2d0ay9ET00vV2ViS2l0RE9NVmlkZW9UcmFja0xpc3RQcml2YXRlLmg6IFJlbW92ZWQuCisgICAg
ICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01WaWRl
b1RyYWNrUHJpdmF0ZS5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NV2ViQW5pbWF0aW9uLmNwcDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVdl
YkFuaW1hdGlvbi5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NV2ViQW5pbWF0aW9uUHJpdmF0ZS5oOiBSZW1vdmVkLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9N
V2ViS2l0TmFtZWRGbG93LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVdlYktpdE5hbWVkRmxvdy5oOiBSZW1vdmVk
LgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0
RE9NV2ViS2l0TmFtZWRGbG93UHJpdmF0ZS5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NV2ViS2l0TmFtZXNwYWNlLmNw
cDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsv
RE9NL1dlYktpdERPTVdlYktpdE5hbWVzcGFjZS5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NV2ViS2l0TmFtZXNwYWNl
UHJpdmF0ZS5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2d0ay9ET00vV2ViS2l0RE9NV2ViS2l0UG9pbnQuY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NV2ViS2l0UG9p
bnQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
dGsvRE9NL1dlYktpdERPTVdlYktpdFBvaW50UHJpdmF0ZS5oOiBSZW1vdmVkLgorICAgICAgICAq
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NV2hlZWxFdmVu
dC5jcHA6CisgICAgICAgICh3ZWJraXRfZG9tX3doZWVsX2V2ZW50X2dldF9wcm9wZXJ0eSk6Cisg
ICAgICAgICh3ZWJraXRfZG9tX3doZWVsX2V2ZW50X2NsYXNzX2luaXQpOgorICAgICAgICAod2Vi
a2l0X2RvbV93aGVlbF9ldmVudF9nZXRfd2hlZWxfZGVsdGEpOgorICAgICAgICAod2Via2l0X2Rv
bV93aGVlbF9ldmVudF9pbml0KTogRGVsZXRlZC4KKyAgICAgICAgKHdlYmtpdF9kb21fd2hlZWxf
ZXZlbnRfaW5pdF93aGVlbF9ldmVudCk6IERlbGV0ZWQuCisgICAgICAgICh3ZWJraXRfZG9tX3do
ZWVsX2V2ZW50X2dldF93aGVlbF9kZWx0YV94KTogRGVsZXRlZC4KKyAgICAgICAgKHdlYmtpdF9k
b21fd2hlZWxfZXZlbnRfZ2V0X3doZWVsX2RlbHRhX3kpOiBEZWxldGVkLgorICAgICAgICAqIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NV2hlZWxFdmVudFVu
c3RhYmxlLmg6IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ3RrL0RPTS9kb2NzL3dlYmtpdGRvbWd0ay00LjAtc2VjdGlvbnMudHh0OgorICAgICAgICAq
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vd2Via2l0ZG9tYXV0b2NsZWFu
dXBzLXVuc3RhYmxlLmg6IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ3RrL0RPTS93ZWJraXRkb21kZWZpbmVzLXVuc3RhYmxlLmg6IFJlbW92ZWQuCisK
KzIwMTYtMDktMDcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgor
CiAgICAgICAgIFtHVEtdIE1vdmUgc29tZSBHT2JqZWN0IERPTSB1bnN0YWJsZSBBUEkgdG8gc3Rh
YmxlCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjE2
ODEKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCA2NDc2ZjY5Li5lODdkMDg3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtMzI4LDE0ICszMjgsNyBAQCBsaXN0KEFQUEVORCBX
ZWJLaXQyX1NPVVJDRVMKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9N
L0dPYmplY3RFdmVudExpc3RlbmVyLmNwcAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2d0ay9ET00vR09iamVjdE5vZGVGaWx0ZXJDb25kaXRpb24uY3BwCiAgICAgV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9HT2JqZWN0WFBhdGhOU1Jlc29sdmVyLmNwcAot
ICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NQW5pbWF0
YWJsZS5jcHAKLSAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktp
dERPTUFuaW1hdGlvbkVmZmVjdC5jcHAKLSAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9ndGsvRE9NL1dlYktpdERPTUFuaW1hdGlvblRpbWVsaW5lLmNwcAogICAgIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NQXR0ci5jcHAKLSAgICBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUF1ZGlvVHJhY2suY3BwCi0g
ICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01BdWRpb1Ry
YWNrTGlzdC5jcHAKLSAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dl
YktpdERPTUJhclByb3AuY3BwCi0gICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3Rr
L0RPTS9XZWJLaXRET01CYXR0ZXJ5TWFuYWdlci5jcHAKICAgICBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUJsb2IuY3BwCiAgICAgV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01DREFUQVNlY3Rpb24uY3BwCiAgICAgV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01DU1NSdWxlLmNwcApA
QCAtMzQ1LDQwICszMzgsMjIgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01DU1NWYWx1ZS5jcHAK
ICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUNoYXJh
Y3RlckRhdGEuY3BwCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9X
ZWJLaXRET01Db21tZW50LmNwcAotICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0
ay9ET00vV2ViS2l0RE9NRE9NQXBwbGljYXRpb25DYWNoZS5jcHAKLSAgICBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURPTUNTU05hbWVzcGFjZS5jcHAKICAg
ICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURPTUltcGxl
bWVudGF0aW9uLmNwcAotICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00v
V2ViS2l0RE9NRE9NTWltZVR5cGUuY3BwCi0gICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ3RrL0RPTS9XZWJLaXRET01ET01NaW1lVHlwZUFycmF5LmNwcAotICAgIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRE9NTmFtZWRGbG93Q29sbGVjdGlv
bi5jcHAKLSAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERP
TURPTVBsdWdpbi5jcHAKLSAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9N
L1dlYktpdERPTURPTVBsdWdpbkFycmF5LmNwcAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRE9NU2VsZWN0aW9uLmNwcAotICAgIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRE9NU3RyaW5nTGlzdC5jcHAKLSAg
ICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURPTVN0cmlu
Z01hcC5jcHAKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktp
dERPTURPTVRva2VuTGlzdC5jcHAKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
dGsvRE9NL1dlYktpdERPTURPTVdpbmRvdy5jcHAKLSAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURPTVdpbmRvd1NwZWVjaFN5bnRoZXNpcy5jcHAKLSAg
ICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURhdGFDdWUu
Y3BwCi0gICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01E
YXRhYmFzZS5jcHAKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dl
YktpdERPTURlcHJlY2F0ZWQuY3BwCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z3RrL0RPTS9XZWJLaXRET01Eb2N1bWVudC5jcHAKLSAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURvY3VtZW50QW5pbWF0aW9uLmNwcAogICAgIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRG9jdW1lbnRGcmFnbWVu
dC5jcHAKLSAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERP
TURvY3VtZW50VGltZWxpbmUuY3BwCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z3RrL0RPTS9XZWJLaXRET01Eb2N1bWVudFR5cGUuY3BwCiAgICAgV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01FbGVtZW50LmNwcAogICAgIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRXZlbnQuY3BwCiAgICAgV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01FdmVudFRhcmdldC5jcHAK
ICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUZpbGUu
Y3BwCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01G
aWxlTGlzdC5jcHAKLSAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dl
YktpdERPTUdhbWVwYWQuY3BwCi0gICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3Rr
L0RPTS9XZWJLaXRET01HYW1lcGFkTGlzdC5jcHAKLSAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUdlb2xvY2F0aW9uLmNwcAogICAgIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTEFuY2hvckVsZW1lbnQuY3Bw
CiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1M
QXBwbGV0RWxlbWVudC5jcHAKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsv
RE9NL1dlYktpdERPTUhUTUxBcmVhRWxlbWVudC5jcHAKLSAgICBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxBdWRpb0VsZW1lbnQuY3BwCiAgICAgV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MQlJFbGVtZW50
LmNwcAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9N
SFRNTEJhc2VFbGVtZW50LmNwcAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0
ay9ET00vV2ViS2l0RE9NSFRNTEJvZHlFbGVtZW50LmNwcApAQCAtMzg2LDcgKzM2MSw2IEBAIGxp
c3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTENhbnZhc0VsZW1lbnQuY3BwCiAgICAgV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MQ29sbGVjdGlvbi5jcHAK
ICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxE
TGlzdEVsZW1lbnQuY3BwCi0gICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RP
TS9XZWJLaXRET01IVE1MRGV0YWlsc0VsZW1lbnQuY3BwCiAgICAgV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MRGlyZWN0b3J5RWxlbWVudC5jcHAKICAg
ICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxEaXZF
bGVtZW50LmNwcAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2Vi
S2l0RE9NSFRNTERvY3VtZW50LmNwcApAQCAtNDA0LDE0ICszNzgsMTIgQEAgbGlzdChBUFBFTkQg
V2ViS2l0Ml9TT1VSQ0VTCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RP
TS9XZWJLaXRET01IVE1MSUZyYW1lRWxlbWVudC5jcHAKICAgICBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxJbWFnZUVsZW1lbnQuY3BwCiAgICAgV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MSW5wdXRFbGVt
ZW50LmNwcAotICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0
RE9NSFRNTEtleWdlbkVsZW1lbnQuY3BwCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MTElFbGVtZW50LmNwcAogICAgIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTExhYmVsRWxlbWVudC5jcHAKICAg
ICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxMZWdl
bmRFbGVtZW50LmNwcAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00v
V2ViS2l0RE9NSFRNTExpbmtFbGVtZW50LmNwcAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTE1hcEVsZW1lbnQuY3BwCiAgICAgV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MTWFycXVlZUVsZW1lbnQu
Y3BwCi0gICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01I
VE1MTWVkaWFFbGVtZW50LmNwcAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0
ay9ET00vV2ViS2l0RE9NSFRNTE1lbnVFbGVtZW50LmNwcAogICAgIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTE1ldGFFbGVtZW50LmNwcAogICAgIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTE1vZEVsZW1l
bnQuY3BwCkBAIC00MzcsNjYgKzQwOSwyMyBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMK
ICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxU
ZXh0QXJlYUVsZW1lbnQuY3BwCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3Rr
L0RPTS9XZWJLaXRET01IVE1MVGl0bGVFbGVtZW50LmNwcAogICAgIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTFVMaXN0RWxlbWVudC5jcHAKLSAgICBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxWaWRlb0Vs
ZW1lbnQuY3BwCi0gICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJL
aXRET01IaXN0b3J5LmNwcAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9E
T00vV2ViS2l0RE9NS2V5Ym9hcmRFdmVudC5jcHAKLSAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUtleWZyYW1lRWZmZWN0LmNwcAotICAgIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NTG9jYXRpb24uY3BwCi0gICAg
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01NZWRpYUNvbnRy
b2xsZXIuY3BwCi0gICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJL
aXRET01NZWRpYURldmljZXMuY3BwCi0gICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z3RrL0RPTS9XZWJLaXRET01NZWRpYUVycm9yLmNwcAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NTWVkaWFMaXN0LmNwcAotICAgIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NTWVkaWFRdWVyeUxpc3QuY3BwCi0g
ICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01NZWRpYVRy
YWNrU3VwcG9ydGVkQ29uc3RyYWludHMuY3BwCi0gICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01NZXNzYWdlUG9ydC5jcHAKICAgICBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTU1vdXNlRXZlbnQuY3BwCiAgICAgV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01OYW1lZE5vZGVNYXAu
Y3BwCi0gICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01O
YXZpZ2F0b3IuY3BwCi0gICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9X
ZWJLaXRET01OYXZpZ2F0b3JNZWRpYURldmljZXMuY3BwCiAgICAgV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01Ob2RlLmNwcAogICAgIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NTm9kZUZpbHRlci5jcHAKICAgICBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTU5vZGVJdGVyYXRvci5j
cHAKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTU5v
ZGVMaXN0LmNwcAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2Vi
S2l0RE9NT2JqZWN0LmNwcAotICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9E
T00vV2ViS2l0RE9NUGVyZm9ybWFuY2UuY3BwCi0gICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01QZXJmb3JtYW5jZUVudHJ5LmNwcAotICAgIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NUGVyZm9ybWFuY2VOYXZpZ2F0
aW9uLmNwcAotICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0
RE9NUGVyZm9ybWFuY2VUaW1pbmcuY3BwCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ3RrL0RPTS9XZWJLaXRET01Qcml2YXRlLmNwcAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcAogICAg
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NUmFuZ2UuY3Bw
Ci0gICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01TY3Jl
ZW4uY3BwCi0gICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRE
T01TcGVlY2hTeW50aGVzaXMuY3BwCi0gICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z3RrL0RPTS9XZWJLaXRET01TcGVlY2hTeW50aGVzaXNFdmVudC5jcHAKLSAgICBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZS5jcHAKLSAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktp
dERPTVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmNwcAotICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NU3RvcmFnZS5jcHAKLSAgICBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVN0b3JhZ2VJbmZvLmNwcAotICAgIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NU3RvcmFnZVF1b3RhLmNw
cAotICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NU3R5
bGVNZWRpYS5jcHAKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dl
YktpdERPTVN0eWxlU2hlZXQuY3BwCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z3RrL0RPTS9XZWJLaXRET01TdHlsZVNoZWV0TGlzdC5jcHAKICAgICBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVRleHQuY3BwCi0gICAgV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01UZXh0VHJhY2suY3BwCi0gICAgV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01UZXh0VHJhY2tDdWUu
Y3BwCi0gICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01U
ZXh0VHJhY2tDdWVMaXN0LmNwcAotICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0
ay9ET00vV2ViS2l0RE9NVGV4dFRyYWNrTGlzdC5jcHAKLSAgICBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVRpbWVSYW5nZXMuY3BwCi0gICAgV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01Ub3VjaC5jcHAKLSAgICBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVRyYWNrRXZlbnQuY3Bw
CiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01UcmVl
V2Fsa2VyLmNwcAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2Vi
S2l0RE9NVUlFdmVudC5jcHAKLSAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsv
RE9NL1dlYktpdERPTVVzZXJNZXNzYWdlSGFuZGxlci5jcHAKLSAgICBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVVzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3Bh
Y2UuY3BwCi0gICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRE
T01WVFRDdWUuY3BwCi0gICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9X
ZWJLaXRET01WYWxpZGl0eVN0YXRlLmNwcAotICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2d0ay9ET00vV2ViS2l0RE9NVmlkZW9QbGF5YmFja1F1YWxpdHkuY3BwCi0gICAgV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01WaWRlb1RyYWNrLmNwcAot
ICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NVmlkZW9U
cmFja0xpc3QuY3BwCi0gICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9X
ZWJLaXRET01XZWJBbmltYXRpb24uY3BwCi0gICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ3RrL0RPTS9XZWJLaXRET01XZWJLaXROYW1lZEZsb3cuY3BwCi0gICAgV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01XZWJLaXROYW1lc3BhY2UuY3BwCi0g
ICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01XZWJLaXRQ
b2ludC5jcHAKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktp
dERPTVdoZWVsRXZlbnQuY3BwCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3Rr
L0RPTS9XZWJLaXRET01YUGF0aEV4cHJlc3Npb24uY3BwCiAgICAgV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01YUGF0aE5TUmVzb2x2ZXIuY3BwCkBAIC02MzYs
ODUgKzU2NSw0NiBAQCBzZXQoV2ViS2l0MldlYkV4dGVuc2lvbl9JTlNUQUxMRURfSEVBREVSUwog
CiBzZXQoV2ViS2l0RE9NX0lOU1RBTExFRF9IRUFERVJTCiAgICAgJHtXRUJLSVQyX0RJUn0vV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS93ZWJraXRkb21hdXRvY2xlYW51cHMu
aAotICAgICR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9E
T00vd2Via2l0ZG9tYXV0b2NsZWFudXBzLXVuc3RhYmxlLmgKICAgICAke1dFQktJVDJfRElSfS9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL3dlYmtpdGRvbWRlZmluZXMuaAot
ICAgICR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00v
d2Via2l0ZG9tZGVmaW5lcy11bnN0YWJsZS5oCiAgICAgJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS93ZWJraXRkb20uaAotICAgICR7V0VCS0lUMl9E
SVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NQW5pbWF0
YWJsZS5oCi0gICAgJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z3RrL0RPTS9XZWJLaXRET01BbmltYXRpb25FZmZlY3QuaAotICAgICR7V0VCS0lUMl9ESVJ9L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NQW5pbWF0aW9uVGlt
ZWxpbmUuaAogICAgICR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2d0ay9ET00vV2ViS2l0RE9NQXR0ci5oCi0gICAgJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01BdHRyVW5zdGFibGUuaAotICAgICR7
V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0
RE9NQXVkaW9UcmFjay5oCi0gICAgJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01BdWRpb1RyYWNrTGlzdC5oCi0gICAgJHtXRUJLSVQy
X0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01CYXJQ
cm9wLmgKLSAgICAke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
dGsvRE9NL1dlYktpdERPTUJhdHRlcnlNYW5hZ2VyLmgKICAgICAke1dFQktJVDJfRElSfS9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUJsb2IuaAotICAgICR7
V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0
RE9NQmxvYlVuc3RhYmxlLmgKICAgICAke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUNEQVRBU2VjdGlvbi5oCiAgICAgJHtXRUJLSVQy
X0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01DaGFy
YWN0ZXJEYXRhLmgKLSAgICAke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9ndGsvRE9NL1dlYktpdERPTUNoYXJhY3RlckRhdGFVbnN0YWJsZS5oCiAgICAgJHtXRUJL
SVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01D
b21tZW50LmgKICAgICAke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9ndGsvRE9NL1dlYktpdERPTUNTU1J1bGUuaAogICAgICR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NQ1NTUnVsZUxpc3QuaAotICAg
ICR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2Vi
S2l0RE9NQ1NTUnVsZVVuc3RhYmxlLmgKICAgICAke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUNTU1N0eWxlRGVjbGFyYXRpb24uaAog
ICAgICR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00v
V2ViS2l0RE9NQ1NTU3R5bGVTaGVldC5oCiAgICAgJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01DU1NWYWx1ZS5oCiAgICAgJHtXRUJL
SVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01D
dXN0b20uaAogICAgICR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2d0ay9ET00vV2ViS2l0RE9NQ3VzdG9tVW5zdGFibGUuaAotICAgICR7V0VCS0lUMl9ESVJ9L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRGF0YWJhc2UuaAot
ICAgICR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00v
V2ViS2l0RE9NRGF0YUN1ZS5oCiAgICAgJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01EZXByZWNhdGVkLmgKLSAgICAke1dFQktJVDJf
RElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURvY3Vt
ZW50QW5pbWF0aW9uLmgKICAgICAke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURvY3VtZW50RnJhZ21lbnQuaAogICAgICR7V0VCS0lU
Ml9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRG9j
dW1lbnRGcmFnbWVudFVuc3RhYmxlLmgKICAgICAke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURvY3VtZW50LmgKLSAgICAke1dFQktJ
VDJfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURv
Y3VtZW50VGltZWxpbmUuaAogICAgICR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRG9jdW1lbnRUeXBlLmgKLSAgICAke1dFQktJVDJf
RElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURvY3Vt
ZW50VHlwZVVuc3RhYmxlLmgKICAgICAke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURvY3VtZW50VW5zdGFibGUuaAotICAgICR7V0VC
S0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9N
RE9NQXBwbGljYXRpb25DYWNoZS5oCi0gICAgJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01ET01DU1NOYW1lc3BhY2UuaAogICAgICR7
V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0
RE9NRE9NSW1wbGVtZW50YXRpb24uaAotICAgICR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRE9NTWltZVR5cGVBcnJheS5oCi0gICAg
JHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJL
aXRET01ET01NaW1lVHlwZS5oCi0gICAgJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01ET01OYW1lZEZsb3dDb2xsZWN0aW9uLmgKLSAg
ICAke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dl
YktpdERPTURPTVBsdWdpbkFycmF5LmgKLSAgICAke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURPTVBsdWdpbi5oCiAgICAgJHtXRUJL
SVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01E
T01TZWxlY3Rpb24uaAotICAgICR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRE9NU3RyaW5nTGlzdC5oCi0gICAgJHtXRUJLSVQyX0RJ
Un0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01ET01TdHJp
bmdNYXAuaAogICAgICR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2d0ay9ET00vV2ViS2l0RE9NRE9NVG9rZW5MaXN0LmgKICAgICAke1dFQktJVDJfRElSfS9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURPTVdpbmRvdy5oCi0g
ICAgJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9X
ZWJLaXRET01ET01XaW5kb3dTcGVlY2hTeW50aGVzaXMuaAogICAgICR7V0VCS0lUMl9ESVJ9L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRE9NV2luZG93VW5z
dGFibGUuaAogICAgICR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2d0ay9ET00vV2ViS2l0RE9NRWxlbWVudC5oCiAgICAgJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01FbGVtZW50VW5zdGFibGUuaAog
ICAgICR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00v
V2ViS2l0RE9NRXZlbnQuaAogICAgICR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRXZlbnRUYXJnZXQuaAotICAgICR7V0VCS0lUMl9E
SVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRXZlbnRV
bnN0YWJsZS5oCiAgICAgJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ3RrL0RPTS9XZWJLaXRET01GaWxlLmgKICAgICAke1dFQktJVDJfRElSfS9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUZpbGVMaXN0LmgKLSAgICAke1dF
QktJVDJfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERP
TUZpbGVVbnN0YWJsZS5oCi0gICAgJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01HYW1lcGFkLmgKLSAgICAke1dFQktJVDJfRElSfS9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUdhbWVwYWRMaXN0
LmgKLSAgICAke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsv
RE9NL1dlYktpdERPTUdlb2xvY2F0aW9uLmgKLSAgICAke1dFQktJVDJfRElSfS9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhpc3RvcnkuaAogICAgICR7V0VC
S0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9N
SFRNTEFuY2hvckVsZW1lbnQuaAotICAgICR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTEFuY2hvckVsZW1lbnRVbnN0YWJsZS5o
CiAgICAgJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RP
TS9XZWJLaXRET01IVE1MQXBwbGV0RWxlbWVudC5oCiAgICAgJHtXRUJLSVQyX0RJUn0vV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MQXJlYUVsZW1lbnQu
aAotICAgICR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9E
T00vV2ViS2l0RE9NSFRNTEFyZWFFbGVtZW50VW5zdGFibGUuaAotICAgICR7V0VCS0lUMl9ESVJ9
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTEF1ZGlv
RWxlbWVudC5oCiAgICAgJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MQmFzZUVsZW1lbnQuaAogICAgICR7V0VCS0lUMl9ESVJ9
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTEJvZHlF
bGVtZW50LmgKICAgICAke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9ndGsvRE9NL1dlYktpdERPTUhUTUxCUkVsZW1lbnQuaAogICAgICR7V0VCS0lUMl9ESVJ9L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTEJ1dHRvbkVs
ZW1lbnQuaAotICAgICR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2d0ay9ET00vV2ViS2l0RE9NSFRNTEJ1dHRvbkVsZW1lbnRVbnN0YWJsZS5oCiAgICAgJHtXRUJL
SVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01I
VE1MQ2FudmFzRWxlbWVudC5oCiAgICAgJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MQ29sbGVjdGlvbi5oCi0gICAgJHtXRUJL
SVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01I
VE1MRGV0YWlsc0VsZW1lbnQuaAogICAgICR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTERpcmVjdG9yeUVsZW1lbnQuaAogICAg
ICR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2Vi
S2l0RE9NSFRNTERpdkVsZW1lbnQuaAogICAgICR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTERMaXN0RWxlbWVudC5oCkBAIC03
MjMsMTM3ICs2MTMsNzEgQEAgc2V0KFdlYktpdERPTV9JTlNUQUxMRURfSEVBREVSUwogICAgICR7
V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0
RE9NSFRNTEVsZW1lbnRVbnN0YWJsZS5oCiAgICAgJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MRW1iZWRFbGVtZW50LmgKICAg
ICAke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dl
YktpdERPTUhUTUxGaWVsZFNldEVsZW1lbnQuaAotICAgICR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTEZpZWxkU2V0RWxlbWVu
dFVuc3RhYmxlLmgKICAgICAke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxGb250RWxlbWVudC5oCiAgICAgJHtXRUJLSVQyX0RJ
Un0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MRm9y
bUVsZW1lbnQuaAotICAgICR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTEZvcm1FbGVtZW50VW5zdGFibGUuaAogICAgICR7V0VC
S0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9N
SFRNTEZyYW1lRWxlbWVudC5oCiAgICAgJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MRnJhbWVTZXRFbGVtZW50LmgKICAgICAk
e1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktp
dERPTUhUTUxIZWFkRWxlbWVudC5oCiAgICAgJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MSGVhZGluZ0VsZW1lbnQuaAogICAg
ICR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2Vi
S2l0RE9NSFRNTEhSRWxlbWVudC5oCiAgICAgJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MSHRtbEVsZW1lbnQuaAotICAgICR7
V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0
RE9NSFRNTEh0bWxFbGVtZW50VW5zdGFibGUuaAogICAgICR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTElGcmFtZUVsZW1lbnQu
aAotICAgICR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9E
T00vV2ViS2l0RE9NSFRNTElGcmFtZUVsZW1lbnRVbnN0YWJsZS5oCiAgICAgJHtXRUJLSVQyX0RJ
Un0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MSW1h
Z2VFbGVtZW50LmgKLSAgICAke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxJbWFnZUVsZW1lbnRVbnN0YWJsZS5oCiAgICAgJHtX
RUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRE
T01IVE1MSW5wdXRFbGVtZW50LmgKLSAgICAke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxJbnB1dEVsZW1lbnRVbnN0YWJsZS5o
Ci0gICAgJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RP
TS9XZWJLaXRET01IVE1MS2V5Z2VuRWxlbWVudC5oCiAgICAgJHtXRUJLSVQyX0RJUn0vV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MTGFiZWxFbGVtZW50
LmgKLSAgICAke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsv
RE9NL1dlYktpdERPTUhUTUxMYWJlbEVsZW1lbnRVbnN0YWJsZS5oCiAgICAgJHtXRUJLSVQyX0RJ
Un0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MTGVn
ZW5kRWxlbWVudC5oCiAgICAgJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MTElFbGVtZW50LmgKICAgICAke1dFQktJVDJfRElS
fS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxMaW5r
RWxlbWVudC5oCi0gICAgJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MTGlua0VsZW1lbnRVbnN0YWJsZS5oCiAgICAgJHtXRUJL
SVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01I
VE1MTWFwRWxlbWVudC5oCiAgICAgJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MTWFycXVlZUVsZW1lbnQuaAotICAgICR7V0VC
S0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9N
SFRNTE1hcnF1ZWVFbGVtZW50VW5zdGFibGUuaAotICAgICR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTE1lZGlhRWxlbWVudC5o
CiAgICAgJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RP
TS9XZWJLaXRET01IVE1MTWVudUVsZW1lbnQuaAogICAgICR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTE1ldGFFbGVtZW50LmgK
ICAgICAke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9N
L1dlYktpdERPTUhUTUxNb2RFbGVtZW50LmgKICAgICAke1dFQktJVDJfRElSfS9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxPYmplY3RFbGVtZW50LmgK
LSAgICAke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9N
L1dlYktpdERPTUhUTUxPYmplY3RFbGVtZW50VW5zdGFibGUuaAogICAgICR7V0VCS0lUMl9ESVJ9
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTE9MaXN0
RWxlbWVudC5oCi0gICAgJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MT0xpc3RFbGVtZW50VW5zdGFibGUuaAogICAgICR7V0VC
S0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9N
SFRNTE9wdEdyb3VwRWxlbWVudC5oCiAgICAgJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MT3B0aW9uRWxlbWVudC5oCiAgICAg
JHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJL
aXRET01IVE1MT3B0aW9uc0NvbGxlY3Rpb24uaAotICAgICR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTE9wdGlvbnNDb2xsZWN0
aW9uVW5zdGFibGUuaAogICAgICR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTFBhcmFncmFwaEVsZW1lbnQuaAogICAgICR7V0VC
S0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9N
SFRNTFBhcmFtRWxlbWVudC5oCiAgICAgJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MUHJlRWxlbWVudC5oCiAgICAgJHtXRUJL
SVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01I
VE1MUXVvdGVFbGVtZW50LmgKICAgICAke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxTY3JpcHRFbGVtZW50LmgKLSAgICAke1dF
QktJVDJfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERP
TUhUTUxTY3JpcHRFbGVtZW50VW5zdGFibGUuaAogICAgICR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTFNlbGVjdEVsZW1lbnQu
aAotICAgICR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9E
T00vV2ViS2l0RE9NSFRNTFNlbGVjdEVsZW1lbnRVbnN0YWJsZS5oCiAgICAgJHtXRUJLSVQyX0RJ
Un0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MU3R5
bGVFbGVtZW50LmgKLSAgICAke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxTdHlsZUVsZW1lbnRVbnN0YWJsZS5oCiAgICAgJHtX
RUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRE
T01IVE1MVGFibGVDYXB0aW9uRWxlbWVudC5oCiAgICAgJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MVGFibGVDZWxsRWxlbWVu
dC5oCiAgICAgJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3Rr
L0RPTS9XZWJLaXRET01IVE1MVGFibGVDb2xFbGVtZW50LmgKICAgICAke1dFQktJVDJfRElSfS9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxUYWJsZUVs
ZW1lbnQuaAotICAgICR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2d0ay9ET00vV2ViS2l0RE9NSFRNTFRhYmxlRWxlbWVudFVuc3RhYmxlLmgKICAgICAke1dFQktJ
VDJfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhU
TUxUYWJsZVJvd0VsZW1lbnQuaAogICAgICR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQuaAog
ICAgICR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00v
V2ViS2l0RE9NSFRNTFRleHRBcmVhRWxlbWVudC5oCi0gICAgJHtXRUJLSVQyX0RJUn0vV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MVGV4dEFyZWFFbGVt
ZW50VW5zdGFibGUuaAogICAgICR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTFRpdGxlRWxlbWVudC5oCiAgICAgJHtXRUJLSVQy
X0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1M
VUxpc3RFbGVtZW50LmgKLSAgICAke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxWaWRlb0VsZW1lbnQuaAogICAgICR7V0VCS0lU
Ml9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NS2V5
Ym9hcmRFdmVudC5oCi0gICAgJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01LZXlmcmFtZUVmZmVjdC5oCi0gICAgJHtXRUJLSVQyX0RJ
Un0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01Mb2NhdGlv
bi5oCi0gICAgJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3Rr
L0RPTS9XZWJLaXRET01NZWRpYUNvbnRyb2xsZXIuaAotICAgICR7V0VCS0lUMl9ESVJ9L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NTWVkaWFEZXZpY2VzLmgK
LSAgICAke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9N
L1dlYktpdERPTU1lZGlhRXJyb3IuaAogICAgICR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NTWVkaWFMaXN0LmgKLSAgICAke1dFQktJ
VDJfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTU1l
ZGlhUXVlcnlMaXN0LmgKLSAgICAke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTU1lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50cy5o
Ci0gICAgJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RP
TS9XZWJLaXRET01NZXNzYWdlUG9ydC5oCiAgICAgJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01Nb3VzZUV2ZW50LmgKLSAgICAke1dF
QktJVDJfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERP
TU1vdXNlRXZlbnRVbnN0YWJsZS5oCiAgICAgJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01OYW1lZE5vZGVNYXAuaAotICAgICR7V0VC
S0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9N
TmF2aWdhdG9yLmgKLSAgICAke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9ndGsvRE9NL1dlYktpdERPTU5hdmlnYXRvck1lZGlhRGV2aWNlcy5oCiAgICAgJHtXRUJL
SVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01O
b2RlRmlsdGVyLmgKICAgICAke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9ndGsvRE9NL1dlYktpdERPTU5vZGUuaAogICAgICR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NTm9kZUl0ZXJhdG9yLmgKICAg
ICAke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dl
YktpdERPTU5vZGVMaXN0LmgKLSAgICAke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTU5vZGVVbnN0YWJsZS5oCiAgICAgJHtXRUJLSVQy
X0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01PYmpl
Y3QuaAotICAgICR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0
ay9ET00vV2ViS2l0RE9NUGVyZm9ybWFuY2VFbnRyeS5oCi0gICAgJHtXRUJLSVQyX0RJUn0vV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01QZXJmb3JtYW5jZS5o
Ci0gICAgJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RP
TS9XZWJLaXRET01QZXJmb3JtYW5jZU5hdmlnYXRpb24uaAotICAgICR7V0VCS0lUMl9ESVJ9L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NUGVyZm9ybWFuY2VU
aW1pbmcuaAogICAgICR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2d0ay9ET00vV2ViS2l0RE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgKICAgICAke1dFQktJVDJf
RElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVJhbmdl
LmgKICAgICAke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsv
RE9NL1dlYktpdERPTVJhbmdlVW5zdGFibGUuaAotICAgICR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NU2NyZWVuLmgKLSAgICAke1dF
QktJVDJfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERP
TVNwZWVjaFN5bnRoZXNpc0V2ZW50LmgKLSAgICAke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVNwZWVjaFN5bnRoZXNpcy5oCi0gICAg
JHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJL
aXRET01TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaAotICAgICR7V0VCS0lUMl9ESVJ9L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NU3BlZWNoU3ludGhlc2lz
Vm9pY2UuaAotICAgICR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2d0ay9ET00vV2ViS2l0RE9NU3RvcmFnZS5oCi0gICAgJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01TdG9yYWdlSW5mby5oCi0gICAg
JHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJL
aXRET01TdG9yYWdlUXVvdGEuaAotICAgICR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NU3R5bGVNZWRpYS5oCiAgICAgJHtXRUJLSVQy
X0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01TdHls
ZVNoZWV0LmgKICAgICAke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9ndGsvRE9NL1dlYktpdERPTVN0eWxlU2hlZXRMaXN0LmgKICAgICAke1dFQktJVDJfRElSfS9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVRleHQuaAotICAg
ICR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2Vi
S2l0RE9NVGV4dFRyYWNrQ3VlLmgKLSAgICAke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVRleHRUcmFja0N1ZUxpc3QuaAotICAgICR7
V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0
RE9NVGV4dFRyYWNrLmgKLSAgICAke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVRleHRUcmFja0xpc3QuaAotICAgICR7V0VCS0lUMl9E
SVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NVGltZVJh
bmdlcy5oCi0gICAgJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z3RrL0RPTS9XZWJLaXRET01Ub3VjaC5oCi0gICAgJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01UcmFja0V2ZW50LmgKICAgICAke1dF
QktJVDJfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERP
TVRyZWVXYWxrZXIuaAogICAgICR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NVUlFdmVudC5oCi0gICAgJHtXRUJLSVQyX0RJUn0vV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01VSUV2ZW50VW5zdGFi
bGUuaAotICAgICR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0
ay9ET00vV2ViS2l0RE9NVXNlck1lc3NhZ2VIYW5kbGVyLmgKLSAgICAke1dFQktJVDJfRElSfS9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVVzZXJNZXNzYWdl
SGFuZGxlcnNOYW1lc3BhY2UuaAotICAgICR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NVmFsaWRpdHlTdGF0ZS5oCi0gICAgJHtXRUJL
SVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01W
aWRlb1BsYXliYWNrUXVhbGl0eS5oCi0gICAgJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01WaWRlb1RyYWNrLmgKLSAgICAke1dFQktJ
VDJfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVZp
ZGVvVHJhY2tMaXN0LmgKLSAgICAke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVZUVEN1ZS5oCi0gICAgJHtXRUJLSVQyX0RJUn0vV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01XZWJBbmltYXRpb24u
aAotICAgICR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9E
T00vV2ViS2l0RE9NV2ViS2l0TmFtZWRGbG93LmgKLSAgICAke1dFQktJVDJfRElSfS9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVdlYktpdE5hbWVzcGFjZS5o
Ci0gICAgJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RP
TS9XZWJLaXRET01XZWJLaXRQb2ludC5oCiAgICAgJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01XaGVlbEV2ZW50LmgKLSAgICAke1dF
QktJVDJfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERP
TVdoZWVsRXZlbnRVbnN0YWJsZS5oCiAgICAgJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01YUGF0aEV4cHJlc3Npb24uaAogICAgICR7
V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0
RE9NWFBhdGhOU1Jlc29sdmVyLmgKICAgICAke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVhQYXRoUmVzdWx0LmgKICkKIAogc2V0KFdl
YktpdERPTV9HVEtET0NfSEVBREVSUwotICAgICR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NQW5pbWF0YWJsZS5oCiAgICAgJHtXRUJL
SVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01B
dHRyLmgKICAgICAke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
dGsvRE9NL1dlYktpdERPTUJsb2IuaAogICAgICR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NQ0RBVEFTZWN0aW9uLmgKQEAgLTg2Niw3
ICs2OTAsNiBAQCBzZXQoV2ViS2l0RE9NX0dUS0RPQ19IRUFERVJTCiAgICAgJHtXRUJLSVQyX0RJ
Un0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01DU1NWYWx1
ZS5oCiAgICAgJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3Rr
L0RPTS9XZWJLaXRET01DdXN0b20uaAogICAgICR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRGVwcmVjYXRlZC5oCi0gICAgJHtXRUJL
SVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01E
b2N1bWVudEFuaW1hdGlvbi5oCiAgICAgJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01Eb2N1bWVudEZyYWdtZW50LmgKICAgICAke1dF
QktJVDJfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERP
TURvY3VtZW50LmgKICAgICAke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9ndGsvRE9NL1dlYktpdERPTURvY3VtZW50VHlwZS5oCkBAIC04NzksOCArNzAyLDYgQEAg
c2V0KFdlYktpdERPTV9HVEtET0NfSEVBREVSUwogICAgICR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRXZlbnRUYXJnZXQuaAogICAg
ICR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2Vi
S2l0RE9NRmlsZS5oCiAgICAgJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01GaWxlTGlzdC5oCi0gICAgJHtXRUJLSVQyX0RJUn0vV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01HYW1lcGFkLmgKLSAg
ICAke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dl
YktpdERPTUdhbWVwYWRMaXN0LmgKICAgICAke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxBbmNob3JFbGVtZW50LmgKICAgICAk
e1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktp
dERPTUhUTUxBcHBsZXRFbGVtZW50LmgKICAgICAke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxBcmVhRWxlbWVudC5oCkBAIC05
NDIsNyArNzYzLDYgQEAgc2V0KFdlYktpdERPTV9HVEtET0NfSEVBREVSUwogICAgICR7V0VCS0lU
Ml9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NTWVk
aWFMaXN0LmgKICAgICAke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9ndGsvRE9NL1dlYktpdERPTU1vdXNlRXZlbnQuaAogICAgICR7V0VCS0lUMl9ESVJ9L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NTmFtZWROb2RlTWFwLmgK
LSAgICAke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9N
L1dlYktpdERPTU5hdmlnYXRvck1lZGlhRGV2aWNlcy5oCiAgICAgJHtXRUJLSVQyX0RJUn0vV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01Ob2RlRmlsdGVyLmgK
ICAgICAke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9N
L1dlYktpdERPTU5vZGUuaAogICAgICR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NTm9kZUl0ZXJhdG9yLmgKQEAgLTk1MCw4ICs3NzAs
NiBAQCBzZXQoV2ViS2l0RE9NX0dUS0RPQ19IRUFERVJTCiAgICAgJHtXRUJLSVQyX0RJUn0vV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01PYmplY3QuaAogICAg
ICR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2Vi
S2l0RE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgKICAgICAke1dFQktJVDJfRElSfS9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVJhbmdlLmgKLSAgICAke1dF
QktJVDJfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERP
TVN0b3JhZ2VJbmZvLmgKLSAgICAke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVN0b3JhZ2VRdW90YS5oCiAgICAgJHtXRUJLSVQyX0RJ
Un0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01TdHlsZVNo
ZWV0LmgKICAgICAke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
dGsvRE9NL1dlYktpdERPTVN0eWxlU2hlZXRMaXN0LmgKICAgICAke1dFQktJVDJfRElSfS9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVRleHQuaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RP
TS9XZWJLaXRET01BbmltYXRhYmxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NQW5pbWF0YWJsZS5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY0MTBkYjguLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01BbmltYXRh
YmxlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotLyoKLSAgICBUaGlzIGZpbGUg
aXMgZ2VuZXJhdGVkIGp1c3QgdG8gdGVsbCBidWlsZCBzY3JpcHRzIHRoYXQgV2ViS2l0RE9NQW5p
bWF0YWJsZS5oIGFuZAotICAgIFdlYktpdERPTUFuaW1hdGFibGUuY3BwIGFyZSBjcmVhdGVkIGZv
ciBBbmltYXRhYmxlLmlkbCwgYW5kIHRodXMKLSAgICBwcmV2ZW50IHRoZSBidWlsZCBzY3JpcHRz
IGZyb20gdHJ5aW5nIHRvIGdlbmVyYXRlIFdlYktpdERPTUFuaW1hdGFibGUuaCBhbmQKLSAgICBX
ZWJLaXRET01BbmltYXRhYmxlLmNwcCBhdCBldmVyeSBidWlsZC4gVGhpcyBmaWxlIG11c3Qgbm90
IGJlIHRyaWVkIHRvIGNvbXBpbGUuCi0qLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01BbmltYXRhYmxlLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dl
YktpdERPTUFuaW1hdGFibGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjQxMGRi
OC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9ndGsvRE9NL1dlYktpdERPTUFuaW1hdGFibGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDYg
KzAsMCBAQAotLyoKLSAgICBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGp1c3QgdG8gdGVsbCBidWls
ZCBzY3JpcHRzIHRoYXQgV2ViS2l0RE9NQW5pbWF0YWJsZS5oIGFuZAotICAgIFdlYktpdERPTUFu
aW1hdGFibGUuY3BwIGFyZSBjcmVhdGVkIGZvciBBbmltYXRhYmxlLmlkbCwgYW5kIHRodXMKLSAg
ICBwcmV2ZW50IHRoZSBidWlsZCBzY3JpcHRzIGZyb20gdHJ5aW5nIHRvIGdlbmVyYXRlIFdlYktp
dERPTUFuaW1hdGFibGUuaCBhbmQKLSAgICBXZWJLaXRET01BbmltYXRhYmxlLmNwcCBhdCBldmVy
eSBidWlsZC4gVGhpcyBmaWxlIG11c3Qgbm90IGJlIHRyaWVkIHRvIGNvbXBpbGUuCi0qLwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3Rr
L0RPTS9XZWJLaXRET01BbmltYXRpb25FZmZlY3QuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01BbmltYXRpb25FZmZlY3Qu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NWJjYzg4Li4wMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2Vi
S2l0RE9NQW5pbWF0aW9uRWZmZWN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDExMCArMCwwIEBA
Ci0vKgotICogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJv
amVjdC4KLSAqICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRp
bmdzLnBsLiBETyBOT1QgTU9ESUZZIQotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAq
ICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAg
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQotICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiV2ViS2l0RE9NQW5pbWF0aW9uRWZmZWN0LmgiCi0KLSNpbmNsdWRlIDxXZWJDb3Jl
L0NTU0ltcG9ydFJ1bGUuaD4KLSNpbmNsdWRlICJET01PYmplY3RDYWNoZS5oIgotI2luY2x1ZGUg
PFdlYkNvcmUvRG9jdW1lbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0V4Y2VwdGlvbkNvZGUuaD4K
LSNpbmNsdWRlIDxXZWJDb3JlL0V4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbi5oPgotI2luY2x1ZGUg
PFdlYkNvcmUvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmg+Ci0jaW5jbHVkZSAiV2ViS2l0RE9NQW5p
bWF0aW9uRWZmZWN0UHJpdmF0ZS5oIgotI2luY2x1ZGUgIldlYktpdERPTVByaXZhdGUuaCIKLSNp
bmNsdWRlICJDb252ZXJ0VG9VVEY4U3RyaW5nLmgiCi0jaW5jbHVkZSA8d3RmL0dldFB0ci5oPgot
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotI2RlZmluZSBXRUJLSVRfRE9NX0FOSU1BVElPTl9F
RkZFQ1RfR0VUX1BSSVZBVEUob2JqKSBHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUob2JqLCBX
RUJLSVRfRE9NX1RZUEVfQU5JTUFUSU9OX0VGRkVDVCwgV2ViS2l0RE9NQW5pbWF0aW9uRWZmZWN0
UHJpdmF0ZSkKLQotdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdERPTUFuaW1hdGlvbkVmZmVjdFByaXZh
dGUgewotI2lmIEVOQUJMRShXRUJfQU5JTUFUSU9OUykKLSAgICBSZWZQdHI8V2ViQ29yZTo6QW5p
bWF0aW9uRWZmZWN0PiBjb3JlT2JqZWN0OwotI2VuZGlmIC8vIEVOQUJMRShXRUJfQU5JTUFUSU9O
UykKLX0gV2ViS2l0RE9NQW5pbWF0aW9uRWZmZWN0UHJpdmF0ZTsKLQotI2lmIEVOQUJMRShXRUJf
QU5JTUFUSU9OUykKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVdlYktpdERPTUFuaW1hdGlvbkVm
ZmVjdCoga2l0KFdlYkNvcmU6OkFuaW1hdGlvbkVmZmVjdCogb2JqKQotewotICAgIGlmICghb2Jq
KQotICAgICAgICByZXR1cm4gMDsKLQotICAgIGlmIChncG9pbnRlciByZXQgPSBET01PYmplY3RD
YWNoZTo6Z2V0KG9iaikpCi0gICAgICAgIHJldHVybiBXRUJLSVRfRE9NX0FOSU1BVElPTl9FRkZF
Q1QocmV0KTsKLQotICAgIHJldHVybiB3cmFwQW5pbWF0aW9uRWZmZWN0KG9iaik7Ci19Ci0KLVdl
YkNvcmU6OkFuaW1hdGlvbkVmZmVjdCogY29yZShXZWJLaXRET01BbmltYXRpb25FZmZlY3QqIHJl
cXVlc3QpCi17Ci0gICAgcmV0dXJuIHJlcXVlc3QgPyBzdGF0aWNfY2FzdDxXZWJDb3JlOjpBbmlt
YXRpb25FZmZlY3QqPihXRUJLSVRfRE9NX09CSkVDVChyZXF1ZXN0KS0+Y29yZU9iamVjdCkgOiAw
OwotfQotCi1XZWJLaXRET01BbmltYXRpb25FZmZlY3QqIHdyYXBBbmltYXRpb25FZmZlY3QoV2Vi
Q29yZTo6QW5pbWF0aW9uRWZmZWN0KiBjb3JlT2JqZWN0KQotewotICAgIEFTU0VSVChjb3JlT2Jq
ZWN0KTsKLSAgICByZXR1cm4gV0VCS0lUX0RPTV9BTklNQVRJT05fRUZGRUNUKGdfb2JqZWN0X25l
dyhXRUJLSVRfRE9NX1RZUEVfQU5JTUFUSU9OX0VGRkVDVCwgImNvcmUtb2JqZWN0IiwgY29yZU9i
amVjdCwgbnVsbHB0cikpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8v
IEVOQUJMRShXRUJfQU5JTUFUSU9OUykKLQotR19ERUZJTkVfVFlQRShXZWJLaXRET01BbmltYXRp
b25FZmZlY3QsIHdlYmtpdF9kb21fYW5pbWF0aW9uX2VmZmVjdCwgV0VCS0lUX0RPTV9UWVBFX09C
SkVDVCkKLQotc3RhdGljIHZvaWQgd2Via2l0X2RvbV9hbmltYXRpb25fZWZmZWN0X2ZpbmFsaXpl
KEdPYmplY3QqIG9iamVjdCkKLXsKLSAgICBXZWJLaXRET01BbmltYXRpb25FZmZlY3RQcml2YXRl
KiBwcml2ID0gV0VCS0lUX0RPTV9BTklNQVRJT05fRUZGRUNUX0dFVF9QUklWQVRFKG9iamVjdCk7
Ci0jaWYgRU5BQkxFKFdFQl9BTklNQVRJT05TKQotICAgIFdlYktpdDo6RE9NT2JqZWN0Q2FjaGU6
OmZvcmdldChwcml2LT5jb3JlT2JqZWN0LmdldCgpKTsKLSNlbmRpZiAvLyBFTkFCTEUoV0VCX0FO
SU1BVElPTlMpCi0gICAgcHJpdi0+fldlYktpdERPTUFuaW1hdGlvbkVmZmVjdFByaXZhdGUoKTsK
LSAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfZG9tX2FuaW1hdGlvbl9lZmZlY3RfcGFyZW50X2Ns
YXNzKS0+ZmluYWxpemUob2JqZWN0KTsKLX0KLQotc3RhdGljIEdPYmplY3QqIHdlYmtpdF9kb21f
YW5pbWF0aW9uX2VmZmVjdF9jb25zdHJ1Y3RvcihHVHlwZSB0eXBlLCBndWludCBjb25zdHJ1Y3RQ
cm9wZXJ0aWVzQ291bnQsIEdPYmplY3RDb25zdHJ1Y3RQYXJhbSogY29uc3RydWN0UHJvcGVydGll
cykKLXsKLSAgICBHT2JqZWN0KiBvYmplY3QgPSBHX09CSkVDVF9DTEFTUyh3ZWJraXRfZG9tX2Fu
aW1hdGlvbl9lZmZlY3RfcGFyZW50X2NsYXNzKS0+Y29uc3RydWN0b3IodHlwZSwgY29uc3RydWN0
UHJvcGVydGllc0NvdW50LCBjb25zdHJ1Y3RQcm9wZXJ0aWVzKTsKLSNpZiBFTkFCTEUoV0VCX0FO
SU1BVElPTlMpCi0gICAgV2ViS2l0RE9NQW5pbWF0aW9uRWZmZWN0UHJpdmF0ZSogcHJpdiA9IFdF
QktJVF9ET01fQU5JTUFUSU9OX0VGRkVDVF9HRVRfUFJJVkFURShvYmplY3QpOwotICAgIHByaXYt
PmNvcmVPYmplY3QgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpBbmltYXRpb25FZmZlY3QqPihXRUJL
SVRfRE9NX09CSkVDVChvYmplY3QpLT5jb3JlT2JqZWN0KTsKLSAgICBXZWJLaXQ6OkRPTU9iamVj
dENhY2hlOjpwdXQocHJpdi0+Y29yZU9iamVjdC5nZXQoKSwgb2JqZWN0KTsKLSNlbmRpZiAvLyBF
TkFCTEUoV0VCX0FOSU1BVElPTlMpCi0gICAgcmV0dXJuIG9iamVjdDsKLX0KLQotc3RhdGljIHZv
aWQgd2Via2l0X2RvbV9hbmltYXRpb25fZWZmZWN0X2NsYXNzX2luaXQoV2ViS2l0RE9NQW5pbWF0
aW9uRWZmZWN0Q2xhc3MqIHJlcXVlc3RDbGFzcykKLXsKLSAgICBHT2JqZWN0Q2xhc3MqIGdvYmpl
Y3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKHJlcXVlc3RDbGFzcyk7Ci0gICAgZ190eXBlX2NsYXNz
X2FkZF9wcml2YXRlKGdvYmplY3RDbGFzcywgc2l6ZW9mKFdlYktpdERPTUFuaW1hdGlvbkVmZmVj
dFByaXZhdGUpKTsKLSAgICBnb2JqZWN0Q2xhc3MtPmNvbnN0cnVjdG9yID0gd2Via2l0X2RvbV9h
bmltYXRpb25fZWZmZWN0X2NvbnN0cnVjdG9yOwotICAgIGdvYmplY3RDbGFzcy0+ZmluYWxpemUg
PSB3ZWJraXRfZG9tX2FuaW1hdGlvbl9lZmZlY3RfZmluYWxpemU7Ci19Ci0KLXN0YXRpYyB2b2lk
IHdlYmtpdF9kb21fYW5pbWF0aW9uX2VmZmVjdF9pbml0KFdlYktpdERPTUFuaW1hdGlvbkVmZmVj
dCogcmVxdWVzdCkKLXsKLSAgICBXZWJLaXRET01BbmltYXRpb25FZmZlY3RQcml2YXRlKiBwcml2
ID0gV0VCS0lUX0RPTV9BTklNQVRJT05fRUZGRUNUX0dFVF9QUklWQVRFKHJlcXVlc3QpOwotICAg
IG5ldyAocHJpdikgV2ViS2l0RE9NQW5pbWF0aW9uRWZmZWN0UHJpdmF0ZSgpOwotfQotCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsv
RE9NL1dlYktpdERPTUFuaW1hdGlvbkVmZmVjdC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01BbmltYXRpb25FZmZlY3QuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDAyODM3OC4uMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERP
TUFuaW1hdGlvbkVmZmVjdC5oCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotLyoKLSAq
ICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCi0g
KiAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4g
RE8gTk9UIE1PRElGWSEKLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiAgQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBXZWJLaXRET01BbmltYXRpb25FZmZl
Y3RfaAotI2RlZmluZSBXZWJLaXRET01BbmltYXRpb25FZmZlY3RfaAotCi0jaWZkZWYgV0VCS0lU
X0RPTV9VU0VfVU5TVEFCTEVfQVBJCi0KLSNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgotI2luY2x1
ZGUgPHdlYmtpdGRvbS9XZWJLaXRET01PYmplY3QuaD4KLSNpbmNsdWRlIDx3ZWJraXRkb20vd2Vi
a2l0ZG9tZGVmaW5lcy11bnN0YWJsZS5oPgotCi1HX0JFR0lOX0RFQ0xTCi0KLSNkZWZpbmUgV0VC
S0lUX0RPTV9UWVBFX0FOSU1BVElPTl9FRkZFQ1QgICAgICAgICAgICAod2Via2l0X2RvbV9hbmlt
YXRpb25fZWZmZWN0X2dldF90eXBlKCkpCi0jZGVmaW5lIFdFQktJVF9ET01fQU5JTUFUSU9OX0VG
RkVDVChvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBX
RUJLSVRfRE9NX1RZUEVfQU5JTUFUSU9OX0VGRkVDVCwgV2ViS2l0RE9NQW5pbWF0aW9uRWZmZWN0
KSkKLSNkZWZpbmUgV0VCS0lUX0RPTV9BTklNQVRJT05fRUZGRUNUX0NMQVNTKGtsYXNzKSAgICAo
R19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJVF9ET01fVFlQRV9BTklNQVRJ
T05fRUZGRUNULCBXZWJLaXRET01BbmltYXRpb25FZmZlY3RDbGFzcykKLSNkZWZpbmUgV0VCS0lU
X0RPTV9JU19BTklNQVRJT05fRUZGRUNUKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RB
TkNFX1RZUEUoKG9iaiksIFdFQktJVF9ET01fVFlQRV9BTklNQVRJT05fRUZGRUNUKSkKLSNkZWZp
bmUgV0VCS0lUX0RPTV9JU19BTklNQVRJT05fRUZGRUNUX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NI
RUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwgIFdFQktJVF9ET01fVFlQRV9BTklNQVRJT05fRUZGRUNU
KSkKLSNkZWZpbmUgV0VCS0lUX0RPTV9BTklNQVRJT05fRUZGRUNUX0dFVF9DTEFTUyhvYmopICAo
R19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9ET01fVFlQRV9BTklNQVRJ
T05fRUZGRUNULCBXZWJLaXRET01BbmltYXRpb25FZmZlY3RDbGFzcykpCi0KLXN0cnVjdCBfV2Vi
S2l0RE9NQW5pbWF0aW9uRWZmZWN0IHsKLSAgICBXZWJLaXRET01PYmplY3QgcGFyZW50X2luc3Rh
bmNlOwotfTsKLQotc3RydWN0IF9XZWJLaXRET01BbmltYXRpb25FZmZlY3RDbGFzcyB7Ci0gICAg
V2ViS2l0RE9NT2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOwotfTsKLQotV0VCS0lUX0FQSSBHVHlw
ZQotd2Via2l0X2RvbV9hbmltYXRpb25fZWZmZWN0X2dldF90eXBlKHZvaWQpOwotCi1HX0VORF9E
RUNMUwotCi0jZW5kaWYgLyogV0VCS0lUX0RPTV9VU0VfVU5TVEFCTEVfQVBJICovCi0jZW5kaWYg
LyogV2ViS2l0RE9NQW5pbWF0aW9uRWZmZWN0X2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NQW5pbWF0
aW9uRWZmZWN0UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01BbmltYXRpb25FZmZlY3RQcml2YXRlLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkMjgzNDEuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01Bbmlt
YXRpb25FZmZlY3RQcml2YXRlLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi0vKgot
ICogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4K
LSAqICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBs
LiBETyBOT1QgTU9ESUZZIQotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQotICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaWZuZGVmIFdlYktpdERPTUFuaW1hdGlvbkVm
ZmVjdFByaXZhdGVfaAotI2RlZmluZSBXZWJLaXRET01BbmltYXRpb25FZmZlY3RQcml2YXRlX2gK
LQotI2luY2x1ZGUgPFdlYkNvcmUvQW5pbWF0aW9uRWZmZWN0Lmg+Ci0jaW5jbHVkZSA8d2Via2l0
ZG9tL1dlYktpdERPTUFuaW1hdGlvbkVmZmVjdC5oPgotI2lmIEVOQUJMRShXRUJfQU5JTUFUSU9O
UykKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci1XZWJLaXRET01BbmltYXRpb25FZmZlY3QqIHdyYXBB
bmltYXRpb25FZmZlY3QoV2ViQ29yZTo6QW5pbWF0aW9uRWZmZWN0Kik7Ci1XZWJLaXRET01Bbmlt
YXRpb25FZmZlY3QqIGtpdChXZWJDb3JlOjpBbmltYXRpb25FZmZlY3QqKTsKLVdlYkNvcmU6OkFu
aW1hdGlvbkVmZmVjdCogY29yZShXZWJLaXRET01BbmltYXRpb25FZmZlY3QqKTsKLX0gLy8gbmFt
ZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLyogRU5BQkxFKFdFQl9BTklNQVRJT05TKSAqLwotCi0j
ZW5kaWYgLyogV2ViS2l0RE9NQW5pbWF0aW9uRWZmZWN0UHJpdmF0ZV9oICovCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dl
YktpdERPTUFuaW1hdGlvblRpbWVsaW5lLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NQW5pbWF0aW9uVGltZWxpbmUuY3Bw
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MDZiZWFkLi4wMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0
RE9NQW5pbWF0aW9uVGltZWxpbmUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTEwICswLDAgQEAK
LS8qCi0gKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9q
ZWN0LgotICogIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGlu
Z3MucGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICog
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJXZWJLaXRET01BbmltYXRpb25UaW1lbGluZS5oIgotCi0jaW5jbHVkZSA8V2ViQ29y
ZS9DU1NJbXBvcnRSdWxlLmg+Ci0jaW5jbHVkZSAiRE9NT2JqZWN0Q2FjaGUuaCIKLSNpbmNsdWRl
IDxXZWJDb3JlL0RvY3VtZW50Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9FeGNlcHRpb25Db2RlLmg+
Ci0jaW5jbHVkZSA8V2ViQ29yZS9FeGNlcHRpb25Db2RlRGVzY3JpcHRpb24uaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5oPgotI2luY2x1ZGUgIldlYktpdERPTUFu
aW1hdGlvblRpbWVsaW5lUHJpdmF0ZS5oIgotI2luY2x1ZGUgIldlYktpdERPTVByaXZhdGUuaCIK
LSNpbmNsdWRlICJDb252ZXJ0VG9VVEY4U3RyaW5nLmgiCi0jaW5jbHVkZSA8d3RmL0dldFB0ci5o
PgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotI2RlZmluZSBXRUJLSVRfRE9NX0FOSU1BVElP
Tl9USU1FTElORV9HRVRfUFJJVkFURShvYmopIEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURShv
YmosIFdFQktJVF9ET01fVFlQRV9BTklNQVRJT05fVElNRUxJTkUsIFdlYktpdERPTUFuaW1hdGlv
blRpbWVsaW5lUHJpdmF0ZSkKLQotdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdERPTUFuaW1hdGlvblRp
bWVsaW5lUHJpdmF0ZSB7Ci0jaWYgRU5BQkxFKFdFQl9BTklNQVRJT05TKQotICAgIFJlZlB0cjxX
ZWJDb3JlOjpBbmltYXRpb25UaW1lbGluZT4gY29yZU9iamVjdDsKLSNlbmRpZiAvLyBFTkFCTEUo
V0VCX0FOSU1BVElPTlMpCi19IFdlYktpdERPTUFuaW1hdGlvblRpbWVsaW5lUHJpdmF0ZTsKLQot
I2lmIEVOQUJMRShXRUJfQU5JTUFUSU9OUykKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVdlYktp
dERPTUFuaW1hdGlvblRpbWVsaW5lKiBraXQoV2ViQ29yZTo6QW5pbWF0aW9uVGltZWxpbmUqIG9i
aikKLXsKLSAgICBpZiAoIW9iaikKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBpZiAoZ3BvaW50
ZXIgcmV0ID0gRE9NT2JqZWN0Q2FjaGU6OmdldChvYmopKQotICAgICAgICByZXR1cm4gV0VCS0lU
X0RPTV9BTklNQVRJT05fVElNRUxJTkUocmV0KTsKLQotICAgIHJldHVybiB3cmFwQW5pbWF0aW9u
VGltZWxpbmUob2JqKTsKLX0KLQotV2ViQ29yZTo6QW5pbWF0aW9uVGltZWxpbmUqIGNvcmUoV2Vi
S2l0RE9NQW5pbWF0aW9uVGltZWxpbmUqIHJlcXVlc3QpCi17Ci0gICAgcmV0dXJuIHJlcXVlc3Qg
PyBzdGF0aWNfY2FzdDxXZWJDb3JlOjpBbmltYXRpb25UaW1lbGluZSo+KFdFQktJVF9ET01fT0JK
RUNUKHJlcXVlc3QpLT5jb3JlT2JqZWN0KSA6IDA7Ci19Ci0KLVdlYktpdERPTUFuaW1hdGlvblRp
bWVsaW5lKiB3cmFwQW5pbWF0aW9uVGltZWxpbmUoV2ViQ29yZTo6QW5pbWF0aW9uVGltZWxpbmUq
IGNvcmVPYmplY3QpCi17Ci0gICAgQVNTRVJUKGNvcmVPYmplY3QpOwotICAgIHJldHVybiBXRUJL
SVRfRE9NX0FOSU1BVElPTl9USU1FTElORShnX29iamVjdF9uZXcoV0VCS0lUX0RPTV9UWVBFX0FO
SU1BVElPTl9USU1FTElORSwgImNvcmUtb2JqZWN0IiwgY29yZU9iamVjdCwgbnVsbHB0cikpOwot
fQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJfQU5JTUFU
SU9OUykKLQotR19ERUZJTkVfVFlQRShXZWJLaXRET01BbmltYXRpb25UaW1lbGluZSwgd2Via2l0
X2RvbV9hbmltYXRpb25fdGltZWxpbmUsIFdFQktJVF9ET01fVFlQRV9PQkpFQ1QpCi0KLXN0YXRp
YyB2b2lkIHdlYmtpdF9kb21fYW5pbWF0aW9uX3RpbWVsaW5lX2ZpbmFsaXplKEdPYmplY3QqIG9i
amVjdCkKLXsKLSAgICBXZWJLaXRET01BbmltYXRpb25UaW1lbGluZVByaXZhdGUqIHByaXYgPSBX
RUJLSVRfRE9NX0FOSU1BVElPTl9USU1FTElORV9HRVRfUFJJVkFURShvYmplY3QpOwotI2lmIEVO
QUJMRShXRUJfQU5JTUFUSU9OUykKLSAgICBXZWJLaXQ6OkRPTU9iamVjdENhY2hlOjpmb3JnZXQo
cHJpdi0+Y29yZU9iamVjdC5nZXQoKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKFdFQl9BTklNQVRJT05T
KQotICAgIHByaXYtPn5XZWJLaXRET01BbmltYXRpb25UaW1lbGluZVByaXZhdGUoKTsKLSAgICBH
X09CSkVDVF9DTEFTUyh3ZWJraXRfZG9tX2FuaW1hdGlvbl90aW1lbGluZV9wYXJlbnRfY2xhc3Mp
LT5maW5hbGl6ZShvYmplY3QpOwotfQotCi1zdGF0aWMgR09iamVjdCogd2Via2l0X2RvbV9hbmlt
YXRpb25fdGltZWxpbmVfY29uc3RydWN0b3IoR1R5cGUgdHlwZSwgZ3VpbnQgY29uc3RydWN0UHJv
cGVydGllc0NvdW50LCBHT2JqZWN0Q29uc3RydWN0UGFyYW0qIGNvbnN0cnVjdFByb3BlcnRpZXMp
Ci17Ci0gICAgR09iamVjdCogb2JqZWN0ID0gR19PQkpFQ1RfQ0xBU1Mod2Via2l0X2RvbV9hbmlt
YXRpb25fdGltZWxpbmVfcGFyZW50X2NsYXNzKS0+Y29uc3RydWN0b3IodHlwZSwgY29uc3RydWN0
UHJvcGVydGllc0NvdW50LCBjb25zdHJ1Y3RQcm9wZXJ0aWVzKTsKLSNpZiBFTkFCTEUoV0VCX0FO
SU1BVElPTlMpCi0gICAgV2ViS2l0RE9NQW5pbWF0aW9uVGltZWxpbmVQcml2YXRlKiBwcml2ID0g
V0VCS0lUX0RPTV9BTklNQVRJT05fVElNRUxJTkVfR0VUX1BSSVZBVEUob2JqZWN0KTsKLSAgICBw
cml2LT5jb3JlT2JqZWN0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6QW5pbWF0aW9uVGltZWxpbmUq
PihXRUJLSVRfRE9NX09CSkVDVChvYmplY3QpLT5jb3JlT2JqZWN0KTsKLSAgICBXZWJLaXQ6OkRP
TU9iamVjdENhY2hlOjpwdXQocHJpdi0+Y29yZU9iamVjdC5nZXQoKSwgb2JqZWN0KTsKLSNlbmRp
ZiAvLyBFTkFCTEUoV0VCX0FOSU1BVElPTlMpCi0gICAgcmV0dXJuIG9iamVjdDsKLX0KLQotc3Rh
dGljIHZvaWQgd2Via2l0X2RvbV9hbmltYXRpb25fdGltZWxpbmVfY2xhc3NfaW5pdChXZWJLaXRE
T01BbmltYXRpb25UaW1lbGluZUNsYXNzKiByZXF1ZXN0Q2xhc3MpCi17Ci0gICAgR09iamVjdENs
YXNzKiBnb2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhyZXF1ZXN0Q2xhc3MpOwotICAgIGdf
dHlwZV9jbGFzc19hZGRfcHJpdmF0ZShnb2JqZWN0Q2xhc3MsIHNpemVvZihXZWJLaXRET01Bbmlt
YXRpb25UaW1lbGluZVByaXZhdGUpKTsKLSAgICBnb2JqZWN0Q2xhc3MtPmNvbnN0cnVjdG9yID0g
d2Via2l0X2RvbV9hbmltYXRpb25fdGltZWxpbmVfY29uc3RydWN0b3I7Ci0gICAgZ29iamVjdENs
YXNzLT5maW5hbGl6ZSA9IHdlYmtpdF9kb21fYW5pbWF0aW9uX3RpbWVsaW5lX2ZpbmFsaXplOwot
fQotCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX2FuaW1hdGlvbl90aW1lbGluZV9pbml0KFdlYktp
dERPTUFuaW1hdGlvblRpbWVsaW5lKiByZXF1ZXN0KQotewotICAgIFdlYktpdERPTUFuaW1hdGlv
blRpbWVsaW5lUHJpdmF0ZSogcHJpdiA9IFdFQktJVF9ET01fQU5JTUFUSU9OX1RJTUVMSU5FX0dF
VF9QUklWQVRFKHJlcXVlc3QpOwotICAgIG5ldyAocHJpdikgV2ViS2l0RE9NQW5pbWF0aW9uVGlt
ZWxpbmVQcml2YXRlKCk7Ci19Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NQW5pbWF0aW9uVGltZWxpbmUu
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00v
V2ViS2l0RE9NQW5pbWF0aW9uVGltZWxpbmUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggOTI0MDJmYS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUFuaW1hdGlvblRpbWVsaW5lLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0vKgotICogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRo
ZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAqICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2Vu
ZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQotICoKLSAqICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
Ci0gKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwot
Ci0jaWZuZGVmIFdlYktpdERPTUFuaW1hdGlvblRpbWVsaW5lX2gKLSNkZWZpbmUgV2ViS2l0RE9N
QW5pbWF0aW9uVGltZWxpbmVfaAotCi0jaWZkZWYgV0VCS0lUX0RPTV9VU0VfVU5TVEFCTEVfQVBJ
Ci0KLSNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgotI2luY2x1ZGUgPHdlYmtpdGRvbS9XZWJLaXRE
T01PYmplY3QuaD4KLSNpbmNsdWRlIDx3ZWJraXRkb20vd2Via2l0ZG9tZGVmaW5lcy11bnN0YWJs
ZS5oPgotCi1HX0JFR0lOX0RFQ0xTCi0KLSNkZWZpbmUgV0VCS0lUX0RPTV9UWVBFX0FOSU1BVElP
Tl9USU1FTElORSAgICAgICAgICAgICh3ZWJraXRfZG9tX2FuaW1hdGlvbl90aW1lbGluZV9nZXRf
dHlwZSgpKQotI2RlZmluZSBXRUJLSVRfRE9NX0FOSU1BVElPTl9USU1FTElORShvYmopICAgICAg
ICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBXRUJLSVRfRE9NX1RZUEVf
QU5JTUFUSU9OX1RJTUVMSU5FLCBXZWJLaXRET01BbmltYXRpb25UaW1lbGluZSkpCi0jZGVmaW5l
IFdFQktJVF9ET01fQU5JTUFUSU9OX1RJTUVMSU5FX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NI
RUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJVF9ET01fVFlQRV9BTklNQVRJT05fVElNRUxJ
TkUsIFdlYktpdERPTUFuaW1hdGlvblRpbWVsaW5lQ2xhc3MpCi0jZGVmaW5lIFdFQktJVF9ET01f
SVNfQU5JTUFUSU9OX1RJTUVMSU5FKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNF
X1RZUEUoKG9iaiksIFdFQktJVF9ET01fVFlQRV9BTklNQVRJT05fVElNRUxJTkUpKQotI2RlZmlu
ZSBXRUJLSVRfRE9NX0lTX0FOSU1BVElPTl9USU1FTElORV9DTEFTUyhrbGFzcykgKEdfVFlQRV9D
SEVDS19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfRE9NX1RZUEVfQU5JTUFUSU9OX1RJTUVM
SU5FKSkKLSNkZWZpbmUgV0VCS0lUX0RPTV9BTklNQVRJT05fVElNRUxJTkVfR0VUX0NMQVNTKG9i
aikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgV0VCS0lUX0RPTV9UWVBFX0FO
SU1BVElPTl9USU1FTElORSwgV2ViS2l0RE9NQW5pbWF0aW9uVGltZWxpbmVDbGFzcykpCi0KLXN0
cnVjdCBfV2ViS2l0RE9NQW5pbWF0aW9uVGltZWxpbmUgewotICAgIFdlYktpdERPTU9iamVjdCBw
YXJlbnRfaW5zdGFuY2U7Ci19OwotCi1zdHJ1Y3QgX1dlYktpdERPTUFuaW1hdGlvblRpbWVsaW5l
Q2xhc3MgewotICAgIFdlYktpdERPTU9iamVjdENsYXNzIHBhcmVudF9jbGFzczsKLX07Ci0KLVdF
QktJVF9BUEkgR1R5cGUKLXdlYmtpdF9kb21fYW5pbWF0aW9uX3RpbWVsaW5lX2dldF90eXBlKHZv
aWQpOwotCi1HX0VORF9ERUNMUwotCi0jZW5kaWYgLyogV0VCS0lUX0RPTV9VU0VfVU5TVEFCTEVf
QVBJICovCi0jZW5kaWYgLyogV2ViS2l0RE9NQW5pbWF0aW9uVGltZWxpbmVfaCAqLwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RP
TS9XZWJLaXRET01BbmltYXRpb25UaW1lbGluZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NQW5pbWF0aW9uVGlt
ZWxpbmVQcml2YXRlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMwYmI0OGEuLjAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z3RrL0RPTS9XZWJLaXRET01BbmltYXRpb25UaW1lbGluZVByaXZhdGUuaAorKysgL2Rldi9udWxs
CkBAIC0xLDM2ICswLDAgQEAKLS8qCi0gKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktp
dCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICogIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQg
YnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICogIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAq
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAq
ICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5k
ZWYgV2ViS2l0RE9NQW5pbWF0aW9uVGltZWxpbmVQcml2YXRlX2gKLSNkZWZpbmUgV2ViS2l0RE9N
QW5pbWF0aW9uVGltZWxpbmVQcml2YXRlX2gKLQotI2luY2x1ZGUgPFdlYkNvcmUvQW5pbWF0aW9u
VGltZWxpbmUuaD4KLSNpbmNsdWRlIDx3ZWJraXRkb20vV2ViS2l0RE9NQW5pbWF0aW9uVGltZWxp
bmUuaD4KLSNpZiBFTkFCTEUoV0VCX0FOSU1BVElPTlMpCi0KLW5hbWVzcGFjZSBXZWJLaXQgewot
V2ViS2l0RE9NQW5pbWF0aW9uVGltZWxpbmUqIHdyYXBBbmltYXRpb25UaW1lbGluZShXZWJDb3Jl
OjpBbmltYXRpb25UaW1lbGluZSopOwotV2ViS2l0RE9NQW5pbWF0aW9uVGltZWxpbmUqIGtpdChX
ZWJDb3JlOjpBbmltYXRpb25UaW1lbGluZSopOwotV2ViQ29yZTo6QW5pbWF0aW9uVGltZWxpbmUq
IGNvcmUoV2ViS2l0RE9NQW5pbWF0aW9uVGltZWxpbmUqKTsKLX0gLy8gbmFtZXNwYWNlIFdlYktp
dAotCi0jZW5kaWYgLyogRU5BQkxFKFdFQl9BTklNQVRJT05TKSAqLwotCi0jZW5kaWYgLyogV2Vi
S2l0RE9NQW5pbWF0aW9uVGltZWxpbmVQcml2YXRlX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NQXR0
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsv
RE9NL1dlYktpdERPTUF0dHIuY3BwCmluZGV4IDI4ZTYxZWIuLjQ4NDI3NGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2Vi
S2l0RE9NQXR0ci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01BdHRyLmNwcApAQCAtMzUsNyArMzUsNiBAQAogI2lu
Y2x1ZGUgIldlYktpdERPTU5vZGVQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0RE9NUHJpdmF0
ZS5oIgogI2luY2x1ZGUgIkNvbnZlcnRUb1VURjhTdHJpbmcuaCIKLSNpbmNsdWRlICJXZWJLaXRE
T01BdHRyVW5zdGFibGUuaCIKICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgogCkBAIC0xMDIsNyArMTAxLDYgQEAgZW51bSB7CiAgICAgUFJPUF9TUEVDSUZJ
RUQsCiAgICAgUFJPUF9WQUxVRSwKICAgICBQUk9QX09XTkVSX0VMRU1FTlQsCi0gICAgUFJPUF9J
U19JRCwKICAgICBQUk9QX05BTUVTUEFDRV9VUkksCiAgICAgUFJPUF9QUkVGSVgsCiAgICAgUFJP
UF9MT0NBTF9OQU1FLApAQCAtMTM5LDkgKzEzNyw2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21f
YXR0cl9nZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wZXJ0eUlkLCBHVmFs
CiAgICAgY2FzZSBQUk9QX09XTkVSX0VMRU1FTlQ6CiAgICAgICAgIGdfdmFsdWVfc2V0X29iamVj
dCh2YWx1ZSwgd2Via2l0X2RvbV9hdHRyX2dldF9vd25lcl9lbGVtZW50KHNlbGYpKTsKICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX0lTX0lEOgotICAgICAgICBnX3ZhbHVlX3NldF9ib29s
ZWFuKHZhbHVlLCB3ZWJraXRfZG9tX2F0dHJfZ2V0X2lzX2lkKHNlbGYpKTsKLSAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBQUk9QX05BTUVTUEFDRV9VUkk6CiAgICAgICAgIGdfdmFsdWVfdGFrZV9z
dHJpbmcodmFsdWUsIHdlYmtpdF9kb21fYXR0cl9nZXRfbmFtZXNwYWNlX3VyaShzZWxmKSk7CiAg
ICAgICAgIGJyZWFrOwpAQCAtMjA1LDE2ICsyMDAsNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfZG9t
X2F0dHJfY2xhc3NfaW5pdChXZWJLaXRET01BdHRyQ2xhc3MqIHJlcXVlc3RDbGFzcykKIAogICAg
IGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCiAgICAgICAgIGdvYmplY3RDbGFzcywK
LSAgICAgICAgUFJPUF9JU19JRCwKLSAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oCi0gICAg
ICAgICAgICAiaXMtaWQiLAotICAgICAgICAgICAgIkF0dHI6aXMtaWQiLAotICAgICAgICAgICAg
InJlYWQtb25seSBnYm9vbGVhbiBBdHRyOmlzLWlkIiwKLSAgICAgICAgICAgIEZBTFNFLAotICAg
ICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7Ci0KLSAgICBnX29iamVjdF9jbGFzc19p
bnN0YWxsX3Byb3BlcnR5KAotICAgICAgICBnb2JqZWN0Q2xhc3MsCiAgICAgICAgIFBST1BfTkFN
RVNQQUNFX1VSSSwKICAgICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZygKICAgICAgICAgICAgICJu
YW1lc3BhY2UtdXJpIiwKQEAgLTI5NywxNSArMjgyLDYgQEAgV2ViS2l0RE9NRWxlbWVudCogd2Vi
a2l0X2RvbV9hdHRyX2dldF9vd25lcl9lbGVtZW50KFdlYktpdERPTUF0dHIqIHNlbGYpCiAgICAg
cmV0dXJuIFdlYktpdDo6a2l0KGdvYmplY3RSZXN1bHQuZ2V0KCkpOwogfQogCi1nYm9vbGVhbiB3
ZWJraXRfZG9tX2F0dHJfZ2V0X2lzX2lkKFdlYktpdERPTUF0dHIqIHNlbGYpCi17Ci0gICAgV2Vi
Q29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKFdFQktJVF9ET01fSVNfQVRUUihzZWxmKSwgRkFMU0UpOwotICAgIFdlYkNvcmU6OkF0dHIq
IGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ2Jvb2xlYW4gcmVzdWx0ID0gaXRlbS0+
aXNJZCgpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KIGdjaGFyKiB3ZWJraXRfZG9tX2F0dHJf
Z2V0X25hbWVzcGFjZV91cmkoV2ViS2l0RE9NQXR0ciogc2VsZikKIHsKICAgICBXZWJDb3JlOjpK
U01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUF0dHJVbnN0YWJs
ZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RP
TS9XZWJLaXRET01BdHRyVW5zdGFibGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MjNjOTUxNC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUF0dHJVbnN0YWJsZS5oCisrKyAvZGV2L251bGwK
QEAgLTEsNDUgKzAsMCBAQAotLyoKLSAqICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0
IG9wZW4gc291cmNlIHByb2plY3QuCi0gKiAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBi
eSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKLSAqCi0gKiAgVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICog
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICog
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCi0gKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCi0gKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRl
ZiBXZWJLaXRET01BdHRyVW5zdGFibGVfaAotI2RlZmluZSBXZWJLaXRET01BdHRyVW5zdGFibGVf
aAotCi0jaWZkZWYgV0VCS0lUX0RPTV9VU0VfVU5TVEFCTEVfQVBJCi0KLSNpbmNsdWRlIDx3ZWJr
aXRkb20vd2Via2l0ZG9tZGVmaW5lcy11bnN0YWJsZS5oPgotCi1HX0JFR0lOX0RFQ0xTCi0KLS8q
KgotICogd2Via2l0X2RvbV9hdHRyX2dldF9pc19pZDoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01B
dHRyCi0gKgotICogUmV0dXJuczogQSAjZ2Jvb2xlYW4KLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3Rh
YmxlCi0qKi8KLVdFQktJVF9BUEkgZ2Jvb2xlYW4KLXdlYmtpdF9kb21fYXR0cl9nZXRfaXNfaWQo
V2ViS2l0RE9NQXR0ciogc2VsZik7Ci0KLQotR19FTkRfREVDTFMKLQotI2VuZGlmIC8qIFdFQktJ
VF9ET01fVVNFX1VOU1RBQkxFX0FQSSAqLwotI2VuZGlmIC8qIFdlYktpdERPTUF0dHJVbnN0YWJs
ZV9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUF1ZGlvVHJhY2suY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01BdWRpb1RyYWNr
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTk1NTcyOC4uMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dl
YktpdERPTUF1ZGlvVHJhY2suY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMzAxICswLDAgQEAKLS8q
Ci0gKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0
LgotICogIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3Mu
cGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJXZWJLaXRET01BdWRpb1RyYWNrLmgiCi0KLSNpbmNsdWRlIDxXZWJDb3JlL0NTU0ltcG9y
dFJ1bGUuaD4KLSNpbmNsdWRlICJET01PYmplY3RDYWNoZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUv
RG9jdW1lbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0V4Y2VwdGlvbkNvZGUuaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL0V4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbi5oPgotI2luY2x1ZGUgPFdlYkNvcmUv
SlNNYWluVGhyZWFkRXhlY1N0YXRlLmg+Ci0jaW5jbHVkZSAiV2ViS2l0RE9NQXVkaW9UcmFja1By
aXZhdGUuaCIKLSNpbmNsdWRlICJXZWJLaXRET01Qcml2YXRlLmgiCi0jaW5jbHVkZSAiQ29udmVy
dFRvVVRGOFN0cmluZy5oIgotI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KLSNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+Ci0KLSNkZWZpbmUgV0VCS0lUX0RPTV9BVURJT19UUkFDS19HRVRfUFJJVkFURShv
YmopIEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURShvYmosIFdFQktJVF9ET01fVFlQRV9BVURJ
T19UUkFDSywgV2ViS2l0RE9NQXVkaW9UcmFja1ByaXZhdGUpCi0KLXR5cGVkZWYgc3RydWN0IF9X
ZWJLaXRET01BdWRpb1RyYWNrUHJpdmF0ZSB7Ci0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAg
IFJlZlB0cjxXZWJDb3JlOjpBdWRpb1RyYWNrPiBjb3JlT2JqZWN0OwotI2VuZGlmIC8vIEVOQUJM
RShWSURFT19UUkFDSykKLX0gV2ViS2l0RE9NQXVkaW9UcmFja1ByaXZhdGU7Ci0KLSNpZiBFTkFC
TEUoVklERU9fVFJBQ0spCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1XZWJLaXRET01BdWRpb1Ry
YWNrKiBraXQoV2ViQ29yZTo6QXVkaW9UcmFjayogb2JqKQotewotICAgIGlmICghb2JqKQotICAg
ICAgICByZXR1cm4gMDsKLQotICAgIGlmIChncG9pbnRlciByZXQgPSBET01PYmplY3RDYWNoZTo6
Z2V0KG9iaikpCi0gICAgICAgIHJldHVybiBXRUJLSVRfRE9NX0FVRElPX1RSQUNLKHJldCk7Ci0K
LSAgICByZXR1cm4gd3JhcEF1ZGlvVHJhY2sob2JqKTsKLX0KLQotV2ViQ29yZTo6QXVkaW9UcmFj
ayogY29yZShXZWJLaXRET01BdWRpb1RyYWNrKiByZXF1ZXN0KQotewotICAgIHJldHVybiByZXF1
ZXN0ID8gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6QXVkaW9UcmFjayo+KFdFQktJVF9ET01fT0JKRUNU
KHJlcXVlc3QpLT5jb3JlT2JqZWN0KSA6IDA7Ci19Ci0KLVdlYktpdERPTUF1ZGlvVHJhY2sqIHdy
YXBBdWRpb1RyYWNrKFdlYkNvcmU6OkF1ZGlvVHJhY2sqIGNvcmVPYmplY3QpCi17Ci0gICAgQVNT
RVJUKGNvcmVPYmplY3QpOwotICAgIHJldHVybiBXRUJLSVRfRE9NX0FVRElPX1RSQUNLKGdfb2Jq
ZWN0X25ldyhXRUJLSVRfRE9NX1RZUEVfQVVESU9fVFJBQ0ssICJjb3JlLW9iamVjdCIsIGNvcmVP
YmplY3QsIG51bGxwdHIpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAv
LyBFTkFCTEUoVklERU9fVFJBQ0spCi0KLUdfREVGSU5FX1RZUEUoV2ViS2l0RE9NQXVkaW9UcmFj
aywgd2Via2l0X2RvbV9hdWRpb190cmFjaywgV0VCS0lUX0RPTV9UWVBFX09CSkVDVCkKLQotZW51
bSB7Ci0gICAgUFJPUF8wLAotICAgIFBST1BfSUQsCi0gICAgUFJPUF9LSU5ELAotICAgIFBST1Bf
TEFCRUwsCi0gICAgUFJPUF9MQU5HVUFHRSwKLSAgICBQUk9QX0VOQUJMRUQsCi19OwotCi1zdGF0
aWMgdm9pZCB3ZWJraXRfZG9tX2F1ZGlvX3RyYWNrX2ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkK
LXsKLSAgICBXZWJLaXRET01BdWRpb1RyYWNrUHJpdmF0ZSogcHJpdiA9IFdFQktJVF9ET01fQVVE
SU9fVFJBQ0tfR0VUX1BSSVZBVEUob2JqZWN0KTsKLSNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0g
ICAgV2ViS2l0OjpET01PYmplY3RDYWNoZTo6Zm9yZ2V0KHByaXYtPmNvcmVPYmplY3QuZ2V0KCkp
OwotI2VuZGlmIC8vIEVOQUJMRShWSURFT19UUkFDSykKLSAgICBwcml2LT5+V2ViS2l0RE9NQXVk
aW9UcmFja1ByaXZhdGUoKTsKLSAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfZG9tX2F1ZGlvX3Ry
YWNrX3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7Ci19Ci0KLXN0YXRpYyB2b2lkIHdl
YmtpdF9kb21fYXVkaW9fdHJhY2tfc2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQg
cHJvcGVydHlJZCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpCi17Ci0g
ICAgV2ViS2l0RE9NQXVkaW9UcmFjayogc2VsZiA9IFdFQktJVF9ET01fQVVESU9fVFJBQ0sob2Jq
ZWN0KTsKLQotICAgIHN3aXRjaCAocHJvcGVydHlJZCkgewotICAgIGNhc2UgUFJPUF9FTkFCTEVE
OgotICAgICAgICB3ZWJraXRfZG9tX2F1ZGlvX3RyYWNrX3NldF9lbmFibGVkKHNlbGYsIGdfdmFs
dWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAg
ICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcGVydHlJ
ZCwgcHNwZWMpOwotICAgICAgICBicmVhazsKLSAgICB9Ci19Ci0KLXN0YXRpYyB2b2lkIHdlYmtp
dF9kb21fYXVkaW9fdHJhY2tfZ2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJv
cGVydHlJZCwgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpCi17Ci0gICAgV2ViS2l0
RE9NQXVkaW9UcmFjayogc2VsZiA9IFdFQktJVF9ET01fQVVESU9fVFJBQ0sob2JqZWN0KTsKLQot
ICAgIHN3aXRjaCAocHJvcGVydHlJZCkgewotICAgIGNhc2UgUFJPUF9JRDoKLSAgICAgICAgZ192
YWx1ZV90YWtlX3N0cmluZyh2YWx1ZSwgd2Via2l0X2RvbV9hdWRpb190cmFja19nZXRfaWQoc2Vs
ZikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfS0lORDoKLSAgICAgICAgZ192YWx1
ZV90YWtlX3N0cmluZyh2YWx1ZSwgd2Via2l0X2RvbV9hdWRpb190cmFja19nZXRfa2luZChzZWxm
KSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9MQUJFTDoKLSAgICAgICAgZ192YWx1
ZV90YWtlX3N0cmluZyh2YWx1ZSwgd2Via2l0X2RvbV9hdWRpb190cmFja19nZXRfbGFiZWwoc2Vs
ZikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfTEFOR1VBR0U6Ci0gICAgICAgIGdf
dmFsdWVfdGFrZV9zdHJpbmcodmFsdWUsIHdlYmtpdF9kb21fYXVkaW9fdHJhY2tfZ2V0X2xhbmd1
YWdlKHNlbGYpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX0VOQUJMRUQ6Ci0gICAg
ICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF9kb21fYXVkaW9fdHJhY2tfZ2V0
X2VuYWJsZWQoc2VsZikpOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBH
X09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wZXJ0eUlkLCBwc3Bl
Yyk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLX0KLQotc3RhdGljIEdPYmplY3QqIHdlYmtpdF9k
b21fYXVkaW9fdHJhY2tfY29uc3RydWN0b3IoR1R5cGUgdHlwZSwgZ3VpbnQgY29uc3RydWN0UHJv
cGVydGllc0NvdW50LCBHT2JqZWN0Q29uc3RydWN0UGFyYW0qIGNvbnN0cnVjdFByb3BlcnRpZXMp
Ci17Ci0gICAgR09iamVjdCogb2JqZWN0ID0gR19PQkpFQ1RfQ0xBU1Mod2Via2l0X2RvbV9hdWRp
b190cmFja19wYXJlbnRfY2xhc3MpLT5jb25zdHJ1Y3Rvcih0eXBlLCBjb25zdHJ1Y3RQcm9wZXJ0
aWVzQ291bnQsIGNvbnN0cnVjdFByb3BlcnRpZXMpOwotI2lmIEVOQUJMRShWSURFT19UUkFDSykK
LSAgICBXZWJLaXRET01BdWRpb1RyYWNrUHJpdmF0ZSogcHJpdiA9IFdFQktJVF9ET01fQVVESU9f
VFJBQ0tfR0VUX1BSSVZBVEUob2JqZWN0KTsKLSAgICBwcml2LT5jb3JlT2JqZWN0ID0gc3RhdGlj
X2Nhc3Q8V2ViQ29yZTo6QXVkaW9UcmFjayo+KFdFQktJVF9ET01fT0JKRUNUKG9iamVjdCktPmNv
cmVPYmplY3QpOwotICAgIFdlYktpdDo6RE9NT2JqZWN0Q2FjaGU6OnB1dChwcml2LT5jb3JlT2Jq
ZWN0LmdldCgpLCBvYmplY3QpOwotI2VuZGlmIC8vIEVOQUJMRShWSURFT19UUkFDSykKLSAgICBy
ZXR1cm4gb2JqZWN0OwotfQotCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX2F1ZGlvX3RyYWNrX2Ns
YXNzX2luaXQoV2ViS2l0RE9NQXVkaW9UcmFja0NsYXNzKiByZXF1ZXN0Q2xhc3MpCi17Ci0gICAg
R09iamVjdENsYXNzKiBnb2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhyZXF1ZXN0Q2xhc3Mp
OwotICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShnb2JqZWN0Q2xhc3MsIHNpemVvZihXZWJL
aXRET01BdWRpb1RyYWNrUHJpdmF0ZSkpOwotICAgIGdvYmplY3RDbGFzcy0+Y29uc3RydWN0b3Ig
PSB3ZWJraXRfZG9tX2F1ZGlvX3RyYWNrX2NvbnN0cnVjdG9yOwotICAgIGdvYmplY3RDbGFzcy0+
ZmluYWxpemUgPSB3ZWJraXRfZG9tX2F1ZGlvX3RyYWNrX2ZpbmFsaXplOwotICAgIGdvYmplY3RD
bGFzcy0+c2V0X3Byb3BlcnR5ID0gd2Via2l0X2RvbV9hdWRpb190cmFja19zZXRfcHJvcGVydHk7
Ci0gICAgZ29iamVjdENsYXNzLT5nZXRfcHJvcGVydHkgPSB3ZWJraXRfZG9tX2F1ZGlvX3RyYWNr
X2dldF9wcm9wZXJ0eTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0g
ICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9JRCwKLSAgICAgICAgZ19wYXJhbV9z
cGVjX3N0cmluZygKLSAgICAgICAgICAgICJpZCIsCi0gICAgICAgICAgICAiQXVkaW9UcmFjazpp
ZCIsCi0gICAgICAgICAgICAicmVhZC1vbmx5IGdjaGFyKiBBdWRpb1RyYWNrOmlkIiwKLSAgICAg
ICAgICAgICIiLAotICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7Ci0KLSAgICBn
X29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAotICAgICAgICBnb2JqZWN0Q2xhc3MsCi0g
ICAgICAgIFBST1BfS0lORCwKLSAgICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZygKLSAgICAgICAg
ICAgICJraW5kIiwKLSAgICAgICAgICAgICJBdWRpb1RyYWNrOmtpbmQiLAotICAgICAgICAgICAg
InJlYWQtb25seSBnY2hhciogQXVkaW9UcmFjazpraW5kIiwKLSAgICAgICAgICAgICIiLAotICAg
ICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7Ci0KLSAgICBnX29iamVjdF9jbGFzc19p
bnN0YWxsX3Byb3BlcnR5KAotICAgICAgICBnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBST1BfTEFC
RUwsCi0gICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcoCi0gICAgICAgICAgICAibGFiZWwiLAot
ICAgICAgICAgICAgIkF1ZGlvVHJhY2s6bGFiZWwiLAotICAgICAgICAgICAgInJlYWQtb25seSBn
Y2hhciogQXVkaW9UcmFjazpsYWJlbCIsCi0gICAgICAgICAgICAiIiwKLSAgICAgICAgICAgIFdF
QktJVF9QQVJBTV9SRUFEQUJMRSkpOwotCi0gICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9w
ZXJ0eSgKLSAgICAgICAgZ29iamVjdENsYXNzLAotICAgICAgICBQUk9QX0xBTkdVQUdFLAotICAg
ICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nKAotICAgICAgICAgICAgImxhbmd1YWdlIiwKLSAgICAg
ICAgICAgICJBdWRpb1RyYWNrOmxhbmd1YWdlIiwKLSAgICAgICAgICAgICJyZWFkLW9ubHkgZ2No
YXIqIEF1ZGlvVHJhY2s6bGFuZ3VhZ2UiLAotICAgICAgICAgICAgIiIsCi0gICAgICAgICAgICBX
RUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJv
cGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9FTkFCTEVELAotICAg
ICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigKLSAgICAgICAgICAgICJlbmFibGVkIiwKLSAgICAg
ICAgICAgICJBdWRpb1RyYWNrOmVuYWJsZWQiLAotICAgICAgICAgICAgInJlYWQtd3JpdGUgZ2Jv
b2xlYW4gQXVkaW9UcmFjazplbmFibGVkIiwKLSAgICAgICAgICAgIEZBTFNFLAotICAgICAgICAg
ICAgV0VCS0lUX1BBUkFNX1JFQURXUklURSkpOwotCi19Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdF9k
b21fYXVkaW9fdHJhY2tfaW5pdChXZWJLaXRET01BdWRpb1RyYWNrKiByZXF1ZXN0KQotewotICAg
IFdlYktpdERPTUF1ZGlvVHJhY2tQcml2YXRlKiBwcml2ID0gV0VCS0lUX0RPTV9BVURJT19UUkFD
S19HRVRfUFJJVkFURShyZXF1ZXN0KTsKLSAgICBuZXcgKHByaXYpIFdlYktpdERPTUF1ZGlvVHJh
Y2tQcml2YXRlKCk7Ci19Ci0KLWdjaGFyKiB3ZWJraXRfZG9tX2F1ZGlvX3RyYWNrX2dldF9pZChX
ZWJLaXRET01BdWRpb1RyYWNrKiBzZWxmKQotewotI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAg
ICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFs
X2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19BVURJT19UUkFDSyhzZWxmKSwgMCk7Ci0gICAgV2ViQ29y
ZTo6QXVkaW9UcmFjayogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBnY2hhciogcmVz
dWx0ID0gY29udmVydFRvVVRGOFN0cmluZyhpdGVtLT5pZCgpKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc2VsZik7Ci0gICAgV0VCS0lUX1dBUk5fRkVBVFVS
RV9OT1RfUFJFU0VOVCgiVmlkZW8gVHJhY2siKQotICAgIHJldHVybiAwOwotI2VuZGlmIC8qIEVO
QUJMRShWSURFT19UUkFDSykgKi8KLX0KLQotZ2NoYXIqIHdlYmtpdF9kb21fYXVkaW9fdHJhY2tf
Z2V0X2tpbmQoV2ViS2l0RE9NQXVkaW9UcmFjayogc2VsZikKLXsKLSNpZiBFTkFCTEUoVklERU9f
VFJBQ0spCi0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdf
cmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfQVVESU9fVFJBQ0soc2VsZiksIDApOwot
ICAgIFdlYkNvcmU6OkF1ZGlvVHJhY2sqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAg
Z2NoYXIqIHJlc3VsdCA9IGNvbnZlcnRUb1VURjhTdHJpbmcoaXRlbS0+a2luZCgpKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc2VsZik7Ci0gICAgV0VCS0lU
X1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiVmlkZW8gVHJhY2siKQotICAgIHJldHVybiAwOwot
I2VuZGlmIC8qIEVOQUJMRShWSURFT19UUkFDSykgKi8KLX0KLQotZ2NoYXIqIHdlYmtpdF9kb21f
YXVkaW9fdHJhY2tfZ2V0X2xhYmVsKFdlYktpdERPTUF1ZGlvVHJhY2sqIHNlbGYpCi17Ci0jaWYg
RU5BQkxFKFZJREVPX1RSQUNLKQotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBz
dGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX0FVRElPX1RSQUNL
KHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpBdWRpb1RyYWNrKiBpdGVtID0gV2ViS2l0Ojpjb3Jl
KHNlbGYpOwotICAgIGdjaGFyKiByZXN1bHQgPSBjb252ZXJ0VG9VVEY4U3RyaW5nKGl0ZW0tPmxh
YmVsKCkpOwotICAgIHJldHVybiByZXN1bHQ7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShzZWxm
KTsKLSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJWaWRlbyBUcmFjayIpCi0g
ICAgcmV0dXJuIDA7Ci0jZW5kaWYgLyogRU5BQkxFKFZJREVPX1RSQUNLKSAqLwotfQotCi1nY2hh
ciogd2Via2l0X2RvbV9hdWRpb190cmFja19nZXRfbGFuZ3VhZ2UoV2ViS2l0RE9NQXVkaW9UcmFj
ayogc2VsZikKLXsKLSNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0gICAgV2ViQ29yZTo6SlNNYWlu
VGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9E
T01fSVNfQVVESU9fVFJBQ0soc2VsZiksIDApOwotICAgIFdlYkNvcmU6OkF1ZGlvVHJhY2sqIGl0
ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ2NoYXIqIHJlc3VsdCA9IGNvbnZlcnRUb1VU
RjhTdHJpbmcoaXRlbS0+bGFuZ3VhZ2UoKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSNlbHNlCi0g
ICAgVU5VU0VEX1BBUkFNKHNlbGYpOwotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNF
TlQoIlZpZGVvIFRyYWNrIikKLSAgICByZXR1cm4gMDsKLSNlbmRpZiAvKiBFTkFCTEUoVklERU9f
VFJBQ0spICovCi19Ci0KLWdib29sZWFuIHdlYmtpdF9kb21fYXVkaW9fdHJhY2tfZ2V0X2VuYWJs
ZWQoV2ViS2l0RE9NQXVkaW9UcmFjayogc2VsZikKLXsKLSNpZiBFTkFCTEUoVklERU9fVFJBQ0sp
Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfQVVESU9fVFJBQ0soc2VsZiksIEZBTFNFKTsKLSAg
ICBXZWJDb3JlOjpBdWRpb1RyYWNrKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdi
b29sZWFuIHJlc3VsdCA9IGl0ZW0tPmVuYWJsZWQoKTsKLSAgICByZXR1cm4gcmVzdWx0OwotI2Vs
c2UKLSAgICBVTlVTRURfUEFSQU0oc2VsZik7Ci0gICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1Rf
UFJFU0VOVCgiVmlkZW8gVHJhY2siKQotICAgIHJldHVybiBzdGF0aWNfY2FzdDxnYm9vbGVhbj4o
MCk7Ci0jZW5kaWYgLyogRU5BQkxFKFZJREVPX1RSQUNLKSAqLwotfQotCi12b2lkIHdlYmtpdF9k
b21fYXVkaW9fdHJhY2tfc2V0X2VuYWJsZWQoV2ViS2l0RE9NQXVkaW9UcmFjayogc2VsZiwgZ2Jv
b2xlYW4gdmFsdWUpCi17Ci0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgIFdlYkNvcmU6OkpT
TWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9E
T01fSVNfQVVESU9fVFJBQ0soc2VsZikpOwotICAgIFdlYkNvcmU6OkF1ZGlvVHJhY2sqIGl0ZW0g
PSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgaXRlbS0+c2V0RW5hYmxlZCh2YWx1ZSk7Ci0jZWxz
ZQotICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKLSAgICBVTlVTRURfUEFSQU0odmFsdWUpOwotICAg
IFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIlZpZGVvIFRyYWNrIikKLSNlbmRpZiAv
KiBFTkFCTEUoVklERU9fVFJBQ0spICovCi19Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NQXVkaW9UcmFj
ay5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RP
TS9XZWJLaXRET01BdWRpb1RyYWNrLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA3
M2FjZTcuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01BdWRpb1RyYWNrLmgKKysrIC9kZXYvbnVsbApAQCAt
MSwxMTggKzAsMCBAQAotLyoKLSAqICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9w
ZW4gc291cmNlIHByb2plY3QuCi0gKiAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBn
ZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKLSAqCi0gKiAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
Ci0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCi0gKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCi0gKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBX
ZWJLaXRET01BdWRpb1RyYWNrX2gKLSNkZWZpbmUgV2ViS2l0RE9NQXVkaW9UcmFja19oCi0KLSNp
ZmRlZiBXRUJLSVRfRE9NX1VTRV9VTlNUQUJMRV9BUEkKLQotI2luY2x1ZGUgPGdsaWItb2JqZWN0
Lmg+Ci0jaW5jbHVkZSA8d2Via2l0ZG9tL1dlYktpdERPTU9iamVjdC5oPgotI2luY2x1ZGUgPHdl
YmtpdGRvbS93ZWJraXRkb21kZWZpbmVzLXVuc3RhYmxlLmg+Ci0KLUdfQkVHSU5fREVDTFMKLQot
I2RlZmluZSBXRUJLSVRfRE9NX1RZUEVfQVVESU9fVFJBQ0sgICAgICAgICAgICAod2Via2l0X2Rv
bV9hdWRpb190cmFja19nZXRfdHlwZSgpKQotI2RlZmluZSBXRUJLSVRfRE9NX0FVRElPX1RSQUNL
KG9iaikgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJ
VF9ET01fVFlQRV9BVURJT19UUkFDSywgV2ViS2l0RE9NQXVkaW9UcmFjaykpCi0jZGVmaW5lIFdF
QktJVF9ET01fQVVESU9fVFJBQ0tfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1Nf
Q0FTVCgoa2xhc3MpLCAgV0VCS0lUX0RPTV9UWVBFX0FVRElPX1RSQUNLLCBXZWJLaXRET01BdWRp
b1RyYWNrQ2xhc3MpCi0jZGVmaW5lIFdFQktJVF9ET01fSVNfQVVESU9fVFJBQ0sob2JqKSAgICAg
ICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX0RPTV9UWVBFX0FV
RElPX1RSQUNLKSkKLSNkZWZpbmUgV0VCS0lUX0RPTV9JU19BVURJT19UUkFDS19DTEFTUyhrbGFz
cykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfRE9NX1RZUEVfQVVE
SU9fVFJBQ0spKQotI2RlZmluZSBXRUJLSVRfRE9NX0FVRElPX1RSQUNLX0dFVF9DTEFTUyhvYmop
ICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9ET01fVFlQRV9BVURJ
T19UUkFDSywgV2ViS2l0RE9NQXVkaW9UcmFja0NsYXNzKSkKLQotc3RydWN0IF9XZWJLaXRET01B
dWRpb1RyYWNrIHsKLSAgICBXZWJLaXRET01PYmplY3QgcGFyZW50X2luc3RhbmNlOwotfTsKLQot
c3RydWN0IF9XZWJLaXRET01BdWRpb1RyYWNrQ2xhc3MgewotICAgIFdlYktpdERPTU9iamVjdENs
YXNzIHBhcmVudF9jbGFzczsKLX07Ci0KLVdFQktJVF9BUEkgR1R5cGUKLXdlYmtpdF9kb21fYXVk
aW9fdHJhY2tfZ2V0X3R5cGUodm9pZCk7Ci0KLS8qKgotICogd2Via2l0X2RvbV9hdWRpb190cmFj
a19nZXRfaWQ6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NQXVkaW9UcmFjawotICoKLSAqIFJldHVy
bnM6IEEgI2djaGFyCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJ
IGdjaGFyKgotd2Via2l0X2RvbV9hdWRpb190cmFja19nZXRfaWQoV2ViS2l0RE9NQXVkaW9UcmFj
ayogc2VsZik7Ci0KLS8qKgotICogd2Via2l0X2RvbV9hdWRpb190cmFja19nZXRfa2luZDoKLSAq
IEBzZWxmOiBBICNXZWJLaXRET01BdWRpb1RyYWNrCi0gKgotICogUmV0dXJuczogQSAjZ2NoYXIK
LSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgZ2NoYXIqCi13ZWJr
aXRfZG9tX2F1ZGlvX3RyYWNrX2dldF9raW5kKFdlYktpdERPTUF1ZGlvVHJhY2sqIHNlbGYpOwot
Ci0vKioKLSAqIHdlYmtpdF9kb21fYXVkaW9fdHJhY2tfZ2V0X2xhYmVsOgotICogQHNlbGY6IEEg
I1dlYktpdERPTUF1ZGlvVHJhY2sKLSAqCi0gKiBSZXR1cm5zOiBBICNnY2hhcgotICoKLSAqIFN0
YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSBnY2hhcioKLXdlYmtpdF9kb21fYXVk
aW9fdHJhY2tfZ2V0X2xhYmVsKFdlYktpdERPTUF1ZGlvVHJhY2sqIHNlbGYpOwotCi0vKioKLSAq
IHdlYmtpdF9kb21fYXVkaW9fdHJhY2tfZ2V0X2xhbmd1YWdlOgotICogQHNlbGY6IEEgI1dlYktp
dERPTUF1ZGlvVHJhY2sKLSAqCi0gKiBSZXR1cm5zOiBBICNnY2hhcgotICoKLSAqIFN0YWJpbGl0
eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSBnY2hhcioKLXdlYmtpdF9kb21fYXVkaW9fdHJh
Y2tfZ2V0X2xhbmd1YWdlKFdlYktpdERPTUF1ZGlvVHJhY2sqIHNlbGYpOwotCi0vKioKLSAqIHdl
YmtpdF9kb21fYXVkaW9fdHJhY2tfZ2V0X2VuYWJsZWQ6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9N
QXVkaW9UcmFjawotICoKLSAqIFJldHVybnM6IEEgI2dib29sZWFuCi0gKgotICogU3RhYmlsaXR5
OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIGdib29sZWFuCi13ZWJraXRfZG9tX2F1ZGlvX3Ry
YWNrX2dldF9lbmFibGVkKFdlYktpdERPTUF1ZGlvVHJhY2sqIHNlbGYpOwotCi0vKioKLSAqIHdl
YmtpdF9kb21fYXVkaW9fdHJhY2tfc2V0X2VuYWJsZWQ6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9N
QXVkaW9UcmFjawotICogQHZhbHVlOiBBICNnYm9vbGVhbgotICoKLSAqIFN0YWJpbGl0eTogVW5z
dGFibGUKLSoqLwotV0VCS0lUX0FQSSB2b2lkCi13ZWJraXRfZG9tX2F1ZGlvX3RyYWNrX3NldF9l
bmFibGVkKFdlYktpdERPTUF1ZGlvVHJhY2sqIHNlbGYsIGdib29sZWFuIHZhbHVlKTsKLQotR19F
TkRfREVDTFMKLQotI2VuZGlmIC8qIFdFQktJVF9ET01fVVNFX1VOU1RBQkxFX0FQSSAqLwotI2Vu
ZGlmIC8qIFdlYktpdERPTUF1ZGlvVHJhY2tfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01BdWRpb1Ry
YWNrTGlzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9ndGsvRE9NL1dlYktpdERPTUF1ZGlvVHJhY2tMaXN0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMTUyYmVjMi4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUF1ZGlvVHJhY2tMaXN0LmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDI1NSArMCwwIEBACi0vKgotICogIFRoaXMgZmlsZSBpcyBw
YXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAqICBUaGlzIGZpbGUgaGFz
IGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQot
ICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViS2l0RE9NQXVkaW9U
cmFja0xpc3QuaCIKLQotI2luY2x1ZGUgPFdlYkNvcmUvQ1NTSW1wb3J0UnVsZS5oPgotI2luY2x1
ZGUgIkRPTU9iamVjdENhY2hlLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudC5oPgotI2lu
Y2x1ZGUgPFdlYkNvcmUvRXhjZXB0aW9uQ29kZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRXhjZXB0
aW9uQ29kZURlc2NyaXB0aW9uLmg+Ci0jaW5jbHVkZSAiR09iamVjdEV2ZW50TGlzdGVuZXIuaCIK
LSNpbmNsdWRlIDxXZWJDb3JlL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5oPgotI2luY2x1ZGUgIldl
YktpdERPTUF1ZGlvVHJhY2tMaXN0UHJpdmF0ZS5oIgotI2luY2x1ZGUgIldlYktpdERPTUF1ZGlv
VHJhY2tQcml2YXRlLmgiCi0jaW5jbHVkZSAiV2ViS2l0RE9NRXZlbnRQcml2YXRlLmgiCi0jaW5j
bHVkZSAiV2ViS2l0RE9NRXZlbnRUYXJnZXQuaCIKLSNpbmNsdWRlICJXZWJLaXRET01Qcml2YXRl
LmgiCi0jaW5jbHVkZSAiQ29udmVydFRvVVRGOFN0cmluZy5oIgotI2luY2x1ZGUgPHd0Zi9HZXRQ
dHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLSNkZWZpbmUgV0VCS0lUX0RPTV9BVURJ
T19UUkFDS19MSVNUX0dFVF9QUklWQVRFKG9iaikgR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRF
KG9iaiwgV0VCS0lUX0RPTV9UWVBFX0FVRElPX1RSQUNLX0xJU1QsIFdlYktpdERPTUF1ZGlvVHJh
Y2tMaXN0UHJpdmF0ZSkKLQotdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdERPTUF1ZGlvVHJhY2tMaXN0
UHJpdmF0ZSB7Ci0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgIFJlZlB0cjxXZWJDb3JlOjpB
dWRpb1RyYWNrTGlzdD4gY29yZU9iamVjdDsKLSNlbmRpZiAvLyBFTkFCTEUoVklERU9fVFJBQ0sp
Ci19IFdlYktpdERPTUF1ZGlvVHJhY2tMaXN0UHJpdmF0ZTsKLQotI2lmIEVOQUJMRShWSURFT19U
UkFDSykKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVdlYktpdERPTUF1ZGlvVHJhY2tMaXN0KiBr
aXQoV2ViQ29yZTo6QXVkaW9UcmFja0xpc3QqIG9iaikKLXsKLSAgICBpZiAoIW9iaikKLSAgICAg
ICAgcmV0dXJuIDA7Ci0KLSAgICBpZiAoZ3BvaW50ZXIgcmV0ID0gRE9NT2JqZWN0Q2FjaGU6Omdl
dChvYmopKQotICAgICAgICByZXR1cm4gV0VCS0lUX0RPTV9BVURJT19UUkFDS19MSVNUKHJldCk7
Ci0KLSAgICByZXR1cm4gd3JhcEF1ZGlvVHJhY2tMaXN0KG9iaik7Ci19Ci0KLVdlYkNvcmU6OkF1
ZGlvVHJhY2tMaXN0KiBjb3JlKFdlYktpdERPTUF1ZGlvVHJhY2tMaXN0KiByZXF1ZXN0KQotewot
ICAgIHJldHVybiByZXF1ZXN0ID8gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6QXVkaW9UcmFja0xpc3Qq
PihXRUJLSVRfRE9NX09CSkVDVChyZXF1ZXN0KS0+Y29yZU9iamVjdCkgOiAwOwotfQotCi1XZWJL
aXRET01BdWRpb1RyYWNrTGlzdCogd3JhcEF1ZGlvVHJhY2tMaXN0KFdlYkNvcmU6OkF1ZGlvVHJh
Y2tMaXN0KiBjb3JlT2JqZWN0KQotewotICAgIEFTU0VSVChjb3JlT2JqZWN0KTsKLSAgICByZXR1
cm4gV0VCS0lUX0RPTV9BVURJT19UUkFDS19MSVNUKGdfb2JqZWN0X25ldyhXRUJLSVRfRE9NX1RZ
UEVfQVVESU9fVFJBQ0tfTElTVCwgImNvcmUtb2JqZWN0IiwgY29yZU9iamVjdCwgbnVsbHB0cikp
OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShWSURFT19U
UkFDSykKLQotc3RhdGljIGdib29sZWFuIHdlYmtpdF9kb21fYXVkaW9fdHJhY2tfbGlzdF9kaXNw
YXRjaF9ldmVudChXZWJLaXRET01FdmVudFRhcmdldCogdGFyZ2V0LCBXZWJLaXRET01FdmVudCog
ZXZlbnQsIEdFcnJvcioqIGVycm9yKQotewotI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICBX
ZWJDb3JlOjpFdmVudCogY29yZUV2ZW50ID0gV2ViS2l0Ojpjb3JlKGV2ZW50KTsKLSAgICBpZiAo
IWNvcmVFdmVudCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIFdlYkNvcmU6OkF1ZGlvVHJh
Y2tMaXN0KiBjb3JlVGFyZ2V0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6QXVkaW9UcmFja0xpc3Qq
PihXRUJLSVRfRE9NX09CSkVDVCh0YXJnZXQpLT5jb3JlT2JqZWN0KTsKLQotICAgIFdlYkNvcmU6
OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGdib29sZWFuIHJlc3VsdCA9IGNvcmVUYXJnZXQt
PmRpc3BhdGNoRXZlbnRGb3JCaW5kaW5ncygqY29yZUV2ZW50LCBlYyk7Ci0gICAgaWYgKGVjKSB7
Ci0gICAgICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiBkZXNjcmlwdGlvbihl
Yyk7Ci0gICAgICAgIGdfc2V0X2Vycm9yX2xpdGVyYWwoZXJyb3IsIGdfcXVhcmtfZnJvbV9zdHJp
bmcoIldFQktJVF9ET00iKSwgZGVzY3JpcHRpb24uY29kZSwgZGVzY3JpcHRpb24ubmFtZSk7Ci0g
ICAgfQotICAgIHJldHVybiByZXN1bHQ7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTSh0YXJnZXQp
OwotICAgIFVOVVNFRF9QQVJBTShldmVudCk7Ci0gICAgVU5VU0VEX1BBUkFNKGVycm9yKTsKLSAg
ICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJWaWRlbyBUcmFjayIpCi0gICAgcmV0
dXJuIGZhbHNlOwotI2VuZGlmIC8vIEVOQUJMRShWSURFT19UUkFDSykKLX0KLQotc3RhdGljIGdi
b29sZWFuIHdlYmtpdF9kb21fYXVkaW9fdHJhY2tfbGlzdF9hZGRfZXZlbnRfbGlzdGVuZXIoV2Vi
S2l0RE9NRXZlbnRUYXJnZXQqIHRhcmdldCwgY29uc3QgY2hhciogZXZlbnROYW1lLCBHQ2xvc3Vy
ZSogaGFuZGxlciwgZ2Jvb2xlYW4gdXNlQ2FwdHVyZSkKLXsKLSNpZiBFTkFCTEUoVklERU9fVFJB
Q0spCi0gICAgV2ViQ29yZTo6QXVkaW9UcmFja0xpc3QqIGNvcmVUYXJnZXQgPSBzdGF0aWNfY2Fz
dDxXZWJDb3JlOjpBdWRpb1RyYWNrTGlzdCo+KFdFQktJVF9ET01fT0JKRUNUKHRhcmdldCktPmNv
cmVPYmplY3QpOwotICAgIHJldHVybiBXZWJLaXQ6OkdPYmplY3RFdmVudExpc3RlbmVyOjphZGRF
dmVudExpc3RlbmVyKEdfT0JKRUNUKHRhcmdldCksIGNvcmVUYXJnZXQsIGV2ZW50TmFtZSwgaGFu
ZGxlciwgdXNlQ2FwdHVyZSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTSh0YXJnZXQpOwotICAg
IFVOVVNFRF9QQVJBTShldmVudE5hbWUpOwotICAgIFVOVVNFRF9QQVJBTShoYW5kbGVyKTsKLSAg
ICBVTlVTRURfUEFSQU0odXNlQ2FwdHVyZSk7Ci0gICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1Rf
UFJFU0VOVCgiVmlkZW8gVHJhY2siKQotICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZiAvLyBFTkFC
TEUoVklERU9fVFJBQ0spCi19Ci0KLXN0YXRpYyBnYm9vbGVhbiB3ZWJraXRfZG9tX2F1ZGlvX3Ry
YWNrX2xpc3RfcmVtb3ZlX2V2ZW50X2xpc3RlbmVyKFdlYktpdERPTUV2ZW50VGFyZ2V0KiB0YXJn
ZXQsIGNvbnN0IGNoYXIqIGV2ZW50TmFtZSwgR0Nsb3N1cmUqIGhhbmRsZXIsIGdib29sZWFuIHVz
ZUNhcHR1cmUpCi17Ci0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgIFdlYkNvcmU6OkF1ZGlv
VHJhY2tMaXN0KiBjb3JlVGFyZ2V0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6QXVkaW9UcmFja0xp
c3QqPihXRUJLSVRfRE9NX09CSkVDVCh0YXJnZXQpLT5jb3JlT2JqZWN0KTsKLSAgICByZXR1cm4g
V2ViS2l0OjpHT2JqZWN0RXZlbnRMaXN0ZW5lcjo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihHX09CSkVD
VCh0YXJnZXQpLCBjb3JlVGFyZ2V0LCBldmVudE5hbWUsIGhhbmRsZXIsIHVzZUNhcHR1cmUpOwot
I2Vsc2UKLSAgICBVTlVTRURfUEFSQU0odGFyZ2V0KTsKLSAgICBVTlVTRURfUEFSQU0oZXZlbnRO
YW1lKTsKLSAgICBVTlVTRURfUEFSQU0oaGFuZGxlcik7Ci0gICAgVU5VU0VEX1BBUkFNKHVzZUNh
cHR1cmUpOwotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIlZpZGVvIFRyYWNr
IikKLSAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYgLy8gRU5BQkxFKFZJREVPX1RSQUNLKQotfQot
Ci1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX2V2ZW50X3RhcmdldF9pbml0KFdlYktpdERPTUV2ZW50
VGFyZ2V0SWZhY2UqIGlmYWNlKQotewotICAgIGlmYWNlLT5kaXNwYXRjaF9ldmVudCA9IHdlYmtp
dF9kb21fYXVkaW9fdHJhY2tfbGlzdF9kaXNwYXRjaF9ldmVudDsKLSAgICBpZmFjZS0+YWRkX2V2
ZW50X2xpc3RlbmVyID0gd2Via2l0X2RvbV9hdWRpb190cmFja19saXN0X2FkZF9ldmVudF9saXN0
ZW5lcjsKLSAgICBpZmFjZS0+cmVtb3ZlX2V2ZW50X2xpc3RlbmVyID0gd2Via2l0X2RvbV9hdWRp
b190cmFja19saXN0X3JlbW92ZV9ldmVudF9saXN0ZW5lcjsKLX0KLQotR19ERUZJTkVfVFlQRV9X
SVRIX0NPREUoV2ViS2l0RE9NQXVkaW9UcmFja0xpc3QsIHdlYmtpdF9kb21fYXVkaW9fdHJhY2tf
bGlzdCwgV0VCS0lUX0RPTV9UWVBFX09CSkVDVCwgR19JTVBMRU1FTlRfSU5URVJGQUNFKFdFQktJ
VF9ET01fVFlQRV9FVkVOVF9UQVJHRVQsIHdlYmtpdF9kb21fZXZlbnRfdGFyZ2V0X2luaXQpKQot
Ci1lbnVtIHsKLSAgICBQUk9QXzAsCi0gICAgUFJPUF9MRU5HVEgsCi19OwotCi1zdGF0aWMgdm9p
ZCB3ZWJraXRfZG9tX2F1ZGlvX3RyYWNrX2xpc3RfZmluYWxpemUoR09iamVjdCogb2JqZWN0KQot
ewotICAgIFdlYktpdERPTUF1ZGlvVHJhY2tMaXN0UHJpdmF0ZSogcHJpdiA9IFdFQktJVF9ET01f
QVVESU9fVFJBQ0tfTElTVF9HRVRfUFJJVkFURShvYmplY3QpOwotI2lmIEVOQUJMRShWSURFT19U
UkFDSykKLSAgICBXZWJLaXQ6OkRPTU9iamVjdENhY2hlOjpmb3JnZXQocHJpdi0+Y29yZU9iamVj
dC5nZXQoKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKFZJREVPX1RSQUNLKQotICAgIHByaXYtPn5XZWJL
aXRET01BdWRpb1RyYWNrTGlzdFByaXZhdGUoKTsKLSAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRf
ZG9tX2F1ZGlvX3RyYWNrX2xpc3RfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKLX0K
LQotc3RhdGljIHZvaWQgd2Via2l0X2RvbV9hdWRpb190cmFja19saXN0X2dldF9wcm9wZXJ0eShH
T2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BlcnR5SWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNw
ZWMqIHBzcGVjKQotewotICAgIFdlYktpdERPTUF1ZGlvVHJhY2tMaXN0KiBzZWxmID0gV0VCS0lU
X0RPTV9BVURJT19UUkFDS19MSVNUKG9iamVjdCk7Ci0KLSAgICBzd2l0Y2ggKHByb3BlcnR5SWQp
IHsKLSAgICBjYXNlIFBST1BfTEVOR1RIOgotICAgICAgICBnX3ZhbHVlX3NldF91bG9uZyh2YWx1
ZSwgd2Via2l0X2RvbV9hdWRpb190cmFja19saXN0X2dldF9sZW5ndGgoc2VsZikpOwotICAgICAg
ICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJP
UEVSVFlfSUQob2JqZWN0LCBwcm9wZXJ0eUlkLCBwc3BlYyk7Ci0gICAgICAgIGJyZWFrOwotICAg
IH0KLX0KLQotc3RhdGljIEdPYmplY3QqIHdlYmtpdF9kb21fYXVkaW9fdHJhY2tfbGlzdF9jb25z
dHJ1Y3RvcihHVHlwZSB0eXBlLCBndWludCBjb25zdHJ1Y3RQcm9wZXJ0aWVzQ291bnQsIEdPYmpl
Y3RDb25zdHJ1Y3RQYXJhbSogY29uc3RydWN0UHJvcGVydGllcykKLXsKLSAgICBHT2JqZWN0KiBv
YmplY3QgPSBHX09CSkVDVF9DTEFTUyh3ZWJraXRfZG9tX2F1ZGlvX3RyYWNrX2xpc3RfcGFyZW50
X2NsYXNzKS0+Y29uc3RydWN0b3IodHlwZSwgY29uc3RydWN0UHJvcGVydGllc0NvdW50LCBjb25z
dHJ1Y3RQcm9wZXJ0aWVzKTsKLSNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0gICAgV2ViS2l0RE9N
QXVkaW9UcmFja0xpc3RQcml2YXRlKiBwcml2ID0gV0VCS0lUX0RPTV9BVURJT19UUkFDS19MSVNU
X0dFVF9QUklWQVRFKG9iamVjdCk7Ci0gICAgcHJpdi0+Y29yZU9iamVjdCA9IHN0YXRpY19jYXN0
PFdlYkNvcmU6OkF1ZGlvVHJhY2tMaXN0Kj4oV0VCS0lUX0RPTV9PQkpFQ1Qob2JqZWN0KS0+Y29y
ZU9iamVjdCk7Ci0gICAgV2ViS2l0OjpET01PYmplY3RDYWNoZTo6cHV0KHByaXYtPmNvcmVPYmpl
Y3QuZ2V0KCksIG9iamVjdCk7Ci0jZW5kaWYgLy8gRU5BQkxFKFZJREVPX1RSQUNLKQotICAgIHJl
dHVybiBvYmplY3Q7Ci19Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdF9kb21fYXVkaW9fdHJhY2tfbGlz
dF9jbGFzc19pbml0KFdlYktpdERPTUF1ZGlvVHJhY2tMaXN0Q2xhc3MqIHJlcXVlc3RDbGFzcykK
LXsKLSAgICBHT2JqZWN0Q2xhc3MqIGdvYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKHJlcXVl
c3RDbGFzcyk7Ci0gICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKGdvYmplY3RDbGFzcywgc2l6
ZW9mKFdlYktpdERPTUF1ZGlvVHJhY2tMaXN0UHJpdmF0ZSkpOwotICAgIGdvYmplY3RDbGFzcy0+
Y29uc3RydWN0b3IgPSB3ZWJraXRfZG9tX2F1ZGlvX3RyYWNrX2xpc3RfY29uc3RydWN0b3I7Ci0g
ICAgZ29iamVjdENsYXNzLT5maW5hbGl6ZSA9IHdlYmtpdF9kb21fYXVkaW9fdHJhY2tfbGlzdF9m
aW5hbGl6ZTsKLSAgICBnb2JqZWN0Q2xhc3MtPmdldF9wcm9wZXJ0eSA9IHdlYmtpdF9kb21fYXVk
aW9fdHJhY2tfbGlzdF9nZXRfcHJvcGVydHk7Ci0KLSAgICBnX29iamVjdF9jbGFzc19pbnN0YWxs
X3Byb3BlcnR5KAotICAgICAgICBnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBST1BfTEVOR1RILAot
ICAgICAgICBnX3BhcmFtX3NwZWNfdWxvbmcoCi0gICAgICAgICAgICAibGVuZ3RoIiwKLSAgICAg
ICAgICAgICJBdWRpb1RyYWNrTGlzdDpsZW5ndGgiLAotICAgICAgICAgICAgInJlYWQtb25seSBn
dWxvbmcgQXVkaW9UcmFja0xpc3Q6bGVuZ3RoIiwKLSAgICAgICAgICAgIDAsIEdfTUFYVUxPTkcs
IDAsCi0gICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKLQotfQotCi1zdGF0aWMg
dm9pZCB3ZWJraXRfZG9tX2F1ZGlvX3RyYWNrX2xpc3RfaW5pdChXZWJLaXRET01BdWRpb1RyYWNr
TGlzdCogcmVxdWVzdCkKLXsKLSAgICBXZWJLaXRET01BdWRpb1RyYWNrTGlzdFByaXZhdGUqIHBy
aXYgPSBXRUJLSVRfRE9NX0FVRElPX1RSQUNLX0xJU1RfR0VUX1BSSVZBVEUocmVxdWVzdCk7Ci0g
ICAgbmV3IChwcml2KSBXZWJLaXRET01BdWRpb1RyYWNrTGlzdFByaXZhdGUoKTsKLX0KLQotV2Vi
S2l0RE9NQXVkaW9UcmFjayogd2Via2l0X2RvbV9hdWRpb190cmFja19saXN0X2l0ZW0oV2ViS2l0
RE9NQXVkaW9UcmFja0xpc3QqIHNlbGYsIGd1bG9uZyBpbmRleCkKLXsKLSNpZiBFTkFCTEUoVklE
RU9fVFJBQ0spCi0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAg
IGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfQVVESU9fVFJBQ0tfTElTVChzZWxm
KSwgMCk7Ci0gICAgV2ViQ29yZTo6QXVkaW9UcmFja0xpc3QqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUo
c2VsZik7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkF1ZGlvVHJhY2s+IGdvYmplY3RSZXN1bHQgPSBX
VEY6OmdldFB0cihpdGVtLT5pdGVtKGluZGV4KSk7Ci0gICAgcmV0dXJuIFdlYktpdDo6a2l0KGdv
YmplY3RSZXN1bHQuZ2V0KCkpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc2VsZik7Ci0gICAg
VU5VU0VEX1BBUkFNKGluZGV4KTsKLSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5U
KCJWaWRlbyBUcmFjayIpCi0gICAgcmV0dXJuIDA7Ci0jZW5kaWYgLyogRU5BQkxFKFZJREVPX1RS
QUNLKSAqLwotfQotCi1XZWJLaXRET01BdWRpb1RyYWNrKiB3ZWJraXRfZG9tX2F1ZGlvX3RyYWNr
X2xpc3RfZ2V0X3RyYWNrX2J5X2lkKFdlYktpdERPTUF1ZGlvVHJhY2tMaXN0KiBzZWxmLCBjb25z
dCBnY2hhciogaWQpCi17Ci0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgIFdlYkNvcmU6OkpT
TWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJL
SVRfRE9NX0lTX0FVRElPX1RSQUNLX0xJU1Qoc2VsZiksIDApOwotICAgIGdfcmV0dXJuX3ZhbF9p
Zl9mYWlsKGlkLCAwKTsKLSAgICBXZWJDb3JlOjpBdWRpb1RyYWNrTGlzdCogaXRlbSA9IFdlYktp
dDo6Y29yZShzZWxmKTsKLSAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRJZCA9IFdURjo6U3RyaW5n
Ojpmcm9tVVRGOChpZCk7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkF1ZGlvVHJhY2s+IGdvYmplY3RS
ZXN1bHQgPSBXVEY6OmdldFB0cihpdGVtLT5nZXRUcmFja0J5SWQoY29udmVydGVkSWQpKTsKLSAg
ICByZXR1cm4gV2ViS2l0OjpraXQoZ29iamVjdFJlc3VsdC5nZXQoKSk7Ci0jZWxzZQotICAgIFVO
VVNFRF9QQVJBTShzZWxmKTsKLSAgICBVTlVTRURfUEFSQU0oaWQpOwotICAgIFdFQktJVF9XQVJO
X0ZFQVRVUkVfTk9UX1BSRVNFTlQoIlZpZGVvIFRyYWNrIikKLSAgICByZXR1cm4gMDsKLSNlbmRp
ZiAvKiBFTkFCTEUoVklERU9fVFJBQ0spICovCi19Ci0KLWd1bG9uZyB3ZWJraXRfZG9tX2F1ZGlv
X3RyYWNrX2xpc3RfZ2V0X2xlbmd0aChXZWJLaXRET01BdWRpb1RyYWNrTGlzdCogc2VsZikKLXsK
LSNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0
YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfQVVESU9f
VFJBQ0tfTElTVChzZWxmKSwgMCk7Ci0gICAgV2ViQ29yZTo6QXVkaW9UcmFja0xpc3QqIGl0ZW0g
PSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ3Vsb25nIHJlc3VsdCA9IGl0ZW0tPmxlbmd0aCgp
OwotICAgIHJldHVybiByZXN1bHQ7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKLSAg
ICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJWaWRlbyBUcmFjayIpCi0gICAgcmV0
dXJuIHN0YXRpY19jYXN0PGd1bG9uZz4oMCk7Ci0jZW5kaWYgLyogRU5BQkxFKFZJREVPX1RSQUNL
KSAqLwotfQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUF1ZGlvVHJhY2tMaXN0LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUF1ZGlv
VHJhY2tMaXN0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVhNjdlZmEuLjAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3Rr
L0RPTS9XZWJLaXRET01BdWRpb1RyYWNrTGlzdC5oCisrKyAvZGV2L251bGwKQEAgLTEsODggKzAs
MCBAQAotLyoKLSAqICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNl
IHByb2plY3QuCi0gKiAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1i
aW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiAgTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
Ci0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0g
KiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgot
ICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0g
KiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBXZWJLaXRET01B
dWRpb1RyYWNrTGlzdF9oCi0jZGVmaW5lIFdlYktpdERPTUF1ZGlvVHJhY2tMaXN0X2gKLQotI2lm
ZGVmIFdFQktJVF9ET01fVVNFX1VOU1RBQkxFX0FQSQotCi0jaW5jbHVkZSA8Z2xpYi1vYmplY3Qu
aD4KLSNpbmNsdWRlIDx3ZWJraXRkb20vV2ViS2l0RE9NT2JqZWN0Lmg+Ci0jaW5jbHVkZSA8d2Vi
a2l0ZG9tL3dlYmtpdGRvbWRlZmluZXMtdW5zdGFibGUuaD4KLQotR19CRUdJTl9ERUNMUwotCi0j
ZGVmaW5lIFdFQktJVF9ET01fVFlQRV9BVURJT19UUkFDS19MSVNUICAgICAgICAgICAgKHdlYmtp
dF9kb21fYXVkaW9fdHJhY2tfbGlzdF9nZXRfdHlwZSgpKQotI2RlZmluZSBXRUJLSVRfRE9NX0FV
RElPX1RSQUNLX0xJU1Qob2JqKSAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FT
VCgob2JqKSwgV0VCS0lUX0RPTV9UWVBFX0FVRElPX1RSQUNLX0xJU1QsIFdlYktpdERPTUF1ZGlv
VHJhY2tMaXN0KSkKLSNkZWZpbmUgV0VCS0lUX0RPTV9BVURJT19UUkFDS19MSVNUX0NMQVNTKGts
YXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJVF9ET01fVFlQ
RV9BVURJT19UUkFDS19MSVNULCBXZWJLaXRET01BdWRpb1RyYWNrTGlzdENsYXNzKQotI2RlZmlu
ZSBXRUJLSVRfRE9NX0lTX0FVRElPX1RSQUNLX0xJU1Qob2JqKSAgICAgICAgIChHX1RZUEVfQ0hF
Q0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX0RPTV9UWVBFX0FVRElPX1RSQUNLX0xJU1Qp
KQotI2RlZmluZSBXRUJLSVRfRE9NX0lTX0FVRElPX1RSQUNLX0xJU1RfQ0xBU1Moa2xhc3MpIChH
X1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX0RPTV9UWVBFX0FVRElPX1RS
QUNLX0xJU1QpKQotI2RlZmluZSBXRUJLSVRfRE9NX0FVRElPX1RSQUNLX0xJU1RfR0VUX0NMQVNT
KG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgV0VCS0lUX0RPTV9UWVBF
X0FVRElPX1RSQUNLX0xJU1QsIFdlYktpdERPTUF1ZGlvVHJhY2tMaXN0Q2xhc3MpKQotCi1zdHJ1
Y3QgX1dlYktpdERPTUF1ZGlvVHJhY2tMaXN0IHsKLSAgICBXZWJLaXRET01PYmplY3QgcGFyZW50
X2luc3RhbmNlOwotfTsKLQotc3RydWN0IF9XZWJLaXRET01BdWRpb1RyYWNrTGlzdENsYXNzIHsK
LSAgICBXZWJLaXRET01PYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7Ci19OwotCi1XRUJLSVRfQVBJ
IEdUeXBlCi13ZWJraXRfZG9tX2F1ZGlvX3RyYWNrX2xpc3RfZ2V0X3R5cGUodm9pZCk7Ci0KLS8q
KgotICogd2Via2l0X2RvbV9hdWRpb190cmFja19saXN0X2l0ZW06Ci0gKiBAc2VsZjogQSAjV2Vi
S2l0RE9NQXVkaW9UcmFja0xpc3QKLSAqIEBpbmRleDogQSAjZ3Vsb25nCi0gKgotICogUmV0dXJu
czogKHRyYW5zZmVyIGZ1bGwpOiBBICNXZWJLaXRET01BdWRpb1RyYWNrCi0gKgotICogU3RhYmls
aXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIFdlYktpdERPTUF1ZGlvVHJhY2sqCi13ZWJr
aXRfZG9tX2F1ZGlvX3RyYWNrX2xpc3RfaXRlbShXZWJLaXRET01BdWRpb1RyYWNrTGlzdCogc2Vs
ZiwgZ3Vsb25nIGluZGV4KTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2F1ZGlvX3RyYWNrX2xpc3Rf
Z2V0X3RyYWNrX2J5X2lkOgotICogQHNlbGY6IEEgI1dlYktpdERPTUF1ZGlvVHJhY2tMaXN0Ci0g
KiBAaWQ6IEEgI2djaGFyCi0gKgotICogUmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiBBICNXZWJL
aXRET01BdWRpb1RyYWNrCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRf
QVBJIFdlYktpdERPTUF1ZGlvVHJhY2sqCi13ZWJraXRfZG9tX2F1ZGlvX3RyYWNrX2xpc3RfZ2V0
X3RyYWNrX2J5X2lkKFdlYktpdERPTUF1ZGlvVHJhY2tMaXN0KiBzZWxmLCBjb25zdCBnY2hhciog
aWQpOwotCi0vKioKLSAqIHdlYmtpdF9kb21fYXVkaW9fdHJhY2tfbGlzdF9nZXRfbGVuZ3RoOgot
ICogQHNlbGY6IEEgI1dlYktpdERPTUF1ZGlvVHJhY2tMaXN0Ci0gKgotICogUmV0dXJuczogQSAj
Z3Vsb25nCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIGd1bG9u
Zwotd2Via2l0X2RvbV9hdWRpb190cmFja19saXN0X2dldF9sZW5ndGgoV2ViS2l0RE9NQXVkaW9U
cmFja0xpc3QqIHNlbGYpOwotCi1HX0VORF9ERUNMUwotCi0jZW5kaWYgLyogV0VCS0lUX0RPTV9V
U0VfVU5TVEFCTEVfQVBJICovCi0jZW5kaWYgLyogV2ViS2l0RE9NQXVkaW9UcmFja0xpc3RfaCAq
LwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ3RrL0RPTS9XZWJLaXRET01BdWRpb1RyYWNrTGlzdFByaXZhdGUuaCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NQXVkaW9U
cmFja0xpc3RQcml2YXRlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjM2FjNTgu
LjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ3RrL0RPTS9XZWJLaXRET01BdWRpb1RyYWNrTGlzdFByaXZhdGUuaAorKysgL2Rldi9udWxs
CkBAIC0xLDM2ICswLDAgQEAKLS8qCi0gKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktp
dCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICogIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQg
YnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICogIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAq
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAq
ICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5k
ZWYgV2ViS2l0RE9NQXVkaW9UcmFja0xpc3RQcml2YXRlX2gKLSNkZWZpbmUgV2ViS2l0RE9NQXVk
aW9UcmFja0xpc3RQcml2YXRlX2gKLQotI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9UcmFja0xpc3Qu
aD4KLSNpbmNsdWRlIDx3ZWJraXRkb20vV2ViS2l0RE9NQXVkaW9UcmFja0xpc3QuaD4KLSNpZiBF
TkFCTEUoVklERU9fVFJBQ0spCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotV2ViS2l0RE9NQXVkaW9U
cmFja0xpc3QqIHdyYXBBdWRpb1RyYWNrTGlzdChXZWJDb3JlOjpBdWRpb1RyYWNrTGlzdCopOwot
V2ViS2l0RE9NQXVkaW9UcmFja0xpc3QqIGtpdChXZWJDb3JlOjpBdWRpb1RyYWNrTGlzdCopOwot
V2ViQ29yZTo6QXVkaW9UcmFja0xpc3QqIGNvcmUoV2ViS2l0RE9NQXVkaW9UcmFja0xpc3QqKTsK
LX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLyogRU5BQkxFKFZJREVPX1RSQUNLKSAq
LwotCi0jZW5kaWYgLyogV2ViS2l0RE9NQXVkaW9UcmFja0xpc3RQcml2YXRlX2ggKi8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9E
T00vV2ViS2l0RE9NQXVkaW9UcmFja1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NQXVkaW9UcmFja1ByaXZhdGUu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWUwMGNmMS4uMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktp
dERPTUF1ZGlvVHJhY2tQcml2YXRlLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi0v
KgotICogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVj
dC4KLSAqICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdz
LnBsLiBETyBOT1QgTU9ESUZZIQotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQotICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaWZuZGVmIFdlYktpdERPTUF1ZGlvVHJh
Y2tQcml2YXRlX2gKLSNkZWZpbmUgV2ViS2l0RE9NQXVkaW9UcmFja1ByaXZhdGVfaAotCi0jaW5j
bHVkZSA8V2ViQ29yZS9BdWRpb1RyYWNrLmg+Ci0jaW5jbHVkZSA8d2Via2l0ZG9tL1dlYktpdERP
TUF1ZGlvVHJhY2suaD4KLSNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0KLW5hbWVzcGFjZSBXZWJL
aXQgewotV2ViS2l0RE9NQXVkaW9UcmFjayogd3JhcEF1ZGlvVHJhY2soV2ViQ29yZTo6QXVkaW9U
cmFjayopOwotV2ViS2l0RE9NQXVkaW9UcmFjayoga2l0KFdlYkNvcmU6OkF1ZGlvVHJhY2sqKTsK
LVdlYkNvcmU6OkF1ZGlvVHJhY2sqIGNvcmUoV2ViS2l0RE9NQXVkaW9UcmFjayopOwotfSAvLyBu
YW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvKiBFTkFCTEUoVklERU9fVFJBQ0spICovCi0KLSNl
bmRpZiAvKiBXZWJLaXRET01BdWRpb1RyYWNrUHJpdmF0ZV9oICovCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERP
TUJhclByb3AuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ3RrL0RPTS9XZWJLaXRET01CYXJQcm9wLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZTI1MWVjOC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUJhclByb3AuY3BwCisrKyAvZGV2L251
bGwKQEAgLTEsMTQ0ICswLDAgQEAKLS8qCi0gKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdl
YktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICogIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0
ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICogIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
LSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
LSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAq
ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJLaXRET01CYXJQcm9wLmgiCi0KLSNpbmNs
dWRlIDxXZWJDb3JlL0NTU0ltcG9ydFJ1bGUuaD4KLSNpbmNsdWRlICJET01PYmplY3RDYWNoZS5o
IgotI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0V4Y2Vw
dGlvbkNvZGUuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0V4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbi5o
PgotI2luY2x1ZGUgPFdlYkNvcmUvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmg+Ci0jaW5jbHVkZSAi
V2ViS2l0RE9NQmFyUHJvcFByaXZhdGUuaCIKLSNpbmNsdWRlICJXZWJLaXRET01Qcml2YXRlLmgi
Ci0jaW5jbHVkZSAiQ29udmVydFRvVVRGOFN0cmluZy5oIgotI2luY2x1ZGUgPHd0Zi9HZXRQdHIu
aD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLSNkZWZpbmUgV0VCS0lUX0RPTV9CQVJfUFJP
UF9HRVRfUFJJVkFURShvYmopIEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURShvYmosIFdFQktJ
VF9ET01fVFlQRV9CQVJfUFJPUCwgV2ViS2l0RE9NQmFyUHJvcFByaXZhdGUpCi0KLXR5cGVkZWYg
c3RydWN0IF9XZWJLaXRET01CYXJQcm9wUHJpdmF0ZSB7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkJh
clByb3A+IGNvcmVPYmplY3Q7Ci19IFdlYktpdERPTUJhclByb3BQcml2YXRlOwotCi1uYW1lc3Bh
Y2UgV2ViS2l0IHsKLQotV2ViS2l0RE9NQmFyUHJvcCoga2l0KFdlYkNvcmU6OkJhclByb3AqIG9i
aikKLXsKLSAgICBpZiAoIW9iaikKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBpZiAoZ3BvaW50
ZXIgcmV0ID0gRE9NT2JqZWN0Q2FjaGU6OmdldChvYmopKQotICAgICAgICByZXR1cm4gV0VCS0lU
X0RPTV9CQVJfUFJPUChyZXQpOwotCi0gICAgcmV0dXJuIHdyYXBCYXJQcm9wKG9iaik7Ci19Ci0K
LVdlYkNvcmU6OkJhclByb3AqIGNvcmUoV2ViS2l0RE9NQmFyUHJvcCogcmVxdWVzdCkKLXsKLSAg
ICByZXR1cm4gcmVxdWVzdCA/IHN0YXRpY19jYXN0PFdlYkNvcmU6OkJhclByb3AqPihXRUJLSVRf
RE9NX09CSkVDVChyZXF1ZXN0KS0+Y29yZU9iamVjdCkgOiAwOwotfQotCi1XZWJLaXRET01CYXJQ
cm9wKiB3cmFwQmFyUHJvcChXZWJDb3JlOjpCYXJQcm9wKiBjb3JlT2JqZWN0KQotewotICAgIEFT
U0VSVChjb3JlT2JqZWN0KTsKLSAgICByZXR1cm4gV0VCS0lUX0RPTV9CQVJfUFJPUChnX29iamVj
dF9uZXcoV0VCS0lUX0RPTV9UWVBFX0JBUl9QUk9QLCAiY29yZS1vYmplY3QiLCBjb3JlT2JqZWN0
LCBudWxscHRyKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi1HX0RFRklORV9UWVBF
KFdlYktpdERPTUJhclByb3AsIHdlYmtpdF9kb21fYmFyX3Byb3AsIFdFQktJVF9ET01fVFlQRV9P
QkpFQ1QpCi0KLWVudW0gewotICAgIFBST1BfMCwKLSAgICBQUk9QX1ZJU0lCTEUsCi19OwotCi1z
dGF0aWMgdm9pZCB3ZWJraXRfZG9tX2Jhcl9wcm9wX2ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkK
LXsKLSAgICBXZWJLaXRET01CYXJQcm9wUHJpdmF0ZSogcHJpdiA9IFdFQktJVF9ET01fQkFSX1BS
T1BfR0VUX1BSSVZBVEUob2JqZWN0KTsKLQotICAgIFdlYktpdDo6RE9NT2JqZWN0Q2FjaGU6OmZv
cmdldChwcml2LT5jb3JlT2JqZWN0LmdldCgpKTsKLQotICAgIHByaXYtPn5XZWJLaXRET01CYXJQ
cm9wUHJpdmF0ZSgpOwotICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9kb21fYmFyX3Byb3BfcGFy
ZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKLX0KLQotc3RhdGljIHZvaWQgd2Via2l0X2Rv
bV9iYXJfcHJvcF9nZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wZXJ0eUlk
LCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3BlYykKLXsKLSAgICBXZWJLaXRET01CYXJQ
cm9wKiBzZWxmID0gV0VCS0lUX0RPTV9CQVJfUFJPUChvYmplY3QpOwotCi0gICAgc3dpdGNoIChw
cm9wZXJ0eUlkKSB7Ci0gICAgY2FzZSBQUk9QX1ZJU0lCTEU6Ci0gICAgICAgIGdfdmFsdWVfc2V0
X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF9kb21fYmFyX3Byb3BfZ2V0X3Zpc2libGUoc2VsZikpOwot
ICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFM
SURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wZXJ0eUlkLCBwc3BlYyk7Ci0gICAgICAgIGJyZWFr
OwotICAgIH0KLX0KLQotc3RhdGljIEdPYmplY3QqIHdlYmtpdF9kb21fYmFyX3Byb3BfY29uc3Ry
dWN0b3IoR1R5cGUgdHlwZSwgZ3VpbnQgY29uc3RydWN0UHJvcGVydGllc0NvdW50LCBHT2JqZWN0
Q29uc3RydWN0UGFyYW0qIGNvbnN0cnVjdFByb3BlcnRpZXMpCi17Ci0gICAgR09iamVjdCogb2Jq
ZWN0ID0gR19PQkpFQ1RfQ0xBU1Mod2Via2l0X2RvbV9iYXJfcHJvcF9wYXJlbnRfY2xhc3MpLT5j
b25zdHJ1Y3Rvcih0eXBlLCBjb25zdHJ1Y3RQcm9wZXJ0aWVzQ291bnQsIGNvbnN0cnVjdFByb3Bl
cnRpZXMpOwotCi0gICAgV2ViS2l0RE9NQmFyUHJvcFByaXZhdGUqIHByaXYgPSBXRUJLSVRfRE9N
X0JBUl9QUk9QX0dFVF9QUklWQVRFKG9iamVjdCk7Ci0gICAgcHJpdi0+Y29yZU9iamVjdCA9IHN0
YXRpY19jYXN0PFdlYkNvcmU6OkJhclByb3AqPihXRUJLSVRfRE9NX09CSkVDVChvYmplY3QpLT5j
b3JlT2JqZWN0KTsKLSAgICBXZWJLaXQ6OkRPTU9iamVjdENhY2hlOjpwdXQocHJpdi0+Y29yZU9i
amVjdC5nZXQoKSwgb2JqZWN0KTsKLQotICAgIHJldHVybiBvYmplY3Q7Ci19Ci0KLXN0YXRpYyB2
b2lkIHdlYmtpdF9kb21fYmFyX3Byb3BfY2xhc3NfaW5pdChXZWJLaXRET01CYXJQcm9wQ2xhc3Mq
IHJlcXVlc3RDbGFzcykKLXsKLSAgICBHT2JqZWN0Q2xhc3MqIGdvYmplY3RDbGFzcyA9IEdfT0JK
RUNUX0NMQVNTKHJlcXVlc3RDbGFzcyk7Ci0gICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKGdv
YmplY3RDbGFzcywgc2l6ZW9mKFdlYktpdERPTUJhclByb3BQcml2YXRlKSk7Ci0gICAgZ29iamVj
dENsYXNzLT5jb25zdHJ1Y3RvciA9IHdlYmtpdF9kb21fYmFyX3Byb3BfY29uc3RydWN0b3I7Ci0g
ICAgZ29iamVjdENsYXNzLT5maW5hbGl6ZSA9IHdlYmtpdF9kb21fYmFyX3Byb3BfZmluYWxpemU7
Ci0gICAgZ29iamVjdENsYXNzLT5nZXRfcHJvcGVydHkgPSB3ZWJraXRfZG9tX2Jhcl9wcm9wX2dl
dF9wcm9wZXJ0eTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAg
ICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9WSVNJQkxFLAotICAgICAgICBnX3BhcmFt
X3NwZWNfYm9vbGVhbigKLSAgICAgICAgICAgICJ2aXNpYmxlIiwKLSAgICAgICAgICAgICJCYXJQ
cm9wOnZpc2libGUiLAotICAgICAgICAgICAgInJlYWQtb25seSBnYm9vbGVhbiBCYXJQcm9wOnZp
c2libGUiLAotICAgICAgICAgICAgRkFMU0UsCi0gICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVB
REFCTEUpKTsKLQotfQotCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX2Jhcl9wcm9wX2luaXQoV2Vi
S2l0RE9NQmFyUHJvcCogcmVxdWVzdCkKLXsKLSAgICBXZWJLaXRET01CYXJQcm9wUHJpdmF0ZSog
cHJpdiA9IFdFQktJVF9ET01fQkFSX1BST1BfR0VUX1BSSVZBVEUocmVxdWVzdCk7Ci0gICAgbmV3
IChwcml2KSBXZWJLaXRET01CYXJQcm9wUHJpdmF0ZSgpOwotfQotCi1nYm9vbGVhbiB3ZWJraXRf
ZG9tX2Jhcl9wcm9wX2dldF92aXNpYmxlKFdlYktpdERPTUJhclByb3AqIHNlbGYpCi17Ci0gICAg
V2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9p
Zl9mYWlsKFdFQktJVF9ET01fSVNfQkFSX1BST1Aoc2VsZiksIEZBTFNFKTsKLSAgICBXZWJDb3Jl
OjpCYXJQcm9wKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdib29sZWFuIHJlc3Vs
dCA9IGl0ZW0tPnZpc2libGUoKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dl
YktpdERPTUJhclByb3AuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NQmFyUHJvcC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAxNjAyMDM4Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NQmFyUHJvcC5oCisrKyAvZGV2L251
bGwKQEAgLTEsNjQgKzAsMCBAQAotLyoKLSAqICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2Vi
S2l0IG9wZW4gc291cmNlIHByb2plY3QuCi0gKiAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRl
ZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKLSAqCi0gKiAgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgot
ICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgot
ICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCi0gKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqICBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICog
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCi0gKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lm
bmRlZiBXZWJLaXRET01CYXJQcm9wX2gKLSNkZWZpbmUgV2ViS2l0RE9NQmFyUHJvcF9oCi0KLSNp
ZmRlZiBXRUJLSVRfRE9NX1VTRV9VTlNUQUJMRV9BUEkKLQotI2luY2x1ZGUgPGdsaWItb2JqZWN0
Lmg+Ci0jaW5jbHVkZSA8d2Via2l0ZG9tL1dlYktpdERPTU9iamVjdC5oPgotI2luY2x1ZGUgPHdl
YmtpdGRvbS93ZWJraXRkb21kZWZpbmVzLXVuc3RhYmxlLmg+Ci0KLUdfQkVHSU5fREVDTFMKLQot
I2RlZmluZSBXRUJLSVRfRE9NX1RZUEVfQkFSX1BST1AgICAgICAgICAgICAod2Via2l0X2RvbV9i
YXJfcHJvcF9nZXRfdHlwZSgpKQotI2RlZmluZSBXRUJLSVRfRE9NX0JBUl9QUk9QKG9iaikgICAg
ICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9ET01fVFlQ
RV9CQVJfUFJPUCwgV2ViS2l0RE9NQmFyUHJvcCkpCi0jZGVmaW5lIFdFQktJVF9ET01fQkFSX1BS
T1BfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLCAgV0VC
S0lUX0RPTV9UWVBFX0JBUl9QUk9QLCBXZWJLaXRET01CYXJQcm9wQ2xhc3MpCi0jZGVmaW5lIFdF
QktJVF9ET01fSVNfQkFSX1BST1Aob2JqKSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0Vf
VFlQRSgob2JqKSwgV0VCS0lUX0RPTV9UWVBFX0JBUl9QUk9QKSkKLSNkZWZpbmUgV0VCS0lUX0RP
TV9JU19CQVJfUFJPUF9DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFz
cyksICBXRUJLSVRfRE9NX1RZUEVfQkFSX1BST1ApKQotI2RlZmluZSBXRUJLSVRfRE9NX0JBUl9Q
Uk9QX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdF
QktJVF9ET01fVFlQRV9CQVJfUFJPUCwgV2ViS2l0RE9NQmFyUHJvcENsYXNzKSkKLQotc3RydWN0
IF9XZWJLaXRET01CYXJQcm9wIHsKLSAgICBXZWJLaXRET01PYmplY3QgcGFyZW50X2luc3RhbmNl
OwotfTsKLQotc3RydWN0IF9XZWJLaXRET01CYXJQcm9wQ2xhc3MgewotICAgIFdlYktpdERPTU9i
amVjdENsYXNzIHBhcmVudF9jbGFzczsKLX07Ci0KLVdFQktJVF9BUEkgR1R5cGUKLXdlYmtpdF9k
b21fYmFyX3Byb3BfZ2V0X3R5cGUodm9pZCk7Ci0KLS8qKgotICogd2Via2l0X2RvbV9iYXJfcHJv
cF9nZXRfdmlzaWJsZToKLSAqIEBzZWxmOiBBICNXZWJLaXRET01CYXJQcm9wCi0gKgotICogUmV0
dXJuczogQSAjZ2Jvb2xlYW4KLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJ
VF9BUEkgZ2Jvb2xlYW4KLXdlYmtpdF9kb21fYmFyX3Byb3BfZ2V0X3Zpc2libGUoV2ViS2l0RE9N
QmFyUHJvcCogc2VsZik7Ci0KLUdfRU5EX0RFQ0xTCi0KLSNlbmRpZiAvKiBXRUJLSVRfRE9NX1VT
RV9VTlNUQUJMRV9BUEkgKi8KLSNlbmRpZiAvKiBXZWJLaXRET01CYXJQcm9wX2ggKi8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9E
T00vV2ViS2l0RE9NQmFyUHJvcFByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NQmFyUHJvcFByaXZhdGUuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTllZWQ2Ni4uMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUJh
clByb3BQcml2YXRlLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi0vKgotICogIFRo
aXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAqICBU
aGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBO
T1QgTU9ESUZZIQotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0g
KgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQotICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaWZuZGVmIFdlYktpdERPTUJhclByb3BQcml2YXRlX2gK
LSNkZWZpbmUgV2ViS2l0RE9NQmFyUHJvcFByaXZhdGVfaAotCi0jaW5jbHVkZSA8V2ViQ29yZS9C
YXJQcm9wLmg+Ci0jaW5jbHVkZSA8d2Via2l0ZG9tL1dlYktpdERPTUJhclByb3AuaD4KLQotbmFt
ZXNwYWNlIFdlYktpdCB7Ci1XZWJLaXRET01CYXJQcm9wKiB3cmFwQmFyUHJvcChXZWJDb3JlOjpC
YXJQcm9wKik7Ci1XZWJLaXRET01CYXJQcm9wKiBraXQoV2ViQ29yZTo6QmFyUHJvcCopOwotV2Vi
Q29yZTo6QmFyUHJvcCogY29yZShXZWJLaXRET01CYXJQcm9wKik7Ci19IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKLQotI2VuZGlmIC8qIFdlYktpdERPTUJhclByb3BQcml2YXRlX2ggKi8KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00v
V2ViS2l0RE9NQmF0dGVyeU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01CYXR0ZXJ5TWFuYWdlci5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3ZTJkZDQuLjAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01C
YXR0ZXJ5TWFuYWdlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMDcgKzAsMCBAQAotLyoKLSAq
ICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCi0g
KiAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4g
RE8gTk9UIE1PRElGWSEKLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiAgQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IldlYktpdERPTUJhdHRlcnlNYW5hZ2VyLmgiCi0KLSNpbmNsdWRlIDxXZWJDb3JlL0NTU0ltcG9y
dFJ1bGUuaD4KLSNpbmNsdWRlICJET01PYmplY3RDYWNoZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUv
RG9jdW1lbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0V4Y2VwdGlvbkNvZGUuaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL0V4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbi5oPgotI2luY2x1ZGUgIkdPYmplY3RF
dmVudExpc3RlbmVyLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9KU01haW5UaHJlYWRFeGVjU3RhdGUu
aD4KLSNpbmNsdWRlICJXZWJLaXRET01CYXR0ZXJ5TWFuYWdlclByaXZhdGUuaCIKLSNpbmNsdWRl
ICJXZWJLaXRET01FdmVudFByaXZhdGUuaCIKLSNpbmNsdWRlICJXZWJLaXRET01FdmVudFRhcmdl
dC5oIgotI2luY2x1ZGUgIldlYktpdERPTVByaXZhdGUuaCIKLSNpbmNsdWRlICJDb252ZXJ0VG9V
VEY4U3RyaW5nLmgiCi0jaW5jbHVkZSA8d3RmL0dldFB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KLQotI2RlZmluZSBXRUJLSVRfRE9NX0JBVFRFUllfTUFOQUdFUl9HRVRfUFJJVkFURShv
YmopIEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURShvYmosIFdFQktJVF9ET01fVFlQRV9CQVRU
RVJZX01BTkFHRVIsIFdlYktpdERPTUJhdHRlcnlNYW5hZ2VyUHJpdmF0ZSkKLQotdHlwZWRlZiBz
dHJ1Y3QgX1dlYktpdERPTUJhdHRlcnlNYW5hZ2VyUHJpdmF0ZSB7Ci0jaWYgRU5BQkxFKEJBVFRF
UllfU1RBVFVTKQotICAgIFJlZlB0cjxXZWJDb3JlOjpCYXR0ZXJ5TWFuYWdlcj4gY29yZU9iamVj
dDsKLSNlbmRpZiAvLyBFTkFCTEUoQkFUVEVSWV9TVEFUVVMpCi19IFdlYktpdERPTUJhdHRlcnlN
YW5hZ2VyUHJpdmF0ZTsKLQotI2lmIEVOQUJMRShCQVRURVJZX1NUQVRVUykKLQotbmFtZXNwYWNl
IFdlYktpdCB7Ci0KLVdlYktpdERPTUJhdHRlcnlNYW5hZ2VyKiBraXQoV2ViQ29yZTo6QmF0dGVy
eU1hbmFnZXIqIG9iaikKLXsKLSAgICBpZiAoIW9iaikKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAg
ICBpZiAoZ3BvaW50ZXIgcmV0ID0gRE9NT2JqZWN0Q2FjaGU6OmdldChvYmopKQotICAgICAgICBy
ZXR1cm4gV0VCS0lUX0RPTV9CQVRURVJZX01BTkFHRVIocmV0KTsKLQotICAgIHJldHVybiB3cmFw
QmF0dGVyeU1hbmFnZXIob2JqKTsKLX0KLQotV2ViQ29yZTo6QmF0dGVyeU1hbmFnZXIqIGNvcmUo
V2ViS2l0RE9NQmF0dGVyeU1hbmFnZXIqIHJlcXVlc3QpCi17Ci0gICAgcmV0dXJuIHJlcXVlc3Qg
PyBzdGF0aWNfY2FzdDxXZWJDb3JlOjpCYXR0ZXJ5TWFuYWdlcio+KFdFQktJVF9ET01fT0JKRUNU
KHJlcXVlc3QpLT5jb3JlT2JqZWN0KSA6IDA7Ci19Ci0KLVdlYktpdERPTUJhdHRlcnlNYW5hZ2Vy
KiB3cmFwQmF0dGVyeU1hbmFnZXIoV2ViQ29yZTo6QmF0dGVyeU1hbmFnZXIqIGNvcmVPYmplY3Qp
Ci17Ci0gICAgQVNTRVJUKGNvcmVPYmplY3QpOwotICAgIHJldHVybiBXRUJLSVRfRE9NX0JBVFRF
UllfTUFOQUdFUihnX29iamVjdF9uZXcoV0VCS0lUX0RPTV9UWVBFX0JBVFRFUllfTUFOQUdFUiwg
ImNvcmUtb2JqZWN0IiwgY29yZU9iamVjdCwgbnVsbHB0cikpOwotfQotCi19IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShCQVRURVJZX1NUQVRVUykKLQotc3RhdGljIGdi
b29sZWFuIHdlYmtpdF9kb21fYmF0dGVyeV9tYW5hZ2VyX2Rpc3BhdGNoX2V2ZW50KFdlYktpdERP
TUV2ZW50VGFyZ2V0KiB0YXJnZXQsIFdlYktpdERPTUV2ZW50KiBldmVudCwgR0Vycm9yKiogZXJy
b3IpCi17Ci0jaWYgRU5BQkxFKEJBVFRFUllfU1RBVFVTKQotICAgIFdlYkNvcmU6OkV2ZW50KiBj
b3JlRXZlbnQgPSBXZWJLaXQ6OmNvcmUoZXZlbnQpOwotICAgIGlmICghY29yZUV2ZW50KQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgV2ViQ29yZTo6QmF0dGVyeU1hbmFnZXIqIGNvcmVUYXJn
ZXQgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpCYXR0ZXJ5TWFuYWdlcio+KFdFQktJVF9ET01fT0JK
RUNUKHRhcmdldCktPmNvcmVPYmplY3QpOwotCi0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBl
YyA9IDA7Ci0gICAgZ2Jvb2xlYW4gcmVzdWx0ID0gY29yZVRhcmdldC0+ZGlzcGF0Y2hFdmVudEZv
ckJpbmRpbmdzKCpjb3JlRXZlbnQsIGVjKTsKLSAgICBpZiAoZWMpIHsKLSAgICAgICAgV2ViQ29y
ZTo6RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKGVjKTsKLSAgICAgICAgZ19z
ZXRfZXJyb3JfbGl0ZXJhbChlcnJvciwgZ19xdWFya19mcm9tX3N0cmluZygiV0VCS0lUX0RPTSIp
LCBkZXNjcmlwdGlvbi5jb2RlLCBkZXNjcmlwdGlvbi5uYW1lKTsKLSAgICB9Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7Ci0gICAgVU5VU0VEX1BB
UkFNKGV2ZW50KTsKLSAgICBVTlVTRURfUEFSQU0oZXJyb3IpOwotICAgIFdFQktJVF9XQVJOX0ZF
QVRVUkVfTk9UX1BSRVNFTlQoIkJhdHRlcnkgU3RhdHVzIikKLSAgICByZXR1cm4gZmFsc2U7Ci0j
ZW5kaWYgLy8gRU5BQkxFKEJBVFRFUllfU1RBVFVTKQotfQotCi1zdGF0aWMgZ2Jvb2xlYW4gd2Vi
a2l0X2RvbV9iYXR0ZXJ5X21hbmFnZXJfYWRkX2V2ZW50X2xpc3RlbmVyKFdlYktpdERPTUV2ZW50
VGFyZ2V0KiB0YXJnZXQsIGNvbnN0IGNoYXIqIGV2ZW50TmFtZSwgR0Nsb3N1cmUqIGhhbmRsZXIs
IGdib29sZWFuIHVzZUNhcHR1cmUpCi17Ci0jaWYgRU5BQkxFKEJBVFRFUllfU1RBVFVTKQotICAg
IFdlYkNvcmU6OkJhdHRlcnlNYW5hZ2VyKiBjb3JlVGFyZ2V0ID0gc3RhdGljX2Nhc3Q8V2ViQ29y
ZTo6QmF0dGVyeU1hbmFnZXIqPihXRUJLSVRfRE9NX09CSkVDVCh0YXJnZXQpLT5jb3JlT2JqZWN0
KTsKLSAgICByZXR1cm4gV2ViS2l0OjpHT2JqZWN0RXZlbnRMaXN0ZW5lcjo6YWRkRXZlbnRMaXN0
ZW5lcihHX09CSkVDVCh0YXJnZXQpLCBjb3JlVGFyZ2V0LCBldmVudE5hbWUsIGhhbmRsZXIsIHVz
ZUNhcHR1cmUpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0odGFyZ2V0KTsKLSAgICBVTlVTRURf
UEFSQU0oZXZlbnROYW1lKTsKLSAgICBVTlVTRURfUEFSQU0oaGFuZGxlcik7Ci0gICAgVU5VU0VE
X1BBUkFNKHVzZUNhcHR1cmUpOwotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQo
IkJhdHRlcnkgU3RhdHVzIikKLSAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYgLy8gRU5BQkxFKEJB
VFRFUllfU1RBVFVTKQotfQotCi1zdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X2RvbV9iYXR0ZXJ5X21h
bmFnZXJfcmVtb3ZlX2V2ZW50X2xpc3RlbmVyKFdlYktpdERPTUV2ZW50VGFyZ2V0KiB0YXJnZXQs
IGNvbnN0IGNoYXIqIGV2ZW50TmFtZSwgR0Nsb3N1cmUqIGhhbmRsZXIsIGdib29sZWFuIHVzZUNh
cHR1cmUpCi17Ci0jaWYgRU5BQkxFKEJBVFRFUllfU1RBVFVTKQotICAgIFdlYkNvcmU6OkJhdHRl
cnlNYW5hZ2VyKiBjb3JlVGFyZ2V0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6QmF0dGVyeU1hbmFn
ZXIqPihXRUJLSVRfRE9NX09CSkVDVCh0YXJnZXQpLT5jb3JlT2JqZWN0KTsKLSAgICByZXR1cm4g
V2ViS2l0OjpHT2JqZWN0RXZlbnRMaXN0ZW5lcjo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihHX09CSkVD
VCh0YXJnZXQpLCBjb3JlVGFyZ2V0LCBldmVudE5hbWUsIGhhbmRsZXIsIHVzZUNhcHR1cmUpOwot
I2Vsc2UKLSAgICBVTlVTRURfUEFSQU0odGFyZ2V0KTsKLSAgICBVTlVTRURfUEFSQU0oZXZlbnRO
YW1lKTsKLSAgICBVTlVTRURfUEFSQU0oaGFuZGxlcik7Ci0gICAgVU5VU0VEX1BBUkFNKHVzZUNh
cHR1cmUpOwotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIkJhdHRlcnkgU3Rh
dHVzIikKLSAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYgLy8gRU5BQkxFKEJBVFRFUllfU1RBVFVT
KQotfQotCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX2V2ZW50X3RhcmdldF9pbml0KFdlYktpdERP
TUV2ZW50VGFyZ2V0SWZhY2UqIGlmYWNlKQotewotICAgIGlmYWNlLT5kaXNwYXRjaF9ldmVudCA9
IHdlYmtpdF9kb21fYmF0dGVyeV9tYW5hZ2VyX2Rpc3BhdGNoX2V2ZW50OwotICAgIGlmYWNlLT5h
ZGRfZXZlbnRfbGlzdGVuZXIgPSB3ZWJraXRfZG9tX2JhdHRlcnlfbWFuYWdlcl9hZGRfZXZlbnRf
bGlzdGVuZXI7Ci0gICAgaWZhY2UtPnJlbW92ZV9ldmVudF9saXN0ZW5lciA9IHdlYmtpdF9kb21f
YmF0dGVyeV9tYW5hZ2VyX3JlbW92ZV9ldmVudF9saXN0ZW5lcjsKLX0KLQotR19ERUZJTkVfVFlQ
RV9XSVRIX0NPREUoV2ViS2l0RE9NQmF0dGVyeU1hbmFnZXIsIHdlYmtpdF9kb21fYmF0dGVyeV9t
YW5hZ2VyLCBXRUJLSVRfRE9NX1RZUEVfT0JKRUNULCBHX0lNUExFTUVOVF9JTlRFUkZBQ0UoV0VC
S0lUX0RPTV9UWVBFX0VWRU5UX1RBUkdFVCwgd2Via2l0X2RvbV9ldmVudF90YXJnZXRfaW5pdCkp
Ci0KLWVudW0gewotICAgIFBST1BfMCwKLSAgICBQUk9QX0NIQVJHSU5HLAotICAgIFBST1BfQ0hB
UkdJTkdfVElNRSwKLSAgICBQUk9QX0RJU0NIQVJHSU5HX1RJTUUsCi0gICAgUFJPUF9MRVZFTCwK
LX07Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdF9kb21fYmF0dGVyeV9tYW5hZ2VyX2ZpbmFsaXplKEdP
YmplY3QqIG9iamVjdCkKLXsKLSAgICBXZWJLaXRET01CYXR0ZXJ5TWFuYWdlclByaXZhdGUqIHBy
aXYgPSBXRUJLSVRfRE9NX0JBVFRFUllfTUFOQUdFUl9HRVRfUFJJVkFURShvYmplY3QpOwotI2lm
IEVOQUJMRShCQVRURVJZX1NUQVRVUykKLSAgICBXZWJLaXQ6OkRPTU9iamVjdENhY2hlOjpmb3Jn
ZXQocHJpdi0+Y29yZU9iamVjdC5nZXQoKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEJBVFRFUllfU1RB
VFVTKQotICAgIHByaXYtPn5XZWJLaXRET01CYXR0ZXJ5TWFuYWdlclByaXZhdGUoKTsKLSAgICBH
X09CSkVDVF9DTEFTUyh3ZWJraXRfZG9tX2JhdHRlcnlfbWFuYWdlcl9wYXJlbnRfY2xhc3MpLT5m
aW5hbGl6ZShvYmplY3QpOwotfQotCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX2JhdHRlcnlfbWFu
YWdlcl9nZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wZXJ0eUlkLCBHVmFs
dWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3BlYykKLXsKLSAgICBXZWJLaXRET01CYXR0ZXJ5TWFu
YWdlciogc2VsZiA9IFdFQktJVF9ET01fQkFUVEVSWV9NQU5BR0VSKG9iamVjdCk7Ci0KLSAgICBz
d2l0Y2ggKHByb3BlcnR5SWQpIHsKLSAgICBjYXNlIFBST1BfQ0hBUkdJTkc6Ci0gICAgICAgIGdf
dmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF9kb21fYmF0dGVyeV9tYW5hZ2VyX2dldF9j
aGFyZ2luZyhzZWxmKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9DSEFSR0lOR19U
SU1FOgotICAgICAgICBnX3ZhbHVlX3NldF9kb3VibGUodmFsdWUsIHdlYmtpdF9kb21fYmF0dGVy
eV9tYW5hZ2VyX2dldF9jaGFyZ2luZ190aW1lKHNlbGYpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBQUk9QX0RJU0NIQVJHSU5HX1RJTUU6Ci0gICAgICAgIGdfdmFsdWVfc2V0X2RvdWJsZSh2
YWx1ZSwgd2Via2l0X2RvbV9iYXR0ZXJ5X21hbmFnZXJfZ2V0X2Rpc2NoYXJnaW5nX3RpbWUoc2Vs
ZikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfTEVWRUw6Ci0gICAgICAgIGdfdmFs
dWVfc2V0X2RvdWJsZSh2YWx1ZSwgd2Via2l0X2RvbV9iYXR0ZXJ5X21hbmFnZXJfZ2V0X2xldmVs
KHNlbGYpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgR19PQkpFQ1Rf
V0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcGVydHlJZCwgcHNwZWMpOwotICAg
ICAgICBicmVhazsKLSAgICB9Ci19Ci0KLXN0YXRpYyBHT2JqZWN0KiB3ZWJraXRfZG9tX2JhdHRl
cnlfbWFuYWdlcl9jb25zdHJ1Y3RvcihHVHlwZSB0eXBlLCBndWludCBjb25zdHJ1Y3RQcm9wZXJ0
aWVzQ291bnQsIEdPYmplY3RDb25zdHJ1Y3RQYXJhbSogY29uc3RydWN0UHJvcGVydGllcykKLXsK
LSAgICBHT2JqZWN0KiBvYmplY3QgPSBHX09CSkVDVF9DTEFTUyh3ZWJraXRfZG9tX2JhdHRlcnlf
bWFuYWdlcl9wYXJlbnRfY2xhc3MpLT5jb25zdHJ1Y3Rvcih0eXBlLCBjb25zdHJ1Y3RQcm9wZXJ0
aWVzQ291bnQsIGNvbnN0cnVjdFByb3BlcnRpZXMpOwotI2lmIEVOQUJMRShCQVRURVJZX1NUQVRV
UykKLSAgICBXZWJLaXRET01CYXR0ZXJ5TWFuYWdlclByaXZhdGUqIHByaXYgPSBXRUJLSVRfRE9N
X0JBVFRFUllfTUFOQUdFUl9HRVRfUFJJVkFURShvYmplY3QpOwotICAgIHByaXYtPmNvcmVPYmpl
Y3QgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpCYXR0ZXJ5TWFuYWdlcio+KFdFQktJVF9ET01fT0JK
RUNUKG9iamVjdCktPmNvcmVPYmplY3QpOwotICAgIFdlYktpdDo6RE9NT2JqZWN0Q2FjaGU6OnB1
dChwcml2LT5jb3JlT2JqZWN0LmdldCgpLCBvYmplY3QpOwotI2VuZGlmIC8vIEVOQUJMRShCQVRU
RVJZX1NUQVRVUykKLSAgICByZXR1cm4gb2JqZWN0OwotfQotCi1zdGF0aWMgdm9pZCB3ZWJraXRf
ZG9tX2JhdHRlcnlfbWFuYWdlcl9jbGFzc19pbml0KFdlYktpdERPTUJhdHRlcnlNYW5hZ2VyQ2xh
c3MqIHJlcXVlc3RDbGFzcykKLXsKLSAgICBHT2JqZWN0Q2xhc3MqIGdvYmplY3RDbGFzcyA9IEdf
T0JKRUNUX0NMQVNTKHJlcXVlc3RDbGFzcyk7Ci0gICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRl
KGdvYmplY3RDbGFzcywgc2l6ZW9mKFdlYktpdERPTUJhdHRlcnlNYW5hZ2VyUHJpdmF0ZSkpOwot
ICAgIGdvYmplY3RDbGFzcy0+Y29uc3RydWN0b3IgPSB3ZWJraXRfZG9tX2JhdHRlcnlfbWFuYWdl
cl9jb25zdHJ1Y3RvcjsKLSAgICBnb2JqZWN0Q2xhc3MtPmZpbmFsaXplID0gd2Via2l0X2RvbV9i
YXR0ZXJ5X21hbmFnZXJfZmluYWxpemU7Ci0gICAgZ29iamVjdENsYXNzLT5nZXRfcHJvcGVydHkg
PSB3ZWJraXRfZG9tX2JhdHRlcnlfbWFuYWdlcl9nZXRfcHJvcGVydHk7Ci0KLSAgICBnX29iamVj
dF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAotICAgICAgICBnb2JqZWN0Q2xhc3MsCi0gICAgICAg
IFBST1BfQ0hBUkdJTkcsCi0gICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKAotICAgICAgICAg
ICAgImNoYXJnaW5nIiwKLSAgICAgICAgICAgICJCYXR0ZXJ5TWFuYWdlcjpjaGFyZ2luZyIsCi0g
ICAgICAgICAgICAicmVhZC1vbmx5IGdib29sZWFuIEJhdHRlcnlNYW5hZ2VyOmNoYXJnaW5nIiwK
LSAgICAgICAgICAgIEZBTFNFLAotICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7
Ci0KLSAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAotICAgICAgICBnb2JqZWN0
Q2xhc3MsCi0gICAgICAgIFBST1BfQ0hBUkdJTkdfVElNRSwKLSAgICAgICAgZ19wYXJhbV9zcGVj
X2RvdWJsZSgKLSAgICAgICAgICAgICJjaGFyZ2luZy10aW1lIiwKLSAgICAgICAgICAgICJCYXR0
ZXJ5TWFuYWdlcjpjaGFyZ2luZy10aW1lIiwKLSAgICAgICAgICAgICJyZWFkLW9ubHkgZ2RvdWJs
ZSBCYXR0ZXJ5TWFuYWdlcjpjaGFyZ2luZy10aW1lIiwKLSAgICAgICAgICAgIC1HX01BWERPVUJM
RSwgR19NQVhET1VCTEUsIDAsCi0gICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsK
LQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RD
bGFzcywKLSAgICAgICAgUFJPUF9ESVNDSEFSR0lOR19USU1FLAotICAgICAgICBnX3BhcmFtX3Nw
ZWNfZG91YmxlKAotICAgICAgICAgICAgImRpc2NoYXJnaW5nLXRpbWUiLAotICAgICAgICAgICAg
IkJhdHRlcnlNYW5hZ2VyOmRpc2NoYXJnaW5nLXRpbWUiLAotICAgICAgICAgICAgInJlYWQtb25s
eSBnZG91YmxlIEJhdHRlcnlNYW5hZ2VyOmRpc2NoYXJnaW5nLXRpbWUiLAotICAgICAgICAgICAg
LUdfTUFYRE9VQkxFLCBHX01BWERPVUJMRSwgMCwKLSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9S
RUFEQUJMRSkpOwotCi0gICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAg
ICAgZ29iamVjdENsYXNzLAotICAgICAgICBQUk9QX0xFVkVMLAotICAgICAgICBnX3BhcmFtX3Nw
ZWNfZG91YmxlKAotICAgICAgICAgICAgImxldmVsIiwKLSAgICAgICAgICAgICJCYXR0ZXJ5TWFu
YWdlcjpsZXZlbCIsCi0gICAgICAgICAgICAicmVhZC1vbmx5IGdkb3VibGUgQmF0dGVyeU1hbmFn
ZXI6bGV2ZWwiLAotICAgICAgICAgICAgLUdfTUFYRE9VQkxFLCBHX01BWERPVUJMRSwgMCwKLSAg
ICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSkpOwotCi19Ci0KLXN0YXRpYyB2b2lkIHdl
YmtpdF9kb21fYmF0dGVyeV9tYW5hZ2VyX2luaXQoV2ViS2l0RE9NQmF0dGVyeU1hbmFnZXIqIHJl
cXVlc3QpCi17Ci0gICAgV2ViS2l0RE9NQmF0dGVyeU1hbmFnZXJQcml2YXRlKiBwcml2ID0gV0VC
S0lUX0RPTV9CQVRURVJZX01BTkFHRVJfR0VUX1BSSVZBVEUocmVxdWVzdCk7Ci0gICAgbmV3IChw
cml2KSBXZWJLaXRET01CYXR0ZXJ5TWFuYWdlclByaXZhdGUoKTsKLX0KLQotZ2Jvb2xlYW4gd2Vi
a2l0X2RvbV9iYXR0ZXJ5X21hbmFnZXJfZ2V0X2NoYXJnaW5nKFdlYktpdERPTUJhdHRlcnlNYW5h
Z2VyKiBzZWxmKQotewotI2lmIEVOQUJMRShCQVRURVJZX1NUQVRVUykKLSAgICBXZWJDb3JlOjpK
U01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VC
S0lUX0RPTV9JU19CQVRURVJZX01BTkFHRVIoc2VsZiksIEZBTFNFKTsKLSAgICBXZWJDb3JlOjpC
YXR0ZXJ5TWFuYWdlciogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBnYm9vbGVhbiBy
ZXN1bHQgPSBpdGVtLT5jaGFyZ2luZygpOwotICAgIHJldHVybiByZXN1bHQ7Ci0jZWxzZQotICAg
IFVOVVNFRF9QQVJBTShzZWxmKTsKLSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5U
KCJCYXR0ZXJ5IFN0YXR1cyIpCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGdib29sZWFuPigwKTsK
LSNlbmRpZiAvKiBFTkFCTEUoQkFUVEVSWV9TVEFUVVMpICovCi19Ci0KLWdkb3VibGUgd2Via2l0
X2RvbV9iYXR0ZXJ5X21hbmFnZXJfZ2V0X2NoYXJnaW5nX3RpbWUoV2ViS2l0RE9NQmF0dGVyeU1h
bmFnZXIqIHNlbGYpCi17Ci0jaWYgRU5BQkxFKEJBVFRFUllfU1RBVFVTKQotICAgIFdlYkNvcmU6
OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChX
RUJLSVRfRE9NX0lTX0JBVFRFUllfTUFOQUdFUihzZWxmKSwgMCk7Ci0gICAgV2ViQ29yZTo6QmF0
dGVyeU1hbmFnZXIqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ2RvdWJsZSByZXN1
bHQgPSBpdGVtLT5jaGFyZ2luZ1RpbWUoKTsKLSAgICByZXR1cm4gcmVzdWx0OwotI2Vsc2UKLSAg
ICBVTlVTRURfUEFSQU0oc2VsZik7Ci0gICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VO
VCgiQmF0dGVyeSBTdGF0dXMiKQotICAgIHJldHVybiBzdGF0aWNfY2FzdDxnZG91YmxlPigwKTsK
LSNlbmRpZiAvKiBFTkFCTEUoQkFUVEVSWV9TVEFUVVMpICovCi19Ci0KLWdkb3VibGUgd2Via2l0
X2RvbV9iYXR0ZXJ5X21hbmFnZXJfZ2V0X2Rpc2NoYXJnaW5nX3RpbWUoV2ViS2l0RE9NQmF0dGVy
eU1hbmFnZXIqIHNlbGYpCi17Ci0jaWYgRU5BQkxFKEJBVFRFUllfU1RBVFVTKQotICAgIFdlYkNv
cmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFp
bChXRUJLSVRfRE9NX0lTX0JBVFRFUllfTUFOQUdFUihzZWxmKSwgMCk7Ci0gICAgV2ViQ29yZTo6
QmF0dGVyeU1hbmFnZXIqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ2RvdWJsZSBy
ZXN1bHQgPSBpdGVtLT5kaXNjaGFyZ2luZ1RpbWUoKTsKLSAgICByZXR1cm4gcmVzdWx0OwotI2Vs
c2UKLSAgICBVTlVTRURfUEFSQU0oc2VsZik7Ci0gICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1Rf
UFJFU0VOVCgiQmF0dGVyeSBTdGF0dXMiKQotICAgIHJldHVybiBzdGF0aWNfY2FzdDxnZG91Ymxl
PigwKTsKLSNlbmRpZiAvKiBFTkFCTEUoQkFUVEVSWV9TVEFUVVMpICovCi19Ci0KLWdkb3VibGUg
d2Via2l0X2RvbV9iYXR0ZXJ5X21hbmFnZXJfZ2V0X2xldmVsKFdlYktpdERPTUJhdHRlcnlNYW5h
Z2VyKiBzZWxmKQotewotI2lmIEVOQUJMRShCQVRURVJZX1NUQVRVUykKLSAgICBXZWJDb3JlOjpK
U01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VC
S0lUX0RPTV9JU19CQVRURVJZX01BTkFHRVIoc2VsZiksIDApOwotICAgIFdlYkNvcmU6OkJhdHRl
cnlNYW5hZ2VyKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdkb3VibGUgcmVzdWx0
ID0gaXRlbS0+bGV2ZWwoKTsKLSAgICByZXR1cm4gcmVzdWx0OwotI2Vsc2UKLSAgICBVTlVTRURf
UEFSQU0oc2VsZik7Ci0gICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiQmF0dGVy
eSBTdGF0dXMiKQotICAgIHJldHVybiBzdGF0aWNfY2FzdDxnZG91YmxlPigwKTsKLSNlbmRpZiAv
KiBFTkFCTEUoQkFUVEVSWV9TVEFUVVMpICovCi19Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NQmF0dGVy
eU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2d0ay9ET00vV2ViS2l0RE9NQmF0dGVyeU1hbmFnZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZTc1YWRmMi4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUJhdHRlcnlNYW5hZ2VyLmgKKysr
IC9kZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi0vKgotICogIFRoaXMgZmlsZSBpcyBwYXJ0IG9m
IHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAqICBUaGlzIGZpbGUgaGFzIGJlZW4g
Z2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQotICoKLSAq
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICog
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAq
LwotCi0jaWZuZGVmIFdlYktpdERPTUJhdHRlcnlNYW5hZ2VyX2gKLSNkZWZpbmUgV2ViS2l0RE9N
QmF0dGVyeU1hbmFnZXJfaAotCi0jaWZkZWYgV0VCS0lUX0RPTV9VU0VfVU5TVEFCTEVfQVBJCi0K
LSNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgotI2luY2x1ZGUgPHdlYmtpdGRvbS9XZWJLaXRET01P
YmplY3QuaD4KLSNpbmNsdWRlIDx3ZWJraXRkb20vd2Via2l0ZG9tZGVmaW5lcy11bnN0YWJsZS5o
PgotCi1HX0JFR0lOX0RFQ0xTCi0KLSNkZWZpbmUgV0VCS0lUX0RPTV9UWVBFX0JBVFRFUllfTUFO
QUdFUiAgICAgICAgICAgICh3ZWJraXRfZG9tX2JhdHRlcnlfbWFuYWdlcl9nZXRfdHlwZSgpKQot
I2RlZmluZSBXRUJLSVRfRE9NX0JBVFRFUllfTUFOQUdFUihvYmopICAgICAgICAgICAgKEdfVFlQ
RV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBXRUJLSVRfRE9NX1RZUEVfQkFUVEVSWV9NQU5B
R0VSLCBXZWJLaXRET01CYXR0ZXJ5TWFuYWdlcikpCi0jZGVmaW5lIFdFQktJVF9ET01fQkFUVEVS
WV9NQU5BR0VSX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNz
KSwgIFdFQktJVF9ET01fVFlQRV9CQVRURVJZX01BTkFHRVIsIFdlYktpdERPTUJhdHRlcnlNYW5h
Z2VyQ2xhc3MpCi0jZGVmaW5lIFdFQktJVF9ET01fSVNfQkFUVEVSWV9NQU5BR0VSKG9iaikgICAg
ICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksIFdFQktJVF9ET01fVFlQRV9C
QVRURVJZX01BTkFHRVIpKQotI2RlZmluZSBXRUJLSVRfRE9NX0lTX0JBVFRFUllfTUFOQUdFUl9D
TEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfRE9N
X1RZUEVfQkFUVEVSWV9NQU5BR0VSKSkKLSNkZWZpbmUgV0VCS0lUX0RPTV9CQVRURVJZX01BTkFH
RVJfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgV0VC
S0lUX0RPTV9UWVBFX0JBVFRFUllfTUFOQUdFUiwgV2ViS2l0RE9NQmF0dGVyeU1hbmFnZXJDbGFz
cykpCi0KLXN0cnVjdCBfV2ViS2l0RE9NQmF0dGVyeU1hbmFnZXIgewotICAgIFdlYktpdERPTU9i
amVjdCBwYXJlbnRfaW5zdGFuY2U7Ci19OwotCi1zdHJ1Y3QgX1dlYktpdERPTUJhdHRlcnlNYW5h
Z2VyQ2xhc3MgewotICAgIFdlYktpdERPTU9iamVjdENsYXNzIHBhcmVudF9jbGFzczsKLX07Ci0K
LVdFQktJVF9BUEkgR1R5cGUKLXdlYmtpdF9kb21fYmF0dGVyeV9tYW5hZ2VyX2dldF90eXBlKHZv
aWQpOwotCi0vKioKLSAqIHdlYmtpdF9kb21fYmF0dGVyeV9tYW5hZ2VyX2dldF9jaGFyZ2luZzoK
LSAqIEBzZWxmOiBBICNXZWJLaXRET01CYXR0ZXJ5TWFuYWdlcgotICoKLSAqIFJldHVybnM6IEEg
I2dib29sZWFuCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIGdi
b29sZWFuCi13ZWJraXRfZG9tX2JhdHRlcnlfbWFuYWdlcl9nZXRfY2hhcmdpbmcoV2ViS2l0RE9N
QmF0dGVyeU1hbmFnZXIqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9kb21fYmF0dGVyeV9tYW5h
Z2VyX2dldF9jaGFyZ2luZ190aW1lOgotICogQHNlbGY6IEEgI1dlYktpdERPTUJhdHRlcnlNYW5h
Z2VyCi0gKgotICogUmV0dXJuczogQSAjZ2RvdWJsZQotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFi
bGUKLSoqLwotV0VCS0lUX0FQSSBnZG91YmxlCi13ZWJraXRfZG9tX2JhdHRlcnlfbWFuYWdlcl9n
ZXRfY2hhcmdpbmdfdGltZShXZWJLaXRET01CYXR0ZXJ5TWFuYWdlciogc2VsZik7Ci0KLS8qKgot
ICogd2Via2l0X2RvbV9iYXR0ZXJ5X21hbmFnZXJfZ2V0X2Rpc2NoYXJnaW5nX3RpbWU6Ci0gKiBA
c2VsZjogQSAjV2ViS2l0RE9NQmF0dGVyeU1hbmFnZXIKLSAqCi0gKiBSZXR1cm5zOiBBICNnZG91
YmxlCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIGdkb3VibGUK
LXdlYmtpdF9kb21fYmF0dGVyeV9tYW5hZ2VyX2dldF9kaXNjaGFyZ2luZ190aW1lKFdlYktpdERP
TUJhdHRlcnlNYW5hZ2VyKiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2JhdHRlcnlfbWFu
YWdlcl9nZXRfbGV2ZWw6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NQmF0dGVyeU1hbmFnZXIKLSAq
Ci0gKiBSZXR1cm5zOiBBICNnZG91YmxlCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiov
Ci1XRUJLSVRfQVBJIGdkb3VibGUKLXdlYmtpdF9kb21fYmF0dGVyeV9tYW5hZ2VyX2dldF9sZXZl
bChXZWJLaXRET01CYXR0ZXJ5TWFuYWdlciogc2VsZik7Ci0KLUdfRU5EX0RFQ0xTCi0KLSNlbmRp
ZiAvKiBXRUJLSVRfRE9NX1VTRV9VTlNUQUJMRV9BUEkgKi8KLSNlbmRpZiAvKiBXZWJLaXRET01C
YXR0ZXJ5TWFuYWdlcl9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUJhdHRlcnlNYW5hZ2VyUHJpdmF0
ZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RP
TS9XZWJLaXRET01CYXR0ZXJ5TWFuYWdlclByaXZhdGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggYTgzZjQ5Ny4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUJhdHRlcnlNYW5hZ2VyUHJpdmF0
ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotLyoKLSAqICBUaGlzIGZpbGUgaXMg
cGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCi0gKiAgVGhpcyBmaWxlIGhh
cyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEK
LSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqICBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCi0gKi8KLQotI2lmbmRlZiBXZWJLaXRET01CYXR0ZXJ5TWFuYWdlclByaXZhdGVfaAotI2Rl
ZmluZSBXZWJLaXRET01CYXR0ZXJ5TWFuYWdlclByaXZhdGVfaAotCi0jaW5jbHVkZSA8V2ViQ29y
ZS9CYXR0ZXJ5TWFuYWdlci5oPgotI2luY2x1ZGUgPHdlYmtpdGRvbS9XZWJLaXRET01CYXR0ZXJ5
TWFuYWdlci5oPgotI2lmIEVOQUJMRShCQVRURVJZX1NUQVRVUykKLQotbmFtZXNwYWNlIFdlYktp
dCB7Ci1XZWJLaXRET01CYXR0ZXJ5TWFuYWdlciogd3JhcEJhdHRlcnlNYW5hZ2VyKFdlYkNvcmU6
OkJhdHRlcnlNYW5hZ2VyKik7Ci1XZWJLaXRET01CYXR0ZXJ5TWFuYWdlcioga2l0KFdlYkNvcmU6
OkJhdHRlcnlNYW5hZ2VyKik7Ci1XZWJDb3JlOjpCYXR0ZXJ5TWFuYWdlciogY29yZShXZWJLaXRE
T01CYXR0ZXJ5TWFuYWdlciopOwotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvKiBF
TkFCTEUoQkFUVEVSWV9TVEFUVVMpICovCi0KLSNlbmRpZiAvKiBXZWJLaXRET01CYXR0ZXJ5TWFu
YWdlclByaXZhdGVfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01CbG9iLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NQmxvYi5j
cHAKaW5kZXggZmZmZWIyMi4uZjVjNzBmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01CbG9iLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dl
YktpdERPTUJsb2IuY3BwCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAiV2ViS2l0RE9NQmxv
YlByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRET01Qcml2YXRlLmgiCiAjaW5jbHVkZSAiQ29u
dmVydFRvVVRGOFN0cmluZy5oIgotI2luY2x1ZGUgIldlYktpdERPTUJsb2JVbnN0YWJsZS5oIgog
I2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKQEAgLTcx
LDcgKzcwLDYgQEAgR19ERUZJTkVfVFlQRShXZWJLaXRET01CbG9iLCB3ZWJraXRfZG9tX2Jsb2Is
IFdFQktJVF9ET01fVFlQRV9PQkpFQ1QpCiBlbnVtIHsKICAgICBQUk9QXzAsCiAgICAgUFJPUF9T
SVpFLAotICAgIFBST1BfVFlQRSwKIH07CiAKIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21fYmxvYl9m
aW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCkBAIC05Miw5ICs5MCw2IEBAIHN0YXRpYyB2b2lkIHdl
YmtpdF9kb21fYmxvYl9nZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wZXJ0
eUlkLCBHVmFsCiAgICAgY2FzZSBQUk9QX1NJWkU6CiAgICAgICAgIGdfdmFsdWVfc2V0X3VpbnQ2
NCh2YWx1ZSwgd2Via2l0X2RvbV9ibG9iX2dldF9zaXplKHNlbGYpKTsKICAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBQUk9QX1RZUEU6Ci0gICAgICAgIGdfdmFsdWVfdGFrZV9zdHJpbmcodmFsdWUs
IHdlYmtpdF9kb21fYmxvYl9nZXRfYmxvYl90eXBlKHNlbGYpKTsKLSAgICAgICAgYnJlYWs7CiAg
ICAgZGVmYXVsdDoKICAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9i
amVjdCwgcHJvcGVydHlJZCwgcHNwZWMpOwogICAgICAgICBicmVhazsKQEAgLTEyOSwxNyArMTI0
LDYgQEAgc3RhdGljIHZvaWQgd2Via2l0X2RvbV9ibG9iX2NsYXNzX2luaXQoV2ViS2l0RE9NQmxv
YkNsYXNzKiByZXF1ZXN0Q2xhc3MpCiAgICAgICAgICAgICAicmVhZC1vbmx5IGd1aW50NjQgQmxv
YjpzaXplIiwKICAgICAgICAgICAgIDAsIEdfTUFYVUlOVDY0LCAwLAogICAgICAgICAgICAgV0VC
S0lUX1BBUkFNX1JFQURBQkxFKSk7Ci0KLSAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3Bl
cnR5KAotICAgICAgICBnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBST1BfVFlQRSwKLSAgICAgICAg
Z19wYXJhbV9zcGVjX3N0cmluZygKLSAgICAgICAgICAgICJ0eXBlIiwKLSAgICAgICAgICAgICJC
bG9iOnR5cGUiLAotICAgICAgICAgICAgInJlYWQtb25seSBnY2hhciogQmxvYjp0eXBlIiwKLSAg
ICAgICAgICAgICIiLAotICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7Ci0KIH0K
IAogc3RhdGljIHZvaWQgd2Via2l0X2RvbV9ibG9iX2luaXQoV2ViS2l0RE9NQmxvYiogcmVxdWVz
dCkKQEAgLTE0OCwxNyArMTMyLDYgQEAgc3RhdGljIHZvaWQgd2Via2l0X2RvbV9ibG9iX2luaXQo
V2ViS2l0RE9NQmxvYiogcmVxdWVzdCkKICAgICBuZXcgKHByaXYpIFdlYktpdERPTUJsb2JQcml2
YXRlKCk7CiB9CiAKLVdlYktpdERPTUJsb2IqIHdlYmtpdF9kb21fYmxvYl9zbGljZShXZWJLaXRE
T01CbG9iKiBzZWxmLCBnaW50NjQgc3RhcnQsIGdpbnQ2NCBlbmQsIGNvbnN0IGdjaGFyKiBjb250
ZW50VHlwZSkKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0g
ICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19CTE9CKHNlbGYpLCAwKTsKLSAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChjb250ZW50VHlwZSwgMCk7Ci0gICAgV2ViQ29yZTo6Qmxv
YiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRD
b250ZW50VHlwZSA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOChjb250ZW50VHlwZSk7Ci0gICAgUmVm
UHRyPFdlYkNvcmU6OkJsb2I+IGdvYmplY3RSZXN1bHQgPSBXVEY6OmdldFB0cihpdGVtLT5zbGlj
ZShzdGFydCwgZW5kLCBjb252ZXJ0ZWRDb250ZW50VHlwZSkpOwotICAgIHJldHVybiBXZWJLaXQ6
OmtpdChnb2JqZWN0UmVzdWx0LmdldCgpKTsKLX0KLQogZ3VpbnQ2NCB3ZWJraXRfZG9tX2Jsb2Jf
Z2V0X3NpemUoV2ViS2l0RE9NQmxvYiogc2VsZikKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJl
YWROdWxsU3RhdGUgc3RhdGU7CkBAIC0xNjcsMTMgKzE0MCwzIEBAIGd1aW50NjQgd2Via2l0X2Rv
bV9ibG9iX2dldF9zaXplKFdlYktpdERPTUJsb2IqIHNlbGYpCiAgICAgZ3VpbnQ2NCByZXN1bHQg
PSBpdGVtLT5zaXplKCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KLQotZ2NoYXIqIHdlYmtpdF9k
b21fYmxvYl9nZXRfYmxvYl90eXBlKFdlYktpdERPTUJsb2IqIHNlbGYpCi17Ci0gICAgV2ViQ29y
ZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWls
KFdFQktJVF9ET01fSVNfQkxPQihzZWxmKSwgMCk7Ci0gICAgV2ViQ29yZTo6QmxvYiogaXRlbSA9
IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBnY2hhciogcmVzdWx0ID0gY29udmVydFRvVVRGOFN0
cmluZyhpdGVtLT50eXBlKCkpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2Vi
S2l0RE9NQmxvYlVuc3RhYmxlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUJsb2JVbnN0YWJsZS5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBmNDQxMGIzLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NQmxvYlVuc3RhYmxl
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi0vKgotICogIFRoaXMgZmlsZSBpcyBw
YXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAqICBUaGlzIGZpbGUgaGFz
IGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQot
ICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KLSAqLwotCi0jaWZuZGVmIFdlYktpdERPTUJsb2JVbnN0YWJsZV9oCi0jZGVmaW5lIFdlYktp
dERPTUJsb2JVbnN0YWJsZV9oCi0KLSNpZmRlZiBXRUJLSVRfRE9NX1VTRV9VTlNUQUJMRV9BUEkK
LQotI2luY2x1ZGUgPHdlYmtpdGRvbS93ZWJraXRkb21kZWZpbmVzLXVuc3RhYmxlLmg+Ci0KLUdf
QkVHSU5fREVDTFMKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2Jsb2Jfc2xpY2U6Ci0gKiBAc2VsZjog
QSAjV2ViS2l0RE9NQmxvYgotICogQHN0YXJ0OiBBICNnaW50NjQKLSAqIEBlbmQ6IEEgI2dpbnQ2
NAotICogQGNvbnRlbnRUeXBlOiBBICNnY2hhcgotICoKLSAqIFJldHVybnM6ICh0cmFuc2ZlciBm
dWxsKTogQSAjV2ViS2l0RE9NQmxvYgotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwot
V0VCS0lUX0FQSSBXZWJLaXRET01CbG9iKgotd2Via2l0X2RvbV9ibG9iX3NsaWNlKFdlYktpdERP
TUJsb2IqIHNlbGYsIGdpbnQ2NCBzdGFydCwgZ2ludDY0IGVuZCwgY29uc3QgZ2NoYXIqIGNvbnRl
bnRUeXBlKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2Jsb2JfZ2V0X2Jsb2JfdHlwZToKLSAqIEBz
ZWxmOiBBICNXZWJLaXRET01CbG9iCi0gKgotICogUmV0dXJuczogQSAjZ2NoYXIKLSAqCi0gKiBT
dGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgZ2NoYXIqCi13ZWJraXRfZG9tX2Js
b2JfZ2V0X2Jsb2JfdHlwZShXZWJLaXRET01CbG9iKiBzZWxmKTsKLQotCi1HX0VORF9ERUNMUwot
Ci0jZW5kaWYgLyogV0VCS0lUX0RPTV9VU0VfVU5TVEFCTEVfQVBJICovCi0jZW5kaWYgLyogV2Vi
S2l0RE9NQmxvYlVuc3RhYmxlX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NQ1NTUnVsZS5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktp
dERPTUNTU1J1bGUuY3BwCmluZGV4IDQ3ZWRjMWMuLjIyYjA1NDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9N
Q1NTUnVsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01DU1NSdWxlLmNwcApAQCAtMzEsNyArMzEsNiBAQAogI2lu
Y2x1ZGUgIldlYktpdERPTUNTU1N0eWxlU2hlZXRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0
RE9NUHJpdmF0ZS5oIgogI2luY2x1ZGUgIkNvbnZlcnRUb1VURjhTdHJpbmcuaCIKLSNpbmNsdWRl
ICJXZWJLaXRET01DU1NSdWxlVW5zdGFibGUuaCIKICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUNTU1J1bGVVbnN0YWJs
ZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RP
TS9XZWJLaXRET01DU1NSdWxlVW5zdGFibGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggYTY1YWI4Mi4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUNTU1J1bGVVbnN0YWJsZS5oCisrKyAvZGV2
L251bGwKQEAgLTEsNjQgKzAsMCBAQAotLyoKLSAqICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUg
V2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCi0gKiAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVy
YXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKLSAqCi0gKiAgVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCi0gKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqICBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwot
ICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCi0gKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQot
I2lmbmRlZiBXZWJLaXRET01DU1NSdWxlVW5zdGFibGVfaAotI2RlZmluZSBXZWJLaXRET01DU1NS
dWxlVW5zdGFibGVfaAotCi0jaWZkZWYgV0VCS0lUX0RPTV9VU0VfVU5TVEFCTEVfQVBJCi0KLSNp
bmNsdWRlIDx3ZWJraXRkb20vd2Via2l0ZG9tZGVmaW5lcy11bnN0YWJsZS5oPgotCi1HX0JFR0lO
X0RFQ0xTCi0KLS8qKgotICogV0VCS0lUX0RPTV9DU1NfUlVMRV9LRVlGUkFNRVNfUlVMRToKLSAq
LwotI2RlZmluZSBXRUJLSVRfRE9NX0NTU19SVUxFX0tFWUZSQU1FU19SVUxFIDcKLQotLyoqCi0g
KiBXRUJLSVRfRE9NX0NTU19SVUxFX0tFWUZSQU1FX1JVTEU6Ci0gKi8KLSNkZWZpbmUgV0VCS0lU
X0RPTV9DU1NfUlVMRV9LRVlGUkFNRV9SVUxFIDgKLQotLyoqCi0gKiBXRUJLSVRfRE9NX0NTU19S
VUxFX1NVUFBPUlRTX1JVTEU6Ci0gKi8KLSNkZWZpbmUgV0VCS0lUX0RPTV9DU1NfUlVMRV9TVVBQ
T1JUU19SVUxFIDEyCi0KLS8qKgotICogV0VCS0lUX0RPTV9DU1NfUlVMRV9XRUJLSVRfUkVHSU9O
X1JVTEU6Ci0gKi8KLSNkZWZpbmUgV0VCS0lUX0RPTV9DU1NfUlVMRV9XRUJLSVRfUkVHSU9OX1JV
TEUgMTYKLQotLyoqCi0gKiBXRUJLSVRfRE9NX0NTU19SVUxFX1dFQktJVF9LRVlGUkFNRVNfUlVM
RToKLSAqLwotI2RlZmluZSBXRUJLSVRfRE9NX0NTU19SVUxFX1dFQktJVF9LRVlGUkFNRVNfUlVM
RSA3Ci0KLS8qKgotICogV0VCS0lUX0RPTV9DU1NfUlVMRV9XRUJLSVRfS0VZRlJBTUVfUlVMRToK
LSAqLwotI2RlZmluZSBXRUJLSVRfRE9NX0NTU19SVUxFX1dFQktJVF9LRVlGUkFNRV9SVUxFIDgK
LQotCi1HX0VORF9ERUNMUwotCi0jZW5kaWYgLyogV0VCS0lUX0RPTV9VU0VfVU5TVEFCTEVfQVBJ
ICovCi0jZW5kaWYgLyogV2ViS2l0RE9NQ1NTUnVsZVVuc3RhYmxlX2ggKi8KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2Vi
S2l0RE9NQ2hhcmFjdGVyRGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUNoYXJhY3RlckRhdGEuY3BwCmluZGV4IDhi
MmEzYjcuLjg0YjUzZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NQ2hhcmFjdGVyRGF0YS5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJL
aXRET01DaGFyYWN0ZXJEYXRhLmNwcApAQCAtMzUsNyArMzUsNiBAQAogI2luY2x1ZGUgIldlYktp
dERPTU5vZGVQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0RE9NUHJpdmF0ZS5oIgogI2luY2x1
ZGUgIkNvbnZlcnRUb1VURjhTdHJpbmcuaCIKLSNpbmNsdWRlICJXZWJLaXRET01DaGFyYWN0ZXJE
YXRhVW5zdGFibGUuaCIKICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgogCkBAIC0xMDAsOCArOTksNiBAQCBlbnVtIHsKICAgICBQUk9QXzAsCiAgICAgUFJP
UF9EQVRBLAogICAgIFBST1BfTEVOR1RILAotICAgIFBST1BfUFJFVklPVVNfRUxFTUVOVF9TSUJM
SU5HLAotICAgIFBST1BfTkVYVF9FTEVNRU5UX1NJQkxJTkcsCiB9OwogCiBzdGF0aWMgdm9pZCB3
ZWJraXRfZG9tX2NoYXJhY3Rlcl9kYXRhX3NldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1
aW50IHByb3BlcnR5SWQsIGNvbnN0IEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKQpA
QCAtMTI5LDEyICsxMjYsNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX2NoYXJhY3Rlcl9kYXRh
X2dldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BlcgogICAgIGNhc2UgUFJP
UF9MRU5HVEg6CiAgICAgICAgIGdfdmFsdWVfc2V0X3Vsb25nKHZhbHVlLCB3ZWJraXRfZG9tX2No
YXJhY3Rlcl9kYXRhX2dldF9sZW5ndGgoc2VsZikpOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IFBST1BfUFJFVklPVVNfRUxFTUVOVF9TSUJMSU5HOgotICAgICAgICBnX3ZhbHVlX3NldF9vYmpl
Y3QodmFsdWUsIHdlYmtpdF9kb21fY2hhcmFjdGVyX2RhdGFfZ2V0X3ByZXZpb3VzX2VsZW1lbnRf
c2libGluZyhzZWxmKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9ORVhUX0VMRU1F
TlRfU0lCTElORzoKLSAgICAgICAgZ192YWx1ZV9zZXRfb2JqZWN0KHZhbHVlLCB3ZWJraXRfZG9t
X2NoYXJhY3Rlcl9kYXRhX2dldF9uZXh0X2VsZW1lbnRfc2libGluZyhzZWxmKSk7Ci0gICAgICAg
IGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9Q
RVJUWV9JRChvYmplY3QsIHByb3BlcnR5SWQsIHBzcGVjKTsKICAgICAgICAgYnJlYWs7CkBAIC0x
NjYsMjcgKzE1Nyw2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21fY2hhcmFjdGVyX2RhdGFfY2xh
c3NfaW5pdChXZWJLaXRET01DaGFyYWN0ZXJEYXRhQ2xhc3MqIHJlCiAgICAgICAgICAgICAicmVh
ZC1vbmx5IGd1bG9uZyBDaGFyYWN0ZXJEYXRhOmxlbmd0aCIsCiAgICAgICAgICAgICAwLCBHX01B
WFVMT05HLCAwLAogICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7Ci0KLSAgICBn
X29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAotICAgICAgICBnb2JqZWN0Q2xhc3MsCi0g
ICAgICAgIFBST1BfUFJFVklPVVNfRUxFTUVOVF9TSUJMSU5HLAotICAgICAgICBnX3BhcmFtX3Nw
ZWNfb2JqZWN0KAotICAgICAgICAgICAgInByZXZpb3VzLWVsZW1lbnQtc2libGluZyIsCi0gICAg
ICAgICAgICAiQ2hhcmFjdGVyRGF0YTpwcmV2aW91cy1lbGVtZW50LXNpYmxpbmciLAotICAgICAg
ICAgICAgInJlYWQtb25seSBXZWJLaXRET01FbGVtZW50KiBDaGFyYWN0ZXJEYXRhOnByZXZpb3Vz
LWVsZW1lbnQtc2libGluZyIsCi0gICAgICAgICAgICBXRUJLSVRfRE9NX1RZUEVfRUxFTUVOVCwK
LSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSkpOwotCi0gICAgZ19vYmplY3RfY2xh
c3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAgZ29iamVjdENsYXNzLAotICAgICAgICBQUk9Q
X05FWFRfRUxFTUVOVF9TSUJMSU5HLAotICAgICAgICBnX3BhcmFtX3NwZWNfb2JqZWN0KAotICAg
ICAgICAgICAgIm5leHQtZWxlbWVudC1zaWJsaW5nIiwKLSAgICAgICAgICAgICJDaGFyYWN0ZXJE
YXRhOm5leHQtZWxlbWVudC1zaWJsaW5nIiwKLSAgICAgICAgICAgICJyZWFkLW9ubHkgV2ViS2l0
RE9NRWxlbWVudCogQ2hhcmFjdGVyRGF0YTpuZXh0LWVsZW1lbnQtc2libGluZyIsCi0gICAgICAg
ICAgICBXRUJLSVRfRE9NX1RZUEVfRUxFTUVOVCwKLSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9S
RUFEQUJMRSkpOwotCiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21fY2hhcmFjdGVyX2RhdGFf
aW5pdChXZWJLaXRET01DaGFyYWN0ZXJEYXRhKiByZXF1ZXN0KQpAQCAtMjYyLDIwICsyMzIsNiBA
QCB2b2lkIHdlYmtpdF9kb21fY2hhcmFjdGVyX2RhdGFfcmVwbGFjZV9kYXRhKFdlYktpdERPTUNo
YXJhY3RlckRhdGEqIHNlbGYsIGd1bG9uZwogICAgIH0KIH0KIAotdm9pZCB3ZWJraXRfZG9tX2No
YXJhY3Rlcl9kYXRhX3JlbW92ZShXZWJLaXRET01DaGFyYWN0ZXJEYXRhKiBzZWxmLCBHRXJyb3Iq
KiBlcnJvcikKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0g
ICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX0NIQVJBQ1RFUl9EQVRBKHNlbGYpKTsK
LSAgICBnX3JldHVybl9pZl9mYWlsKCFlcnJvciB8fCAhKmVycm9yKTsKLSAgICBXZWJDb3JlOjpD
aGFyYWN0ZXJEYXRhKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIFdlYkNvcmU6OkV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGl0ZW0tPnJlbW92ZShlYyk7Ci0gICAgaWYgKGVjKSB7
Ci0gICAgICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiBlY2Rlc2MoZWMpOwot
ICAgICAgICBnX3NldF9lcnJvcl9saXRlcmFsKGVycm9yLCBnX3F1YXJrX2Zyb21fc3RyaW5nKCJX
RUJLSVRfRE9NIiksIGVjZGVzYy5jb2RlLCBlY2Rlc2MubmFtZSk7Ci0gICAgfQotfQotCiBnY2hh
ciogd2Via2l0X2RvbV9jaGFyYWN0ZXJfZGF0YV9nZXRfZGF0YShXZWJLaXRET01DaGFyYWN0ZXJE
YXRhKiBzZWxmKQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsK
QEAgLTMwNCwyMiArMjYwLDMgQEAgZ3Vsb25nIHdlYmtpdF9kb21fY2hhcmFjdGVyX2RhdGFfZ2V0
X2xlbmd0aChXZWJLaXRET01DaGFyYWN0ZXJEYXRhKiBzZWxmKQogICAgIGd1bG9uZyByZXN1bHQg
PSBpdGVtLT5sZW5ndGgoKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQotCi1XZWJLaXRET01FbGVt
ZW50KiB3ZWJraXRfZG9tX2NoYXJhY3Rlcl9kYXRhX2dldF9wcmV2aW91c19lbGVtZW50X3NpYmxp
bmcoV2ViS2l0RE9NQ2hhcmFjdGVyRGF0YSogc2VsZikKLXsKLSAgICBXZWJDb3JlOjpKU01haW5U
aHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RP
TV9JU19DSEFSQUNURVJfREFUQShzZWxmKSwgMCk7Ci0gICAgV2ViQ29yZTo6Q2hhcmFjdGVyRGF0
YSogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6RWxlbWVu
dD4gZ29iamVjdFJlc3VsdCA9IFdURjo6Z2V0UHRyKGl0ZW0tPnByZXZpb3VzRWxlbWVudFNpYmxp
bmcoKSk7Ci0gICAgcmV0dXJuIFdlYktpdDo6a2l0KGdvYmplY3RSZXN1bHQuZ2V0KCkpOwotfQot
Ci1XZWJLaXRET01FbGVtZW50KiB3ZWJraXRfZG9tX2NoYXJhY3Rlcl9kYXRhX2dldF9uZXh0X2Vs
ZW1lbnRfc2libGluZyhXZWJLaXRET01DaGFyYWN0ZXJEYXRhKiBzZWxmKQotewotICAgIFdlYkNv
cmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFp
bChXRUJLSVRfRE9NX0lTX0NIQVJBQ1RFUl9EQVRBKHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpD
aGFyYWN0ZXJEYXRhKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIFJlZlB0cjxXZWJD
b3JlOjpFbGVtZW50PiBnb2JqZWN0UmVzdWx0ID0gV1RGOjpnZXRQdHIoaXRlbS0+bmV4dEVsZW1l
bnRTaWJsaW5nKCkpOwotICAgIHJldHVybiBXZWJLaXQ6OmtpdChnb2JqZWN0UmVzdWx0LmdldCgp
KTsKLX0KLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01DaGFyYWN0ZXJEYXRhVW5zdGFibGUuaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9N
Q2hhcmFjdGVyRGF0YVVuc3RhYmxlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk2
ZjE3M2MuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01DaGFyYWN0ZXJEYXRhVW5zdGFibGUuaAorKysgL2Rl
di9udWxsCkBAIC0xLDY2ICswLDAgQEAKLS8qCi0gKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhl
IFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICogIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5l
cmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICogIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
LSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0K
LSNpZm5kZWYgV2ViS2l0RE9NQ2hhcmFjdGVyRGF0YVVuc3RhYmxlX2gKLSNkZWZpbmUgV2ViS2l0
RE9NQ2hhcmFjdGVyRGF0YVVuc3RhYmxlX2gKLQotI2lmZGVmIFdFQktJVF9ET01fVVNFX1VOU1RB
QkxFX0FQSQotCi0jaW5jbHVkZSA8d2Via2l0ZG9tL3dlYmtpdGRvbWRlZmluZXMtdW5zdGFibGUu
aD4KLQotR19CRUdJTl9ERUNMUwotCi0vKioKLSAqIHdlYmtpdF9kb21fY2hhcmFjdGVyX2RhdGFf
cmVtb3ZlOgotICogQHNlbGY6IEEgI1dlYktpdERPTUNoYXJhY3RlckRhdGEKLSAqIEBlcnJvcjog
I0dFcnJvcgotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSB2b2lk
Ci13ZWJraXRfZG9tX2NoYXJhY3Rlcl9kYXRhX3JlbW92ZShXZWJLaXRET01DaGFyYWN0ZXJEYXRh
KiBzZWxmLCBHRXJyb3IqKiBlcnJvcik7Ci0KLS8qKgotICogd2Via2l0X2RvbV9jaGFyYWN0ZXJf
ZGF0YV9nZXRfcHJldmlvdXNfZWxlbWVudF9zaWJsaW5nOgotICogQHNlbGY6IEEgI1dlYktpdERP
TUNoYXJhY3RlckRhdGEKLSAqCi0gKiBSZXR1cm5zOiAodHJhbnNmZXIgbm9uZSk6IEEgI1dlYktp
dERPTUVsZW1lbnQKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkg
V2ViS2l0RE9NRWxlbWVudCoKLXdlYmtpdF9kb21fY2hhcmFjdGVyX2RhdGFfZ2V0X3ByZXZpb3Vz
X2VsZW1lbnRfc2libGluZyhXZWJLaXRET01DaGFyYWN0ZXJEYXRhKiBzZWxmKTsKLQotLyoqCi0g
KiB3ZWJraXRfZG9tX2NoYXJhY3Rlcl9kYXRhX2dldF9uZXh0X2VsZW1lbnRfc2libGluZzoKLSAq
IEBzZWxmOiBBICNXZWJLaXRET01DaGFyYWN0ZXJEYXRhCi0gKgotICogUmV0dXJuczogKHRyYW5z
ZmVyIG5vbmUpOiBBICNXZWJLaXRET01FbGVtZW50Ci0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJs
ZQotKiovCi1XRUJLSVRfQVBJIFdlYktpdERPTUVsZW1lbnQqCi13ZWJraXRfZG9tX2NoYXJhY3Rl
cl9kYXRhX2dldF9uZXh0X2VsZW1lbnRfc2libGluZyhXZWJLaXRET01DaGFyYWN0ZXJEYXRhKiBz
ZWxmKTsKLQotCi1HX0VORF9ERUNMUwotCi0jZW5kaWYgLyogV0VCS0lUX0RPTV9VU0VfVU5TVEFC
TEVfQVBJICovCi0jZW5kaWYgLyogV2ViS2l0RE9NQ2hhcmFjdGVyRGF0YVVuc3RhYmxlX2ggKi8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2d0ay9ET00vV2ViS2l0RE9NRE9NQXBwbGljYXRpb25DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURPTUFwcGxp
Y2F0aW9uQ2FjaGUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNmE3NDU2Li4w
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2d0ay9ET00vV2ViS2l0RE9NRE9NQXBwbGljYXRpb25DYWNoZS5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSwyMTggKzAsMCBAQAotLyoKLSAqICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0
IG9wZW4gc291cmNlIHByb2plY3QuCi0gKiAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBi
eSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKLSAqCi0gKiAgVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICog
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICog
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCi0gKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCi0gKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYktpdERPTURPTUFwcGxpY2F0aW9uQ2FjaGUuaCIK
LQotI2luY2x1ZGUgPFdlYkNvcmUvQ1NTSW1wb3J0UnVsZS5oPgotI2luY2x1ZGUgIkRPTU9iamVj
dENhY2hlLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudC5oPgotI2luY2x1ZGUgPFdlYkNv
cmUvRXhjZXB0aW9uQ29kZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRXhjZXB0aW9uQ29kZURlc2Ny
aXB0aW9uLmg+Ci0jaW5jbHVkZSAiR09iamVjdEV2ZW50TGlzdGVuZXIuaCIKLSNpbmNsdWRlIDxX
ZWJDb3JlL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5oPgotI2luY2x1ZGUgIldlYktpdERPTURPTUFw
cGxpY2F0aW9uQ2FjaGVQcml2YXRlLmgiCi0jaW5jbHVkZSAiV2ViS2l0RE9NRXZlbnRQcml2YXRl
LmgiCi0jaW5jbHVkZSAiV2ViS2l0RE9NRXZlbnRUYXJnZXQuaCIKLSNpbmNsdWRlICJXZWJLaXRE
T01Qcml2YXRlLmgiCi0jaW5jbHVkZSAiQ29udmVydFRvVVRGOFN0cmluZy5oIgotI2luY2x1ZGUg
PHd0Zi9HZXRQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLSNkZWZpbmUgV0VCS0lU
X0RPTV9ET01fQVBQTElDQVRJT05fQ0FDSEVfR0VUX1BSSVZBVEUob2JqKSBHX1RZUEVfSU5TVEFO
Q0VfR0VUX1BSSVZBVEUob2JqLCBXRUJLSVRfRE9NX1RZUEVfRE9NX0FQUExJQ0FUSU9OX0NBQ0hF
LCBXZWJLaXRET01ET01BcHBsaWNhdGlvbkNhY2hlUHJpdmF0ZSkKLQotdHlwZWRlZiBzdHJ1Y3Qg
X1dlYktpdERPTURPTUFwcGxpY2F0aW9uQ2FjaGVQcml2YXRlIHsKLSAgICBSZWZQdHI8V2ViQ29y
ZTo6RE9NQXBwbGljYXRpb25DYWNoZT4gY29yZU9iamVjdDsKLX0gV2ViS2l0RE9NRE9NQXBwbGlj
YXRpb25DYWNoZVByaXZhdGU7Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1XZWJLaXRET01ET01B
cHBsaWNhdGlvbkNhY2hlKiBraXQoV2ViQ29yZTo6RE9NQXBwbGljYXRpb25DYWNoZSogb2JqKQot
ewotICAgIGlmICghb2JqKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIGlmIChncG9pbnRlciBy
ZXQgPSBET01PYmplY3RDYWNoZTo6Z2V0KG9iaikpCi0gICAgICAgIHJldHVybiBXRUJLSVRfRE9N
X0RPTV9BUFBMSUNBVElPTl9DQUNIRShyZXQpOwotCi0gICAgcmV0dXJuIHdyYXBET01BcHBsaWNh
dGlvbkNhY2hlKG9iaik7Ci19Ci0KLVdlYkNvcmU6OkRPTUFwcGxpY2F0aW9uQ2FjaGUqIGNvcmUo
V2ViS2l0RE9NRE9NQXBwbGljYXRpb25DYWNoZSogcmVxdWVzdCkKLXsKLSAgICByZXR1cm4gcmVx
dWVzdCA/IHN0YXRpY19jYXN0PFdlYkNvcmU6OkRPTUFwcGxpY2F0aW9uQ2FjaGUqPihXRUJLSVRf
RE9NX09CSkVDVChyZXF1ZXN0KS0+Y29yZU9iamVjdCkgOiAwOwotfQotCi1XZWJLaXRET01ET01B
cHBsaWNhdGlvbkNhY2hlKiB3cmFwRE9NQXBwbGljYXRpb25DYWNoZShXZWJDb3JlOjpET01BcHBs
aWNhdGlvbkNhY2hlKiBjb3JlT2JqZWN0KQotewotICAgIEFTU0VSVChjb3JlT2JqZWN0KTsKLSAg
ICByZXR1cm4gV0VCS0lUX0RPTV9ET01fQVBQTElDQVRJT05fQ0FDSEUoZ19vYmplY3RfbmV3KFdF
QktJVF9ET01fVFlQRV9ET01fQVBQTElDQVRJT05fQ0FDSEUsICJjb3JlLW9iamVjdCIsIGNvcmVP
YmplY3QsIG51bGxwdHIpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLXN0YXRpYyBn
Ym9vbGVhbiB3ZWJraXRfZG9tX2RvbV9hcHBsaWNhdGlvbl9jYWNoZV9kaXNwYXRjaF9ldmVudChX
ZWJLaXRET01FdmVudFRhcmdldCogdGFyZ2V0LCBXZWJLaXRET01FdmVudCogZXZlbnQsIEdFcnJv
cioqIGVycm9yKQotewotICAgIFdlYkNvcmU6OkV2ZW50KiBjb3JlRXZlbnQgPSBXZWJLaXQ6OmNv
cmUoZXZlbnQpOwotICAgIGlmICghY29yZUV2ZW50KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgV2ViQ29yZTo6RE9NQXBwbGljYXRpb25DYWNoZSogY29yZVRhcmdldCA9IHN0YXRpY19jYXN0
PFdlYkNvcmU6OkRPTUFwcGxpY2F0aW9uQ2FjaGUqPihXRUJLSVRfRE9NX09CSkVDVCh0YXJnZXQp
LT5jb3JlT2JqZWN0KTsKLQotICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAg
IGdib29sZWFuIHJlc3VsdCA9IGNvcmVUYXJnZXQtPmRpc3BhdGNoRXZlbnRGb3JCaW5kaW5ncygq
Y29yZUV2ZW50LCBlYyk7Ci0gICAgaWYgKGVjKSB7Ci0gICAgICAgIFdlYkNvcmU6OkV4Y2VwdGlv
bkNvZGVEZXNjcmlwdGlvbiBkZXNjcmlwdGlvbihlYyk7Ci0gICAgICAgIGdfc2V0X2Vycm9yX2xp
dGVyYWwoZXJyb3IsIGdfcXVhcmtfZnJvbV9zdHJpbmcoIldFQktJVF9ET00iKSwgZGVzY3JpcHRp
b24uY29kZSwgZGVzY3JpcHRpb24ubmFtZSk7Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci0KLXN0YXRpYyBnYm9vbGVhbiB3ZWJraXRfZG9tX2RvbV9hcHBsaWNhdGlvbl9jYWNoZV9hZGRf
ZXZlbnRfbGlzdGVuZXIoV2ViS2l0RE9NRXZlbnRUYXJnZXQqIHRhcmdldCwgY29uc3QgY2hhciog
ZXZlbnROYW1lLCBHQ2xvc3VyZSogaGFuZGxlciwgZ2Jvb2xlYW4gdXNlQ2FwdHVyZSkKLXsKLSAg
ICBXZWJDb3JlOjpET01BcHBsaWNhdGlvbkNhY2hlKiBjb3JlVGFyZ2V0ID0gc3RhdGljX2Nhc3Q8
V2ViQ29yZTo6RE9NQXBwbGljYXRpb25DYWNoZSo+KFdFQktJVF9ET01fT0JKRUNUKHRhcmdldCkt
PmNvcmVPYmplY3QpOwotICAgIHJldHVybiBXZWJLaXQ6OkdPYmplY3RFdmVudExpc3RlbmVyOjph
ZGRFdmVudExpc3RlbmVyKEdfT0JKRUNUKHRhcmdldCksIGNvcmVUYXJnZXQsIGV2ZW50TmFtZSwg
aGFuZGxlciwgdXNlQ2FwdHVyZSk7Ci19Ci0KLXN0YXRpYyBnYm9vbGVhbiB3ZWJraXRfZG9tX2Rv
bV9hcHBsaWNhdGlvbl9jYWNoZV9yZW1vdmVfZXZlbnRfbGlzdGVuZXIoV2ViS2l0RE9NRXZlbnRU
YXJnZXQqIHRhcmdldCwgY29uc3QgY2hhciogZXZlbnROYW1lLCBHQ2xvc3VyZSogaGFuZGxlciwg
Z2Jvb2xlYW4gdXNlQ2FwdHVyZSkKLXsKLSAgICBXZWJDb3JlOjpET01BcHBsaWNhdGlvbkNhY2hl
KiBjb3JlVGFyZ2V0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RE9NQXBwbGljYXRpb25DYWNoZSo+
KFdFQktJVF9ET01fT0JKRUNUKHRhcmdldCktPmNvcmVPYmplY3QpOwotICAgIHJldHVybiBXZWJL
aXQ6OkdPYmplY3RFdmVudExpc3RlbmVyOjpyZW1vdmVFdmVudExpc3RlbmVyKEdfT0JKRUNUKHRh
cmdldCksIGNvcmVUYXJnZXQsIGV2ZW50TmFtZSwgaGFuZGxlciwgdXNlQ2FwdHVyZSk7Ci19Ci0K
LXN0YXRpYyB2b2lkIHdlYmtpdF9kb21fZXZlbnRfdGFyZ2V0X2luaXQoV2ViS2l0RE9NRXZlbnRU
YXJnZXRJZmFjZSogaWZhY2UpCi17Ci0gICAgaWZhY2UtPmRpc3BhdGNoX2V2ZW50ID0gd2Via2l0
X2RvbV9kb21fYXBwbGljYXRpb25fY2FjaGVfZGlzcGF0Y2hfZXZlbnQ7Ci0gICAgaWZhY2UtPmFk
ZF9ldmVudF9saXN0ZW5lciA9IHdlYmtpdF9kb21fZG9tX2FwcGxpY2F0aW9uX2NhY2hlX2FkZF9l
dmVudF9saXN0ZW5lcjsKLSAgICBpZmFjZS0+cmVtb3ZlX2V2ZW50X2xpc3RlbmVyID0gd2Via2l0
X2RvbV9kb21fYXBwbGljYXRpb25fY2FjaGVfcmVtb3ZlX2V2ZW50X2xpc3RlbmVyOwotfQotCi1H
X0RFRklORV9UWVBFX1dJVEhfQ09ERShXZWJLaXRET01ET01BcHBsaWNhdGlvbkNhY2hlLCB3ZWJr
aXRfZG9tX2RvbV9hcHBsaWNhdGlvbl9jYWNoZSwgV0VCS0lUX0RPTV9UWVBFX09CSkVDVCwgR19J
TVBMRU1FTlRfSU5URVJGQUNFKFdFQktJVF9ET01fVFlQRV9FVkVOVF9UQVJHRVQsIHdlYmtpdF9k
b21fZXZlbnRfdGFyZ2V0X2luaXQpKQotCi1lbnVtIHsKLSAgICBQUk9QXzAsCi0gICAgUFJPUF9T
VEFUVVMsCi19OwotCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX2RvbV9hcHBsaWNhdGlvbl9jYWNo
ZV9maW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCi17Ci0gICAgV2ViS2l0RE9NRE9NQXBwbGljYXRp
b25DYWNoZVByaXZhdGUqIHByaXYgPSBXRUJLSVRfRE9NX0RPTV9BUFBMSUNBVElPTl9DQUNIRV9H
RVRfUFJJVkFURShvYmplY3QpOwotCi0gICAgV2ViS2l0OjpET01PYmplY3RDYWNoZTo6Zm9yZ2V0
KHByaXYtPmNvcmVPYmplY3QuZ2V0KCkpOwotCi0gICAgcHJpdi0+fldlYktpdERPTURPTUFwcGxp
Y2F0aW9uQ2FjaGVQcml2YXRlKCk7Ci0gICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X2RvbV9kb21f
YXBwbGljYXRpb25fY2FjaGVfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKLX0KLQot
c3RhdGljIHZvaWQgd2Via2l0X2RvbV9kb21fYXBwbGljYXRpb25fY2FjaGVfZ2V0X3Byb3BlcnR5
KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcGVydHlJZCwgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFt
U3BlYyogcHNwZWMpCi17Ci0gICAgV2ViS2l0RE9NRE9NQXBwbGljYXRpb25DYWNoZSogc2VsZiA9
IFdFQktJVF9ET01fRE9NX0FQUExJQ0FUSU9OX0NBQ0hFKG9iamVjdCk7Ci0KLSAgICBzd2l0Y2gg
KHByb3BlcnR5SWQpIHsKLSAgICBjYXNlIFBST1BfU1RBVFVTOgotICAgICAgICBnX3ZhbHVlX3Nl
dF91aW50KHZhbHVlLCB3ZWJraXRfZG9tX2RvbV9hcHBsaWNhdGlvbl9jYWNoZV9nZXRfc3RhdHVz
KHNlbGYpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgR19PQkpFQ1Rf
V0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcGVydHlJZCwgcHNwZWMpOwotICAg
ICAgICBicmVhazsKLSAgICB9Ci19Ci0KLXN0YXRpYyBHT2JqZWN0KiB3ZWJraXRfZG9tX2RvbV9h
cHBsaWNhdGlvbl9jYWNoZV9jb25zdHJ1Y3RvcihHVHlwZSB0eXBlLCBndWludCBjb25zdHJ1Y3RQ
cm9wZXJ0aWVzQ291bnQsIEdPYmplY3RDb25zdHJ1Y3RQYXJhbSogY29uc3RydWN0UHJvcGVydGll
cykKLXsKLSAgICBHT2JqZWN0KiBvYmplY3QgPSBHX09CSkVDVF9DTEFTUyh3ZWJraXRfZG9tX2Rv
bV9hcHBsaWNhdGlvbl9jYWNoZV9wYXJlbnRfY2xhc3MpLT5jb25zdHJ1Y3Rvcih0eXBlLCBjb25z
dHJ1Y3RQcm9wZXJ0aWVzQ291bnQsIGNvbnN0cnVjdFByb3BlcnRpZXMpOwotCi0gICAgV2ViS2l0
RE9NRE9NQXBwbGljYXRpb25DYWNoZVByaXZhdGUqIHByaXYgPSBXRUJLSVRfRE9NX0RPTV9BUFBM
SUNBVElPTl9DQUNIRV9HRVRfUFJJVkFURShvYmplY3QpOwotICAgIHByaXYtPmNvcmVPYmplY3Qg
PSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpET01BcHBsaWNhdGlvbkNhY2hlKj4oV0VCS0lUX0RPTV9P
QkpFQ1Qob2JqZWN0KS0+Y29yZU9iamVjdCk7Ci0gICAgV2ViS2l0OjpET01PYmplY3RDYWNoZTo6
cHV0KHByaXYtPmNvcmVPYmplY3QuZ2V0KCksIG9iamVjdCk7Ci0KLSAgICByZXR1cm4gb2JqZWN0
OwotfQotCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX2RvbV9hcHBsaWNhdGlvbl9jYWNoZV9jbGFz
c19pbml0KFdlYktpdERPTURPTUFwcGxpY2F0aW9uQ2FjaGVDbGFzcyogcmVxdWVzdENsYXNzKQot
ewotICAgIEdPYmplY3RDbGFzcyogZ29iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1MocmVxdWVz
dENsYXNzKTsKLSAgICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUoZ29iamVjdENsYXNzLCBzaXpl
b2YoV2ViS2l0RE9NRE9NQXBwbGljYXRpb25DYWNoZVByaXZhdGUpKTsKLSAgICBnb2JqZWN0Q2xh
c3MtPmNvbnN0cnVjdG9yID0gd2Via2l0X2RvbV9kb21fYXBwbGljYXRpb25fY2FjaGVfY29uc3Ry
dWN0b3I7Ci0gICAgZ29iamVjdENsYXNzLT5maW5hbGl6ZSA9IHdlYmtpdF9kb21fZG9tX2FwcGxp
Y2F0aW9uX2NhY2hlX2ZpbmFsaXplOwotICAgIGdvYmplY3RDbGFzcy0+Z2V0X3Byb3BlcnR5ID0g
d2Via2l0X2RvbV9kb21fYXBwbGljYXRpb25fY2FjaGVfZ2V0X3Byb3BlcnR5OwotCi0gICAgZ19v
YmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAgZ29iamVjdENsYXNzLAotICAg
ICAgICBQUk9QX1NUQVRVUywKLSAgICAgICAgZ19wYXJhbV9zcGVjX3VpbnQoCi0gICAgICAgICAg
ICAic3RhdHVzIiwKLSAgICAgICAgICAgICJET01BcHBsaWNhdGlvbkNhY2hlOnN0YXR1cyIsCi0g
ICAgICAgICAgICAicmVhZC1vbmx5IGd1c2hvcnQgRE9NQXBwbGljYXRpb25DYWNoZTpzdGF0dXMi
LAotICAgICAgICAgICAgMCwgR19NQVhVSU5ULCAwLAotICAgICAgICAgICAgV0VCS0lUX1BBUkFN
X1JFQURBQkxFKSk7Ci0KLX0KLQotc3RhdGljIHZvaWQgd2Via2l0X2RvbV9kb21fYXBwbGljYXRp
b25fY2FjaGVfaW5pdChXZWJLaXRET01ET01BcHBsaWNhdGlvbkNhY2hlKiByZXF1ZXN0KQotewot
ICAgIFdlYktpdERPTURPTUFwcGxpY2F0aW9uQ2FjaGVQcml2YXRlKiBwcml2ID0gV0VCS0lUX0RP
TV9ET01fQVBQTElDQVRJT05fQ0FDSEVfR0VUX1BSSVZBVEUocmVxdWVzdCk7Ci0gICAgbmV3IChw
cml2KSBXZWJLaXRET01ET01BcHBsaWNhdGlvbkNhY2hlUHJpdmF0ZSgpOwotfQotCi12b2lkIHdl
YmtpdF9kb21fZG9tX2FwcGxpY2F0aW9uX2NhY2hlX3VwZGF0ZShXZWJLaXRET01ET01BcHBsaWNh
dGlvbkNhY2hlKiBzZWxmLCBHRXJyb3IqKiBlcnJvcikKLXsKLSAgICBXZWJDb3JlOjpKU01haW5U
aHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lT
X0RPTV9BUFBMSUNBVElPTl9DQUNIRShzZWxmKSk7Ci0gICAgZ19yZXR1cm5faWZfZmFpbCghZXJy
b3IgfHwgISplcnJvcik7Ci0gICAgV2ViQ29yZTo6RE9NQXBwbGljYXRpb25DYWNoZSogaXRlbSA9
IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsK
LSAgICBpdGVtLT51cGRhdGUoZWMpOwotICAgIGlmIChlYykgewotICAgICAgICBXZWJDb3JlOjpF
eGNlcHRpb25Db2RlRGVzY3JpcHRpb24gZWNkZXNjKGVjKTsKLSAgICAgICAgZ19zZXRfZXJyb3Jf
bGl0ZXJhbChlcnJvciwgZ19xdWFya19mcm9tX3N0cmluZygiV0VCS0lUX0RPTSIpLCBlY2Rlc2Mu
Y29kZSwgZWNkZXNjLm5hbWUpOwotICAgIH0KLX0KLQotdm9pZCB3ZWJraXRfZG9tX2RvbV9hcHBs
aWNhdGlvbl9jYWNoZV9zd2FwX2NhY2hlKFdlYktpdERPTURPTUFwcGxpY2F0aW9uQ2FjaGUqIHNl
bGYsIEdFcnJvcioqIGVycm9yKQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0
ZSBzdGF0ZTsKLSAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfRE9NX0FQUExJQ0FU
SU9OX0NBQ0hFKHNlbGYpKTsKLSAgICBnX3JldHVybl9pZl9mYWlsKCFlcnJvciB8fCAhKmVycm9y
KTsKLSAgICBXZWJDb3JlOjpET01BcHBsaWNhdGlvbkNhY2hlKiBpdGVtID0gV2ViS2l0Ojpjb3Jl
KHNlbGYpOwotICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGl0ZW0tPnN3
YXBDYWNoZShlYyk7Ci0gICAgaWYgKGVjKSB7Ci0gICAgICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNv
ZGVEZXNjcmlwdGlvbiBlY2Rlc2MoZWMpOwotICAgICAgICBnX3NldF9lcnJvcl9saXRlcmFsKGVy
cm9yLCBnX3F1YXJrX2Zyb21fc3RyaW5nKCJXRUJLSVRfRE9NIiksIGVjZGVzYy5jb2RlLCBlY2Rl
c2MubmFtZSk7Ci0gICAgfQotfQotCi12b2lkIHdlYmtpdF9kb21fZG9tX2FwcGxpY2F0aW9uX2Nh
Y2hlX2Fib3J0KFdlYktpdERPTURPTUFwcGxpY2F0aW9uQ2FjaGUqIHNlbGYpCi17Ci0gICAgV2Vi
Q29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwo
V0VCS0lUX0RPTV9JU19ET01fQVBQTElDQVRJT05fQ0FDSEUoc2VsZikpOwotICAgIFdlYkNvcmU6
OkRPTUFwcGxpY2F0aW9uQ2FjaGUqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgaXRl
bS0+YWJvcnQoKTsKLX0KLQotZ3VzaG9ydCB3ZWJraXRfZG9tX2RvbV9hcHBsaWNhdGlvbl9jYWNo
ZV9nZXRfc3RhdHVzKFdlYktpdERPTURPTUFwcGxpY2F0aW9uQ2FjaGUqIHNlbGYpCi17Ci0gICAg
V2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9p
Zl9mYWlsKFdFQktJVF9ET01fSVNfRE9NX0FQUExJQ0FUSU9OX0NBQ0hFKHNlbGYpLCAwKTsKLSAg
ICBXZWJDb3JlOjpET01BcHBsaWNhdGlvbkNhY2hlKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYp
OwotICAgIGd1c2hvcnQgcmVzdWx0ID0gaXRlbS0+c3RhdHVzKCk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01ET01BcHBsaWNhdGlvbkNhY2hlLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURP
TUFwcGxpY2F0aW9uQ2FjaGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTA0YzYz
Ni4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9ndGsvRE9NL1dlYktpdERPTURPTUFwcGxpY2F0aW9uQ2FjaGUuaAorKysgL2Rldi9udWxs
CkBAIC0xLDEyMyArMCwwIEBACi0vKgotICogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJL
aXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAqICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVk
IGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQotICoKLSAqICBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0g
KiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0g
KiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiAg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKLSAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaWZu
ZGVmIFdlYktpdERPTURPTUFwcGxpY2F0aW9uQ2FjaGVfaAotI2RlZmluZSBXZWJLaXRET01ET01B
cHBsaWNhdGlvbkNhY2hlX2gKLQotI2lmZGVmIFdFQktJVF9ET01fVVNFX1VOU1RBQkxFX0FQSQot
Ci0jaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KLSNpbmNsdWRlIDx3ZWJraXRkb20vV2ViS2l0RE9N
T2JqZWN0Lmg+Ci0jaW5jbHVkZSA8d2Via2l0ZG9tL3dlYmtpdGRvbWRlZmluZXMtdW5zdGFibGUu
aD4KLQotR19CRUdJTl9ERUNMUwotCi0jZGVmaW5lIFdFQktJVF9ET01fVFlQRV9ET01fQVBQTElD
QVRJT05fQ0FDSEUgICAgICAgICAgICAod2Via2l0X2RvbV9kb21fYXBwbGljYXRpb25fY2FjaGVf
Z2V0X3R5cGUoKSkKLSNkZWZpbmUgV0VCS0lUX0RPTV9ET01fQVBQTElDQVRJT05fQ0FDSEUob2Jq
KSAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwgV0VCS0lUX0RP
TV9UWVBFX0RPTV9BUFBMSUNBVElPTl9DQUNIRSwgV2ViS2l0RE9NRE9NQXBwbGljYXRpb25DYWNo
ZSkpCi0jZGVmaW5lIFdFQktJVF9ET01fRE9NX0FQUExJQ0FUSU9OX0NBQ0hFX0NMQVNTKGtsYXNz
KSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJVF9ET01fVFlQRV9E
T01fQVBQTElDQVRJT05fQ0FDSEUsIFdlYktpdERPTURPTUFwcGxpY2F0aW9uQ2FjaGVDbGFzcykK
LSNkZWZpbmUgV0VCS0lUX0RPTV9JU19ET01fQVBQTElDQVRJT05fQ0FDSEUob2JqKSAgICAgICAg
IChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX0RPTV9UWVBFX0RPTV9B
UFBMSUNBVElPTl9DQUNIRSkpCi0jZGVmaW5lIFdFQktJVF9ET01fSVNfRE9NX0FQUExJQ0FUSU9O
X0NBQ0hFX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwgIFdF
QktJVF9ET01fVFlQRV9ET01fQVBQTElDQVRJT05fQ0FDSEUpKQotI2RlZmluZSBXRUJLSVRfRE9N
X0RPTV9BUFBMSUNBVElPTl9DQUNIRV9HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9H
RVRfQ0xBU1MoKG9iaiksICBXRUJLSVRfRE9NX1RZUEVfRE9NX0FQUExJQ0FUSU9OX0NBQ0hFLCBX
ZWJLaXRET01ET01BcHBsaWNhdGlvbkNhY2hlQ2xhc3MpKQotCi0vKioKLSAqIFdFQktJVF9ET01f
RE9NX0FQUExJQ0FUSU9OX0NBQ0hFX1VOQ0FDSEVEOgotICovCi0jZGVmaW5lIFdFQktJVF9ET01f
RE9NX0FQUExJQ0FUSU9OX0NBQ0hFX1VOQ0FDSEVEIDAKLQotLyoqCi0gKiBXRUJLSVRfRE9NX0RP
TV9BUFBMSUNBVElPTl9DQUNIRV9JRExFOgotICovCi0jZGVmaW5lIFdFQktJVF9ET01fRE9NX0FQ
UExJQ0FUSU9OX0NBQ0hFX0lETEUgMQotCi0vKioKLSAqIFdFQktJVF9ET01fRE9NX0FQUExJQ0FU
SU9OX0NBQ0hFX0NIRUNLSU5HOgotICovCi0jZGVmaW5lIFdFQktJVF9ET01fRE9NX0FQUExJQ0FU
SU9OX0NBQ0hFX0NIRUNLSU5HIDIKLQotLyoqCi0gKiBXRUJLSVRfRE9NX0RPTV9BUFBMSUNBVElP
Tl9DQUNIRV9ET1dOTE9BRElORzoKLSAqLwotI2RlZmluZSBXRUJLSVRfRE9NX0RPTV9BUFBMSUNB
VElPTl9DQUNIRV9ET1dOTE9BRElORyAzCi0KLS8qKgotICogV0VCS0lUX0RPTV9ET01fQVBQTElD
QVRJT05fQ0FDSEVfVVBEQVRFUkVBRFk6Ci0gKi8KLSNkZWZpbmUgV0VCS0lUX0RPTV9ET01fQVBQ
TElDQVRJT05fQ0FDSEVfVVBEQVRFUkVBRFkgNAotCi0vKioKLSAqIFdFQktJVF9ET01fRE9NX0FQ
UExJQ0FUSU9OX0NBQ0hFX09CU09MRVRFOgotICovCi0jZGVmaW5lIFdFQktJVF9ET01fRE9NX0FQ
UExJQ0FUSU9OX0NBQ0hFX09CU09MRVRFIDUKLQotc3RydWN0IF9XZWJLaXRET01ET01BcHBsaWNh
dGlvbkNhY2hlIHsKLSAgICBXZWJLaXRET01PYmplY3QgcGFyZW50X2luc3RhbmNlOwotfTsKLQot
c3RydWN0IF9XZWJLaXRET01ET01BcHBsaWNhdGlvbkNhY2hlQ2xhc3MgewotICAgIFdlYktpdERP
TU9iamVjdENsYXNzIHBhcmVudF9jbGFzczsKLX07Ci0KLVdFQktJVF9BUEkgR1R5cGUKLXdlYmtp
dF9kb21fZG9tX2FwcGxpY2F0aW9uX2NhY2hlX2dldF90eXBlKHZvaWQpOwotCi0vKioKLSAqIHdl
YmtpdF9kb21fZG9tX2FwcGxpY2F0aW9uX2NhY2hlX3VwZGF0ZToKLSAqIEBzZWxmOiBBICNXZWJL
aXRET01ET01BcHBsaWNhdGlvbkNhY2hlCi0gKiBAZXJyb3I6ICNHRXJyb3IKLSAqCi0gKiBTdGFi
aWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgdm9pZAotd2Via2l0X2RvbV9kb21fYXBw
bGljYXRpb25fY2FjaGVfdXBkYXRlKFdlYktpdERPTURPTUFwcGxpY2F0aW9uQ2FjaGUqIHNlbGYs
IEdFcnJvcioqIGVycm9yKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2RvbV9hcHBsaWNhdGlvbl9j
YWNoZV9zd2FwX2NhY2hlOgotICogQHNlbGY6IEEgI1dlYktpdERPTURPTUFwcGxpY2F0aW9uQ2Fj
aGUKLSAqIEBlcnJvcjogI0dFcnJvcgotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwot
V0VCS0lUX0FQSSB2b2lkCi13ZWJraXRfZG9tX2RvbV9hcHBsaWNhdGlvbl9jYWNoZV9zd2FwX2Nh
Y2hlKFdlYktpdERPTURPTUFwcGxpY2F0aW9uQ2FjaGUqIHNlbGYsIEdFcnJvcioqIGVycm9yKTsK
LQotLyoqCi0gKiB3ZWJraXRfZG9tX2RvbV9hcHBsaWNhdGlvbl9jYWNoZV9hYm9ydDoKLSAqIEBz
ZWxmOiBBICNXZWJLaXRET01ET01BcHBsaWNhdGlvbkNhY2hlCi0gKgotICogU3RhYmlsaXR5OiBV
bnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIHZvaWQKLXdlYmtpdF9kb21fZG9tX2FwcGxpY2F0aW9u
X2NhY2hlX2Fib3J0KFdlYktpdERPTURPTUFwcGxpY2F0aW9uQ2FjaGUqIHNlbGYpOwotCi0vKioK
LSAqIHdlYmtpdF9kb21fZG9tX2FwcGxpY2F0aW9uX2NhY2hlX2dldF9zdGF0dXM6Ci0gKiBAc2Vs
ZjogQSAjV2ViS2l0RE9NRE9NQXBwbGljYXRpb25DYWNoZQotICoKLSAqIFJldHVybnM6IEEgI2d1
c2hvcnQKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgZ3VzaG9y
dAotd2Via2l0X2RvbV9kb21fYXBwbGljYXRpb25fY2FjaGVfZ2V0X3N0YXR1cyhXZWJLaXRET01E
T01BcHBsaWNhdGlvbkNhY2hlKiBzZWxmKTsKLQotR19FTkRfREVDTFMKLQotI2VuZGlmIC8qIFdF
QktJVF9ET01fVVNFX1VOU1RBQkxFX0FQSSAqLwotI2VuZGlmIC8qIFdlYktpdERPTURPTUFwcGxp
Y2F0aW9uQ2FjaGVfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01ET01BcHBsaWNhdGlvbkNhY2hlUHJp
dmF0ZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3Rr
L0RPTS9XZWJLaXRET01ET01BcHBsaWNhdGlvbkNhY2hlUHJpdmF0ZS5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAzNTRiMjQ5Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRE9NQXBwbGljYXRp
b25DYWNoZVByaXZhdGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLS8qCi0gKiAg
VGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICog
IFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERP
IE5PVCBNT0RJRlkhCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
LSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgV2ViS2l0RE9NRE9NQXBwbGljYXRpb25D
YWNoZVByaXZhdGVfaAotI2RlZmluZSBXZWJLaXRET01ET01BcHBsaWNhdGlvbkNhY2hlUHJpdmF0
ZV9oCi0KLSNpbmNsdWRlIDxXZWJDb3JlL0RPTUFwcGxpY2F0aW9uQ2FjaGUuaD4KLSNpbmNsdWRl
IDx3ZWJraXRkb20vV2ViS2l0RE9NRE9NQXBwbGljYXRpb25DYWNoZS5oPgotCi1uYW1lc3BhY2Ug
V2ViS2l0IHsKLVdlYktpdERPTURPTUFwcGxpY2F0aW9uQ2FjaGUqIHdyYXBET01BcHBsaWNhdGlv
bkNhY2hlKFdlYkNvcmU6OkRPTUFwcGxpY2F0aW9uQ2FjaGUqKTsKLVdlYktpdERPTURPTUFwcGxp
Y2F0aW9uQ2FjaGUqIGtpdChXZWJDb3JlOjpET01BcHBsaWNhdGlvbkNhY2hlKik7Ci1XZWJDb3Jl
OjpET01BcHBsaWNhdGlvbkNhY2hlKiBjb3JlKFdlYktpdERPTURPTUFwcGxpY2F0aW9uQ2FjaGUq
KTsKLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLyogV2ViS2l0RE9NRE9NQXBwbGlj
YXRpb25DYWNoZVByaXZhdGVfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01ET01DU1NOYW1lc3BhY2Uu
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RP
TS9XZWJLaXRET01ET01DU1NOYW1lc3BhY2UuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBkNzdmZGQ5Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRE9NQ1NTTmFtZXNwYWNlLmNwcAorKysg
L2Rldi9udWxsCkBAIC0xLDEwNCArMCwwIEBACi0vKgotICogIFRoaXMgZmlsZSBpcyBwYXJ0IG9m
IHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAqICBUaGlzIGZpbGUgaGFzIGJlZW4g
Z2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQotICoKLSAq
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICog
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViS2l0RE9NRE9NQ1NTTmFtZXNw
YWNlLmgiCi0KLSNpbmNsdWRlIDxXZWJDb3JlL0NTU0ltcG9ydFJ1bGUuaD4KLSNpbmNsdWRlICJE
T01PYmplY3RDYWNoZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnQuaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL0V4Y2VwdGlvbkNvZGUuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0V4Y2VwdGlvbkNv
ZGVEZXNjcmlwdGlvbi5oPgotI2luY2x1ZGUgPFdlYkNvcmUvSlNNYWluVGhyZWFkRXhlY1N0YXRl
Lmg+Ci0jaW5jbHVkZSAiV2ViS2l0RE9NRE9NQ1NTTmFtZXNwYWNlUHJpdmF0ZS5oIgotI2luY2x1
ZGUgIldlYktpdERPTVByaXZhdGUuaCIKLSNpbmNsdWRlICJDb252ZXJ0VG9VVEY4U3RyaW5nLmgi
Ci0jaW5jbHVkZSA8d3RmL0dldFB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotI2Rl
ZmluZSBXRUJLSVRfRE9NX0RPTV9DU1NfTkFNRVNQQUNFX0dFVF9QUklWQVRFKG9iaikgR19UWVBF
X0lOU1RBTkNFX0dFVF9QUklWQVRFKG9iaiwgV0VCS0lUX0RPTV9UWVBFX0RPTV9DU1NfTkFNRVNQ
QUNFLCBXZWJLaXRET01ET01DU1NOYW1lc3BhY2VQcml2YXRlKQotCi10eXBlZGVmIHN0cnVjdCBf
V2ViS2l0RE9NRE9NQ1NTTmFtZXNwYWNlUHJpdmF0ZSB7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkRP
TUNTU05hbWVzcGFjZT4gY29yZU9iamVjdDsKLX0gV2ViS2l0RE9NRE9NQ1NTTmFtZXNwYWNlUHJp
dmF0ZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVdlYktpdERPTURPTUNTU05hbWVzcGFjZSog
a2l0KFdlYkNvcmU6OkRPTUNTU05hbWVzcGFjZSogb2JqKQotewotICAgIGlmICghb2JqKQotICAg
ICAgICByZXR1cm4gMDsKLQotICAgIGlmIChncG9pbnRlciByZXQgPSBET01PYmplY3RDYWNoZTo6
Z2V0KG9iaikpCi0gICAgICAgIHJldHVybiBXRUJLSVRfRE9NX0RPTV9DU1NfTkFNRVNQQUNFKHJl
dCk7Ci0KLSAgICByZXR1cm4gd3JhcERPTUNTU05hbWVzcGFjZShvYmopOwotfQotCi1XZWJDb3Jl
OjpET01DU1NOYW1lc3BhY2UqIGNvcmUoV2ViS2l0RE9NRE9NQ1NTTmFtZXNwYWNlKiByZXF1ZXN0
KQotewotICAgIHJldHVybiByZXF1ZXN0ID8gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RE9NQ1NTTmFt
ZXNwYWNlKj4oV0VCS0lUX0RPTV9PQkpFQ1QocmVxdWVzdCktPmNvcmVPYmplY3QpIDogMDsKLX0K
LQotV2ViS2l0RE9NRE9NQ1NTTmFtZXNwYWNlKiB3cmFwRE9NQ1NTTmFtZXNwYWNlKFdlYkNvcmU6
OkRPTUNTU05hbWVzcGFjZSogY29yZU9iamVjdCkKLXsKLSAgICBBU1NFUlQoY29yZU9iamVjdCk7
Ci0gICAgcmV0dXJuIFdFQktJVF9ET01fRE9NX0NTU19OQU1FU1BBQ0UoZ19vYmplY3RfbmV3KFdF
QktJVF9ET01fVFlQRV9ET01fQ1NTX05BTUVTUEFDRSwgImNvcmUtb2JqZWN0IiwgY29yZU9iamVj
dCwgbnVsbHB0cikpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotR19ERUZJTkVfVFlQ
RShXZWJLaXRET01ET01DU1NOYW1lc3BhY2UsIHdlYmtpdF9kb21fZG9tX2Nzc19uYW1lc3BhY2Us
IFdFQktJVF9ET01fVFlQRV9PQkpFQ1QpCi0KLXN0YXRpYyB2b2lkIHdlYmtpdF9kb21fZG9tX2Nz
c19uYW1lc3BhY2VfZmluYWxpemUoR09iamVjdCogb2JqZWN0KQotewotICAgIFdlYktpdERPTURP
TUNTU05hbWVzcGFjZVByaXZhdGUqIHByaXYgPSBXRUJLSVRfRE9NX0RPTV9DU1NfTkFNRVNQQUNF
X0dFVF9QUklWQVRFKG9iamVjdCk7Ci0KLSAgICBXZWJLaXQ6OkRPTU9iamVjdENhY2hlOjpmb3Jn
ZXQocHJpdi0+Y29yZU9iamVjdC5nZXQoKSk7Ci0KLSAgICBwcml2LT5+V2ViS2l0RE9NRE9NQ1NT
TmFtZXNwYWNlUHJpdmF0ZSgpOwotICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9kb21fZG9tX2Nz
c19uYW1lc3BhY2VfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKLX0KLQotc3RhdGlj
IEdPYmplY3QqIHdlYmtpdF9kb21fZG9tX2Nzc19uYW1lc3BhY2VfY29uc3RydWN0b3IoR1R5cGUg
dHlwZSwgZ3VpbnQgY29uc3RydWN0UHJvcGVydGllc0NvdW50LCBHT2JqZWN0Q29uc3RydWN0UGFy
YW0qIGNvbnN0cnVjdFByb3BlcnRpZXMpCi17Ci0gICAgR09iamVjdCogb2JqZWN0ID0gR19PQkpF
Q1RfQ0xBU1Mod2Via2l0X2RvbV9kb21fY3NzX25hbWVzcGFjZV9wYXJlbnRfY2xhc3MpLT5jb25z
dHJ1Y3Rvcih0eXBlLCBjb25zdHJ1Y3RQcm9wZXJ0aWVzQ291bnQsIGNvbnN0cnVjdFByb3BlcnRp
ZXMpOwotCi0gICAgV2ViS2l0RE9NRE9NQ1NTTmFtZXNwYWNlUHJpdmF0ZSogcHJpdiA9IFdFQktJ
VF9ET01fRE9NX0NTU19OQU1FU1BBQ0VfR0VUX1BSSVZBVEUob2JqZWN0KTsKLSAgICBwcml2LT5j
b3JlT2JqZWN0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RE9NQ1NTTmFtZXNwYWNlKj4oV0VCS0lU
X0RPTV9PQkpFQ1Qob2JqZWN0KS0+Y29yZU9iamVjdCk7Ci0gICAgV2ViS2l0OjpET01PYmplY3RD
YWNoZTo6cHV0KHByaXYtPmNvcmVPYmplY3QuZ2V0KCksIG9iamVjdCk7Ci0KLSAgICByZXR1cm4g
b2JqZWN0OwotfQotCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX2RvbV9jc3NfbmFtZXNwYWNlX2Ns
YXNzX2luaXQoV2ViS2l0RE9NRE9NQ1NTTmFtZXNwYWNlQ2xhc3MqIHJlcXVlc3RDbGFzcykKLXsK
LSAgICBHT2JqZWN0Q2xhc3MqIGdvYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKHJlcXVlc3RD
bGFzcyk7Ci0gICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKGdvYmplY3RDbGFzcywgc2l6ZW9m
KFdlYktpdERPTURPTUNTU05hbWVzcGFjZVByaXZhdGUpKTsKLSAgICBnb2JqZWN0Q2xhc3MtPmNv
bnN0cnVjdG9yID0gd2Via2l0X2RvbV9kb21fY3NzX25hbWVzcGFjZV9jb25zdHJ1Y3RvcjsKLSAg
ICBnb2JqZWN0Q2xhc3MtPmZpbmFsaXplID0gd2Via2l0X2RvbV9kb21fY3NzX25hbWVzcGFjZV9m
aW5hbGl6ZTsKLX0KLQotc3RhdGljIHZvaWQgd2Via2l0X2RvbV9kb21fY3NzX25hbWVzcGFjZV9p
bml0KFdlYktpdERPTURPTUNTU05hbWVzcGFjZSogcmVxdWVzdCkKLXsKLSAgICBXZWJLaXRET01E
T01DU1NOYW1lc3BhY2VQcml2YXRlKiBwcml2ID0gV0VCS0lUX0RPTV9ET01fQ1NTX05BTUVTUEFD
RV9HRVRfUFJJVkFURShyZXF1ZXN0KTsKLSAgICBuZXcgKHByaXYpIFdlYktpdERPTURPTUNTU05h
bWVzcGFjZVByaXZhdGUoKTsKLX0KLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01ET01DU1NOYW1lc3BhY2Uu
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00v
V2ViS2l0RE9NRE9NQ1NTTmFtZXNwYWNlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGM1MTQ0YjAuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01ET01DU1NOYW1lc3BhY2UuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDUzICswLDAgQEAKLS8qCi0gKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdl
YktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICogIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0
ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICogIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
LSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
LSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAq
ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNp
Zm5kZWYgV2ViS2l0RE9NRE9NQ1NTTmFtZXNwYWNlX2gKLSNkZWZpbmUgV2ViS2l0RE9NRE9NQ1NT
TmFtZXNwYWNlX2gKLQotI2lmZGVmIFdFQktJVF9ET01fVVNFX1VOU1RBQkxFX0FQSQotCi0jaW5j
bHVkZSA8Z2xpYi1vYmplY3QuaD4KLSNpbmNsdWRlIDx3ZWJraXRkb20vV2ViS2l0RE9NT2JqZWN0
Lmg+Ci0jaW5jbHVkZSA8d2Via2l0ZG9tL3dlYmtpdGRvbWRlZmluZXMtdW5zdGFibGUuaD4KLQot
R19CRUdJTl9ERUNMUwotCi0jZGVmaW5lIFdFQktJVF9ET01fVFlQRV9ET01fQ1NTX05BTUVTUEFD
RSAgICAgICAgICAgICh3ZWJraXRfZG9tX2RvbV9jc3NfbmFtZXNwYWNlX2dldF90eXBlKCkpCi0j
ZGVmaW5lIFdFQktJVF9ET01fRE9NX0NTU19OQU1FU1BBQ0Uob2JqKSAgICAgICAgICAgIChHX1RZ
UEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwgV0VCS0lUX0RPTV9UWVBFX0RPTV9DU1NfTkFN
RVNQQUNFLCBXZWJLaXRET01ET01DU1NOYW1lc3BhY2UpKQotI2RlZmluZSBXRUJLSVRfRE9NX0RP
TV9DU1NfTkFNRVNQQUNFX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1Qo
KGtsYXNzKSwgIFdFQktJVF9ET01fVFlQRV9ET01fQ1NTX05BTUVTUEFDRSwgV2ViS2l0RE9NRE9N
Q1NTTmFtZXNwYWNlQ2xhc3MpCi0jZGVmaW5lIFdFQktJVF9ET01fSVNfRE9NX0NTU19OQU1FU1BB
Q0Uob2JqKSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lU
X0RPTV9UWVBFX0RPTV9DU1NfTkFNRVNQQUNFKSkKLSNkZWZpbmUgV0VCS0lUX0RPTV9JU19ET01f
Q1NTX05BTUVTUEFDRV9DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFz
cyksICBXRUJLSVRfRE9NX1RZUEVfRE9NX0NTU19OQU1FU1BBQ0UpKQotI2RlZmluZSBXRUJLSVRf
RE9NX0RPTV9DU1NfTkFNRVNQQUNFX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dF
VF9DTEFTUygob2JqKSwgIFdFQktJVF9ET01fVFlQRV9ET01fQ1NTX05BTUVTUEFDRSwgV2ViS2l0
RE9NRE9NQ1NTTmFtZXNwYWNlQ2xhc3MpKQotCi1zdHJ1Y3QgX1dlYktpdERPTURPTUNTU05hbWVz
cGFjZSB7Ci0gICAgV2ViS2l0RE9NT2JqZWN0IHBhcmVudF9pbnN0YW5jZTsKLX07Ci0KLXN0cnVj
dCBfV2ViS2l0RE9NRE9NQ1NTTmFtZXNwYWNlQ2xhc3MgewotICAgIFdlYktpdERPTU9iamVjdENs
YXNzIHBhcmVudF9jbGFzczsKLX07Ci0KLVdFQktJVF9BUEkgR1R5cGUKLXdlYmtpdF9kb21fZG9t
X2Nzc19uYW1lc3BhY2VfZ2V0X3R5cGUodm9pZCk7Ci0KLUdfRU5EX0RFQ0xTCi0KLSNlbmRpZiAv
KiBXRUJLSVRfRE9NX1VTRV9VTlNUQUJMRV9BUEkgKi8KLSNlbmRpZiAvKiBXZWJLaXRET01ET01D
U1NOYW1lc3BhY2VfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01ET01DU1NOYW1lc3BhY2VQcml2YXRl
LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9N
L1dlYktpdERPTURPTUNTU05hbWVzcGFjZVByaXZhdGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZjRhMTQyYy4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURPTUNTU05hbWVzcGFjZVByaXZh
dGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLS8qCi0gKiAgVGhpcyBmaWxlIGlz
IHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICogIFRoaXMgZmlsZSBo
YXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkh
Ci0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAg
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgotICovCi0KLSNpZm5kZWYgV2ViS2l0RE9NRE9NQ1NTTmFtZXNwYWNlUHJpdmF0ZV9oCi0j
ZGVmaW5lIFdlYktpdERPTURPTUNTU05hbWVzcGFjZVByaXZhdGVfaAotCi0jaW5jbHVkZSA8V2Vi
Q29yZS9ET01DU1NOYW1lc3BhY2UuaD4KLSNpbmNsdWRlIDx3ZWJraXRkb20vV2ViS2l0RE9NRE9N
Q1NTTmFtZXNwYWNlLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotV2ViS2l0RE9NRE9NQ1NTTmFt
ZXNwYWNlKiB3cmFwRE9NQ1NTTmFtZXNwYWNlKFdlYkNvcmU6OkRPTUNTU05hbWVzcGFjZSopOwot
V2ViS2l0RE9NRE9NQ1NTTmFtZXNwYWNlKiBraXQoV2ViQ29yZTo6RE9NQ1NTTmFtZXNwYWNlKik7
Ci1XZWJDb3JlOjpET01DU1NOYW1lc3BhY2UqIGNvcmUoV2ViS2l0RE9NRE9NQ1NTTmFtZXNwYWNl
Kik7Ci19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8qIFdlYktpdERPTURPTUNTU05h
bWVzcGFjZVByaXZhdGVfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01ET01NaW1lVHlwZS5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktp
dERPTURPTU1pbWVUeXBlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWFlNmE1
OC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9ndGsvRE9NL1dlYktpdERPTURPTU1pbWVUeXBlLmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDIxNCArMCwwIEBACi0vKgotICogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3Bl
biBzb3VyY2UgcHJvamVjdC4KLSAqICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdl
bmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQotICoKLSAqICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
LSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKLSAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiAgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKLSAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViS2l0RE9NRE9NTWltZVR5cGUuaCIKLQotI2luY2x1ZGUg
PFdlYkNvcmUvQ1NTSW1wb3J0UnVsZS5oPgotI2luY2x1ZGUgIkRPTU9iamVjdENhY2hlLmgiCi0j
aW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRXhjZXB0aW9u
Q29kZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uLmg+Ci0j
aW5jbHVkZSA8V2ViQ29yZS9KU01haW5UaHJlYWRFeGVjU3RhdGUuaD4KLSNpbmNsdWRlICJXZWJL
aXRET01ET01NaW1lVHlwZVByaXZhdGUuaCIKLSNpbmNsdWRlICJXZWJLaXRET01ET01QbHVnaW5Q
cml2YXRlLmgiCi0jaW5jbHVkZSAiV2ViS2l0RE9NUHJpdmF0ZS5oIgotI2luY2x1ZGUgIkNvbnZl
cnRUb1VURjhTdHJpbmcuaCIKLSNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+Ci0jaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgotCi0jZGVmaW5lIFdFQktJVF9ET01fRE9NX01JTUVfVFlQRV9HRVRfUFJJVkFU
RShvYmopIEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURShvYmosIFdFQktJVF9ET01fVFlQRV9E
T01fTUlNRV9UWVBFLCBXZWJLaXRET01ET01NaW1lVHlwZVByaXZhdGUpCi0KLXR5cGVkZWYgc3Ry
dWN0IF9XZWJLaXRET01ET01NaW1lVHlwZVByaXZhdGUgewotICAgIFJlZlB0cjxXZWJDb3JlOjpE
T01NaW1lVHlwZT4gY29yZU9iamVjdDsKLX0gV2ViS2l0RE9NRE9NTWltZVR5cGVQcml2YXRlOwot
Ci1uYW1lc3BhY2UgV2ViS2l0IHsKLQotV2ViS2l0RE9NRE9NTWltZVR5cGUqIGtpdChXZWJDb3Jl
OjpET01NaW1lVHlwZSogb2JqKQotewotICAgIGlmICghb2JqKQotICAgICAgICByZXR1cm4gMDsK
LQotICAgIGlmIChncG9pbnRlciByZXQgPSBET01PYmplY3RDYWNoZTo6Z2V0KG9iaikpCi0gICAg
ICAgIHJldHVybiBXRUJLSVRfRE9NX0RPTV9NSU1FX1RZUEUocmV0KTsKLQotICAgIHJldHVybiB3
cmFwRE9NTWltZVR5cGUob2JqKTsKLX0KLQotV2ViQ29yZTo6RE9NTWltZVR5cGUqIGNvcmUoV2Vi
S2l0RE9NRE9NTWltZVR5cGUqIHJlcXVlc3QpCi17Ci0gICAgcmV0dXJuIHJlcXVlc3QgPyBzdGF0
aWNfY2FzdDxXZWJDb3JlOjpET01NaW1lVHlwZSo+KFdFQktJVF9ET01fT0JKRUNUKHJlcXVlc3Qp
LT5jb3JlT2JqZWN0KSA6IDA7Ci19Ci0KLVdlYktpdERPTURPTU1pbWVUeXBlKiB3cmFwRE9NTWlt
ZVR5cGUoV2ViQ29yZTo6RE9NTWltZVR5cGUqIGNvcmVPYmplY3QpCi17Ci0gICAgQVNTRVJUKGNv
cmVPYmplY3QpOwotICAgIHJldHVybiBXRUJLSVRfRE9NX0RPTV9NSU1FX1RZUEUoZ19vYmplY3Rf
bmV3KFdFQktJVF9ET01fVFlQRV9ET01fTUlNRV9UWVBFLCAiY29yZS1vYmplY3QiLCBjb3JlT2Jq
ZWN0LCBudWxscHRyKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi1HX0RFRklORV9U
WVBFKFdlYktpdERPTURPTU1pbWVUeXBlLCB3ZWJraXRfZG9tX2RvbV9taW1lX3R5cGUsIFdFQktJ
VF9ET01fVFlQRV9PQkpFQ1QpCi0KLWVudW0gewotICAgIFBST1BfMCwKLSAgICBQUk9QX1RZUEUs
Ci0gICAgUFJPUF9TVUZGSVhFUywKLSAgICBQUk9QX0RFU0NSSVBUSU9OLAotICAgIFBST1BfRU5B
QkxFRF9QTFVHSU4sCi19OwotCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX2RvbV9taW1lX3R5cGVf
ZmluYWxpemUoR09iamVjdCogb2JqZWN0KQotewotICAgIFdlYktpdERPTURPTU1pbWVUeXBlUHJp
dmF0ZSogcHJpdiA9IFdFQktJVF9ET01fRE9NX01JTUVfVFlQRV9HRVRfUFJJVkFURShvYmplY3Qp
OwotCi0gICAgV2ViS2l0OjpET01PYmplY3RDYWNoZTo6Zm9yZ2V0KHByaXYtPmNvcmVPYmplY3Qu
Z2V0KCkpOwotCi0gICAgcHJpdi0+fldlYktpdERPTURPTU1pbWVUeXBlUHJpdmF0ZSgpOwotICAg
IEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9kb21fZG9tX21pbWVfdHlwZV9wYXJlbnRfY2xhc3MpLT5m
aW5hbGl6ZShvYmplY3QpOwotfQotCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX2RvbV9taW1lX3R5
cGVfZ2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcGVydHlJZCwgR1ZhbHVl
KiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpCi17Ci0gICAgV2ViS2l0RE9NRE9NTWltZVR5cGUq
IHNlbGYgPSBXRUJLSVRfRE9NX0RPTV9NSU1FX1RZUEUob2JqZWN0KTsKLQotICAgIHN3aXRjaCAo
cHJvcGVydHlJZCkgewotICAgIGNhc2UgUFJPUF9UWVBFOgotICAgICAgICBnX3ZhbHVlX3Rha2Vf
c3RyaW5nKHZhbHVlLCB3ZWJraXRfZG9tX2RvbV9taW1lX3R5cGVfZ2V0X2NvbnRlbnRfdHlwZShz
ZWxmKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9TVUZGSVhFUzoKLSAgICAgICAg
Z192YWx1ZV90YWtlX3N0cmluZyh2YWx1ZSwgd2Via2l0X2RvbV9kb21fbWltZV90eXBlX2dldF9z
dWZmaXhlcyhzZWxmKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9ERVNDUklQVElP
TjoKLSAgICAgICAgZ192YWx1ZV90YWtlX3N0cmluZyh2YWx1ZSwgd2Via2l0X2RvbV9kb21fbWlt
ZV90eXBlX2dldF9kZXNjcmlwdGlvbihzZWxmKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
UFJPUF9FTkFCTEVEX1BMVUdJTjoKLSAgICAgICAgZ192YWx1ZV9zZXRfb2JqZWN0KHZhbHVlLCB3
ZWJraXRfZG9tX2RvbV9taW1lX3R5cGVfZ2V0X2VuYWJsZWRfcGx1Z2luKHNlbGYpKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BS
T1BFUlRZX0lEKG9iamVjdCwgcHJvcGVydHlJZCwgcHNwZWMpOwotICAgICAgICBicmVhazsKLSAg
ICB9Ci19Ci0KLXN0YXRpYyBHT2JqZWN0KiB3ZWJraXRfZG9tX2RvbV9taW1lX3R5cGVfY29uc3Ry
dWN0b3IoR1R5cGUgdHlwZSwgZ3VpbnQgY29uc3RydWN0UHJvcGVydGllc0NvdW50LCBHT2JqZWN0
Q29uc3RydWN0UGFyYW0qIGNvbnN0cnVjdFByb3BlcnRpZXMpCi17Ci0gICAgR09iamVjdCogb2Jq
ZWN0ID0gR19PQkpFQ1RfQ0xBU1Mod2Via2l0X2RvbV9kb21fbWltZV90eXBlX3BhcmVudF9jbGFz
cyktPmNvbnN0cnVjdG9yKHR5cGUsIGNvbnN0cnVjdFByb3BlcnRpZXNDb3VudCwgY29uc3RydWN0
UHJvcGVydGllcyk7Ci0KLSAgICBXZWJLaXRET01ET01NaW1lVHlwZVByaXZhdGUqIHByaXYgPSBX
RUJLSVRfRE9NX0RPTV9NSU1FX1RZUEVfR0VUX1BSSVZBVEUob2JqZWN0KTsKLSAgICBwcml2LT5j
b3JlT2JqZWN0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RE9NTWltZVR5cGUqPihXRUJLSVRfRE9N
X09CSkVDVChvYmplY3QpLT5jb3JlT2JqZWN0KTsKLSAgICBXZWJLaXQ6OkRPTU9iamVjdENhY2hl
OjpwdXQocHJpdi0+Y29yZU9iamVjdC5nZXQoKSwgb2JqZWN0KTsKLQotICAgIHJldHVybiBvYmpl
Y3Q7Ci19Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdF9kb21fZG9tX21pbWVfdHlwZV9jbGFzc19pbml0
KFdlYktpdERPTURPTU1pbWVUeXBlQ2xhc3MqIHJlcXVlc3RDbGFzcykKLXsKLSAgICBHT2JqZWN0
Q2xhc3MqIGdvYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKHJlcXVlc3RDbGFzcyk7Ci0gICAg
Z190eXBlX2NsYXNzX2FkZF9wcml2YXRlKGdvYmplY3RDbGFzcywgc2l6ZW9mKFdlYktpdERPTURP
TU1pbWVUeXBlUHJpdmF0ZSkpOwotICAgIGdvYmplY3RDbGFzcy0+Y29uc3RydWN0b3IgPSB3ZWJr
aXRfZG9tX2RvbV9taW1lX3R5cGVfY29uc3RydWN0b3I7Ci0gICAgZ29iamVjdENsYXNzLT5maW5h
bGl6ZSA9IHdlYmtpdF9kb21fZG9tX21pbWVfdHlwZV9maW5hbGl6ZTsKLSAgICBnb2JqZWN0Q2xh
c3MtPmdldF9wcm9wZXJ0eSA9IHdlYmtpdF9kb21fZG9tX21pbWVfdHlwZV9nZXRfcHJvcGVydHk7
Ci0KLSAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAotICAgICAgICBnb2JqZWN0
Q2xhc3MsCi0gICAgICAgIFBST1BfVFlQRSwKLSAgICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZygK
LSAgICAgICAgICAgICJ0eXBlIiwKLSAgICAgICAgICAgICJET01NaW1lVHlwZTp0eXBlIiwKLSAg
ICAgICAgICAgICJyZWFkLW9ubHkgZ2NoYXIqIERPTU1pbWVUeXBlOnR5cGUiLAotICAgICAgICAg
ICAgIiIsCi0gICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKLQotICAgIGdfb2Jq
ZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAg
ICAgUFJPUF9TVUZGSVhFUywKLSAgICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZygKLSAgICAgICAg
ICAgICJzdWZmaXhlcyIsCi0gICAgICAgICAgICAiRE9NTWltZVR5cGU6c3VmZml4ZXMiLAotICAg
ICAgICAgICAgInJlYWQtb25seSBnY2hhciogRE9NTWltZVR5cGU6c3VmZml4ZXMiLAotICAgICAg
ICAgICAgIiIsCi0gICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKLQotICAgIGdf
b2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKLSAg
ICAgICAgUFJPUF9ERVNDUklQVElPTiwKLSAgICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZygKLSAg
ICAgICAgICAgICJkZXNjcmlwdGlvbiIsCi0gICAgICAgICAgICAiRE9NTWltZVR5cGU6ZGVzY3Jp
cHRpb24iLAotICAgICAgICAgICAgInJlYWQtb25seSBnY2hhciogRE9NTWltZVR5cGU6ZGVzY3Jp
cHRpb24iLAotICAgICAgICAgICAgIiIsCi0gICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFC
TEUpKTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdv
YmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9FTkFCTEVEX1BMVUdJTiwKLSAgICAgICAgZ19wYXJh
bV9zcGVjX29iamVjdCgKLSAgICAgICAgICAgICJlbmFibGVkLXBsdWdpbiIsCi0gICAgICAgICAg
ICAiRE9NTWltZVR5cGU6ZW5hYmxlZC1wbHVnaW4iLAotICAgICAgICAgICAgInJlYWQtb25seSBX
ZWJLaXRET01ET01QbHVnaW4qIERPTU1pbWVUeXBlOmVuYWJsZWQtcGx1Z2luIiwKLSAgICAgICAg
ICAgIFdFQktJVF9ET01fVFlQRV9ET01fUExVR0lOLAotICAgICAgICAgICAgV0VCS0lUX1BBUkFN
X1JFQURBQkxFKSk7Ci0KLX0KLQotc3RhdGljIHZvaWQgd2Via2l0X2RvbV9kb21fbWltZV90eXBl
X2luaXQoV2ViS2l0RE9NRE9NTWltZVR5cGUqIHJlcXVlc3QpCi17Ci0gICAgV2ViS2l0RE9NRE9N
TWltZVR5cGVQcml2YXRlKiBwcml2ID0gV0VCS0lUX0RPTV9ET01fTUlNRV9UWVBFX0dFVF9QUklW
QVRFKHJlcXVlc3QpOwotICAgIG5ldyAocHJpdikgV2ViS2l0RE9NRE9NTWltZVR5cGVQcml2YXRl
KCk7Ci19Ci0KLWdjaGFyKiB3ZWJraXRfZG9tX2RvbV9taW1lX3R5cGVfZ2V0X2NvbnRlbnRfdHlw
ZShXZWJLaXRET01ET01NaW1lVHlwZSogc2VsZikKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJl
YWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9J
U19ET01fTUlNRV9UWVBFKHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpET01NaW1lVHlwZSogaXRl
bSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBnY2hhciogcmVzdWx0ID0gY29udmVydFRvVVRG
OFN0cmluZyhpdGVtLT50eXBlKCkpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLWdjaGFyKiB3
ZWJraXRfZG9tX2RvbV9taW1lX3R5cGVfZ2V0X3N1ZmZpeGVzKFdlYktpdERPTURPTU1pbWVUeXBl
KiBzZWxmKQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX0RPTV9NSU1FX1RZUEUoc2VsZiks
IDApOwotICAgIFdlYkNvcmU6OkRPTU1pbWVUeXBlKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYp
OwotICAgIGdjaGFyKiByZXN1bHQgPSBjb252ZXJ0VG9VVEY4U3RyaW5nKGl0ZW0tPnN1ZmZpeGVz
KCkpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLWdjaGFyKiB3ZWJraXRfZG9tX2RvbV9taW1l
X3R5cGVfZ2V0X2Rlc2NyaXB0aW9uKFdlYktpdERPTURPTU1pbWVUeXBlKiBzZWxmKQotewotICAg
IFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxf
aWZfZmFpbChXRUJLSVRfRE9NX0lTX0RPTV9NSU1FX1RZUEUoc2VsZiksIDApOwotICAgIFdlYkNv
cmU6OkRPTU1pbWVUeXBlKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdjaGFyKiBy
ZXN1bHQgPSBjb252ZXJ0VG9VVEY4U3RyaW5nKGl0ZW0tPmRlc2NyaXB0aW9uKCkpOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci0KLVdlYktpdERPTURPTVBsdWdpbiogd2Via2l0X2RvbV9kb21fbWlt
ZV90eXBlX2dldF9lbmFibGVkX3BsdWdpbihXZWJLaXRET01ET01NaW1lVHlwZSogc2VsZikKLXsK
LSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5f
dmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19ET01fTUlNRV9UWVBFKHNlbGYpLCAwKTsKLSAgICBX
ZWJDb3JlOjpET01NaW1lVHlwZSogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBSZWZQ
dHI8V2ViQ29yZTo6RE9NUGx1Z2luPiBnb2JqZWN0UmVzdWx0ID0gV1RGOjpnZXRQdHIoaXRlbS0+
ZW5hYmxlZFBsdWdpbigpKTsKLSAgICByZXR1cm4gV2ViS2l0OjpraXQoZ29iamVjdFJlc3VsdC5n
ZXQoKSk7Ci19Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRE9NTWltZVR5cGUuaCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRE9NTWlt
ZVR5cGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTIyN2NlMy4uMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9N
L1dlYktpdERPTURPTU1pbWVUeXBlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi0v
KgotICogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVj
dC4KLSAqICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdz
LnBsLiBETyBOT1QgTU9ESUZZIQotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQotICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaWZuZGVmIFdlYktpdERPTURPTU1pbWVU
eXBlX2gKLSNkZWZpbmUgV2ViS2l0RE9NRE9NTWltZVR5cGVfaAotCi0jaWZkZWYgV0VCS0lUX0RP
TV9VU0VfVU5TVEFCTEVfQVBJCi0KLSNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgotI2luY2x1ZGUg
PHdlYmtpdGRvbS9XZWJLaXRET01PYmplY3QuaD4KLSNpbmNsdWRlIDx3ZWJraXRkb20vd2Via2l0
ZG9tZGVmaW5lcy11bnN0YWJsZS5oPgotCi1HX0JFR0lOX0RFQ0xTCi0KLSNkZWZpbmUgV0VCS0lU
X0RPTV9UWVBFX0RPTV9NSU1FX1RZUEUgICAgICAgICAgICAod2Via2l0X2RvbV9kb21fbWltZV90
eXBlX2dldF90eXBlKCkpCi0jZGVmaW5lIFdFQktJVF9ET01fRE9NX01JTUVfVFlQRShvYmopICAg
ICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBXRUJLSVRfRE9NX1RZ
UEVfRE9NX01JTUVfVFlQRSwgV2ViS2l0RE9NRE9NTWltZVR5cGUpKQotI2RlZmluZSBXRUJLSVRf
RE9NX0RPTV9NSU1FX1RZUEVfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FT
VCgoa2xhc3MpLCAgV0VCS0lUX0RPTV9UWVBFX0RPTV9NSU1FX1RZUEUsIFdlYktpdERPTURPTU1p
bWVUeXBlQ2xhc3MpCi0jZGVmaW5lIFdFQktJVF9ET01fSVNfRE9NX01JTUVfVFlQRShvYmopICAg
ICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLCBXRUJLSVRfRE9NX1RZUEVf
RE9NX01JTUVfVFlQRSkpCi0jZGVmaW5lIFdFQktJVF9ET01fSVNfRE9NX01JTUVfVFlQRV9DTEFT
UyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfRE9NX1RZ
UEVfRE9NX01JTUVfVFlQRSkpCi0jZGVmaW5lIFdFQktJVF9ET01fRE9NX01JTUVfVFlQRV9HRVRf
Q0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksICBXRUJLSVRfRE9N
X1RZUEVfRE9NX01JTUVfVFlQRSwgV2ViS2l0RE9NRE9NTWltZVR5cGVDbGFzcykpCi0KLXN0cnVj
dCBfV2ViS2l0RE9NRE9NTWltZVR5cGUgewotICAgIFdlYktpdERPTU9iamVjdCBwYXJlbnRfaW5z
dGFuY2U7Ci19OwotCi1zdHJ1Y3QgX1dlYktpdERPTURPTU1pbWVUeXBlQ2xhc3MgewotICAgIFdl
YktpdERPTU9iamVjdENsYXNzIHBhcmVudF9jbGFzczsKLX07Ci0KLVdFQktJVF9BUEkgR1R5cGUK
LXdlYmtpdF9kb21fZG9tX21pbWVfdHlwZV9nZXRfdHlwZSh2b2lkKTsKLQotLyoqCi0gKiB3ZWJr
aXRfZG9tX2RvbV9taW1lX3R5cGVfZ2V0X2NvbnRlbnRfdHlwZToKLSAqIEBzZWxmOiBBICNXZWJL
aXRET01ET01NaW1lVHlwZQotICoKLSAqIFJldHVybnM6IEEgI2djaGFyCi0gKgotICogU3RhYmls
aXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIGdjaGFyKgotd2Via2l0X2RvbV9kb21fbWlt
ZV90eXBlX2dldF9jb250ZW50X3R5cGUoV2ViS2l0RE9NRE9NTWltZVR5cGUqIHNlbGYpOwotCi0v
KioKLSAqIHdlYmtpdF9kb21fZG9tX21pbWVfdHlwZV9nZXRfc3VmZml4ZXM6Ci0gKiBAc2VsZjog
QSAjV2ViS2l0RE9NRE9NTWltZVR5cGUKLSAqCi0gKiBSZXR1cm5zOiBBICNnY2hhcgotICoKLSAq
IFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSBnY2hhcioKLXdlYmtpdF9kb21f
ZG9tX21pbWVfdHlwZV9nZXRfc3VmZml4ZXMoV2ViS2l0RE9NRE9NTWltZVR5cGUqIHNlbGYpOwot
Ci0vKioKLSAqIHdlYmtpdF9kb21fZG9tX21pbWVfdHlwZV9nZXRfZGVzY3JpcHRpb246Ci0gKiBA
c2VsZjogQSAjV2ViS2l0RE9NRE9NTWltZVR5cGUKLSAqCi0gKiBSZXR1cm5zOiBBICNnY2hhcgot
ICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSBnY2hhcioKLXdlYmtp
dF9kb21fZG9tX21pbWVfdHlwZV9nZXRfZGVzY3JpcHRpb24oV2ViS2l0RE9NRE9NTWltZVR5cGUq
IHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9kb21fZG9tX21pbWVfdHlwZV9nZXRfZW5hYmxlZF9w
bHVnaW46Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NRE9NTWltZVR5cGUKLSAqCi0gKiBSZXR1cm5z
OiAodHJhbnNmZXIgZnVsbCk6IEEgI1dlYktpdERPTURPTVBsdWdpbgotICoKLSAqIFN0YWJpbGl0
eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSBXZWJLaXRET01ET01QbHVnaW4qCi13ZWJraXRf
ZG9tX2RvbV9taW1lX3R5cGVfZ2V0X2VuYWJsZWRfcGx1Z2luKFdlYktpdERPTURPTU1pbWVUeXBl
KiBzZWxmKTsKLQotR19FTkRfREVDTFMKLQotI2VuZGlmIC8qIFdFQktJVF9ET01fVVNFX1VOU1RB
QkxFX0FQSSAqLwotI2VuZGlmIC8qIFdlYktpdERPTURPTU1pbWVUeXBlX2ggKi8KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00v
V2ViS2l0RE9NRE9NTWltZVR5cGVBcnJheS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURPTU1pbWVUeXBlQXJyYXkuY3Bw
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ODc5ZjA1Li4wMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0
RE9NRE9NTWltZVR5cGVBcnJheS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNjUgKzAsMCBAQAot
LyoKLSAqICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2pl
Y3QuCi0gKiAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5n
cy5wbC4gRE8gTk9UIE1PRElGWSEKLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAg
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiAgQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIldlYktpdERPTURPTU1pbWVUeXBlQXJyYXkuaCIKLQotI2luY2x1ZGUgPFdlYkNvcmUv
Q1NTSW1wb3J0UnVsZS5oPgotI2luY2x1ZGUgIkRPTU9iamVjdENhY2hlLmgiCi0jaW5jbHVkZSA8
V2ViQ29yZS9Eb2N1bWVudC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRXhjZXB0aW9uQ29kZS5oPgot
I2luY2x1ZGUgPFdlYkNvcmUvRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uLmg+Ci0jaW5jbHVkZSA8
V2ViQ29yZS9KU01haW5UaHJlYWRFeGVjU3RhdGUuaD4KLSNpbmNsdWRlICJXZWJLaXRET01ET01N
aW1lVHlwZUFycmF5UHJpdmF0ZS5oIgotI2luY2x1ZGUgIldlYktpdERPTURPTU1pbWVUeXBlUHJp
dmF0ZS5oIgotI2luY2x1ZGUgIldlYktpdERPTVByaXZhdGUuaCIKLSNpbmNsdWRlICJDb252ZXJ0
VG9VVEY4U3RyaW5nLmgiCi0jaW5jbHVkZSA8d3RmL0dldFB0ci5oPgotI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KLQotI2RlZmluZSBXRUJLSVRfRE9NX0RPTV9NSU1FX1RZUEVfQVJSQVlfR0VUX1BS
SVZBVEUob2JqKSBHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUob2JqLCBXRUJLSVRfRE9NX1RZ
UEVfRE9NX01JTUVfVFlQRV9BUlJBWSwgV2ViS2l0RE9NRE9NTWltZVR5cGVBcnJheVByaXZhdGUp
Ci0KLXR5cGVkZWYgc3RydWN0IF9XZWJLaXRET01ET01NaW1lVHlwZUFycmF5UHJpdmF0ZSB7Ci0g
ICAgUmVmUHRyPFdlYkNvcmU6OkRPTU1pbWVUeXBlQXJyYXk+IGNvcmVPYmplY3Q7Ci19IFdlYktp
dERPTURPTU1pbWVUeXBlQXJyYXlQcml2YXRlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotV2Vi
S2l0RE9NRE9NTWltZVR5cGVBcnJheSoga2l0KFdlYkNvcmU6OkRPTU1pbWVUeXBlQXJyYXkqIG9i
aikKLXsKLSAgICBpZiAoIW9iaikKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBpZiAoZ3BvaW50
ZXIgcmV0ID0gRE9NT2JqZWN0Q2FjaGU6OmdldChvYmopKQotICAgICAgICByZXR1cm4gV0VCS0lU
X0RPTV9ET01fTUlNRV9UWVBFX0FSUkFZKHJldCk7Ci0KLSAgICByZXR1cm4gd3JhcERPTU1pbWVU
eXBlQXJyYXkob2JqKTsKLX0KLQotV2ViQ29yZTo6RE9NTWltZVR5cGVBcnJheSogY29yZShXZWJL
aXRET01ET01NaW1lVHlwZUFycmF5KiByZXF1ZXN0KQotewotICAgIHJldHVybiByZXF1ZXN0ID8g
c3RhdGljX2Nhc3Q8V2ViQ29yZTo6RE9NTWltZVR5cGVBcnJheSo+KFdFQktJVF9ET01fT0JKRUNU
KHJlcXVlc3QpLT5jb3JlT2JqZWN0KSA6IDA7Ci19Ci0KLVdlYktpdERPTURPTU1pbWVUeXBlQXJy
YXkqIHdyYXBET01NaW1lVHlwZUFycmF5KFdlYkNvcmU6OkRPTU1pbWVUeXBlQXJyYXkqIGNvcmVP
YmplY3QpCi17Ci0gICAgQVNTRVJUKGNvcmVPYmplY3QpOwotICAgIHJldHVybiBXRUJLSVRfRE9N
X0RPTV9NSU1FX1RZUEVfQVJSQVkoZ19vYmplY3RfbmV3KFdFQktJVF9ET01fVFlQRV9ET01fTUlN
RV9UWVBFX0FSUkFZLCAiY29yZS1vYmplY3QiLCBjb3JlT2JqZWN0LCBudWxscHRyKSk7Ci19Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi1HX0RFRklORV9UWVBFKFdlYktpdERPTURPTU1pbWVU
eXBlQXJyYXksIHdlYmtpdF9kb21fZG9tX21pbWVfdHlwZV9hcnJheSwgV0VCS0lUX0RPTV9UWVBF
X09CSkVDVCkKLQotZW51bSB7Ci0gICAgUFJPUF8wLAotICAgIFBST1BfTEVOR1RILAotfTsKLQot
c3RhdGljIHZvaWQgd2Via2l0X2RvbV9kb21fbWltZV90eXBlX2FycmF5X2ZpbmFsaXplKEdPYmpl
Y3QqIG9iamVjdCkKLXsKLSAgICBXZWJLaXRET01ET01NaW1lVHlwZUFycmF5UHJpdmF0ZSogcHJp
diA9IFdFQktJVF9ET01fRE9NX01JTUVfVFlQRV9BUlJBWV9HRVRfUFJJVkFURShvYmplY3QpOwot
Ci0gICAgV2ViS2l0OjpET01PYmplY3RDYWNoZTo6Zm9yZ2V0KHByaXYtPmNvcmVPYmplY3QuZ2V0
KCkpOwotCi0gICAgcHJpdi0+fldlYktpdERPTURPTU1pbWVUeXBlQXJyYXlQcml2YXRlKCk7Ci0g
ICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X2RvbV9kb21fbWltZV90eXBlX2FycmF5X3BhcmVudF9j
bGFzcyktPmZpbmFsaXplKG9iamVjdCk7Ci19Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdF9kb21fZG9t
X21pbWVfdHlwZV9hcnJheV9nZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9w
ZXJ0eUlkLCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3BlYykKLXsKLSAgICBXZWJLaXRE
T01ET01NaW1lVHlwZUFycmF5KiBzZWxmID0gV0VCS0lUX0RPTV9ET01fTUlNRV9UWVBFX0FSUkFZ
KG9iamVjdCk7Ci0KLSAgICBzd2l0Y2ggKHByb3BlcnR5SWQpIHsKLSAgICBjYXNlIFBST1BfTEVO
R1RIOgotICAgICAgICBnX3ZhbHVlX3NldF91bG9uZyh2YWx1ZSwgd2Via2l0X2RvbV9kb21fbWlt
ZV90eXBlX2FycmF5X2dldF9sZW5ndGgoc2VsZikpOwotICAgICAgICBicmVhazsKLSAgICBkZWZh
dWx0OgotICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBw
cm9wZXJ0eUlkLCBwc3BlYyk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLX0KLQotc3RhdGljIEdP
YmplY3QqIHdlYmtpdF9kb21fZG9tX21pbWVfdHlwZV9hcnJheV9jb25zdHJ1Y3RvcihHVHlwZSB0
eXBlLCBndWludCBjb25zdHJ1Y3RQcm9wZXJ0aWVzQ291bnQsIEdPYmplY3RDb25zdHJ1Y3RQYXJh
bSogY29uc3RydWN0UHJvcGVydGllcykKLXsKLSAgICBHT2JqZWN0KiBvYmplY3QgPSBHX09CSkVD
VF9DTEFTUyh3ZWJraXRfZG9tX2RvbV9taW1lX3R5cGVfYXJyYXlfcGFyZW50X2NsYXNzKS0+Y29u
c3RydWN0b3IodHlwZSwgY29uc3RydWN0UHJvcGVydGllc0NvdW50LCBjb25zdHJ1Y3RQcm9wZXJ0
aWVzKTsKLQotICAgIFdlYktpdERPTURPTU1pbWVUeXBlQXJyYXlQcml2YXRlKiBwcml2ID0gV0VC
S0lUX0RPTV9ET01fTUlNRV9UWVBFX0FSUkFZX0dFVF9QUklWQVRFKG9iamVjdCk7Ci0gICAgcHJp
di0+Y29yZU9iamVjdCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkRPTU1pbWVUeXBlQXJyYXkqPihX
RUJLSVRfRE9NX09CSkVDVChvYmplY3QpLT5jb3JlT2JqZWN0KTsKLSAgICBXZWJLaXQ6OkRPTU9i
amVjdENhY2hlOjpwdXQocHJpdi0+Y29yZU9iamVjdC5nZXQoKSwgb2JqZWN0KTsKLQotICAgIHJl
dHVybiBvYmplY3Q7Ci19Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdF9kb21fZG9tX21pbWVfdHlwZV9h
cnJheV9jbGFzc19pbml0KFdlYktpdERPTURPTU1pbWVUeXBlQXJyYXlDbGFzcyogcmVxdWVzdENs
YXNzKQotewotICAgIEdPYmplY3RDbGFzcyogZ29iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1Mo
cmVxdWVzdENsYXNzKTsKLSAgICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUoZ29iamVjdENsYXNz
LCBzaXplb2YoV2ViS2l0RE9NRE9NTWltZVR5cGVBcnJheVByaXZhdGUpKTsKLSAgICBnb2JqZWN0
Q2xhc3MtPmNvbnN0cnVjdG9yID0gd2Via2l0X2RvbV9kb21fbWltZV90eXBlX2FycmF5X2NvbnN0
cnVjdG9yOwotICAgIGdvYmplY3RDbGFzcy0+ZmluYWxpemUgPSB3ZWJraXRfZG9tX2RvbV9taW1l
X3R5cGVfYXJyYXlfZmluYWxpemU7Ci0gICAgZ29iamVjdENsYXNzLT5nZXRfcHJvcGVydHkgPSB3
ZWJraXRfZG9tX2RvbV9taW1lX3R5cGVfYXJyYXlfZ2V0X3Byb3BlcnR5OwotCi0gICAgZ19vYmpl
Y3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAgZ29iamVjdENsYXNzLAotICAgICAg
ICBQUk9QX0xFTkdUSCwKLSAgICAgICAgZ19wYXJhbV9zcGVjX3Vsb25nKAotICAgICAgICAgICAg
Imxlbmd0aCIsCi0gICAgICAgICAgICAiRE9NTWltZVR5cGVBcnJheTpsZW5ndGgiLAotICAgICAg
ICAgICAgInJlYWQtb25seSBndWxvbmcgRE9NTWltZVR5cGVBcnJheTpsZW5ndGgiLAotICAgICAg
ICAgICAgMCwgR19NQVhVTE9ORywgMCwKLSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJM
RSkpOwotCi19Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdF9kb21fZG9tX21pbWVfdHlwZV9hcnJheV9p
bml0KFdlYktpdERPTURPTU1pbWVUeXBlQXJyYXkqIHJlcXVlc3QpCi17Ci0gICAgV2ViS2l0RE9N
RE9NTWltZVR5cGVBcnJheVByaXZhdGUqIHByaXYgPSBXRUJLSVRfRE9NX0RPTV9NSU1FX1RZUEVf
QVJSQVlfR0VUX1BSSVZBVEUocmVxdWVzdCk7Ci0gICAgbmV3IChwcml2KSBXZWJLaXRET01ET01N
aW1lVHlwZUFycmF5UHJpdmF0ZSgpOwotfQotCi1XZWJLaXRET01ET01NaW1lVHlwZSogd2Via2l0
X2RvbV9kb21fbWltZV90eXBlX2FycmF5X2l0ZW0oV2ViS2l0RE9NRE9NTWltZVR5cGVBcnJheSog
c2VsZiwgZ3Vsb25nIGluZGV4KQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0
ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX0RPTV9NSU1F
X1RZUEVfQVJSQVkoc2VsZiksIDApOwotICAgIFdlYkNvcmU6OkRPTU1pbWVUeXBlQXJyYXkqIGl0
ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkRPTU1pbWVUeXBl
PiBnb2JqZWN0UmVzdWx0ID0gV1RGOjpnZXRQdHIoaXRlbS0+aXRlbShpbmRleCkpOwotICAgIHJl
dHVybiBXZWJLaXQ6OmtpdChnb2JqZWN0UmVzdWx0LmdldCgpKTsKLX0KLQotV2ViS2l0RE9NRE9N
TWltZVR5cGUqIHdlYmtpdF9kb21fZG9tX21pbWVfdHlwZV9hcnJheV9uYW1lZF9pdGVtKFdlYktp
dERPTURPTU1pbWVUeXBlQXJyYXkqIHNlbGYsIGNvbnN0IGdjaGFyKiBuYW1lKQotewotICAgIFdl
YkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZf
ZmFpbChXRUJLSVRfRE9NX0lTX0RPTV9NSU1FX1RZUEVfQVJSQVkoc2VsZiksIDApOwotICAgIGdf
cmV0dXJuX3ZhbF9pZl9mYWlsKG5hbWUsIDApOwotICAgIFdlYkNvcmU6OkRPTU1pbWVUeXBlQXJy
YXkqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgV1RGOjpTdHJpbmcgY29udmVydGVk
TmFtZSA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOChuYW1lKTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6
RE9NTWltZVR5cGU+IGdvYmplY3RSZXN1bHQgPSBXVEY6OmdldFB0cihpdGVtLT5uYW1lZEl0ZW0o
Y29udmVydGVkTmFtZSkpOwotICAgIHJldHVybiBXZWJLaXQ6OmtpdChnb2JqZWN0UmVzdWx0Lmdl
dCgpKTsKLX0KLQotZ3Vsb25nIHdlYmtpdF9kb21fZG9tX21pbWVfdHlwZV9hcnJheV9nZXRfbGVu
Z3RoKFdlYktpdERPTURPTU1pbWVUeXBlQXJyYXkqIHNlbGYpCi17Ci0gICAgV2ViQ29yZTo6SlNN
YWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJ
VF9ET01fSVNfRE9NX01JTUVfVFlQRV9BUlJBWShzZWxmKSwgMCk7Ci0gICAgV2ViQ29yZTo6RE9N
TWltZVR5cGVBcnJheSogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBndWxvbmcgcmVz
dWx0ID0gaXRlbS0+bGVuZ3RoKCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9X
ZWJLaXRET01ET01NaW1lVHlwZUFycmF5LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURPTU1pbWVUeXBlQXJyYXkuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTdmNjFmNS4uMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURP
TU1pbWVUeXBlQXJyYXkuaAorKysgL2Rldi9udWxsCkBAIC0xLDg4ICswLDAgQEAKLS8qCi0gKiAg
VGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICog
IFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERP
IE5PVCBNT0RJRlkhCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
LSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgV2ViS2l0RE9NRE9NTWltZVR5cGVBcnJh
eV9oCi0jZGVmaW5lIFdlYktpdERPTURPTU1pbWVUeXBlQXJyYXlfaAotCi0jaWZkZWYgV0VCS0lU
X0RPTV9VU0VfVU5TVEFCTEVfQVBJCi0KLSNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgotI2luY2x1
ZGUgPHdlYmtpdGRvbS9XZWJLaXRET01PYmplY3QuaD4KLSNpbmNsdWRlIDx3ZWJraXRkb20vd2Vi
a2l0ZG9tZGVmaW5lcy11bnN0YWJsZS5oPgotCi1HX0JFR0lOX0RFQ0xTCi0KLSNkZWZpbmUgV0VC
S0lUX0RPTV9UWVBFX0RPTV9NSU1FX1RZUEVfQVJSQVkgICAgICAgICAgICAod2Via2l0X2RvbV9k
b21fbWltZV90eXBlX2FycmF5X2dldF90eXBlKCkpCi0jZGVmaW5lIFdFQktJVF9ET01fRE9NX01J
TUVfVFlQRV9BUlJBWShvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNU
KChvYmopLCBXRUJLSVRfRE9NX1RZUEVfRE9NX01JTUVfVFlQRV9BUlJBWSwgV2ViS2l0RE9NRE9N
TWltZVR5cGVBcnJheSkpCi0jZGVmaW5lIFdFQktJVF9ET01fRE9NX01JTUVfVFlQRV9BUlJBWV9D
TEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksICBXRUJLSVRf
RE9NX1RZUEVfRE9NX01JTUVfVFlQRV9BUlJBWSwgV2ViS2l0RE9NRE9NTWltZVR5cGVBcnJheUNs
YXNzKQotI2RlZmluZSBXRUJLSVRfRE9NX0lTX0RPTV9NSU1FX1RZUEVfQVJSQVkob2JqKSAgICAg
ICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX0RPTV9UWVBFX0RP
TV9NSU1FX1RZUEVfQVJSQVkpKQotI2RlZmluZSBXRUJLSVRfRE9NX0lTX0RPTV9NSU1FX1RZUEVf
QVJSQVlfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VC
S0lUX0RPTV9UWVBFX0RPTV9NSU1FX1RZUEVfQVJSQVkpKQotI2RlZmluZSBXRUJLSVRfRE9NX0RP
TV9NSU1FX1RZUEVfQVJSQVlfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NM
QVNTKChvYmopLCAgV0VCS0lUX0RPTV9UWVBFX0RPTV9NSU1FX1RZUEVfQVJSQVksIFdlYktpdERP
TURPTU1pbWVUeXBlQXJyYXlDbGFzcykpCi0KLXN0cnVjdCBfV2ViS2l0RE9NRE9NTWltZVR5cGVB
cnJheSB7Ci0gICAgV2ViS2l0RE9NT2JqZWN0IHBhcmVudF9pbnN0YW5jZTsKLX07Ci0KLXN0cnVj
dCBfV2ViS2l0RE9NRE9NTWltZVR5cGVBcnJheUNsYXNzIHsKLSAgICBXZWJLaXRET01PYmplY3RD
bGFzcyBwYXJlbnRfY2xhc3M7Ci19OwotCi1XRUJLSVRfQVBJIEdUeXBlCi13ZWJraXRfZG9tX2Rv
bV9taW1lX3R5cGVfYXJyYXlfZ2V0X3R5cGUodm9pZCk7Ci0KLS8qKgotICogd2Via2l0X2RvbV9k
b21fbWltZV90eXBlX2FycmF5X2l0ZW06Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NRE9NTWltZVR5
cGVBcnJheQotICogQGluZGV4OiBBICNndWxvbmcKLSAqCi0gKiBSZXR1cm5zOiAodHJhbnNmZXIg
ZnVsbCk6IEEgI1dlYktpdERPTURPTU1pbWVUeXBlCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJs
ZQotKiovCi1XRUJLSVRfQVBJIFdlYktpdERPTURPTU1pbWVUeXBlKgotd2Via2l0X2RvbV9kb21f
bWltZV90eXBlX2FycmF5X2l0ZW0oV2ViS2l0RE9NRE9NTWltZVR5cGVBcnJheSogc2VsZiwgZ3Vs
b25nIGluZGV4KTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2RvbV9taW1lX3R5cGVfYXJyYXlfbmFt
ZWRfaXRlbToKLSAqIEBzZWxmOiBBICNXZWJLaXRET01ET01NaW1lVHlwZUFycmF5Ci0gKiBAbmFt
ZTogQSAjZ2NoYXIKLSAqCi0gKiBSZXR1cm5zOiAodHJhbnNmZXIgZnVsbCk6IEEgI1dlYktpdERP
TURPTU1pbWVUeXBlCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJ
IFdlYktpdERPTURPTU1pbWVUeXBlKgotd2Via2l0X2RvbV9kb21fbWltZV90eXBlX2FycmF5X25h
bWVkX2l0ZW0oV2ViS2l0RE9NRE9NTWltZVR5cGVBcnJheSogc2VsZiwgY29uc3QgZ2NoYXIqIG5h
bWUpOwotCi0vKioKLSAqIHdlYmtpdF9kb21fZG9tX21pbWVfdHlwZV9hcnJheV9nZXRfbGVuZ3Ro
OgotICogQHNlbGY6IEEgI1dlYktpdERPTURPTU1pbWVUeXBlQXJyYXkKLSAqCi0gKiBSZXR1cm5z
OiBBICNndWxvbmcKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkg
Z3Vsb25nCi13ZWJraXRfZG9tX2RvbV9taW1lX3R5cGVfYXJyYXlfZ2V0X2xlbmd0aChXZWJLaXRE
T01ET01NaW1lVHlwZUFycmF5KiBzZWxmKTsKLQotR19FTkRfREVDTFMKLQotI2VuZGlmIC8qIFdF
QktJVF9ET01fVVNFX1VOU1RBQkxFX0FQSSAqLwotI2VuZGlmIC8qIFdlYktpdERPTURPTU1pbWVU
eXBlQXJyYXlfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01ET01NaW1lVHlwZUFycmF5UHJpdmF0ZS5o
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9X
ZWJLaXRET01ET01NaW1lVHlwZUFycmF5UHJpdmF0ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAxNjZlOWZmLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRE9NTWltZVR5cGVBcnJheVByaXZh
dGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLS8qCi0gKiAgVGhpcyBmaWxlIGlz
IHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICogIFRoaXMgZmlsZSBo
YXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkh
Ci0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAg
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgotICovCi0KLSNpZm5kZWYgV2ViS2l0RE9NRE9NTWltZVR5cGVBcnJheVByaXZhdGVfaAot
I2RlZmluZSBXZWJLaXRET01ET01NaW1lVHlwZUFycmF5UHJpdmF0ZV9oCi0KLSNpbmNsdWRlIDxX
ZWJDb3JlL0RPTU1pbWVUeXBlQXJyYXkuaD4KLSNpbmNsdWRlIDx3ZWJraXRkb20vV2ViS2l0RE9N
RE9NTWltZVR5cGVBcnJheS5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLVdlYktpdERPTURPTU1p
bWVUeXBlQXJyYXkqIHdyYXBET01NaW1lVHlwZUFycmF5KFdlYkNvcmU6OkRPTU1pbWVUeXBlQXJy
YXkqKTsKLVdlYktpdERPTURPTU1pbWVUeXBlQXJyYXkqIGtpdChXZWJDb3JlOjpET01NaW1lVHlw
ZUFycmF5Kik7Ci1XZWJDb3JlOjpET01NaW1lVHlwZUFycmF5KiBjb3JlKFdlYktpdERPTURPTU1p
bWVUeXBlQXJyYXkqKTsKLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLyogV2ViS2l0
RE9NRE9NTWltZVR5cGVBcnJheVByaXZhdGVfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01ET01NaW1l
VHlwZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2d0ay9ET00vV2ViS2l0RE9NRE9NTWltZVR5cGVQcml2YXRlLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDdhYmNhNTIuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01ET01NaW1lVHlwZVBy
aXZhdGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLS8qCi0gKiAgVGhpcyBmaWxl
IGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICogIFRoaXMgZmls
ZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJ
RlkhCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAg
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0g
KiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgotICovCi0KLSNpZm5kZWYgV2ViS2l0RE9NRE9NTWltZVR5cGVQcml2YXRlX2gKLSNk
ZWZpbmUgV2ViS2l0RE9NRE9NTWltZVR5cGVQcml2YXRlX2gKLQotI2luY2x1ZGUgPFdlYkNvcmUv
RE9NTWltZVR5cGUuaD4KLSNpbmNsdWRlIDx3ZWJraXRkb20vV2ViS2l0RE9NRE9NTWltZVR5cGUu
aD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci1XZWJLaXRET01ET01NaW1lVHlwZSogd3JhcERPTU1p
bWVUeXBlKFdlYkNvcmU6OkRPTU1pbWVUeXBlKik7Ci1XZWJLaXRET01ET01NaW1lVHlwZSoga2l0
KFdlYkNvcmU6OkRPTU1pbWVUeXBlKik7Ci1XZWJDb3JlOjpET01NaW1lVHlwZSogY29yZShXZWJL
aXRET01ET01NaW1lVHlwZSopOwotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvKiBX
ZWJLaXRET01ET01NaW1lVHlwZVByaXZhdGVfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01ET01OYW1l
ZEZsb3dDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRE9NTmFtZWRGbG93Q29sbGVjdGlvbi5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmMDM4OTAuLjAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01E
T01OYW1lZEZsb3dDb2xsZWN0aW9uLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE5MSArMCwwIEBA
Ci0vKgotICogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJv
amVjdC4KLSAqICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRp
bmdzLnBsLiBETyBOT1QgTU9ESUZZIQotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAq
ICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAg
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQotICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiV2ViS2l0RE9NRE9NTmFtZWRGbG93Q29sbGVjdGlvbi5oIgotCi0jaW5jbHVkZSA8
V2ViQ29yZS9DU1NJbXBvcnRSdWxlLmg+Ci0jaW5jbHVkZSAiRE9NT2JqZWN0Q2FjaGUuaCIKLSNp
bmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9FeGNlcHRpb25D
b2RlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9FeGNlcHRpb25Db2RlRGVzY3JpcHRpb24uaD4KLSNp
bmNsdWRlIDxXZWJDb3JlL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5oPgotI2luY2x1ZGUgIldlYktp
dERPTURPTU5hbWVkRmxvd0NvbGxlY3Rpb25Qcml2YXRlLmgiCi0jaW5jbHVkZSAiV2ViS2l0RE9N
UHJpdmF0ZS5oIgotI2luY2x1ZGUgIldlYktpdERPTVdlYktpdE5hbWVkRmxvd1ByaXZhdGUuaCIK
LSNpbmNsdWRlICJDb252ZXJ0VG9VVEY4U3RyaW5nLmgiCi0jaW5jbHVkZSA8d3RmL0dldFB0ci5o
PgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotI2RlZmluZSBXRUJLSVRfRE9NX0RPTV9OQU1F
RF9GTE9XX0NPTExFQ1RJT05fR0VUX1BSSVZBVEUob2JqKSBHX1RZUEVfSU5TVEFOQ0VfR0VUX1BS
SVZBVEUob2JqLCBXRUJLSVRfRE9NX1RZUEVfRE9NX05BTUVEX0ZMT1dfQ09MTEVDVElPTiwgV2Vi
S2l0RE9NRE9NTmFtZWRGbG93Q29sbGVjdGlvblByaXZhdGUpCi0KLXR5cGVkZWYgc3RydWN0IF9X
ZWJLaXRET01ET01OYW1lZEZsb3dDb2xsZWN0aW9uUHJpdmF0ZSB7Ci0jaWYgRU5BQkxFKENTU19S
RUdJT05TKQotICAgIFJlZlB0cjxXZWJDb3JlOjpET01OYW1lZEZsb3dDb2xsZWN0aW9uPiBjb3Jl
T2JqZWN0OwotI2VuZGlmIC8vIEVOQUJMRShDU1NfUkVHSU9OUykKLX0gV2ViS2l0RE9NRE9NTmFt
ZWRGbG93Q29sbGVjdGlvblByaXZhdGU7Ci0KLSNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCi0KLW5h
bWVzcGFjZSBXZWJLaXQgewotCi1XZWJLaXRET01ET01OYW1lZEZsb3dDb2xsZWN0aW9uKiBraXQo
V2ViQ29yZTo6RE9NTmFtZWRGbG93Q29sbGVjdGlvbiogb2JqKQotewotICAgIGlmICghb2JqKQot
ICAgICAgICByZXR1cm4gMDsKLQotICAgIGlmIChncG9pbnRlciByZXQgPSBET01PYmplY3RDYWNo
ZTo6Z2V0KG9iaikpCi0gICAgICAgIHJldHVybiBXRUJLSVRfRE9NX0RPTV9OQU1FRF9GTE9XX0NP
TExFQ1RJT04ocmV0KTsKLQotICAgIHJldHVybiB3cmFwRE9NTmFtZWRGbG93Q29sbGVjdGlvbihv
YmopOwotfQotCi1XZWJDb3JlOjpET01OYW1lZEZsb3dDb2xsZWN0aW9uKiBjb3JlKFdlYktpdERP
TURPTU5hbWVkRmxvd0NvbGxlY3Rpb24qIHJlcXVlc3QpCi17Ci0gICAgcmV0dXJuIHJlcXVlc3Qg
PyBzdGF0aWNfY2FzdDxXZWJDb3JlOjpET01OYW1lZEZsb3dDb2xsZWN0aW9uKj4oV0VCS0lUX0RP
TV9PQkpFQ1QocmVxdWVzdCktPmNvcmVPYmplY3QpIDogMDsKLX0KLQotV2ViS2l0RE9NRE9NTmFt
ZWRGbG93Q29sbGVjdGlvbiogd3JhcERPTU5hbWVkRmxvd0NvbGxlY3Rpb24oV2ViQ29yZTo6RE9N
TmFtZWRGbG93Q29sbGVjdGlvbiogY29yZU9iamVjdCkKLXsKLSAgICBBU1NFUlQoY29yZU9iamVj
dCk7Ci0gICAgcmV0dXJuIFdFQktJVF9ET01fRE9NX05BTUVEX0ZMT1dfQ09MTEVDVElPTihnX29i
amVjdF9uZXcoV0VCS0lUX0RPTV9UWVBFX0RPTV9OQU1FRF9GTE9XX0NPTExFQ1RJT04sICJjb3Jl
LW9iamVjdCIsIGNvcmVPYmplY3QsIG51bGxwdHIpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoQ1NTX1JFR0lPTlMpCi0KLUdfREVGSU5FX1RZUEUoV2Vi
S2l0RE9NRE9NTmFtZWRGbG93Q29sbGVjdGlvbiwgd2Via2l0X2RvbV9kb21fbmFtZWRfZmxvd19j
b2xsZWN0aW9uLCBXRUJLSVRfRE9NX1RZUEVfT0JKRUNUKQotCi1lbnVtIHsKLSAgICBQUk9QXzAs
Ci0gICAgUFJPUF9MRU5HVEgsCi19OwotCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX2RvbV9uYW1l
ZF9mbG93X2NvbGxlY3Rpb25fZmluYWxpemUoR09iamVjdCogb2JqZWN0KQotewotICAgIFdlYktp
dERPTURPTU5hbWVkRmxvd0NvbGxlY3Rpb25Qcml2YXRlKiBwcml2ID0gV0VCS0lUX0RPTV9ET01f
TkFNRURfRkxPV19DT0xMRUNUSU9OX0dFVF9QUklWQVRFKG9iamVjdCk7Ci0jaWYgRU5BQkxFKENT
U19SRUdJT05TKQotICAgIFdlYktpdDo6RE9NT2JqZWN0Q2FjaGU6OmZvcmdldChwcml2LT5jb3Jl
T2JqZWN0LmdldCgpKTsKLSNlbmRpZiAvLyBFTkFCTEUoQ1NTX1JFR0lPTlMpCi0gICAgcHJpdi0+
fldlYktpdERPTURPTU5hbWVkRmxvd0NvbGxlY3Rpb25Qcml2YXRlKCk7Ci0gICAgR19PQkpFQ1Rf
Q0xBU1Mod2Via2l0X2RvbV9kb21fbmFtZWRfZmxvd19jb2xsZWN0aW9uX3BhcmVudF9jbGFzcykt
PmZpbmFsaXplKG9iamVjdCk7Ci19Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdF9kb21fZG9tX25hbWVk
X2Zsb3dfY29sbGVjdGlvbl9nZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9w
ZXJ0eUlkLCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3BlYykKLXsKLSAgICBXZWJLaXRE
T01ET01OYW1lZEZsb3dDb2xsZWN0aW9uKiBzZWxmID0gV0VCS0lUX0RPTV9ET01fTkFNRURfRkxP
V19DT0xMRUNUSU9OKG9iamVjdCk7Ci0KLSAgICBzd2l0Y2ggKHByb3BlcnR5SWQpIHsKLSAgICBj
YXNlIFBST1BfTEVOR1RIOgotICAgICAgICBnX3ZhbHVlX3NldF91bG9uZyh2YWx1ZSwgd2Via2l0
X2RvbV9kb21fbmFtZWRfZmxvd19jb2xsZWN0aW9uX2dldF9sZW5ndGgoc2VsZikpOwotICAgICAg
ICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJP
UEVSVFlfSUQob2JqZWN0LCBwcm9wZXJ0eUlkLCBwc3BlYyk7Ci0gICAgICAgIGJyZWFrOwotICAg
IH0KLX0KLQotc3RhdGljIEdPYmplY3QqIHdlYmtpdF9kb21fZG9tX25hbWVkX2Zsb3dfY29sbGVj
dGlvbl9jb25zdHJ1Y3RvcihHVHlwZSB0eXBlLCBndWludCBjb25zdHJ1Y3RQcm9wZXJ0aWVzQ291
bnQsIEdPYmplY3RDb25zdHJ1Y3RQYXJhbSogY29uc3RydWN0UHJvcGVydGllcykKLXsKLSAgICBH
T2JqZWN0KiBvYmplY3QgPSBHX09CSkVDVF9DTEFTUyh3ZWJraXRfZG9tX2RvbV9uYW1lZF9mbG93
X2NvbGxlY3Rpb25fcGFyZW50X2NsYXNzKS0+Y29uc3RydWN0b3IodHlwZSwgY29uc3RydWN0UHJv
cGVydGllc0NvdW50LCBjb25zdHJ1Y3RQcm9wZXJ0aWVzKTsKLSNpZiBFTkFCTEUoQ1NTX1JFR0lP
TlMpCi0gICAgV2ViS2l0RE9NRE9NTmFtZWRGbG93Q29sbGVjdGlvblByaXZhdGUqIHByaXYgPSBX
RUJLSVRfRE9NX0RPTV9OQU1FRF9GTE9XX0NPTExFQ1RJT05fR0VUX1BSSVZBVEUob2JqZWN0KTsK
LSAgICBwcml2LT5jb3JlT2JqZWN0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RE9NTmFtZWRGbG93
Q29sbGVjdGlvbio+KFdFQktJVF9ET01fT0JKRUNUKG9iamVjdCktPmNvcmVPYmplY3QpOwotICAg
IFdlYktpdDo6RE9NT2JqZWN0Q2FjaGU6OnB1dChwcml2LT5jb3JlT2JqZWN0LmdldCgpLCBvYmpl
Y3QpOwotI2VuZGlmIC8vIEVOQUJMRShDU1NfUkVHSU9OUykKLSAgICByZXR1cm4gb2JqZWN0Owot
fQotCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX2RvbV9uYW1lZF9mbG93X2NvbGxlY3Rpb25fY2xh
c3NfaW5pdChXZWJLaXRET01ET01OYW1lZEZsb3dDb2xsZWN0aW9uQ2xhc3MqIHJlcXVlc3RDbGFz
cykKLXsKLSAgICBHT2JqZWN0Q2xhc3MqIGdvYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKHJl
cXVlc3RDbGFzcyk7Ci0gICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKGdvYmplY3RDbGFzcywg
c2l6ZW9mKFdlYktpdERPTURPTU5hbWVkRmxvd0NvbGxlY3Rpb25Qcml2YXRlKSk7Ci0gICAgZ29i
amVjdENsYXNzLT5jb25zdHJ1Y3RvciA9IHdlYmtpdF9kb21fZG9tX25hbWVkX2Zsb3dfY29sbGVj
dGlvbl9jb25zdHJ1Y3RvcjsKLSAgICBnb2JqZWN0Q2xhc3MtPmZpbmFsaXplID0gd2Via2l0X2Rv
bV9kb21fbmFtZWRfZmxvd19jb2xsZWN0aW9uX2ZpbmFsaXplOwotICAgIGdvYmplY3RDbGFzcy0+
Z2V0X3Byb3BlcnR5ID0gd2Via2l0X2RvbV9kb21fbmFtZWRfZmxvd19jb2xsZWN0aW9uX2dldF9w
cm9wZXJ0eTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAg
IGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9MRU5HVEgsCi0gICAgICAgIGdfcGFyYW1fc3Bl
Y191bG9uZygKLSAgICAgICAgICAgICJsZW5ndGgiLAotICAgICAgICAgICAgIkRPTU5hbWVkRmxv
d0NvbGxlY3Rpb246bGVuZ3RoIiwKLSAgICAgICAgICAgICJyZWFkLW9ubHkgZ3Vsb25nIERPTU5h
bWVkRmxvd0NvbGxlY3Rpb246bGVuZ3RoIiwKLSAgICAgICAgICAgIDAsIEdfTUFYVUxPTkcsIDAs
Ci0gICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKLQotfQotCi1zdGF0aWMgdm9p
ZCB3ZWJraXRfZG9tX2RvbV9uYW1lZF9mbG93X2NvbGxlY3Rpb25faW5pdChXZWJLaXRET01ET01O
YW1lZEZsb3dDb2xsZWN0aW9uKiByZXF1ZXN0KQotewotICAgIFdlYktpdERPTURPTU5hbWVkRmxv
d0NvbGxlY3Rpb25Qcml2YXRlKiBwcml2ID0gV0VCS0lUX0RPTV9ET01fTkFNRURfRkxPV19DT0xM
RUNUSU9OX0dFVF9QUklWQVRFKHJlcXVlc3QpOwotICAgIG5ldyAocHJpdikgV2ViS2l0RE9NRE9N
TmFtZWRGbG93Q29sbGVjdGlvblByaXZhdGUoKTsKLX0KLQotV2ViS2l0RE9NV2ViS2l0TmFtZWRG
bG93KiB3ZWJraXRfZG9tX2RvbV9uYW1lZF9mbG93X2NvbGxlY3Rpb25faXRlbShXZWJLaXRET01E
T01OYW1lZEZsb3dDb2xsZWN0aW9uKiBzZWxmLCBndWxvbmcgaW5kZXgpCi17Ci0jaWYgRU5BQkxF
KENTU19SRUdJT05TKQotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsK
LSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX0RPTV9OQU1FRF9GTE9XX0NP
TExFQ1RJT04oc2VsZiksIDApOwotICAgIFdlYkNvcmU6OkRPTU5hbWVkRmxvd0NvbGxlY3Rpb24q
IGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OldlYktpdE5h
bWVkRmxvdz4gZ29iamVjdFJlc3VsdCA9IFdURjo6Z2V0UHRyKGl0ZW0tPml0ZW0oaW5kZXgpKTsK
LSAgICByZXR1cm4gV2ViS2l0OjpraXQoZ29iamVjdFJlc3VsdC5nZXQoKSk7Ci0jZWxzZQotICAg
IFVOVVNFRF9QQVJBTShzZWxmKTsKLSAgICBVTlVTRURfUEFSQU0oaW5kZXgpOwotICAgIFdFQktJ
VF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIkNzcyBSZWdpb25zIikKLSAgICByZXR1cm4gMDsK
LSNlbmRpZiAvKiBFTkFCTEUoQ1NTX1JFR0lPTlMpICovCi19Ci0KLVdlYktpdERPTVdlYktpdE5h
bWVkRmxvdyogd2Via2l0X2RvbV9kb21fbmFtZWRfZmxvd19jb2xsZWN0aW9uX25hbWVkX2l0ZW0o
V2ViS2l0RE9NRE9NTmFtZWRGbG93Q29sbGVjdGlvbiogc2VsZiwgY29uc3QgZ2NoYXIqIG5hbWUp
Ci17Ci0jaWYgRU5BQkxFKENTU19SRUdJT05TKQotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51
bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX0RP
TV9OQU1FRF9GTE9XX0NPTExFQ1RJT04oc2VsZiksIDApOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKG5hbWUsIDApOwotICAgIFdlYkNvcmU6OkRPTU5hbWVkRmxvd0NvbGxlY3Rpb24qIGl0ZW0g
PSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgV1RGOjpTdHJpbmcgY29udmVydGVkTmFtZSA9IFdU
Rjo6U3RyaW5nOjpmcm9tVVRGOChuYW1lKTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6V2ViS2l0TmFt
ZWRGbG93PiBnb2JqZWN0UmVzdWx0ID0gV1RGOjpnZXRQdHIoaXRlbS0+bmFtZWRJdGVtKGNvbnZl
cnRlZE5hbWUpKTsKLSAgICByZXR1cm4gV2ViS2l0OjpraXQoZ29iamVjdFJlc3VsdC5nZXQoKSk7
Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKLSAgICBVTlVTRURfUEFSQU0obmFtZSk7
Ci0gICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiQ3NzIFJlZ2lvbnMiKQotICAg
IHJldHVybiAwOwotI2VuZGlmIC8qIEVOQUJMRShDU1NfUkVHSU9OUykgKi8KLX0KLQotZ3Vsb25n
IHdlYmtpdF9kb21fZG9tX25hbWVkX2Zsb3dfY29sbGVjdGlvbl9nZXRfbGVuZ3RoKFdlYktpdERP
TURPTU5hbWVkRmxvd0NvbGxlY3Rpb24qIHNlbGYpCi17Ci0jaWYgRU5BQkxFKENTU19SRUdJT05T
KQotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVy
bl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX0RPTV9OQU1FRF9GTE9XX0NPTExFQ1RJT04oc2Vs
ZiksIDApOwotICAgIFdlYkNvcmU6OkRPTU5hbWVkRmxvd0NvbGxlY3Rpb24qIGl0ZW0gPSBXZWJL
aXQ6OmNvcmUoc2VsZik7Ci0gICAgZ3Vsb25nIHJlc3VsdCA9IGl0ZW0tPmxlbmd0aCgpOwotICAg
IHJldHVybiByZXN1bHQ7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKLSAgICBXRUJL
SVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJDc3MgUmVnaW9ucyIpCi0gICAgcmV0dXJuIHN0
YXRpY19jYXN0PGd1bG9uZz4oMCk7Ci0jZW5kaWYgLyogRU5BQkxFKENTU19SRUdJT05TKSAqLwot
fQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9ndGsvRE9NL1dlYktpdERPTURPTU5hbWVkRmxvd0NvbGxlY3Rpb24uaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRE9N
TmFtZWRGbG93Q29sbGVjdGlvbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MGYz
OWVkLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRE9NTmFtZWRGbG93Q29sbGVjdGlvbi5oCisrKyAvZGV2
L251bGwKQEAgLTEsODggKzAsMCBAQAotLyoKLSAqICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUg
V2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCi0gKiAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVy
YXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKLSAqCi0gKiAgVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCi0gKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqICBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwot
ICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCi0gKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQot
I2lmbmRlZiBXZWJLaXRET01ET01OYW1lZEZsb3dDb2xsZWN0aW9uX2gKLSNkZWZpbmUgV2ViS2l0
RE9NRE9NTmFtZWRGbG93Q29sbGVjdGlvbl9oCi0KLSNpZmRlZiBXRUJLSVRfRE9NX1VTRV9VTlNU
QUJMRV9BUEkKLQotI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+Ci0jaW5jbHVkZSA8d2Via2l0ZG9t
L1dlYktpdERPTU9iamVjdC5oPgotI2luY2x1ZGUgPHdlYmtpdGRvbS93ZWJraXRkb21kZWZpbmVz
LXVuc3RhYmxlLmg+Ci0KLUdfQkVHSU5fREVDTFMKLQotI2RlZmluZSBXRUJLSVRfRE9NX1RZUEVf
RE9NX05BTUVEX0ZMT1dfQ09MTEVDVElPTiAgICAgICAgICAgICh3ZWJraXRfZG9tX2RvbV9uYW1l
ZF9mbG93X2NvbGxlY3Rpb25fZ2V0X3R5cGUoKSkKLSNkZWZpbmUgV0VCS0lUX0RPTV9ET01fTkFN
RURfRkxPV19DT0xMRUNUSU9OKG9iaikgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNF
X0NBU1QoKG9iaiksIFdFQktJVF9ET01fVFlQRV9ET01fTkFNRURfRkxPV19DT0xMRUNUSU9OLCBX
ZWJLaXRET01ET01OYW1lZEZsb3dDb2xsZWN0aW9uKSkKLSNkZWZpbmUgV0VCS0lUX0RPTV9ET01f
TkFNRURfRkxPV19DT0xMRUNUSU9OX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNT
X0NBU1QoKGtsYXNzKSwgIFdFQktJVF9ET01fVFlQRV9ET01fTkFNRURfRkxPV19DT0xMRUNUSU9O
LCBXZWJLaXRET01ET01OYW1lZEZsb3dDb2xsZWN0aW9uQ2xhc3MpCi0jZGVmaW5lIFdFQktJVF9E
T01fSVNfRE9NX05BTUVEX0ZMT1dfQ09MTEVDVElPTihvYmopICAgICAgICAgKEdfVFlQRV9DSEVD
S19JTlNUQU5DRV9UWVBFKChvYmopLCBXRUJLSVRfRE9NX1RZUEVfRE9NX05BTUVEX0ZMT1dfQ09M
TEVDVElPTikpCi0jZGVmaW5lIFdFQktJVF9ET01fSVNfRE9NX05BTUVEX0ZMT1dfQ09MTEVDVElP
Tl9DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRf
RE9NX1RZUEVfRE9NX05BTUVEX0ZMT1dfQ09MTEVDVElPTikpCi0jZGVmaW5lIFdFQktJVF9ET01f
RE9NX05BTUVEX0ZMT1dfQ09MTEVDVElPTl9HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5D
RV9HRVRfQ0xBU1MoKG9iaiksICBXRUJLSVRfRE9NX1RZUEVfRE9NX05BTUVEX0ZMT1dfQ09MTEVD
VElPTiwgV2ViS2l0RE9NRE9NTmFtZWRGbG93Q29sbGVjdGlvbkNsYXNzKSkKLQotc3RydWN0IF9X
ZWJLaXRET01ET01OYW1lZEZsb3dDb2xsZWN0aW9uIHsKLSAgICBXZWJLaXRET01PYmplY3QgcGFy
ZW50X2luc3RhbmNlOwotfTsKLQotc3RydWN0IF9XZWJLaXRET01ET01OYW1lZEZsb3dDb2xsZWN0
aW9uQ2xhc3MgewotICAgIFdlYktpdERPTU9iamVjdENsYXNzIHBhcmVudF9jbGFzczsKLX07Ci0K
LVdFQktJVF9BUEkgR1R5cGUKLXdlYmtpdF9kb21fZG9tX25hbWVkX2Zsb3dfY29sbGVjdGlvbl9n
ZXRfdHlwZSh2b2lkKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2RvbV9uYW1lZF9mbG93X2NvbGxl
Y3Rpb25faXRlbToKLSAqIEBzZWxmOiBBICNXZWJLaXRET01ET01OYW1lZEZsb3dDb2xsZWN0aW9u
Ci0gKiBAaW5kZXg6IEEgI2d1bG9uZwotICoKLSAqIFJldHVybnM6ICh0cmFuc2ZlciBmdWxsKTog
QSAjV2ViS2l0RE9NV2ViS2l0TmFtZWRGbG93Ci0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQot
KiovCi1XRUJLSVRfQVBJIFdlYktpdERPTVdlYktpdE5hbWVkRmxvdyoKLXdlYmtpdF9kb21fZG9t
X25hbWVkX2Zsb3dfY29sbGVjdGlvbl9pdGVtKFdlYktpdERPTURPTU5hbWVkRmxvd0NvbGxlY3Rp
b24qIHNlbGYsIGd1bG9uZyBpbmRleCk7Ci0KLS8qKgotICogd2Via2l0X2RvbV9kb21fbmFtZWRf
Zmxvd19jb2xsZWN0aW9uX25hbWVkX2l0ZW06Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NRE9NTmFt
ZWRGbG93Q29sbGVjdGlvbgotICogQG5hbWU6IEEgI2djaGFyCi0gKgotICogUmV0dXJuczogKHRy
YW5zZmVyIGZ1bGwpOiBBICNXZWJLaXRET01XZWJLaXROYW1lZEZsb3cKLSAqCi0gKiBTdGFiaWxp
dHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgV2ViS2l0RE9NV2ViS2l0TmFtZWRGbG93Kgot
d2Via2l0X2RvbV9kb21fbmFtZWRfZmxvd19jb2xsZWN0aW9uX25hbWVkX2l0ZW0oV2ViS2l0RE9N
RE9NTmFtZWRGbG93Q29sbGVjdGlvbiogc2VsZiwgY29uc3QgZ2NoYXIqIG5hbWUpOwotCi0vKioK
LSAqIHdlYmtpdF9kb21fZG9tX25hbWVkX2Zsb3dfY29sbGVjdGlvbl9nZXRfbGVuZ3RoOgotICog
QHNlbGY6IEEgI1dlYktpdERPTURPTU5hbWVkRmxvd0NvbGxlY3Rpb24KLSAqCi0gKiBSZXR1cm5z
OiBBICNndWxvbmcKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkg
Z3Vsb25nCi13ZWJraXRfZG9tX2RvbV9uYW1lZF9mbG93X2NvbGxlY3Rpb25fZ2V0X2xlbmd0aChX
ZWJLaXRET01ET01OYW1lZEZsb3dDb2xsZWN0aW9uKiBzZWxmKTsKLQotR19FTkRfREVDTFMKLQot
I2VuZGlmIC8qIFdFQktJVF9ET01fVVNFX1VOU1RBQkxFX0FQSSAqLwotI2VuZGlmIC8qIFdlYktp
dERPTURPTU5hbWVkRmxvd0NvbGxlY3Rpb25faCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01ET01OYW1l
ZEZsb3dDb2xsZWN0aW9uUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01ET01OYW1lZEZsb3dDb2xsZWN0aW9uUHJp
dmF0ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MjMzNzUxLi4wMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00v
V2ViS2l0RE9NRE9NTmFtZWRGbG93Q29sbGVjdGlvblByaXZhdGUuaAorKysgL2Rldi9udWxsCkBA
IC0xLDM2ICswLDAgQEAKLS8qCi0gKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBv
cGVuIHNvdXJjZSBwcm9qZWN0LgotICogIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkg
Z2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICogIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYg
V2ViS2l0RE9NRE9NTmFtZWRGbG93Q29sbGVjdGlvblByaXZhdGVfaAotI2RlZmluZSBXZWJLaXRE
T01ET01OYW1lZEZsb3dDb2xsZWN0aW9uUHJpdmF0ZV9oCi0KLSNpbmNsdWRlIDxXZWJDb3JlL0RP
TU5hbWVkRmxvd0NvbGxlY3Rpb24uaD4KLSNpbmNsdWRlIDx3ZWJraXRkb20vV2ViS2l0RE9NRE9N
TmFtZWRGbG93Q29sbGVjdGlvbi5oPgotI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLQotbmFtZXNw
YWNlIFdlYktpdCB7Ci1XZWJLaXRET01ET01OYW1lZEZsb3dDb2xsZWN0aW9uKiB3cmFwRE9NTmFt
ZWRGbG93Q29sbGVjdGlvbihXZWJDb3JlOjpET01OYW1lZEZsb3dDb2xsZWN0aW9uKik7Ci1XZWJL
aXRET01ET01OYW1lZEZsb3dDb2xsZWN0aW9uKiBraXQoV2ViQ29yZTo6RE9NTmFtZWRGbG93Q29s
bGVjdGlvbiopOwotV2ViQ29yZTo6RE9NTmFtZWRGbG93Q29sbGVjdGlvbiogY29yZShXZWJLaXRE
T01ET01OYW1lZEZsb3dDb2xsZWN0aW9uKik7Ci19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2Vu
ZGlmIC8qIEVOQUJMRShDU1NfUkVHSU9OUykgKi8KLQotI2VuZGlmIC8qIFdlYktpdERPTURPTU5h
bWVkRmxvd0NvbGxlY3Rpb25Qcml2YXRlX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRE9NUGx1Z2lu
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9E
T00vV2ViS2l0RE9NRE9NUGx1Z2luLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MTg2MzdhZC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURPTVBsdWdpbi5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSwyMzQgKzAsMCBAQAotLyoKLSAqICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0
IG9wZW4gc291cmNlIHByb2plY3QuCi0gKiAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBi
eSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKLSAqCi0gKiAgVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICog
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICog
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCi0gKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCi0gKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYktpdERPTURPTVBsdWdpbi5oIgotCi0jaW5jbHVk
ZSA8V2ViQ29yZS9DU1NJbXBvcnRSdWxlLmg+Ci0jaW5jbHVkZSAiRE9NT2JqZWN0Q2FjaGUuaCIK
LSNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9FeGNlcHRp
b25Db2RlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9FeGNlcHRpb25Db2RlRGVzY3JpcHRpb24uaD4K
LSNpbmNsdWRlIDxXZWJDb3JlL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5oPgotI2luY2x1ZGUgIldl
YktpdERPTURPTU1pbWVUeXBlUHJpdmF0ZS5oIgotI2luY2x1ZGUgIldlYktpdERPTURPTVBsdWdp
blByaXZhdGUuaCIKLSNpbmNsdWRlICJXZWJLaXRET01Qcml2YXRlLmgiCi0jaW5jbHVkZSAiQ29u
dmVydFRvVVRGOFN0cmluZy5oIgotI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KLSNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+Ci0KLSNkZWZpbmUgV0VCS0lUX0RPTV9ET01fUExVR0lOX0dFVF9QUklWQVRF
KG9iaikgR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKG9iaiwgV0VCS0lUX0RPTV9UWVBFX0RP
TV9QTFVHSU4sIFdlYktpdERPTURPTVBsdWdpblByaXZhdGUpCi0KLXR5cGVkZWYgc3RydWN0IF9X
ZWJLaXRET01ET01QbHVnaW5Qcml2YXRlIHsKLSAgICBSZWZQdHI8V2ViQ29yZTo6RE9NUGx1Z2lu
PiBjb3JlT2JqZWN0OwotfSBXZWJLaXRET01ET01QbHVnaW5Qcml2YXRlOwotCi1uYW1lc3BhY2Ug
V2ViS2l0IHsKLQotV2ViS2l0RE9NRE9NUGx1Z2luKiBraXQoV2ViQ29yZTo6RE9NUGx1Z2luKiBv
YmopCi17Ci0gICAgaWYgKCFvYmopCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgaWYgKGdwb2lu
dGVyIHJldCA9IERPTU9iamVjdENhY2hlOjpnZXQob2JqKSkKLSAgICAgICAgcmV0dXJuIFdFQktJ
VF9ET01fRE9NX1BMVUdJTihyZXQpOwotCi0gICAgcmV0dXJuIHdyYXBET01QbHVnaW4ob2JqKTsK
LX0KLQotV2ViQ29yZTo6RE9NUGx1Z2luKiBjb3JlKFdlYktpdERPTURPTVBsdWdpbiogcmVxdWVz
dCkKLXsKLSAgICByZXR1cm4gcmVxdWVzdCA/IHN0YXRpY19jYXN0PFdlYkNvcmU6OkRPTVBsdWdp
bio+KFdFQktJVF9ET01fT0JKRUNUKHJlcXVlc3QpLT5jb3JlT2JqZWN0KSA6IDA7Ci19Ci0KLVdl
YktpdERPTURPTVBsdWdpbiogd3JhcERPTVBsdWdpbihXZWJDb3JlOjpET01QbHVnaW4qIGNvcmVP
YmplY3QpCi17Ci0gICAgQVNTRVJUKGNvcmVPYmplY3QpOwotICAgIHJldHVybiBXRUJLSVRfRE9N
X0RPTV9QTFVHSU4oZ19vYmplY3RfbmV3KFdFQktJVF9ET01fVFlQRV9ET01fUExVR0lOLCAiY29y
ZS1vYmplY3QiLCBjb3JlT2JqZWN0LCBudWxscHRyKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YktpdAotCi1HX0RFRklORV9UWVBFKFdlYktpdERPTURPTVBsdWdpbiwgd2Via2l0X2RvbV9kb21f
cGx1Z2luLCBXRUJLSVRfRE9NX1RZUEVfT0JKRUNUKQotCi1lbnVtIHsKLSAgICBQUk9QXzAsCi0g
ICAgUFJPUF9OQU1FLAotICAgIFBST1BfRklMRU5BTUUsCi0gICAgUFJPUF9ERVNDUklQVElPTiwK
LSAgICBQUk9QX0xFTkdUSCwKLX07Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdF9kb21fZG9tX3BsdWdp
bl9maW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCi17Ci0gICAgV2ViS2l0RE9NRE9NUGx1Z2luUHJp
dmF0ZSogcHJpdiA9IFdFQktJVF9ET01fRE9NX1BMVUdJTl9HRVRfUFJJVkFURShvYmplY3QpOwot
Ci0gICAgV2ViS2l0OjpET01PYmplY3RDYWNoZTo6Zm9yZ2V0KHByaXYtPmNvcmVPYmplY3QuZ2V0
KCkpOwotCi0gICAgcHJpdi0+fldlYktpdERPTURPTVBsdWdpblByaXZhdGUoKTsKLSAgICBHX09C
SkVDVF9DTEFTUyh3ZWJraXRfZG9tX2RvbV9wbHVnaW5fcGFyZW50X2NsYXNzKS0+ZmluYWxpemUo
b2JqZWN0KTsKLX0KLQotc3RhdGljIHZvaWQgd2Via2l0X2RvbV9kb21fcGx1Z2luX2dldF9wcm9w
ZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BlcnR5SWQsIEdWYWx1ZSogdmFsdWUsIEdQ
YXJhbVNwZWMqIHBzcGVjKQotewotICAgIFdlYktpdERPTURPTVBsdWdpbiogc2VsZiA9IFdFQktJ
VF9ET01fRE9NX1BMVUdJTihvYmplY3QpOwotCi0gICAgc3dpdGNoIChwcm9wZXJ0eUlkKSB7Ci0g
ICAgY2FzZSBQUk9QX05BTUU6Ci0gICAgICAgIGdfdmFsdWVfdGFrZV9zdHJpbmcodmFsdWUsIHdl
YmtpdF9kb21fZG9tX3BsdWdpbl9nZXRfbmFtZShzZWxmKSk7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgUFJPUF9GSUxFTkFNRToKLSAgICAgICAgZ192YWx1ZV90YWtlX3N0cmluZyh2YWx1ZSwg
d2Via2l0X2RvbV9kb21fcGx1Z2luX2dldF9maWxlbmFtZShzZWxmKSk7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgUFJPUF9ERVNDUklQVElPTjoKLSAgICAgICAgZ192YWx1ZV90YWtlX3N0cmlu
Zyh2YWx1ZSwgd2Via2l0X2RvbV9kb21fcGx1Z2luX2dldF9kZXNjcmlwdGlvbihzZWxmKSk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9MRU5HVEg6Ci0gICAgICAgIGdfdmFsdWVfc2V0
X3Vsb25nKHZhbHVlLCB3ZWJraXRfZG9tX2RvbV9wbHVnaW5fZ2V0X2xlbmd0aChzZWxmKSk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJ
RF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BlcnR5SWQsIHBzcGVjKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgfQotfQotCi1zdGF0aWMgR09iamVjdCogd2Via2l0X2RvbV9kb21fcGx1Z2luX2NvbnN0
cnVjdG9yKEdUeXBlIHR5cGUsIGd1aW50IGNvbnN0cnVjdFByb3BlcnRpZXNDb3VudCwgR09iamVj
dENvbnN0cnVjdFBhcmFtKiBjb25zdHJ1Y3RQcm9wZXJ0aWVzKQotewotICAgIEdPYmplY3QqIG9i
amVjdCA9IEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9kb21fZG9tX3BsdWdpbl9wYXJlbnRfY2xhc3Mp
LT5jb25zdHJ1Y3Rvcih0eXBlLCBjb25zdHJ1Y3RQcm9wZXJ0aWVzQ291bnQsIGNvbnN0cnVjdFBy
b3BlcnRpZXMpOwotCi0gICAgV2ViS2l0RE9NRE9NUGx1Z2luUHJpdmF0ZSogcHJpdiA9IFdFQktJ
VF9ET01fRE9NX1BMVUdJTl9HRVRfUFJJVkFURShvYmplY3QpOwotICAgIHByaXYtPmNvcmVPYmpl
Y3QgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpET01QbHVnaW4qPihXRUJLSVRfRE9NX09CSkVDVChv
YmplY3QpLT5jb3JlT2JqZWN0KTsKLSAgICBXZWJLaXQ6OkRPTU9iamVjdENhY2hlOjpwdXQocHJp
di0+Y29yZU9iamVjdC5nZXQoKSwgb2JqZWN0KTsKLQotICAgIHJldHVybiBvYmplY3Q7Ci19Ci0K
LXN0YXRpYyB2b2lkIHdlYmtpdF9kb21fZG9tX3BsdWdpbl9jbGFzc19pbml0KFdlYktpdERPTURP
TVBsdWdpbkNsYXNzKiByZXF1ZXN0Q2xhc3MpCi17Ci0gICAgR09iamVjdENsYXNzKiBnb2JqZWN0
Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhyZXF1ZXN0Q2xhc3MpOwotICAgIGdfdHlwZV9jbGFzc19h
ZGRfcHJpdmF0ZShnb2JqZWN0Q2xhc3MsIHNpemVvZihXZWJLaXRET01ET01QbHVnaW5Qcml2YXRl
KSk7Ci0gICAgZ29iamVjdENsYXNzLT5jb25zdHJ1Y3RvciA9IHdlYmtpdF9kb21fZG9tX3BsdWdp
bl9jb25zdHJ1Y3RvcjsKLSAgICBnb2JqZWN0Q2xhc3MtPmZpbmFsaXplID0gd2Via2l0X2RvbV9k
b21fcGx1Z2luX2ZpbmFsaXplOwotICAgIGdvYmplY3RDbGFzcy0+Z2V0X3Byb3BlcnR5ID0gd2Vi
a2l0X2RvbV9kb21fcGx1Z2luX2dldF9wcm9wZXJ0eTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2lu
c3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9OQU1F
LAotICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nKAotICAgICAgICAgICAgIm5hbWUiLAotICAg
ICAgICAgICAgIkRPTVBsdWdpbjpuYW1lIiwKLSAgICAgICAgICAgICJyZWFkLW9ubHkgZ2NoYXIq
IERPTVBsdWdpbjpuYW1lIiwKLSAgICAgICAgICAgICIiLAotICAgICAgICAgICAgV0VCS0lUX1BB
UkFNX1JFQURBQkxFKSk7Ci0KLSAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAot
ICAgICAgICBnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBST1BfRklMRU5BTUUsCi0gICAgICAgIGdf
cGFyYW1fc3BlY19zdHJpbmcoCi0gICAgICAgICAgICAiZmlsZW5hbWUiLAotICAgICAgICAgICAg
IkRPTVBsdWdpbjpmaWxlbmFtZSIsCi0gICAgICAgICAgICAicmVhZC1vbmx5IGdjaGFyKiBET01Q
bHVnaW46ZmlsZW5hbWUiLAotICAgICAgICAgICAgIiIsCi0gICAgICAgICAgICBXRUJLSVRfUEFS
QU1fUkVBREFCTEUpKTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0g
ICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9ERVNDUklQVElPTiwKLSAgICAgICAg
Z19wYXJhbV9zcGVjX3N0cmluZygKLSAgICAgICAgICAgICJkZXNjcmlwdGlvbiIsCi0gICAgICAg
ICAgICAiRE9NUGx1Z2luOmRlc2NyaXB0aW9uIiwKLSAgICAgICAgICAgICJyZWFkLW9ubHkgZ2No
YXIqIERPTVBsdWdpbjpkZXNjcmlwdGlvbiIsCi0gICAgICAgICAgICAiIiwKLSAgICAgICAgICAg
IFdFQktJVF9QQVJBTV9SRUFEQUJMRSkpOwotCi0gICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9w
cm9wZXJ0eSgKLSAgICAgICAgZ29iamVjdENsYXNzLAotICAgICAgICBQUk9QX0xFTkdUSCwKLSAg
ICAgICAgZ19wYXJhbV9zcGVjX3Vsb25nKAotICAgICAgICAgICAgImxlbmd0aCIsCi0gICAgICAg
ICAgICAiRE9NUGx1Z2luOmxlbmd0aCIsCi0gICAgICAgICAgICAicmVhZC1vbmx5IGd1bG9uZyBE
T01QbHVnaW46bGVuZ3RoIiwKLSAgICAgICAgICAgIDAsIEdfTUFYVUxPTkcsIDAsCi0gICAgICAg
ICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKLQotfQotCi1zdGF0aWMgdm9pZCB3ZWJraXRf
ZG9tX2RvbV9wbHVnaW5faW5pdChXZWJLaXRET01ET01QbHVnaW4qIHJlcXVlc3QpCi17Ci0gICAg
V2ViS2l0RE9NRE9NUGx1Z2luUHJpdmF0ZSogcHJpdiA9IFdFQktJVF9ET01fRE9NX1BMVUdJTl9H
RVRfUFJJVkFURShyZXF1ZXN0KTsKLSAgICBuZXcgKHByaXYpIFdlYktpdERPTURPTVBsdWdpblBy
aXZhdGUoKTsKLX0KLQotV2ViS2l0RE9NRE9NTWltZVR5cGUqIHdlYmtpdF9kb21fZG9tX3BsdWdp
bl9pdGVtKFdlYktpdERPTURPTVBsdWdpbiogc2VsZiwgZ3Vsb25nIGluZGV4KQotewotICAgIFdl
YkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZf
ZmFpbChXRUJLSVRfRE9NX0lTX0RPTV9QTFVHSU4oc2VsZiksIDApOwotICAgIFdlYkNvcmU6OkRP
TVBsdWdpbiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6
RE9NTWltZVR5cGU+IGdvYmplY3RSZXN1bHQgPSBXVEY6OmdldFB0cihpdGVtLT5pdGVtKGluZGV4
KSk7Ci0gICAgcmV0dXJuIFdlYktpdDo6a2l0KGdvYmplY3RSZXN1bHQuZ2V0KCkpOwotfQotCi1X
ZWJLaXRET01ET01NaW1lVHlwZSogd2Via2l0X2RvbV9kb21fcGx1Z2luX25hbWVkX2l0ZW0oV2Vi
S2l0RE9NRE9NUGx1Z2luKiBzZWxmLCBjb25zdCBnY2hhciogbmFtZSkKLXsKLSAgICBXZWJDb3Jl
OjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwo
V0VCS0lUX0RPTV9JU19ET01fUExVR0lOKHNlbGYpLCAwKTsKLSAgICBnX3JldHVybl92YWxfaWZf
ZmFpbChuYW1lLCAwKTsKLSAgICBXZWJDb3JlOjpET01QbHVnaW4qIGl0ZW0gPSBXZWJLaXQ6OmNv
cmUoc2VsZik7Ci0gICAgV1RGOjpTdHJpbmcgY29udmVydGVkTmFtZSA9IFdURjo6U3RyaW5nOjpm
cm9tVVRGOChuYW1lKTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6RE9NTWltZVR5cGU+IGdvYmplY3RS
ZXN1bHQgPSBXVEY6OmdldFB0cihpdGVtLT5uYW1lZEl0ZW0oY29udmVydGVkTmFtZSkpOwotICAg
IHJldHVybiBXZWJLaXQ6OmtpdChnb2JqZWN0UmVzdWx0LmdldCgpKTsKLX0KLQotZ2NoYXIqIHdl
YmtpdF9kb21fZG9tX3BsdWdpbl9nZXRfbmFtZShXZWJLaXRET01ET01QbHVnaW4qIHNlbGYpCi17
Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfRE9NX1BMVUdJTihzZWxmKSwgMCk7Ci0gICAgV2Vi
Q29yZTo6RE9NUGx1Z2luKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdjaGFyKiBy
ZXN1bHQgPSBjb252ZXJ0VG9VVEY4U3RyaW5nKGl0ZW0tPm5hbWUoKSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLQotZ2NoYXIqIHdlYmtpdF9kb21fZG9tX3BsdWdpbl9nZXRfZmlsZW5hbWUoV2Vi
S2l0RE9NRE9NUGx1Z2luKiBzZWxmKQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxT
dGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX0RPTV9Q
TFVHSU4oc2VsZiksIDApOwotICAgIFdlYkNvcmU6OkRPTVBsdWdpbiogaXRlbSA9IFdlYktpdDo6
Y29yZShzZWxmKTsKLSAgICBnY2hhciogcmVzdWx0ID0gY29udmVydFRvVVRGOFN0cmluZyhpdGVt
LT5maWxlbmFtZSgpKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1nY2hhciogd2Via2l0X2Rv
bV9kb21fcGx1Z2luX2dldF9kZXNjcmlwdGlvbihXZWJLaXRET01ET01QbHVnaW4qIHNlbGYpCi17
Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfRE9NX1BMVUdJTihzZWxmKSwgMCk7Ci0gICAgV2Vi
Q29yZTo6RE9NUGx1Z2luKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdjaGFyKiBy
ZXN1bHQgPSBjb252ZXJ0VG9VVEY4U3RyaW5nKGl0ZW0tPmRlc2NyaXB0aW9uKCkpOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci0KLWd1bG9uZyB3ZWJraXRfZG9tX2RvbV9wbHVnaW5fZ2V0X2xlbmd0
aChXZWJLaXRET01ET01QbHVnaW4qIHNlbGYpCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFk
TnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNf
RE9NX1BMVUdJTihzZWxmKSwgMCk7Ci0gICAgV2ViQ29yZTo6RE9NUGx1Z2luKiBpdGVtID0gV2Vi
S2l0Ojpjb3JlKHNlbGYpOwotICAgIGd1bG9uZyByZXN1bHQgPSBpdGVtLT5sZW5ndGgoKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURPTVBsdWdpbi5oIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRE
T01ET01QbHVnaW4uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzM0ZTljZC4uMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
dGsvRE9NL1dlYktpdERPTURPTVBsdWdpbi5oCisrKyAvZGV2L251bGwKQEAgLTEsMTIxICswLDAg
QEAKLS8qCi0gKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBw
cm9qZWN0LgotICogIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmlu
ZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgot
ICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICog
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAq
ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICog
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgV2ViS2l0RE9NRE9N
UGx1Z2luX2gKLSNkZWZpbmUgV2ViS2l0RE9NRE9NUGx1Z2luX2gKLQotI2lmZGVmIFdFQktJVF9E
T01fVVNFX1VOU1RBQkxFX0FQSQotCi0jaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KLSNpbmNsdWRl
IDx3ZWJraXRkb20vV2ViS2l0RE9NT2JqZWN0Lmg+Ci0jaW5jbHVkZSA8d2Via2l0ZG9tL3dlYmtp
dGRvbWRlZmluZXMtdW5zdGFibGUuaD4KLQotR19CRUdJTl9ERUNMUwotCi0jZGVmaW5lIFdFQktJ
VF9ET01fVFlQRV9ET01fUExVR0lOICAgICAgICAgICAgKHdlYmtpdF9kb21fZG9tX3BsdWdpbl9n
ZXRfdHlwZSgpKQotI2RlZmluZSBXRUJLSVRfRE9NX0RPTV9QTFVHSU4ob2JqKSAgICAgICAgICAg
IChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwgV0VCS0lUX0RPTV9UWVBFX0RPTV9Q
TFVHSU4sIFdlYktpdERPTURPTVBsdWdpbikpCi0jZGVmaW5lIFdFQktJVF9ET01fRE9NX1BMVUdJ
Tl9DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksICBXRUJL
SVRfRE9NX1RZUEVfRE9NX1BMVUdJTiwgV2ViS2l0RE9NRE9NUGx1Z2luQ2xhc3MpCi0jZGVmaW5l
IFdFQktJVF9ET01fSVNfRE9NX1BMVUdJTihvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNU
QU5DRV9UWVBFKChvYmopLCBXRUJLSVRfRE9NX1RZUEVfRE9NX1BMVUdJTikpCi0jZGVmaW5lIFdF
QktJVF9ET01fSVNfRE9NX1BMVUdJTl9DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19U
WVBFKChrbGFzcyksICBXRUJLSVRfRE9NX1RZUEVfRE9NX1BMVUdJTikpCi0jZGVmaW5lIFdFQktJ
VF9ET01fRE9NX1BMVUdJTl9HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xB
U1MoKG9iaiksICBXRUJLSVRfRE9NX1RZUEVfRE9NX1BMVUdJTiwgV2ViS2l0RE9NRE9NUGx1Z2lu
Q2xhc3MpKQotCi1zdHJ1Y3QgX1dlYktpdERPTURPTVBsdWdpbiB7Ci0gICAgV2ViS2l0RE9NT2Jq
ZWN0IHBhcmVudF9pbnN0YW5jZTsKLX07Ci0KLXN0cnVjdCBfV2ViS2l0RE9NRE9NUGx1Z2luQ2xh
c3MgewotICAgIFdlYktpdERPTU9iamVjdENsYXNzIHBhcmVudF9jbGFzczsKLX07Ci0KLVdFQktJ
VF9BUEkgR1R5cGUKLXdlYmtpdF9kb21fZG9tX3BsdWdpbl9nZXRfdHlwZSh2b2lkKTsKLQotLyoq
Ci0gKiB3ZWJraXRfZG9tX2RvbV9wbHVnaW5faXRlbToKLSAqIEBzZWxmOiBBICNXZWJLaXRET01E
T01QbHVnaW4KLSAqIEBpbmRleDogQSAjZ3Vsb25nCi0gKgotICogUmV0dXJuczogKHRyYW5zZmVy
IGZ1bGwpOiBBICNXZWJLaXRET01ET01NaW1lVHlwZQotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFi
bGUKLSoqLwotV0VCS0lUX0FQSSBXZWJLaXRET01ET01NaW1lVHlwZSoKLXdlYmtpdF9kb21fZG9t
X3BsdWdpbl9pdGVtKFdlYktpdERPTURPTVBsdWdpbiogc2VsZiwgZ3Vsb25nIGluZGV4KTsKLQot
LyoqCi0gKiB3ZWJraXRfZG9tX2RvbV9wbHVnaW5fbmFtZWRfaXRlbToKLSAqIEBzZWxmOiBBICNX
ZWJLaXRET01ET01QbHVnaW4KLSAqIEBuYW1lOiBBICNnY2hhcgotICoKLSAqIFJldHVybnM6ICh0
cmFuc2ZlciBmdWxsKTogQSAjV2ViS2l0RE9NRE9NTWltZVR5cGUKLSAqCi0gKiBTdGFiaWxpdHk6
IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgV2ViS2l0RE9NRE9NTWltZVR5cGUqCi13ZWJraXRf
ZG9tX2RvbV9wbHVnaW5fbmFtZWRfaXRlbShXZWJLaXRET01ET01QbHVnaW4qIHNlbGYsIGNvbnN0
IGdjaGFyKiBuYW1lKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2RvbV9wbHVnaW5fZ2V0X25hbWU6
Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NRE9NUGx1Z2luCi0gKgotICogUmV0dXJuczogQSAjZ2No
YXIKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgZ2NoYXIqCi13
ZWJraXRfZG9tX2RvbV9wbHVnaW5fZ2V0X25hbWUoV2ViS2l0RE9NRE9NUGx1Z2luKiBzZWxmKTsK
LQotLyoqCi0gKiB3ZWJraXRfZG9tX2RvbV9wbHVnaW5fZ2V0X2ZpbGVuYW1lOgotICogQHNlbGY6
IEEgI1dlYktpdERPTURPTVBsdWdpbgotICoKLSAqIFJldHVybnM6IEEgI2djaGFyCi0gKgotICog
U3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIGdjaGFyKgotd2Via2l0X2RvbV9k
b21fcGx1Z2luX2dldF9maWxlbmFtZShXZWJLaXRET01ET01QbHVnaW4qIHNlbGYpOwotCi0vKioK
LSAqIHdlYmtpdF9kb21fZG9tX3BsdWdpbl9nZXRfZGVzY3JpcHRpb246Ci0gKiBAc2VsZjogQSAj
V2ViS2l0RE9NRE9NUGx1Z2luCi0gKgotICogUmV0dXJuczogQSAjZ2NoYXIKLSAqCi0gKiBTdGFi
aWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgZ2NoYXIqCi13ZWJraXRfZG9tX2RvbV9w
bHVnaW5fZ2V0X2Rlc2NyaXB0aW9uKFdlYktpdERPTURPTVBsdWdpbiogc2VsZik7Ci0KLS8qKgot
ICogd2Via2l0X2RvbV9kb21fcGx1Z2luX2dldF9sZW5ndGg6Ci0gKiBAc2VsZjogQSAjV2ViS2l0
RE9NRE9NUGx1Z2luCi0gKgotICogUmV0dXJuczogQSAjZ3Vsb25nCi0gKgotICogU3RhYmlsaXR5
OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIGd1bG9uZwotd2Via2l0X2RvbV9kb21fcGx1Z2lu
X2dldF9sZW5ndGgoV2ViS2l0RE9NRE9NUGx1Z2luKiBzZWxmKTsKLQotR19FTkRfREVDTFMKLQot
I2VuZGlmIC8qIFdFQktJVF9ET01fVVNFX1VOU1RBQkxFX0FQSSAqLwotI2VuZGlmIC8qIFdlYktp
dERPTURPTVBsdWdpbl9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURPTVBsdWdpbkFycmF5LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2Vi
S2l0RE9NRE9NUGx1Z2luQXJyYXkuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAy
NTk0MmNlLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRE9NUGx1Z2luQXJyYXkuY3BwCisrKyAvZGV2L251
bGwKQEAgLTEsMTczICswLDAgQEAKLS8qCi0gKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdl
YktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICogIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0
ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICogIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
LSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
LSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAq
ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJLaXRET01ET01QbHVnaW5BcnJheS5oIgot
Ci0jaW5jbHVkZSA8V2ViQ29yZS9DU1NJbXBvcnRSdWxlLmg+Ci0jaW5jbHVkZSAiRE9NT2JqZWN0
Q2FjaGUuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50Lmg+Ci0jaW5jbHVkZSA8V2ViQ29y
ZS9FeGNlcHRpb25Db2RlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9FeGNlcHRpb25Db2RlRGVzY3Jp
cHRpb24uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5oPgotI2lu
Y2x1ZGUgIldlYktpdERPTURPTVBsdWdpbkFycmF5UHJpdmF0ZS5oIgotI2luY2x1ZGUgIldlYktp
dERPTURPTVBsdWdpblByaXZhdGUuaCIKLSNpbmNsdWRlICJXZWJLaXRET01Qcml2YXRlLmgiCi0j
aW5jbHVkZSAiQ29udmVydFRvVVRGOFN0cmluZy5oIgotI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4K
LSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLSNkZWZpbmUgV0VCS0lUX0RPTV9ET01fUExVR0lO
X0FSUkFZX0dFVF9QUklWQVRFKG9iaikgR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKG9iaiwg
V0VCS0lUX0RPTV9UWVBFX0RPTV9QTFVHSU5fQVJSQVksIFdlYktpdERPTURPTVBsdWdpbkFycmF5
UHJpdmF0ZSkKLQotdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdERPTURPTVBsdWdpbkFycmF5UHJpdmF0
ZSB7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkRPTVBsdWdpbkFycmF5PiBjb3JlT2JqZWN0OwotfSBX
ZWJLaXRET01ET01QbHVnaW5BcnJheVByaXZhdGU7Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1X
ZWJLaXRET01ET01QbHVnaW5BcnJheSoga2l0KFdlYkNvcmU6OkRPTVBsdWdpbkFycmF5KiBvYmop
Ci17Ci0gICAgaWYgKCFvYmopCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgaWYgKGdwb2ludGVy
IHJldCA9IERPTU9iamVjdENhY2hlOjpnZXQob2JqKSkKLSAgICAgICAgcmV0dXJuIFdFQktJVF9E
T01fRE9NX1BMVUdJTl9BUlJBWShyZXQpOwotCi0gICAgcmV0dXJuIHdyYXBET01QbHVnaW5BcnJh
eShvYmopOwotfQotCi1XZWJDb3JlOjpET01QbHVnaW5BcnJheSogY29yZShXZWJLaXRET01ET01Q
bHVnaW5BcnJheSogcmVxdWVzdCkKLXsKLSAgICByZXR1cm4gcmVxdWVzdCA/IHN0YXRpY19jYXN0
PFdlYkNvcmU6OkRPTVBsdWdpbkFycmF5Kj4oV0VCS0lUX0RPTV9PQkpFQ1QocmVxdWVzdCktPmNv
cmVPYmplY3QpIDogMDsKLX0KLQotV2ViS2l0RE9NRE9NUGx1Z2luQXJyYXkqIHdyYXBET01QbHVn
aW5BcnJheShXZWJDb3JlOjpET01QbHVnaW5BcnJheSogY29yZU9iamVjdCkKLXsKLSAgICBBU1NF
UlQoY29yZU9iamVjdCk7Ci0gICAgcmV0dXJuIFdFQktJVF9ET01fRE9NX1BMVUdJTl9BUlJBWShn
X29iamVjdF9uZXcoV0VCS0lUX0RPTV9UWVBFX0RPTV9QTFVHSU5fQVJSQVksICJjb3JlLW9iamVj
dCIsIGNvcmVPYmplY3QsIG51bGxwdHIpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0K
LUdfREVGSU5FX1RZUEUoV2ViS2l0RE9NRE9NUGx1Z2luQXJyYXksIHdlYmtpdF9kb21fZG9tX3Bs
dWdpbl9hcnJheSwgV0VCS0lUX0RPTV9UWVBFX09CSkVDVCkKLQotZW51bSB7Ci0gICAgUFJPUF8w
LAotICAgIFBST1BfTEVOR1RILAotfTsKLQotc3RhdGljIHZvaWQgd2Via2l0X2RvbV9kb21fcGx1
Z2luX2FycmF5X2ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKLXsKLSAgICBXZWJLaXRET01ET01Q
bHVnaW5BcnJheVByaXZhdGUqIHByaXYgPSBXRUJLSVRfRE9NX0RPTV9QTFVHSU5fQVJSQVlfR0VU
X1BSSVZBVEUob2JqZWN0KTsKLQotICAgIFdlYktpdDo6RE9NT2JqZWN0Q2FjaGU6OmZvcmdldChw
cml2LT5jb3JlT2JqZWN0LmdldCgpKTsKLQotICAgIHByaXYtPn5XZWJLaXRET01ET01QbHVnaW5B
cnJheVByaXZhdGUoKTsKLSAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfZG9tX2RvbV9wbHVnaW5f
YXJyYXlfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKLX0KLQotc3RhdGljIHZvaWQg
d2Via2l0X2RvbV9kb21fcGx1Z2luX2FycmF5X2dldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3Qs
IGd1aW50IHByb3BlcnR5SWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKQotewot
ICAgIFdlYktpdERPTURPTVBsdWdpbkFycmF5KiBzZWxmID0gV0VCS0lUX0RPTV9ET01fUExVR0lO
X0FSUkFZKG9iamVjdCk7Ci0KLSAgICBzd2l0Y2ggKHByb3BlcnR5SWQpIHsKLSAgICBjYXNlIFBS
T1BfTEVOR1RIOgotICAgICAgICBnX3ZhbHVlX3NldF91bG9uZyh2YWx1ZSwgd2Via2l0X2RvbV9k
b21fcGx1Z2luX2FycmF5X2dldF9sZW5ndGgoc2VsZikpOwotICAgICAgICBicmVhazsKLSAgICBk
ZWZhdWx0OgotICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0
LCBwcm9wZXJ0eUlkLCBwc3BlYyk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLX0KLQotc3RhdGlj
IEdPYmplY3QqIHdlYmtpdF9kb21fZG9tX3BsdWdpbl9hcnJheV9jb25zdHJ1Y3RvcihHVHlwZSB0
eXBlLCBndWludCBjb25zdHJ1Y3RQcm9wZXJ0aWVzQ291bnQsIEdPYmplY3RDb25zdHJ1Y3RQYXJh
bSogY29uc3RydWN0UHJvcGVydGllcykKLXsKLSAgICBHT2JqZWN0KiBvYmplY3QgPSBHX09CSkVD
VF9DTEFTUyh3ZWJraXRfZG9tX2RvbV9wbHVnaW5fYXJyYXlfcGFyZW50X2NsYXNzKS0+Y29uc3Ry
dWN0b3IodHlwZSwgY29uc3RydWN0UHJvcGVydGllc0NvdW50LCBjb25zdHJ1Y3RQcm9wZXJ0aWVz
KTsKLQotICAgIFdlYktpdERPTURPTVBsdWdpbkFycmF5UHJpdmF0ZSogcHJpdiA9IFdFQktJVF9E
T01fRE9NX1BMVUdJTl9BUlJBWV9HRVRfUFJJVkFURShvYmplY3QpOwotICAgIHByaXYtPmNvcmVP
YmplY3QgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpET01QbHVnaW5BcnJheSo+KFdFQktJVF9ET01f
T0JKRUNUKG9iamVjdCktPmNvcmVPYmplY3QpOwotICAgIFdlYktpdDo6RE9NT2JqZWN0Q2FjaGU6
OnB1dChwcml2LT5jb3JlT2JqZWN0LmdldCgpLCBvYmplY3QpOwotCi0gICAgcmV0dXJuIG9iamVj
dDsKLX0KLQotc3RhdGljIHZvaWQgd2Via2l0X2RvbV9kb21fcGx1Z2luX2FycmF5X2NsYXNzX2lu
aXQoV2ViS2l0RE9NRE9NUGx1Z2luQXJyYXlDbGFzcyogcmVxdWVzdENsYXNzKQotewotICAgIEdP
YmplY3RDbGFzcyogZ29iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1MocmVxdWVzdENsYXNzKTsK
LSAgICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUoZ29iamVjdENsYXNzLCBzaXplb2YoV2ViS2l0
RE9NRE9NUGx1Z2luQXJyYXlQcml2YXRlKSk7Ci0gICAgZ29iamVjdENsYXNzLT5jb25zdHJ1Y3Rv
ciA9IHdlYmtpdF9kb21fZG9tX3BsdWdpbl9hcnJheV9jb25zdHJ1Y3RvcjsKLSAgICBnb2JqZWN0
Q2xhc3MtPmZpbmFsaXplID0gd2Via2l0X2RvbV9kb21fcGx1Z2luX2FycmF5X2ZpbmFsaXplOwot
ICAgIGdvYmplY3RDbGFzcy0+Z2V0X3Byb3BlcnR5ID0gd2Via2l0X2RvbV9kb21fcGx1Z2luX2Fy
cmF5X2dldF9wcm9wZXJ0eTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHko
Ci0gICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9MRU5HVEgsCi0gICAgICAgIGdf
cGFyYW1fc3BlY191bG9uZygKLSAgICAgICAgICAgICJsZW5ndGgiLAotICAgICAgICAgICAgIkRP
TVBsdWdpbkFycmF5Omxlbmd0aCIsCi0gICAgICAgICAgICAicmVhZC1vbmx5IGd1bG9uZyBET01Q
bHVnaW5BcnJheTpsZW5ndGgiLAotICAgICAgICAgICAgMCwgR19NQVhVTE9ORywgMCwKLSAgICAg
ICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSkpOwotCi19Ci0KLXN0YXRpYyB2b2lkIHdlYmtp
dF9kb21fZG9tX3BsdWdpbl9hcnJheV9pbml0KFdlYktpdERPTURPTVBsdWdpbkFycmF5KiByZXF1
ZXN0KQotewotICAgIFdlYktpdERPTURPTVBsdWdpbkFycmF5UHJpdmF0ZSogcHJpdiA9IFdFQktJ
VF9ET01fRE9NX1BMVUdJTl9BUlJBWV9HRVRfUFJJVkFURShyZXF1ZXN0KTsKLSAgICBuZXcgKHBy
aXYpIFdlYktpdERPTURPTVBsdWdpbkFycmF5UHJpdmF0ZSgpOwotfQotCi1XZWJLaXRET01ET01Q
bHVnaW4qIHdlYmtpdF9kb21fZG9tX3BsdWdpbl9hcnJheV9pdGVtKFdlYktpdERPTURPTVBsdWdp
bkFycmF5KiBzZWxmLCBndWxvbmcgaW5kZXgpCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFk
TnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNf
RE9NX1BMVUdJTl9BUlJBWShzZWxmKSwgMCk7Ci0gICAgV2ViQ29yZTo6RE9NUGx1Z2luQXJyYXkq
IGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkRPTVBsdWdp
bj4gZ29iamVjdFJlc3VsdCA9IFdURjo6Z2V0UHRyKGl0ZW0tPml0ZW0oaW5kZXgpKTsKLSAgICBy
ZXR1cm4gV2ViS2l0OjpraXQoZ29iamVjdFJlc3VsdC5nZXQoKSk7Ci19Ci0KLVdlYktpdERPTURP
TVBsdWdpbiogd2Via2l0X2RvbV9kb21fcGx1Z2luX2FycmF5X25hbWVkX2l0ZW0oV2ViS2l0RE9N
RE9NUGx1Z2luQXJyYXkqIHNlbGYsIGNvbnN0IGdjaGFyKiBuYW1lKQotewotICAgIFdlYkNvcmU6
OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChX
RUJLSVRfRE9NX0lTX0RPTV9QTFVHSU5fQVJSQVkoc2VsZiksIDApOwotICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKG5hbWUsIDApOwotICAgIFdlYkNvcmU6OkRPTVBsdWdpbkFycmF5KiBpdGVtID0g
V2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIFdURjo6U3RyaW5nIGNvbnZlcnRlZE5hbWUgPSBXVEY6
OlN0cmluZzo6ZnJvbVVURjgobmFtZSk7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkRPTVBsdWdpbj4g
Z29iamVjdFJlc3VsdCA9IFdURjo6Z2V0UHRyKGl0ZW0tPm5hbWVkSXRlbShjb252ZXJ0ZWROYW1l
KSk7Ci0gICAgcmV0dXJuIFdlYktpdDo6a2l0KGdvYmplY3RSZXN1bHQuZ2V0KCkpOwotfQotCi12
b2lkIHdlYmtpdF9kb21fZG9tX3BsdWdpbl9hcnJheV9yZWZyZXNoKFdlYktpdERPTURPTVBsdWdp
bkFycmF5KiBzZWxmLCBnYm9vbGVhbiByZWxvYWQpCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhy
ZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19E
T01fUExVR0lOX0FSUkFZKHNlbGYpKTsKLSAgICBXZWJDb3JlOjpET01QbHVnaW5BcnJheSogaXRl
bSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBpdGVtLT5yZWZyZXNoKHJlbG9hZCk7Ci19Ci0K
LWd1bG9uZyB3ZWJraXRfZG9tX2RvbV9wbHVnaW5fYXJyYXlfZ2V0X2xlbmd0aChXZWJLaXRET01E
T01QbHVnaW5BcnJheSogc2VsZikKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3Rh
dGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19ET01fUExV
R0lOX0FSUkFZKHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpET01QbHVnaW5BcnJheSogaXRlbSA9
IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBndWxvbmcgcmVzdWx0ID0gaXRlbS0+bGVuZ3RoKCk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01ET01QbHVnaW5BcnJh
eS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RP
TS9XZWJLaXRET01ET01QbHVnaW5BcnJheS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBmZmVkMzRmLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRE9NUGx1Z2luQXJyYXkuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDk4ICswLDAgQEAKLS8qCi0gKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdl
YktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICogIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0
ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICogIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
LSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
LSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAq
ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNp
Zm5kZWYgV2ViS2l0RE9NRE9NUGx1Z2luQXJyYXlfaAotI2RlZmluZSBXZWJLaXRET01ET01QbHVn
aW5BcnJheV9oCi0KLSNpZmRlZiBXRUJLSVRfRE9NX1VTRV9VTlNUQUJMRV9BUEkKLQotI2luY2x1
ZGUgPGdsaWItb2JqZWN0Lmg+Ci0jaW5jbHVkZSA8d2Via2l0ZG9tL1dlYktpdERPTU9iamVjdC5o
PgotI2luY2x1ZGUgPHdlYmtpdGRvbS93ZWJraXRkb21kZWZpbmVzLXVuc3RhYmxlLmg+Ci0KLUdf
QkVHSU5fREVDTFMKLQotI2RlZmluZSBXRUJLSVRfRE9NX1RZUEVfRE9NX1BMVUdJTl9BUlJBWSAg
ICAgICAgICAgICh3ZWJraXRfZG9tX2RvbV9wbHVnaW5fYXJyYXlfZ2V0X3R5cGUoKSkKLSNkZWZp
bmUgV0VCS0lUX0RPTV9ET01fUExVR0lOX0FSUkFZKG9iaikgICAgICAgICAgICAoR19UWVBFX0NI
RUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9ET01fVFlQRV9ET01fUExVR0lOX0FSUkFZ
LCBXZWJLaXRET01ET01QbHVnaW5BcnJheSkpCi0jZGVmaW5lIFdFQktJVF9ET01fRE9NX1BMVUdJ
Tl9BUlJBWV9DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyks
ICBXRUJLSVRfRE9NX1RZUEVfRE9NX1BMVUdJTl9BUlJBWSwgV2ViS2l0RE9NRE9NUGx1Z2luQXJy
YXlDbGFzcykKLSNkZWZpbmUgV0VCS0lUX0RPTV9JU19ET01fUExVR0lOX0FSUkFZKG9iaikgICAg
ICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksIFdFQktJVF9ET01fVFlQRV9E
T01fUExVR0lOX0FSUkFZKSkKLSNkZWZpbmUgV0VCS0lUX0RPTV9JU19ET01fUExVR0lOX0FSUkFZ
X0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwgIFdFQktJVF9E
T01fVFlQRV9ET01fUExVR0lOX0FSUkFZKSkKLSNkZWZpbmUgV0VCS0lUX0RPTV9ET01fUExVR0lO
X0FSUkFZX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwg
IFdFQktJVF9ET01fVFlQRV9ET01fUExVR0lOX0FSUkFZLCBXZWJLaXRET01ET01QbHVnaW5BcnJh
eUNsYXNzKSkKLQotc3RydWN0IF9XZWJLaXRET01ET01QbHVnaW5BcnJheSB7Ci0gICAgV2ViS2l0
RE9NT2JqZWN0IHBhcmVudF9pbnN0YW5jZTsKLX07Ci0KLXN0cnVjdCBfV2ViS2l0RE9NRE9NUGx1
Z2luQXJyYXlDbGFzcyB7Ci0gICAgV2ViS2l0RE9NT2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOwot
fTsKLQotV0VCS0lUX0FQSSBHVHlwZQotd2Via2l0X2RvbV9kb21fcGx1Z2luX2FycmF5X2dldF90
eXBlKHZvaWQpOwotCi0vKioKLSAqIHdlYmtpdF9kb21fZG9tX3BsdWdpbl9hcnJheV9pdGVtOgot
ICogQHNlbGY6IEEgI1dlYktpdERPTURPTVBsdWdpbkFycmF5Ci0gKiBAaW5kZXg6IEEgI2d1bG9u
ZwotICoKLSAqIFJldHVybnM6ICh0cmFuc2ZlciBmdWxsKTogQSAjV2ViS2l0RE9NRE9NUGx1Z2lu
Ci0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIFdlYktpdERPTURP
TVBsdWdpbioKLXdlYmtpdF9kb21fZG9tX3BsdWdpbl9hcnJheV9pdGVtKFdlYktpdERPTURPTVBs
dWdpbkFycmF5KiBzZWxmLCBndWxvbmcgaW5kZXgpOwotCi0vKioKLSAqIHdlYmtpdF9kb21fZG9t
X3BsdWdpbl9hcnJheV9uYW1lZF9pdGVtOgotICogQHNlbGY6IEEgI1dlYktpdERPTURPTVBsdWdp
bkFycmF5Ci0gKiBAbmFtZTogQSAjZ2NoYXIKLSAqCi0gKiBSZXR1cm5zOiAodHJhbnNmZXIgZnVs
bCk6IEEgI1dlYktpdERPTURPTVBsdWdpbgotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoq
LwotV0VCS0lUX0FQSSBXZWJLaXRET01ET01QbHVnaW4qCi13ZWJraXRfZG9tX2RvbV9wbHVnaW5f
YXJyYXlfbmFtZWRfaXRlbShXZWJLaXRET01ET01QbHVnaW5BcnJheSogc2VsZiwgY29uc3QgZ2No
YXIqIG5hbWUpOwotCi0vKioKLSAqIHdlYmtpdF9kb21fZG9tX3BsdWdpbl9hcnJheV9yZWZyZXNo
OgotICogQHNlbGY6IEEgI1dlYktpdERPTURPTVBsdWdpbkFycmF5Ci0gKiBAcmVsb2FkOiBBICNn
Ym9vbGVhbgotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSB2b2lk
Ci13ZWJraXRfZG9tX2RvbV9wbHVnaW5fYXJyYXlfcmVmcmVzaChXZWJLaXRET01ET01QbHVnaW5B
cnJheSogc2VsZiwgZ2Jvb2xlYW4gcmVsb2FkKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2RvbV9w
bHVnaW5fYXJyYXlfZ2V0X2xlbmd0aDoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01ET01QbHVnaW5B
cnJheQotICoKLSAqIFJldHVybnM6IEEgI2d1bG9uZwotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFi
bGUKLSoqLwotV0VCS0lUX0FQSSBndWxvbmcKLXdlYmtpdF9kb21fZG9tX3BsdWdpbl9hcnJheV9n
ZXRfbGVuZ3RoKFdlYktpdERPTURPTVBsdWdpbkFycmF5KiBzZWxmKTsKLQotR19FTkRfREVDTFMK
LQotI2VuZGlmIC8qIFdFQktJVF9ET01fVVNFX1VOU1RBQkxFX0FQSSAqLwotI2VuZGlmIC8qIFdl
YktpdERPTURPTVBsdWdpbkFycmF5X2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRE9NUGx1Z2luQXJy
YXlQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9ndGsvRE9NL1dlYktpdERPTURPTVBsdWdpbkFycmF5UHJpdmF0ZS5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA2NzM3MWI0Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRE9NUGx1Z2luQXJy
YXlQcml2YXRlLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi0vKgotICogIFRoaXMg
ZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAqICBUaGlz
IGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1Qg
TU9ESUZZIQotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgot
ICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQotICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KLSAqLwotCi0jaWZuZGVmIFdlYktpdERPTURPTVBsdWdpbkFycmF5UHJpdmF0
ZV9oCi0jZGVmaW5lIFdlYktpdERPTURPTVBsdWdpbkFycmF5UHJpdmF0ZV9oCi0KLSNpbmNsdWRl
IDxXZWJDb3JlL0RPTVBsdWdpbkFycmF5Lmg+Ci0jaW5jbHVkZSA8d2Via2l0ZG9tL1dlYktpdERP
TURPTVBsdWdpbkFycmF5Lmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotV2ViS2l0RE9NRE9NUGx1
Z2luQXJyYXkqIHdyYXBET01QbHVnaW5BcnJheShXZWJDb3JlOjpET01QbHVnaW5BcnJheSopOwot
V2ViS2l0RE9NRE9NUGx1Z2luQXJyYXkqIGtpdChXZWJDb3JlOjpET01QbHVnaW5BcnJheSopOwot
V2ViQ29yZTo6RE9NUGx1Z2luQXJyYXkqIGNvcmUoV2ViS2l0RE9NRE9NUGx1Z2luQXJyYXkqKTsK
LX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLyogV2ViS2l0RE9NRE9NUGx1Z2luQXJy
YXlQcml2YXRlX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRE9NUGx1Z2luUHJpdmF0ZS5oIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRE
T01ET01QbHVnaW5Qcml2YXRlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiZmYx
ZTIuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01ET01QbHVnaW5Qcml2YXRlLmgKKysrIC9kZXYvbnVsbApA
QCAtMSwzMyArMCwwIEBACi0vKgotICogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQg
b3BlbiBzb3VyY2UgcHJvamVjdC4KLSAqICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5
IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQotICoKLSAqICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAg
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKLSAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiAgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKLSAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaWZuZGVm
IFdlYktpdERPTURPTVBsdWdpblByaXZhdGVfaAotI2RlZmluZSBXZWJLaXRET01ET01QbHVnaW5Q
cml2YXRlX2gKLQotI2luY2x1ZGUgPFdlYkNvcmUvRE9NUGx1Z2luLmg+Ci0jaW5jbHVkZSA8d2Vi
a2l0ZG9tL1dlYktpdERPTURPTVBsdWdpbi5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLVdlYktp
dERPTURPTVBsdWdpbiogd3JhcERPTVBsdWdpbihXZWJDb3JlOjpET01QbHVnaW4qKTsKLVdlYktp
dERPTURPTVBsdWdpbioga2l0KFdlYkNvcmU6OkRPTVBsdWdpbiopOwotV2ViQ29yZTo6RE9NUGx1
Z2luKiBjb3JlKFdlYktpdERPTURPTVBsdWdpbiopOwotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0K
LSNlbmRpZiAvKiBXZWJLaXRET01ET01QbHVnaW5Qcml2YXRlX2ggKi8KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0
RE9NRE9NU3RyaW5nTGlzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURPTVN0cmluZ0xpc3QuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBmYTFhMGRkLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRE9NU3RyaW5n
TGlzdC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNjQgKzAsMCBAQAotLyoKLSAqICBUaGlzIGZp
bGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCi0gKiAgVGhpcyBm
aWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1P
RElGWSEKLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAq
ICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
LSAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiAgQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYktpdERP
TURPTVN0cmluZ0xpc3QuaCIKLQotI2luY2x1ZGUgPFdlYkNvcmUvQ1NTSW1wb3J0UnVsZS5oPgot
I2luY2x1ZGUgIkRPTU9iamVjdENhY2hlLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudC5o
PgotI2luY2x1ZGUgPFdlYkNvcmUvRXhjZXB0aW9uQ29kZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUv
RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9KU01haW5UaHJl
YWRFeGVjU3RhdGUuaD4KLSNpbmNsdWRlICJXZWJLaXRET01ET01TdHJpbmdMaXN0UHJpdmF0ZS5o
IgotI2luY2x1ZGUgIldlYktpdERPTVByaXZhdGUuaCIKLSNpbmNsdWRlICJDb252ZXJ0VG9VVEY4
U3RyaW5nLmgiCi0jaW5jbHVkZSA8d3RmL0dldFB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KLQotI2RlZmluZSBXRUJLSVRfRE9NX0RPTV9TVFJJTkdfTElTVF9HRVRfUFJJVkFURShvYmop
IEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURShvYmosIFdFQktJVF9ET01fVFlQRV9ET01fU1RS
SU5HX0xJU1QsIFdlYktpdERPTURPTVN0cmluZ0xpc3RQcml2YXRlKQotCi10eXBlZGVmIHN0cnVj
dCBfV2ViS2l0RE9NRE9NU3RyaW5nTGlzdFByaXZhdGUgewotICAgIFJlZlB0cjxXZWJDb3JlOjpE
T01TdHJpbmdMaXN0PiBjb3JlT2JqZWN0OwotfSBXZWJLaXRET01ET01TdHJpbmdMaXN0UHJpdmF0
ZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVdlYktpdERPTURPTVN0cmluZ0xpc3QqIGtpdChX
ZWJDb3JlOjpET01TdHJpbmdMaXN0KiBvYmopCi17Ci0gICAgaWYgKCFvYmopCi0gICAgICAgIHJl
dHVybiAwOwotCi0gICAgaWYgKGdwb2ludGVyIHJldCA9IERPTU9iamVjdENhY2hlOjpnZXQob2Jq
KSkKLSAgICAgICAgcmV0dXJuIFdFQktJVF9ET01fRE9NX1NUUklOR19MSVNUKHJldCk7Ci0KLSAg
ICByZXR1cm4gd3JhcERPTVN0cmluZ0xpc3Qob2JqKTsKLX0KLQotV2ViQ29yZTo6RE9NU3RyaW5n
TGlzdCogY29yZShXZWJLaXRET01ET01TdHJpbmdMaXN0KiByZXF1ZXN0KQotewotICAgIHJldHVy
biByZXF1ZXN0ID8gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RE9NU3RyaW5nTGlzdCo+KFdFQktJVF9E
T01fT0JKRUNUKHJlcXVlc3QpLT5jb3JlT2JqZWN0KSA6IDA7Ci19Ci0KLVdlYktpdERPTURPTVN0
cmluZ0xpc3QqIHdyYXBET01TdHJpbmdMaXN0KFdlYkNvcmU6OkRPTVN0cmluZ0xpc3QqIGNvcmVP
YmplY3QpCi17Ci0gICAgQVNTRVJUKGNvcmVPYmplY3QpOwotICAgIHJldHVybiBXRUJLSVRfRE9N
X0RPTV9TVFJJTkdfTElTVChnX29iamVjdF9uZXcoV0VCS0lUX0RPTV9UWVBFX0RPTV9TVFJJTkdf
TElTVCwgImNvcmUtb2JqZWN0IiwgY29yZU9iamVjdCwgbnVsbHB0cikpOwotfQotCi19IC8vIG5h
bWVzcGFjZSBXZWJLaXQKLQotR19ERUZJTkVfVFlQRShXZWJLaXRET01ET01TdHJpbmdMaXN0LCB3
ZWJraXRfZG9tX2RvbV9zdHJpbmdfbGlzdCwgV0VCS0lUX0RPTV9UWVBFX09CSkVDVCkKLQotZW51
bSB7Ci0gICAgUFJPUF8wLAotICAgIFBST1BfTEVOR1RILAotfTsKLQotc3RhdGljIHZvaWQgd2Vi
a2l0X2RvbV9kb21fc3RyaW5nX2xpc3RfZmluYWxpemUoR09iamVjdCogb2JqZWN0KQotewotICAg
IFdlYktpdERPTURPTVN0cmluZ0xpc3RQcml2YXRlKiBwcml2ID0gV0VCS0lUX0RPTV9ET01fU1RS
SU5HX0xJU1RfR0VUX1BSSVZBVEUob2JqZWN0KTsKLQotICAgIFdlYktpdDo6RE9NT2JqZWN0Q2Fj
aGU6OmZvcmdldChwcml2LT5jb3JlT2JqZWN0LmdldCgpKTsKLQotICAgIHByaXYtPn5XZWJLaXRE
T01ET01TdHJpbmdMaXN0UHJpdmF0ZSgpOwotICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9kb21f
ZG9tX3N0cmluZ19saXN0X3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7Ci19Ci0KLXN0
YXRpYyB2b2lkIHdlYmtpdF9kb21fZG9tX3N0cmluZ19saXN0X2dldF9wcm9wZXJ0eShHT2JqZWN0
KiBvYmplY3QsIGd1aW50IHByb3BlcnR5SWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBz
cGVjKQotewotICAgIFdlYktpdERPTURPTVN0cmluZ0xpc3QqIHNlbGYgPSBXRUJLSVRfRE9NX0RP
TV9TVFJJTkdfTElTVChvYmplY3QpOwotCi0gICAgc3dpdGNoIChwcm9wZXJ0eUlkKSB7Ci0gICAg
Y2FzZSBQUk9QX0xFTkdUSDoKLSAgICAgICAgZ192YWx1ZV9zZXRfdWxvbmcodmFsdWUsIHdlYmtp
dF9kb21fZG9tX3N0cmluZ19saXN0X2dldF9sZW5ndGgoc2VsZikpOwotICAgICAgICBicmVhazsK
LSAgICBkZWZhdWx0OgotICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQo
b2JqZWN0LCBwcm9wZXJ0eUlkLCBwc3BlYyk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLX0KLQot
c3RhdGljIEdPYmplY3QqIHdlYmtpdF9kb21fZG9tX3N0cmluZ19saXN0X2NvbnN0cnVjdG9yKEdU
eXBlIHR5cGUsIGd1aW50IGNvbnN0cnVjdFByb3BlcnRpZXNDb3VudCwgR09iamVjdENvbnN0cnVj
dFBhcmFtKiBjb25zdHJ1Y3RQcm9wZXJ0aWVzKQotewotICAgIEdPYmplY3QqIG9iamVjdCA9IEdf
T0JKRUNUX0NMQVNTKHdlYmtpdF9kb21fZG9tX3N0cmluZ19saXN0X3BhcmVudF9jbGFzcyktPmNv
bnN0cnVjdG9yKHR5cGUsIGNvbnN0cnVjdFByb3BlcnRpZXNDb3VudCwgY29uc3RydWN0UHJvcGVy
dGllcyk7Ci0KLSAgICBXZWJLaXRET01ET01TdHJpbmdMaXN0UHJpdmF0ZSogcHJpdiA9IFdFQktJ
VF9ET01fRE9NX1NUUklOR19MSVNUX0dFVF9QUklWQVRFKG9iamVjdCk7Ci0gICAgcHJpdi0+Y29y
ZU9iamVjdCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkRPTVN0cmluZ0xpc3QqPihXRUJLSVRfRE9N
X09CSkVDVChvYmplY3QpLT5jb3JlT2JqZWN0KTsKLSAgICBXZWJLaXQ6OkRPTU9iamVjdENhY2hl
OjpwdXQocHJpdi0+Y29yZU9iamVjdC5nZXQoKSwgb2JqZWN0KTsKLQotICAgIHJldHVybiBvYmpl
Y3Q7Ci19Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdF9kb21fZG9tX3N0cmluZ19saXN0X2NsYXNzX2lu
aXQoV2ViS2l0RE9NRE9NU3RyaW5nTGlzdENsYXNzKiByZXF1ZXN0Q2xhc3MpCi17Ci0gICAgR09i
amVjdENsYXNzKiBnb2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhyZXF1ZXN0Q2xhc3MpOwot
ICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShnb2JqZWN0Q2xhc3MsIHNpemVvZihXZWJLaXRE
T01ET01TdHJpbmdMaXN0UHJpdmF0ZSkpOwotICAgIGdvYmplY3RDbGFzcy0+Y29uc3RydWN0b3Ig
PSB3ZWJraXRfZG9tX2RvbV9zdHJpbmdfbGlzdF9jb25zdHJ1Y3RvcjsKLSAgICBnb2JqZWN0Q2xh
c3MtPmZpbmFsaXplID0gd2Via2l0X2RvbV9kb21fc3RyaW5nX2xpc3RfZmluYWxpemU7Ci0gICAg
Z29iamVjdENsYXNzLT5nZXRfcHJvcGVydHkgPSB3ZWJraXRfZG9tX2RvbV9zdHJpbmdfbGlzdF9n
ZXRfcHJvcGVydHk7Ci0KLSAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAotICAg
ICAgICBnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBST1BfTEVOR1RILAotICAgICAgICBnX3BhcmFt
X3NwZWNfdWxvbmcoCi0gICAgICAgICAgICAibGVuZ3RoIiwKLSAgICAgICAgICAgICJET01TdHJp
bmdMaXN0Omxlbmd0aCIsCi0gICAgICAgICAgICAicmVhZC1vbmx5IGd1bG9uZyBET01TdHJpbmdM
aXN0Omxlbmd0aCIsCi0gICAgICAgICAgICAwLCBHX01BWFVMT05HLCAwLAotICAgICAgICAgICAg
V0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7Ci0KLX0KLQotc3RhdGljIHZvaWQgd2Via2l0X2RvbV9k
b21fc3RyaW5nX2xpc3RfaW5pdChXZWJLaXRET01ET01TdHJpbmdMaXN0KiByZXF1ZXN0KQotewot
ICAgIFdlYktpdERPTURPTVN0cmluZ0xpc3RQcml2YXRlKiBwcml2ID0gV0VCS0lUX0RPTV9ET01f
U1RSSU5HX0xJU1RfR0VUX1BSSVZBVEUocmVxdWVzdCk7Ci0gICAgbmV3IChwcml2KSBXZWJLaXRE
T01ET01TdHJpbmdMaXN0UHJpdmF0ZSgpOwotfQotCi1nY2hhciogd2Via2l0X2RvbV9kb21fc3Ry
aW5nX2xpc3RfaXRlbShXZWJLaXRET01ET01TdHJpbmdMaXN0KiBzZWxmLCBndWxvbmcgaW5kZXgp
Ci17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0
dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfRE9NX1NUUklOR19MSVNUKHNlbGYpLCAwKTsK
LSAgICBXZWJDb3JlOjpET01TdHJpbmdMaXN0KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwot
ICAgIGdjaGFyKiByZXN1bHQgPSBjb252ZXJ0VG9VVEY4U3RyaW5nKGl0ZW0tPml0ZW0oaW5kZXgp
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1nYm9vbGVhbiB3ZWJraXRfZG9tX2RvbV9zdHJp
bmdfbGlzdF9jb250YWlucyhXZWJLaXRET01ET01TdHJpbmdMaXN0KiBzZWxmLCBjb25zdCBnY2hh
ciogc3RyaW5nKQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsK
LSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX0RPTV9TVFJJTkdfTElTVChz
ZWxmKSwgRkFMU0UpOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHN0cmluZywgRkFMU0UpOwot
ICAgIFdlYkNvcmU6OkRPTVN0cmluZ0xpc3QqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0g
ICAgV1RGOjpTdHJpbmcgY29udmVydGVkU3RyaW5nID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KHN0
cmluZyk7Ci0gICAgZ2Jvb2xlYW4gcmVzdWx0ID0gaXRlbS0+Y29udGFpbnMoY29udmVydGVkU3Ry
aW5nKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1ndWxvbmcgd2Via2l0X2RvbV9kb21fc3Ry
aW5nX2xpc3RfZ2V0X2xlbmd0aChXZWJLaXRET01ET01TdHJpbmdMaXN0KiBzZWxmKQotewotICAg
IFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxf
aWZfZmFpbChXRUJLSVRfRE9NX0lTX0RPTV9TVFJJTkdfTElTVChzZWxmKSwgMCk7Ci0gICAgV2Vi
Q29yZTo6RE9NU3RyaW5nTGlzdCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBndWxv
bmcgcmVzdWx0ID0gaXRlbS0+bGVuZ3RoKCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3Rr
L0RPTS9XZWJLaXRET01ET01TdHJpbmdMaXN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURPTVN0cmluZ0xpc3QuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGQ3ZmVlYy4uMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURP
TVN0cmluZ0xpc3QuaAorKysgL2Rldi9udWxsCkBAIC0xLDg4ICswLDAgQEAKLS8qCi0gKiAgVGhp
cyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICogIFRo
aXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5P
VCBNT0RJRlkhCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAq
Ci0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgV2ViS2l0RE9NRE9NU3RyaW5nTGlzdF9oCi0j
ZGVmaW5lIFdlYktpdERPTURPTVN0cmluZ0xpc3RfaAotCi0jaWZkZWYgV0VCS0lUX0RPTV9VU0Vf
VU5TVEFCTEVfQVBJCi0KLSNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgotI2luY2x1ZGUgPHdlYmtp
dGRvbS9XZWJLaXRET01PYmplY3QuaD4KLSNpbmNsdWRlIDx3ZWJraXRkb20vd2Via2l0ZG9tZGVm
aW5lcy11bnN0YWJsZS5oPgotCi1HX0JFR0lOX0RFQ0xTCi0KLSNkZWZpbmUgV0VCS0lUX0RPTV9U
WVBFX0RPTV9TVFJJTkdfTElTVCAgICAgICAgICAgICh3ZWJraXRfZG9tX2RvbV9zdHJpbmdfbGlz
dF9nZXRfdHlwZSgpKQotI2RlZmluZSBXRUJLSVRfRE9NX0RPTV9TVFJJTkdfTElTVChvYmopICAg
ICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBXRUJLSVRfRE9NX1RZ
UEVfRE9NX1NUUklOR19MSVNULCBXZWJLaXRET01ET01TdHJpbmdMaXN0KSkKLSNkZWZpbmUgV0VC
S0lUX0RPTV9ET01fU1RSSU5HX0xJU1RfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xB
U1NfQ0FTVCgoa2xhc3MpLCAgV0VCS0lUX0RPTV9UWVBFX0RPTV9TVFJJTkdfTElTVCwgV2ViS2l0
RE9NRE9NU3RyaW5nTGlzdENsYXNzKQotI2RlZmluZSBXRUJLSVRfRE9NX0lTX0RPTV9TVFJJTkdf
TElTVChvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLCBXRUJL
SVRfRE9NX1RZUEVfRE9NX1NUUklOR19MSVNUKSkKLSNkZWZpbmUgV0VCS0lUX0RPTV9JU19ET01f
U1RSSU5HX0xJU1RfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3Mp
LCAgV0VCS0lUX0RPTV9UWVBFX0RPTV9TVFJJTkdfTElTVCkpCi0jZGVmaW5lIFdFQktJVF9ET01f
RE9NX1NUUklOR19MSVNUX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFT
Uygob2JqKSwgIFdFQktJVF9ET01fVFlQRV9ET01fU1RSSU5HX0xJU1QsIFdlYktpdERPTURPTVN0
cmluZ0xpc3RDbGFzcykpCi0KLXN0cnVjdCBfV2ViS2l0RE9NRE9NU3RyaW5nTGlzdCB7Ci0gICAg
V2ViS2l0RE9NT2JqZWN0IHBhcmVudF9pbnN0YW5jZTsKLX07Ci0KLXN0cnVjdCBfV2ViS2l0RE9N
RE9NU3RyaW5nTGlzdENsYXNzIHsKLSAgICBXZWJLaXRET01PYmplY3RDbGFzcyBwYXJlbnRfY2xh
c3M7Ci19OwotCi1XRUJLSVRfQVBJIEdUeXBlCi13ZWJraXRfZG9tX2RvbV9zdHJpbmdfbGlzdF9n
ZXRfdHlwZSh2b2lkKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2RvbV9zdHJpbmdfbGlzdF9pdGVt
OgotICogQHNlbGY6IEEgI1dlYktpdERPTURPTVN0cmluZ0xpc3QKLSAqIEBpbmRleDogQSAjZ3Vs
b25nCi0gKgotICogUmV0dXJuczogQSAjZ2NoYXIKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxl
Ci0qKi8KLVdFQktJVF9BUEkgZ2NoYXIqCi13ZWJraXRfZG9tX2RvbV9zdHJpbmdfbGlzdF9pdGVt
KFdlYktpdERPTURPTVN0cmluZ0xpc3QqIHNlbGYsIGd1bG9uZyBpbmRleCk7Ci0KLS8qKgotICog
d2Via2l0X2RvbV9kb21fc3RyaW5nX2xpc3RfY29udGFpbnM6Ci0gKiBAc2VsZjogQSAjV2ViS2l0
RE9NRE9NU3RyaW5nTGlzdAotICogQHN0cmluZzogQSAjZ2NoYXIKLSAqCi0gKiBSZXR1cm5zOiBB
ICNnYm9vbGVhbgotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSBn
Ym9vbGVhbgotd2Via2l0X2RvbV9kb21fc3RyaW5nX2xpc3RfY29udGFpbnMoV2ViS2l0RE9NRE9N
U3RyaW5nTGlzdCogc2VsZiwgY29uc3QgZ2NoYXIqIHN0cmluZyk7Ci0KLS8qKgotICogd2Via2l0
X2RvbV9kb21fc3RyaW5nX2xpc3RfZ2V0X2xlbmd0aDoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01E
T01TdHJpbmdMaXN0Ci0gKgotICogUmV0dXJuczogQSAjZ3Vsb25nCi0gKgotICogU3RhYmlsaXR5
OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIGd1bG9uZwotd2Via2l0X2RvbV9kb21fc3RyaW5n
X2xpc3RfZ2V0X2xlbmd0aChXZWJLaXRET01ET01TdHJpbmdMaXN0KiBzZWxmKTsKLQotR19FTkRf
REVDTFMKLQotI2VuZGlmIC8qIFdFQktJVF9ET01fVVNFX1VOU1RBQkxFX0FQSSAqLwotI2VuZGlm
IC8qIFdlYktpdERPTURPTVN0cmluZ0xpc3RfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01ET01TdHJp
bmdMaXN0UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01ET01TdHJpbmdMaXN0UHJpdmF0ZS5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBkMWIzOTExLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRE9NU3RyaW5n
TGlzdFByaXZhdGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLS8qCi0gKiAgVGhp
cyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICogIFRo
aXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5P
VCBNT0RJRlkhCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAq
Ci0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgV2ViS2l0RE9NRE9NU3RyaW5nTGlzdFByaXZh
dGVfaAotI2RlZmluZSBXZWJLaXRET01ET01TdHJpbmdMaXN0UHJpdmF0ZV9oCi0KLSNpbmNsdWRl
IDxXZWJDb3JlL0RPTVN0cmluZ0xpc3QuaD4KLSNpbmNsdWRlIDx3ZWJraXRkb20vV2ViS2l0RE9N
RE9NU3RyaW5nTGlzdC5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLVdlYktpdERPTURPTVN0cmlu
Z0xpc3QqIHdyYXBET01TdHJpbmdMaXN0KFdlYkNvcmU6OkRPTVN0cmluZ0xpc3QqKTsKLVdlYktp
dERPTURPTVN0cmluZ0xpc3QqIGtpdChXZWJDb3JlOjpET01TdHJpbmdMaXN0Kik7Ci1XZWJDb3Jl
OjpET01TdHJpbmdMaXN0KiBjb3JlKFdlYktpdERPTURPTVN0cmluZ0xpc3QqKTsKLX0gLy8gbmFt
ZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLyogV2ViS2l0RE9NRE9NU3RyaW5nTGlzdFByaXZhdGVf
aCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01ET01TdHJpbmdNYXAuY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01ET01TdHJpbmdN
YXAuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMjUzYzc0Li4wMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00v
V2ViS2l0RE9NRE9NU3RyaW5nTWFwLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwNCArMCwwIEBA
Ci0vKgotICogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJv
amVjdC4KLSAqICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRp
bmdzLnBsLiBETyBOT1QgTU9ESUZZIQotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAq
ICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAg
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQotICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiV2ViS2l0RE9NRE9NU3RyaW5nTWFwLmgiCi0KLSNpbmNsdWRlIDxXZWJDb3JlL0NT
U0ltcG9ydFJ1bGUuaD4KLSNpbmNsdWRlICJET01PYmplY3RDYWNoZS5oIgotI2luY2x1ZGUgPFdl
YkNvcmUvRG9jdW1lbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0V4Y2VwdGlvbkNvZGUuaD4KLSNp
bmNsdWRlIDxXZWJDb3JlL0V4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbi5oPgotI2luY2x1ZGUgPFdl
YkNvcmUvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmg+Ci0jaW5jbHVkZSAiV2ViS2l0RE9NRE9NU3Ry
aW5nTWFwUHJpdmF0ZS5oIgotI2luY2x1ZGUgIldlYktpdERPTVByaXZhdGUuaCIKLSNpbmNsdWRl
ICJDb252ZXJ0VG9VVEY4U3RyaW5nLmgiCi0jaW5jbHVkZSA8d3RmL0dldFB0ci5oPgotI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KLQotI2RlZmluZSBXRUJLSVRfRE9NX0RPTV9TVFJJTkdfTUFQX0dF
VF9QUklWQVRFKG9iaikgR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKG9iaiwgV0VCS0lUX0RP
TV9UWVBFX0RPTV9TVFJJTkdfTUFQLCBXZWJLaXRET01ET01TdHJpbmdNYXBQcml2YXRlKQotCi10
eXBlZGVmIHN0cnVjdCBfV2ViS2l0RE9NRE9NU3RyaW5nTWFwUHJpdmF0ZSB7Ci0gICAgUmVmUHRy
PFdlYkNvcmU6OkRPTVN0cmluZ01hcD4gY29yZU9iamVjdDsKLX0gV2ViS2l0RE9NRE9NU3RyaW5n
TWFwUHJpdmF0ZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVdlYktpdERPTURPTVN0cmluZ01h
cCoga2l0KFdlYkNvcmU6OkRPTVN0cmluZ01hcCogb2JqKQotewotICAgIGlmICghb2JqKQotICAg
ICAgICByZXR1cm4gMDsKLQotICAgIGlmIChncG9pbnRlciByZXQgPSBET01PYmplY3RDYWNoZTo6
Z2V0KG9iaikpCi0gICAgICAgIHJldHVybiBXRUJLSVRfRE9NX0RPTV9TVFJJTkdfTUFQKHJldCk7
Ci0KLSAgICByZXR1cm4gd3JhcERPTVN0cmluZ01hcChvYmopOwotfQotCi1XZWJDb3JlOjpET01T
dHJpbmdNYXAqIGNvcmUoV2ViS2l0RE9NRE9NU3RyaW5nTWFwKiByZXF1ZXN0KQotewotICAgIHJl
dHVybiByZXF1ZXN0ID8gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RE9NU3RyaW5nTWFwKj4oV0VCS0lU
X0RPTV9PQkpFQ1QocmVxdWVzdCktPmNvcmVPYmplY3QpIDogMDsKLX0KLQotV2ViS2l0RE9NRE9N
U3RyaW5nTWFwKiB3cmFwRE9NU3RyaW5nTWFwKFdlYkNvcmU6OkRPTVN0cmluZ01hcCogY29yZU9i
amVjdCkKLXsKLSAgICBBU1NFUlQoY29yZU9iamVjdCk7Ci0gICAgcmV0dXJuIFdFQktJVF9ET01f
RE9NX1NUUklOR19NQVAoZ19vYmplY3RfbmV3KFdFQktJVF9ET01fVFlQRV9ET01fU1RSSU5HX01B
UCwgImNvcmUtb2JqZWN0IiwgY29yZU9iamVjdCwgbnVsbHB0cikpOwotfQotCi19IC8vIG5hbWVz
cGFjZSBXZWJLaXQKLQotR19ERUZJTkVfVFlQRShXZWJLaXRET01ET01TdHJpbmdNYXAsIHdlYmtp
dF9kb21fZG9tX3N0cmluZ19tYXAsIFdFQktJVF9ET01fVFlQRV9PQkpFQ1QpCi0KLXN0YXRpYyB2
b2lkIHdlYmtpdF9kb21fZG9tX3N0cmluZ19tYXBfZmluYWxpemUoR09iamVjdCogb2JqZWN0KQot
ewotICAgIFdlYktpdERPTURPTVN0cmluZ01hcFByaXZhdGUqIHByaXYgPSBXRUJLSVRfRE9NX0RP
TV9TVFJJTkdfTUFQX0dFVF9QUklWQVRFKG9iamVjdCk7Ci0KLSAgICBXZWJLaXQ6OkRPTU9iamVj
dENhY2hlOjpmb3JnZXQocHJpdi0+Y29yZU9iamVjdC5nZXQoKSk7Ci0KLSAgICBwcml2LT5+V2Vi
S2l0RE9NRE9NU3RyaW5nTWFwUHJpdmF0ZSgpOwotICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9k
b21fZG9tX3N0cmluZ19tYXBfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKLX0KLQot
c3RhdGljIEdPYmplY3QqIHdlYmtpdF9kb21fZG9tX3N0cmluZ19tYXBfY29uc3RydWN0b3IoR1R5
cGUgdHlwZSwgZ3VpbnQgY29uc3RydWN0UHJvcGVydGllc0NvdW50LCBHT2JqZWN0Q29uc3RydWN0
UGFyYW0qIGNvbnN0cnVjdFByb3BlcnRpZXMpCi17Ci0gICAgR09iamVjdCogb2JqZWN0ID0gR19P
QkpFQ1RfQ0xBU1Mod2Via2l0X2RvbV9kb21fc3RyaW5nX21hcF9wYXJlbnRfY2xhc3MpLT5jb25z
dHJ1Y3Rvcih0eXBlLCBjb25zdHJ1Y3RQcm9wZXJ0aWVzQ291bnQsIGNvbnN0cnVjdFByb3BlcnRp
ZXMpOwotCi0gICAgV2ViS2l0RE9NRE9NU3RyaW5nTWFwUHJpdmF0ZSogcHJpdiA9IFdFQktJVF9E
T01fRE9NX1NUUklOR19NQVBfR0VUX1BSSVZBVEUob2JqZWN0KTsKLSAgICBwcml2LT5jb3JlT2Jq
ZWN0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RE9NU3RyaW5nTWFwKj4oV0VCS0lUX0RPTV9PQkpF
Q1Qob2JqZWN0KS0+Y29yZU9iamVjdCk7Ci0gICAgV2ViS2l0OjpET01PYmplY3RDYWNoZTo6cHV0
KHByaXYtPmNvcmVPYmplY3QuZ2V0KCksIG9iamVjdCk7Ci0KLSAgICByZXR1cm4gb2JqZWN0Owot
fQotCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX2RvbV9zdHJpbmdfbWFwX2NsYXNzX2luaXQoV2Vi
S2l0RE9NRE9NU3RyaW5nTWFwQ2xhc3MqIHJlcXVlc3RDbGFzcykKLXsKLSAgICBHT2JqZWN0Q2xh
c3MqIGdvYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKHJlcXVlc3RDbGFzcyk7Ci0gICAgZ190
eXBlX2NsYXNzX2FkZF9wcml2YXRlKGdvYmplY3RDbGFzcywgc2l6ZW9mKFdlYktpdERPTURPTVN0
cmluZ01hcFByaXZhdGUpKTsKLSAgICBnb2JqZWN0Q2xhc3MtPmNvbnN0cnVjdG9yID0gd2Via2l0
X2RvbV9kb21fc3RyaW5nX21hcF9jb25zdHJ1Y3RvcjsKLSAgICBnb2JqZWN0Q2xhc3MtPmZpbmFs
aXplID0gd2Via2l0X2RvbV9kb21fc3RyaW5nX21hcF9maW5hbGl6ZTsKLX0KLQotc3RhdGljIHZv
aWQgd2Via2l0X2RvbV9kb21fc3RyaW5nX21hcF9pbml0KFdlYktpdERPTURPTVN0cmluZ01hcCog
cmVxdWVzdCkKLXsKLSAgICBXZWJLaXRET01ET01TdHJpbmdNYXBQcml2YXRlKiBwcml2ID0gV0VC
S0lUX0RPTV9ET01fU1RSSU5HX01BUF9HRVRfUFJJVkFURShyZXF1ZXN0KTsKLSAgICBuZXcgKHBy
aXYpIFdlYktpdERPTURPTVN0cmluZ01hcFByaXZhdGUoKTsKLX0KLQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRE
T01ET01TdHJpbmdNYXAuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRE9NU3RyaW5nTWFwLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGJlODI1MTIuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01ET01TdHJpbmdNYXAuaAor
KysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLS8qCi0gKiAgVGhpcyBmaWxlIGlzIHBhcnQg
b2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICogIFRoaXMgZmlsZSBoYXMgYmVl
biBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0gKgot
ICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0g
KiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgot
ICovCi0KLSNpZm5kZWYgV2ViS2l0RE9NRE9NU3RyaW5nTWFwX2gKLSNkZWZpbmUgV2ViS2l0RE9N
RE9NU3RyaW5nTWFwX2gKLQotI2lmZGVmIFdFQktJVF9ET01fVVNFX1VOU1RBQkxFX0FQSQotCi0j
aW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KLSNpbmNsdWRlIDx3ZWJraXRkb20vV2ViS2l0RE9NT2Jq
ZWN0Lmg+Ci0jaW5jbHVkZSA8d2Via2l0ZG9tL3dlYmtpdGRvbWRlZmluZXMtdW5zdGFibGUuaD4K
LQotR19CRUdJTl9ERUNMUwotCi0jZGVmaW5lIFdFQktJVF9ET01fVFlQRV9ET01fU1RSSU5HX01B
UCAgICAgICAgICAgICh3ZWJraXRfZG9tX2RvbV9zdHJpbmdfbWFwX2dldF90eXBlKCkpCi0jZGVm
aW5lIFdFQktJVF9ET01fRE9NX1NUUklOR19NQVAob2JqKSAgICAgICAgICAgIChHX1RZUEVfQ0hF
Q0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwgV0VCS0lUX0RPTV9UWVBFX0RPTV9TVFJJTkdfTUFQLCBX
ZWJLaXRET01ET01TdHJpbmdNYXApKQotI2RlZmluZSBXRUJLSVRfRE9NX0RPTV9TVFJJTkdfTUFQ
X0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJ
VF9ET01fVFlQRV9ET01fU1RSSU5HX01BUCwgV2ViS2l0RE9NRE9NU3RyaW5nTWFwQ2xhc3MpCi0j
ZGVmaW5lIFdFQktJVF9ET01fSVNfRE9NX1NUUklOR19NQVAob2JqKSAgICAgICAgIChHX1RZUEVf
Q0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX0RPTV9UWVBFX0RPTV9TVFJJTkdfTUFQ
KSkKLSNkZWZpbmUgV0VCS0lUX0RPTV9JU19ET01fU1RSSU5HX01BUF9DTEFTUyhrbGFzcykgKEdf
VFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfRE9NX1RZUEVfRE9NX1NUUklO
R19NQVApKQotI2RlZmluZSBXRUJLSVRfRE9NX0RPTV9TVFJJTkdfTUFQX0dFVF9DTEFTUyhvYmop
ICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9ET01fVFlQRV9ET01f
U1RSSU5HX01BUCwgV2ViS2l0RE9NRE9NU3RyaW5nTWFwQ2xhc3MpKQotCi1zdHJ1Y3QgX1dlYktp
dERPTURPTVN0cmluZ01hcCB7Ci0gICAgV2ViS2l0RE9NT2JqZWN0IHBhcmVudF9pbnN0YW5jZTsK
LX07Ci0KLXN0cnVjdCBfV2ViS2l0RE9NRE9NU3RyaW5nTWFwQ2xhc3MgewotICAgIFdlYktpdERP
TU9iamVjdENsYXNzIHBhcmVudF9jbGFzczsKLX07Ci0KLVdFQktJVF9BUEkgR1R5cGUKLXdlYmtp
dF9kb21fZG9tX3N0cmluZ19tYXBfZ2V0X3R5cGUodm9pZCk7Ci0KLUdfRU5EX0RFQ0xTCi0KLSNl
bmRpZiAvKiBXRUJLSVRfRE9NX1VTRV9VTlNUQUJMRV9BUEkgKi8KLSNlbmRpZiAvKiBXZWJLaXRE
T01ET01TdHJpbmdNYXBfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01ET01TdHJpbmdNYXBQcml2YXRl
LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9N
L1dlYktpdERPTURPTVN0cmluZ01hcFByaXZhdGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMjA5ZjljNS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURPTVN0cmluZ01hcFByaXZhdGUuaAor
KysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLS8qCi0gKiAgVGhpcyBmaWxlIGlzIHBhcnQg
b2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICogIFRoaXMgZmlsZSBoYXMgYmVl
biBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0gKgot
ICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0g
KiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgot
ICovCi0KLSNpZm5kZWYgV2ViS2l0RE9NRE9NU3RyaW5nTWFwUHJpdmF0ZV9oCi0jZGVmaW5lIFdl
YktpdERPTURPTVN0cmluZ01hcFByaXZhdGVfaAotCi0jaW5jbHVkZSA8V2ViQ29yZS9ET01TdHJp
bmdNYXAuaD4KLSNpbmNsdWRlIDx3ZWJraXRkb20vV2ViS2l0RE9NRE9NU3RyaW5nTWFwLmg+Ci0K
LW5hbWVzcGFjZSBXZWJLaXQgewotV2ViS2l0RE9NRE9NU3RyaW5nTWFwKiB3cmFwRE9NU3RyaW5n
TWFwKFdlYkNvcmU6OkRPTVN0cmluZ01hcCopOwotV2ViS2l0RE9NRE9NU3RyaW5nTWFwKiBraXQo
V2ViQ29yZTo6RE9NU3RyaW5nTWFwKik7Ci1XZWJDb3JlOjpET01TdHJpbmdNYXAqIGNvcmUoV2Vi
S2l0RE9NRE9NU3RyaW5nTWFwKik7Ci19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8q
IFdlYktpdERPTURPTVN0cmluZ01hcFByaXZhdGVfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01ET01U
b2tlbkxpc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2d0ay9ET00vV2ViS2l0RE9NRE9NVG9rZW5MaXN0LmgKaW5kZXggNjM1N2MxNy4uNTdhMjkxNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z3RrL0RPTS9XZWJLaXRET01ET01Ub2tlbkxpc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURPTVRva2VuTGlzdC5o
CkBAIC0yNyw3ICsyNyw3IEBACiAKICNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgogI2luY2x1ZGUg
PHdlYmtpdGRvbS9XZWJLaXRET01PYmplY3QuaD4KLSNpbmNsdWRlIDx3ZWJraXRkb20vd2Via2l0
ZG9tZGVmaW5lcy11bnN0YWJsZS5oPgorI2luY2x1ZGUgPHdlYmtpdGRvbS93ZWJraXRkb21kZWZp
bmVzLmg+CiAKIEdfQkVHSU5fREVDTFMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01ET01XaW5kb3dTcGVl
Y2hTeW50aGVzaXMuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01ET01XaW5kb3dTcGVlY2hTeW50aGVzaXMuY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZmIxNzA2Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRE9N
V2luZG93U3BlZWNoU3ludGhlc2lzLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAot
LyoKLSAgICBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGp1c3QgdG8gdGVsbCBidWlsZCBzY3JpcHRz
IHRoYXQgV2ViS2l0RE9NRE9NV2luZG93U3BlZWNoU3ludGhlc2lzLmggYW5kCi0gICAgV2ViS2l0
RE9NRE9NV2luZG93U3BlZWNoU3ludGhlc2lzLmNwcCBhcmUgY3JlYXRlZCBmb3IgRE9NV2luZG93
U3BlZWNoU3ludGhlc2lzLmlkbCwgYW5kIHRodXMKLSAgICBwcmV2ZW50IHRoZSBidWlsZCBzY3Jp
cHRzIGZyb20gdHJ5aW5nIHRvIGdlbmVyYXRlIFdlYktpdERPTURPTVdpbmRvd1NwZWVjaFN5bnRo
ZXNpcy5oIGFuZAotICAgIFdlYktpdERPTURPTVdpbmRvd1NwZWVjaFN5bnRoZXNpcy5jcHAgYXQg
ZXZlcnkgYnVpbGQuIFRoaXMgZmlsZSBtdXN0IG5vdCBiZSB0cmllZCB0byBjb21waWxlLgotKi8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2d0ay9ET00vV2ViS2l0RE9NRE9NV2luZG93U3BlZWNoU3ludGhlc2lzLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURPTVdp
bmRvd1NwZWVjaFN5bnRoZXNpcy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZmIx
NzA2Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRE9NV2luZG93U3BlZWNoU3ludGhlc2lzLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLS8qCi0gICAgVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBq
dXN0IHRvIHRlbGwgYnVpbGQgc2NyaXB0cyB0aGF0IFdlYktpdERPTURPTVdpbmRvd1NwZWVjaFN5
bnRoZXNpcy5oIGFuZAotICAgIFdlYktpdERPTURPTVdpbmRvd1NwZWVjaFN5bnRoZXNpcy5jcHAg
YXJlIGNyZWF0ZWQgZm9yIERPTVdpbmRvd1NwZWVjaFN5bnRoZXNpcy5pZGwsIGFuZCB0aHVzCi0g
ICAgcHJldmVudCB0aGUgYnVpbGQgc2NyaXB0cyBmcm9tIHRyeWluZyB0byBnZW5lcmF0ZSBXZWJL
aXRET01ET01XaW5kb3dTcGVlY2hTeW50aGVzaXMuaCBhbmQKLSAgICBXZWJLaXRET01ET01XaW5k
b3dTcGVlY2hTeW50aGVzaXMuY3BwIGF0IGV2ZXJ5IGJ1aWxkLiBUaGlzIGZpbGUgbXVzdCBub3Qg
YmUgdHJpZWQgdG8gY29tcGlsZS4KLSovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURhdGFDdWUuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJL
aXRET01EYXRhQ3VlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGE2MDM3OC4u
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9ndGsvRE9NL1dlYktpdERPTURhdGFDdWUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTM2ICsw
LDAgQEAKLS8qCi0gKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJj
ZSBwcm9qZWN0LgotICogIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUt
YmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQot
ICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoK
LSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAot
ICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJXZWJLaXRET01EYXRhQ3VlLmgiCi0KLSNpbmNsdWRlIDxXZWJDb3JlL0NT
U0ltcG9ydFJ1bGUuaD4KLSNpbmNsdWRlICJET01PYmplY3RDYWNoZS5oIgotI2luY2x1ZGUgPFdl
YkNvcmUvRG9jdW1lbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0V4Y2VwdGlvbkNvZGUuaD4KLSNp
bmNsdWRlIDxXZWJDb3JlL0V4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbi5oPgotI2luY2x1ZGUgIkdP
YmplY3RFdmVudExpc3RlbmVyLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9KU01haW5UaHJlYWRFeGVj
U3RhdGUuaD4KLSNpbmNsdWRlICJXZWJLaXRET01EYXRhQ3VlUHJpdmF0ZS5oIgotI2luY2x1ZGUg
IldlYktpdERPTUV2ZW50UHJpdmF0ZS5oIgotI2luY2x1ZGUgIldlYktpdERPTUV2ZW50VGFyZ2V0
LmgiCi0jaW5jbHVkZSAiV2ViS2l0RE9NUHJpdmF0ZS5oIgotI2luY2x1ZGUgIldlYktpdERPTVRl
eHRUcmFja0N1ZVByaXZhdGUuaCIKLSNpbmNsdWRlICJDb252ZXJ0VG9VVEY4U3RyaW5nLmgiCi0j
aW5jbHVkZSA8d3RmL0dldFB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotI2lmIEVO
QUJMRShWSURFT19UUkFDSykKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVdlYktpdERPTURhdGFD
dWUqIGtpdChXZWJDb3JlOjpEYXRhQ3VlKiBvYmopCi17Ci0gICAgcmV0dXJuIFdFQktJVF9ET01f
REFUQV9DVUUoa2l0KHN0YXRpY19jYXN0PFdlYkNvcmU6OlRleHRUcmFja0N1ZSo+KG9iaikpKTsK
LX0KLQotV2ViQ29yZTo6RGF0YUN1ZSogY29yZShXZWJLaXRET01EYXRhQ3VlKiByZXF1ZXN0KQot
ewotICAgIHJldHVybiByZXF1ZXN0ID8gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RGF0YUN1ZSo+KFdF
QktJVF9ET01fT0JKRUNUKHJlcXVlc3QpLT5jb3JlT2JqZWN0KSA6IDA7Ci19Ci0KLVdlYktpdERP
TURhdGFDdWUqIHdyYXBEYXRhQ3VlKFdlYkNvcmU6OkRhdGFDdWUqIGNvcmVPYmplY3QpCi17Ci0g
ICAgQVNTRVJUKGNvcmVPYmplY3QpOwotICAgIHJldHVybiBXRUJLSVRfRE9NX0RBVEFfQ1VFKGdf
b2JqZWN0X25ldyhXRUJLSVRfRE9NX1RZUEVfREFUQV9DVUUsICJjb3JlLW9iamVjdCIsIGNvcmVP
YmplY3QsIG51bGxwdHIpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAv
LyBFTkFCTEUoVklERU9fVFJBQ0spCi0KLXN0YXRpYyBnYm9vbGVhbiB3ZWJraXRfZG9tX2RhdGFf
Y3VlX2Rpc3BhdGNoX2V2ZW50KFdlYktpdERPTUV2ZW50VGFyZ2V0KiB0YXJnZXQsIFdlYktpdERP
TUV2ZW50KiBldmVudCwgR0Vycm9yKiogZXJyb3IpCi17Ci0jaWYgRU5BQkxFKFZJREVPX1RSQUNL
KQotICAgIFdlYkNvcmU6OkV2ZW50KiBjb3JlRXZlbnQgPSBXZWJLaXQ6OmNvcmUoZXZlbnQpOwot
ICAgIGlmICghY29yZUV2ZW50KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgV2ViQ29yZTo6
RGF0YUN1ZSogY29yZVRhcmdldCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkRhdGFDdWUqPihXRUJL
SVRfRE9NX09CSkVDVCh0YXJnZXQpLT5jb3JlT2JqZWN0KTsKLQotICAgIFdlYkNvcmU6OkV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwotICAgIGdib29sZWFuIHJlc3VsdCA9IGNvcmVUYXJnZXQtPmRpc3Bh
dGNoRXZlbnRGb3JCaW5kaW5ncygqY29yZUV2ZW50LCBlYyk7Ci0gICAgaWYgKGVjKSB7Ci0gICAg
ICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiBkZXNjcmlwdGlvbihlYyk7Ci0g
ICAgICAgIGdfc2V0X2Vycm9yX2xpdGVyYWwoZXJyb3IsIGdfcXVhcmtfZnJvbV9zdHJpbmcoIldF
QktJVF9ET00iKSwgZGVzY3JpcHRpb24uY29kZSwgZGVzY3JpcHRpb24ubmFtZSk7Ci0gICAgfQot
ICAgIHJldHVybiByZXN1bHQ7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTSh0YXJnZXQpOwotICAg
IFVOVVNFRF9QQVJBTShldmVudCk7Ci0gICAgVU5VU0VEX1BBUkFNKGVycm9yKTsKLSAgICBXRUJL
SVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJWaWRlbyBUcmFjayIpCi0gICAgcmV0dXJuIGZh
bHNlOwotI2VuZGlmIC8vIEVOQUJMRShWSURFT19UUkFDSykKLX0KLQotc3RhdGljIGdib29sZWFu
IHdlYmtpdF9kb21fZGF0YV9jdWVfYWRkX2V2ZW50X2xpc3RlbmVyKFdlYktpdERPTUV2ZW50VGFy
Z2V0KiB0YXJnZXQsIGNvbnN0IGNoYXIqIGV2ZW50TmFtZSwgR0Nsb3N1cmUqIGhhbmRsZXIsIGdi
b29sZWFuIHVzZUNhcHR1cmUpCi17Ci0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgIFdlYkNv
cmU6OkRhdGFDdWUqIGNvcmVUYXJnZXQgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEYXRhQ3VlKj4o
V0VCS0lUX0RPTV9PQkpFQ1QodGFyZ2V0KS0+Y29yZU9iamVjdCk7Ci0gICAgcmV0dXJuIFdlYktp
dDo6R09iamVjdEV2ZW50TGlzdGVuZXI6OmFkZEV2ZW50TGlzdGVuZXIoR19PQkpFQ1QodGFyZ2V0
KSwgY29yZVRhcmdldCwgZXZlbnROYW1lLCBoYW5kbGVyLCB1c2VDYXB0dXJlKTsKLSNlbHNlCi0g
ICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7Ci0gICAgVU5VU0VEX1BBUkFNKGV2ZW50TmFtZSk7Ci0g
ICAgVU5VU0VEX1BBUkFNKGhhbmRsZXIpOwotICAgIFVOVVNFRF9QQVJBTSh1c2VDYXB0dXJlKTsK
LSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJWaWRlbyBUcmFjayIpCi0gICAg
cmV0dXJuIGZhbHNlOwotI2VuZGlmIC8vIEVOQUJMRShWSURFT19UUkFDSykKLX0KLQotc3RhdGlj
IGdib29sZWFuIHdlYmtpdF9kb21fZGF0YV9jdWVfcmVtb3ZlX2V2ZW50X2xpc3RlbmVyKFdlYktp
dERPTUV2ZW50VGFyZ2V0KiB0YXJnZXQsIGNvbnN0IGNoYXIqIGV2ZW50TmFtZSwgR0Nsb3N1cmUq
IGhhbmRsZXIsIGdib29sZWFuIHVzZUNhcHR1cmUpCi17Ci0jaWYgRU5BQkxFKFZJREVPX1RSQUNL
KQotICAgIFdlYkNvcmU6OkRhdGFDdWUqIGNvcmVUYXJnZXQgPSBzdGF0aWNfY2FzdDxXZWJDb3Jl
OjpEYXRhQ3VlKj4oV0VCS0lUX0RPTV9PQkpFQ1QodGFyZ2V0KS0+Y29yZU9iamVjdCk7Ci0gICAg
cmV0dXJuIFdlYktpdDo6R09iamVjdEV2ZW50TGlzdGVuZXI6OnJlbW92ZUV2ZW50TGlzdGVuZXIo
R19PQkpFQ1QodGFyZ2V0KSwgY29yZVRhcmdldCwgZXZlbnROYW1lLCBoYW5kbGVyLCB1c2VDYXB0
dXJlKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7Ci0gICAgVU5VU0VEX1BBUkFN
KGV2ZW50TmFtZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGhhbmRsZXIpOwotICAgIFVOVVNFRF9QQVJB
TSh1c2VDYXB0dXJlKTsKLSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJWaWRl
byBUcmFjayIpCi0gICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmIC8vIEVOQUJMRShWSURFT19UUkFD
SykKLX0KLQotc3RhdGljIHZvaWQgd2Via2l0X2RvbV9ldmVudF90YXJnZXRfaW5pdChXZWJLaXRE
T01FdmVudFRhcmdldElmYWNlKiBpZmFjZSkKLXsKLSAgICBpZmFjZS0+ZGlzcGF0Y2hfZXZlbnQg
PSB3ZWJraXRfZG9tX2RhdGFfY3VlX2Rpc3BhdGNoX2V2ZW50OwotICAgIGlmYWNlLT5hZGRfZXZl
bnRfbGlzdGVuZXIgPSB3ZWJraXRfZG9tX2RhdGFfY3VlX2FkZF9ldmVudF9saXN0ZW5lcjsKLSAg
ICBpZmFjZS0+cmVtb3ZlX2V2ZW50X2xpc3RlbmVyID0gd2Via2l0X2RvbV9kYXRhX2N1ZV9yZW1v
dmVfZXZlbnRfbGlzdGVuZXI7Ci19Ci0KLUdfREVGSU5FX1RZUEVfV0lUSF9DT0RFKFdlYktpdERP
TURhdGFDdWUsIHdlYmtpdF9kb21fZGF0YV9jdWUsIFdFQktJVF9ET01fVFlQRV9URVhUX1RSQUNL
X0NVRSwgR19JTVBMRU1FTlRfSU5URVJGQUNFKFdFQktJVF9ET01fVFlQRV9FVkVOVF9UQVJHRVQs
IHdlYmtpdF9kb21fZXZlbnRfdGFyZ2V0X2luaXQpKQotCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9t
X2RhdGFfY3VlX2NsYXNzX2luaXQoV2ViS2l0RE9NRGF0YUN1ZUNsYXNzKiByZXF1ZXN0Q2xhc3Mp
Ci17Ci0gICAgVU5VU0VEX1BBUkFNKHJlcXVlc3RDbGFzcyk7Ci19Ci0KLXN0YXRpYyB2b2lkIHdl
YmtpdF9kb21fZGF0YV9jdWVfaW5pdChXZWJLaXRET01EYXRhQ3VlKiByZXF1ZXN0KQotewotICAg
IFVOVVNFRF9QQVJBTShyZXF1ZXN0KTsKLX0KLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01EYXRhQ3VlLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dl
YktpdERPTURhdGFDdWUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWMwNjgwMC4u
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9ndGsvRE9NL1dlYktpdERPTURhdGFDdWUuaAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAg
QEAKLS8qCi0gKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBw
cm9qZWN0LgotICogIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmlu
ZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgot
ICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICog
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAq
ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICog
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgV2ViS2l0RE9NRGF0
YUN1ZV9oCi0jZGVmaW5lIFdlYktpdERPTURhdGFDdWVfaAotCi0jaWZkZWYgV0VCS0lUX0RPTV9V
U0VfVU5TVEFCTEVfQVBJCi0KLSNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgotI2luY2x1ZGUgPHdl
YmtpdGRvbS9XZWJLaXRET01UZXh0VHJhY2tDdWUuaD4KLSNpbmNsdWRlIDx3ZWJraXRkb20vd2Vi
a2l0ZG9tZGVmaW5lcy11bnN0YWJsZS5oPgotCi1HX0JFR0lOX0RFQ0xTCi0KLSNkZWZpbmUgV0VC
S0lUX0RPTV9UWVBFX0RBVEFfQ1VFICAgICAgICAgICAgKHdlYmtpdF9kb21fZGF0YV9jdWVfZ2V0
X3R5cGUoKSkKLSNkZWZpbmUgV0VCS0lUX0RPTV9EQVRBX0NVRShvYmopICAgICAgICAgICAgKEdf
VFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBXRUJLSVRfRE9NX1RZUEVfREFUQV9DVUUs
IFdlYktpdERPTURhdGFDdWUpKQotI2RlZmluZSBXRUJLSVRfRE9NX0RBVEFfQ1VFX0NMQVNTKGts
YXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJVF9ET01fVFlQ
RV9EQVRBX0NVRSwgV2ViS2l0RE9NRGF0YUN1ZUNsYXNzKQotI2RlZmluZSBXRUJLSVRfRE9NX0lT
X0RBVEFfQ1VFKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiks
IFdFQktJVF9ET01fVFlQRV9EQVRBX0NVRSkpCi0jZGVmaW5lIFdFQktJVF9ET01fSVNfREFUQV9D
VUVfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lU
X0RPTV9UWVBFX0RBVEFfQ1VFKSkKLSNkZWZpbmUgV0VCS0lUX0RPTV9EQVRBX0NVRV9HRVRfQ0xB
U1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksICBXRUJLSVRfRE9NX1RZ
UEVfREFUQV9DVUUsIFdlYktpdERPTURhdGFDdWVDbGFzcykpCi0KLXN0cnVjdCBfV2ViS2l0RE9N
RGF0YUN1ZSB7Ci0gICAgV2ViS2l0RE9NVGV4dFRyYWNrQ3VlIHBhcmVudF9pbnN0YW5jZTsKLX07
Ci0KLXN0cnVjdCBfV2ViS2l0RE9NRGF0YUN1ZUNsYXNzIHsKLSAgICBXZWJLaXRET01UZXh0VHJh
Y2tDdWVDbGFzcyBwYXJlbnRfY2xhc3M7Ci19OwotCi1XRUJLSVRfQVBJIEdUeXBlCi13ZWJraXRf
ZG9tX2RhdGFfY3VlX2dldF90eXBlKHZvaWQpOwotCi1HX0VORF9ERUNMUwotCi0jZW5kaWYgLyog
V0VCS0lUX0RPTV9VU0VfVU5TVEFCTEVfQVBJICovCi0jZW5kaWYgLyogV2ViS2l0RE9NRGF0YUN1
ZV9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURhdGFDdWVQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURhdGFDdWVQ
cml2YXRlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE2YTA4MzYuLjAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RP
TS9XZWJLaXRET01EYXRhQ3VlUHJpdmF0ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBA
QAotLyoKLSAqICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHBy
b2plY3QuCi0gKiAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5k
aW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0g
KiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICog
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiAg
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBXZWJLaXRET01EYXRh
Q3VlUHJpdmF0ZV9oCi0jZGVmaW5lIFdlYktpdERPTURhdGFDdWVQcml2YXRlX2gKLQotI2luY2x1
ZGUgPFdlYkNvcmUvRGF0YUN1ZS5oPgotI2luY2x1ZGUgPHdlYmtpdGRvbS9XZWJLaXRET01EYXRh
Q3VlLmg+Ci0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLVdl
YktpdERPTURhdGFDdWUqIHdyYXBEYXRhQ3VlKFdlYkNvcmU6OkRhdGFDdWUqKTsKLVdlYktpdERP
TURhdGFDdWUqIGtpdChXZWJDb3JlOjpEYXRhQ3VlKik7Ci1XZWJDb3JlOjpEYXRhQ3VlKiBjb3Jl
KFdlYktpdERPTURhdGFDdWUqKTsKLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLyog
RU5BQkxFKFZJREVPX1RSQUNLKSAqLwotCi0jZW5kaWYgLyogV2ViS2l0RE9NRGF0YUN1ZVByaXZh
dGVfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURhdGFiYXNlLmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTBkODcyNC4uMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktp
dERPTURhdGFiYXNlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0NCArMCwwIEBACi0vKgotICog
IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAq
ICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBE
TyBOT1QgTU9ESUZZIQotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
Ci0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQotICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO
Ry5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
V2ViS2l0RE9NRGF0YWJhc2UuaCIKLQotI2luY2x1ZGUgPFdlYkNvcmUvQ1NTSW1wb3J0UnVsZS5o
PgotI2luY2x1ZGUgIkRPTU9iamVjdENhY2hlLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVu
dC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRXhjZXB0aW9uQ29kZS5oPgotI2luY2x1ZGUgPFdlYkNv
cmUvRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9KU01haW5U
aHJlYWRFeGVjU3RhdGUuaD4KLSNpbmNsdWRlICJXZWJLaXRET01EYXRhYmFzZVByaXZhdGUuaCIK
LSNpbmNsdWRlICJXZWJLaXRET01Qcml2YXRlLmgiCi0jaW5jbHVkZSAiQ29udmVydFRvVVRGOFN0
cmluZy5oIgotI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
Ci0KLSNkZWZpbmUgV0VCS0lUX0RPTV9EQVRBQkFTRV9HRVRfUFJJVkFURShvYmopIEdfVFlQRV9J
TlNUQU5DRV9HRVRfUFJJVkFURShvYmosIFdFQktJVF9ET01fVFlQRV9EQVRBQkFTRSwgV2ViS2l0
RE9NRGF0YWJhc2VQcml2YXRlKQotCi10eXBlZGVmIHN0cnVjdCBfV2ViS2l0RE9NRGF0YWJhc2VQ
cml2YXRlIHsKLSAgICBSZWZQdHI8V2ViQ29yZTo6RGF0YWJhc2U+IGNvcmVPYmplY3Q7Ci19IFdl
YktpdERPTURhdGFiYXNlUHJpdmF0ZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVdlYktpdERP
TURhdGFiYXNlKiBraXQoV2ViQ29yZTo6RGF0YWJhc2UqIG9iaikKLXsKLSAgICBpZiAoIW9iaikK
LSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBpZiAoZ3BvaW50ZXIgcmV0ID0gRE9NT2JqZWN0Q2Fj
aGU6OmdldChvYmopKQotICAgICAgICByZXR1cm4gV0VCS0lUX0RPTV9EQVRBQkFTRShyZXQpOwot
Ci0gICAgcmV0dXJuIHdyYXBEYXRhYmFzZShvYmopOwotfQotCi1XZWJDb3JlOjpEYXRhYmFzZSog
Y29yZShXZWJLaXRET01EYXRhYmFzZSogcmVxdWVzdCkKLXsKLSAgICByZXR1cm4gcmVxdWVzdCA/
IHN0YXRpY19jYXN0PFdlYkNvcmU6OkRhdGFiYXNlKj4oV0VCS0lUX0RPTV9PQkpFQ1QocmVxdWVz
dCktPmNvcmVPYmplY3QpIDogMDsKLX0KLQotV2ViS2l0RE9NRGF0YWJhc2UqIHdyYXBEYXRhYmFz
ZShXZWJDb3JlOjpEYXRhYmFzZSogY29yZU9iamVjdCkKLXsKLSAgICBBU1NFUlQoY29yZU9iamVj
dCk7Ci0gICAgcmV0dXJuIFdFQktJVF9ET01fREFUQUJBU0UoZ19vYmplY3RfbmV3KFdFQktJVF9E
T01fVFlQRV9EQVRBQkFTRSwgImNvcmUtb2JqZWN0IiwgY29yZU9iamVjdCwgbnVsbHB0cikpOwot
fQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotR19ERUZJTkVfVFlQRShXZWJLaXRET01EYXRh
YmFzZSwgd2Via2l0X2RvbV9kYXRhYmFzZSwgV0VCS0lUX0RPTV9UWVBFX09CSkVDVCkKLQotZW51
bSB7Ci0gICAgUFJPUF8wLAotICAgIFBST1BfVkVSU0lPTiwKLX07Ci0KLXN0YXRpYyB2b2lkIHdl
YmtpdF9kb21fZGF0YWJhc2VfZmluYWxpemUoR09iamVjdCogb2JqZWN0KQotewotICAgIFdlYktp
dERPTURhdGFiYXNlUHJpdmF0ZSogcHJpdiA9IFdFQktJVF9ET01fREFUQUJBU0VfR0VUX1BSSVZB
VEUob2JqZWN0KTsKLQotICAgIFdlYktpdDo6RE9NT2JqZWN0Q2FjaGU6OmZvcmdldChwcml2LT5j
b3JlT2JqZWN0LmdldCgpKTsKLQotICAgIHByaXYtPn5XZWJLaXRET01EYXRhYmFzZVByaXZhdGUo
KTsKLSAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfZG9tX2RhdGFiYXNlX3BhcmVudF9jbGFzcykt
PmZpbmFsaXplKG9iamVjdCk7Ci19Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdF9kb21fZGF0YWJhc2Vf
Z2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcGVydHlJZCwgR1ZhbHVlKiB2
YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpCi17Ci0gICAgV2ViS2l0RE9NRGF0YWJhc2UqIHNlbGYg
PSBXRUJLSVRfRE9NX0RBVEFCQVNFKG9iamVjdCk7Ci0KLSAgICBzd2l0Y2ggKHByb3BlcnR5SWQp
IHsKLSAgICBjYXNlIFBST1BfVkVSU0lPTjoKLSAgICAgICAgZ192YWx1ZV90YWtlX3N0cmluZyh2
YWx1ZSwgd2Via2l0X2RvbV9kYXRhYmFzZV9nZXRfdmVyc2lvbihzZWxmKSk7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJU
WV9JRChvYmplY3QsIHByb3BlcnR5SWQsIHBzcGVjKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQot
fQotCi1zdGF0aWMgR09iamVjdCogd2Via2l0X2RvbV9kYXRhYmFzZV9jb25zdHJ1Y3RvcihHVHlw
ZSB0eXBlLCBndWludCBjb25zdHJ1Y3RQcm9wZXJ0aWVzQ291bnQsIEdPYmplY3RDb25zdHJ1Y3RQ
YXJhbSogY29uc3RydWN0UHJvcGVydGllcykKLXsKLSAgICBHT2JqZWN0KiBvYmplY3QgPSBHX09C
SkVDVF9DTEFTUyh3ZWJraXRfZG9tX2RhdGFiYXNlX3BhcmVudF9jbGFzcyktPmNvbnN0cnVjdG9y
KHR5cGUsIGNvbnN0cnVjdFByb3BlcnRpZXNDb3VudCwgY29uc3RydWN0UHJvcGVydGllcyk7Ci0K
LSAgICBXZWJLaXRET01EYXRhYmFzZVByaXZhdGUqIHByaXYgPSBXRUJLSVRfRE9NX0RBVEFCQVNF
X0dFVF9QUklWQVRFKG9iamVjdCk7Ci0gICAgcHJpdi0+Y29yZU9iamVjdCA9IHN0YXRpY19jYXN0
PFdlYkNvcmU6OkRhdGFiYXNlKj4oV0VCS0lUX0RPTV9PQkpFQ1Qob2JqZWN0KS0+Y29yZU9iamVj
dCk7Ci0gICAgV2ViS2l0OjpET01PYmplY3RDYWNoZTo6cHV0KHByaXYtPmNvcmVPYmplY3QuZ2V0
KCksIG9iamVjdCk7Ci0KLSAgICByZXR1cm4gb2JqZWN0OwotfQotCi1zdGF0aWMgdm9pZCB3ZWJr
aXRfZG9tX2RhdGFiYXNlX2NsYXNzX2luaXQoV2ViS2l0RE9NRGF0YWJhc2VDbGFzcyogcmVxdWVz
dENsYXNzKQotewotICAgIEdPYmplY3RDbGFzcyogZ29iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xB
U1MocmVxdWVzdENsYXNzKTsKLSAgICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUoZ29iamVjdENs
YXNzLCBzaXplb2YoV2ViS2l0RE9NRGF0YWJhc2VQcml2YXRlKSk7Ci0gICAgZ29iamVjdENsYXNz
LT5jb25zdHJ1Y3RvciA9IHdlYmtpdF9kb21fZGF0YWJhc2VfY29uc3RydWN0b3I7Ci0gICAgZ29i
amVjdENsYXNzLT5maW5hbGl6ZSA9IHdlYmtpdF9kb21fZGF0YWJhc2VfZmluYWxpemU7Ci0gICAg
Z29iamVjdENsYXNzLT5nZXRfcHJvcGVydHkgPSB3ZWJraXRfZG9tX2RhdGFiYXNlX2dldF9wcm9w
ZXJ0eTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdv
YmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9WRVJTSU9OLAotICAgICAgICBnX3BhcmFtX3NwZWNf
c3RyaW5nKAotICAgICAgICAgICAgInZlcnNpb24iLAotICAgICAgICAgICAgIkRhdGFiYXNlOnZl
cnNpb24iLAotICAgICAgICAgICAgInJlYWQtb25seSBnY2hhciogRGF0YWJhc2U6dmVyc2lvbiIs
Ci0gICAgICAgICAgICAiIiwKLSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSkpOwot
Ci19Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdF9kb21fZGF0YWJhc2VfaW5pdChXZWJLaXRET01EYXRh
YmFzZSogcmVxdWVzdCkKLXsKLSAgICBXZWJLaXRET01EYXRhYmFzZVByaXZhdGUqIHByaXYgPSBX
RUJLSVRfRE9NX0RBVEFCQVNFX0dFVF9QUklWQVRFKHJlcXVlc3QpOwotICAgIG5ldyAocHJpdikg
V2ViS2l0RE9NRGF0YWJhc2VQcml2YXRlKCk7Ci19Ci0KLWdjaGFyKiB3ZWJraXRfZG9tX2RhdGFi
YXNlX2dldF92ZXJzaW9uKFdlYktpdERPTURhdGFiYXNlKiBzZWxmKQotewotICAgIFdlYkNvcmU6
OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChX
RUJLSVRfRE9NX0lTX0RBVEFCQVNFKHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpEYXRhYmFzZSog
aXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBnY2hhciogcmVzdWx0ID0gY29udmVydFRv
VVRGOFN0cmluZyhpdGVtLT52ZXJzaW9uKCkpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0
ay9ET00vV2ViS2l0RE9NRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRGF0YWJhc2UuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMTM1YTFiOS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURhdGFiYXNlLmgK
KysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi0vKgotICogIFRoaXMgZmlsZSBpcyBwYXJ0
IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAqICBUaGlzIGZpbGUgaGFzIGJl
ZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQotICoK
LSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAot
ICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
LSAqLwotCi0jaWZuZGVmIFdlYktpdERPTURhdGFiYXNlX2gKLSNkZWZpbmUgV2ViS2l0RE9NRGF0
YWJhc2VfaAotCi0jaWZkZWYgV0VCS0lUX0RPTV9VU0VfVU5TVEFCTEVfQVBJCi0KLSNpbmNsdWRl
IDxnbGliLW9iamVjdC5oPgotI2luY2x1ZGUgPHdlYmtpdGRvbS9XZWJLaXRET01PYmplY3QuaD4K
LSNpbmNsdWRlIDx3ZWJraXRkb20vd2Via2l0ZG9tZGVmaW5lcy11bnN0YWJsZS5oPgotCi1HX0JF
R0lOX0RFQ0xTCi0KLSNkZWZpbmUgV0VCS0lUX0RPTV9UWVBFX0RBVEFCQVNFICAgICAgICAgICAg
KHdlYmtpdF9kb21fZGF0YWJhc2VfZ2V0X3R5cGUoKSkKLSNkZWZpbmUgV0VCS0lUX0RPTV9EQVRB
QkFTRShvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBX
RUJLSVRfRE9NX1RZUEVfREFUQUJBU0UsIFdlYktpdERPTURhdGFiYXNlKSkKLSNkZWZpbmUgV0VC
S0lUX0RPTV9EQVRBQkFTRV9DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNU
KChrbGFzcyksICBXRUJLSVRfRE9NX1RZUEVfREFUQUJBU0UsIFdlYktpdERPTURhdGFiYXNlQ2xh
c3MpCi0jZGVmaW5lIFdFQktJVF9ET01fSVNfREFUQUJBU0Uob2JqKSAgICAgICAgIChHX1RZUEVf
Q0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX0RPTV9UWVBFX0RBVEFCQVNFKSkKLSNk
ZWZpbmUgV0VCS0lUX0RPTV9JU19EQVRBQkFTRV9DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19D
TEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfRE9NX1RZUEVfREFUQUJBU0UpKQotI2RlZmluZSBX
RUJLSVRfRE9NX0RBVEFCQVNFX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9D
TEFTUygob2JqKSwgIFdFQktJVF9ET01fVFlQRV9EQVRBQkFTRSwgV2ViS2l0RE9NRGF0YWJhc2VD
bGFzcykpCi0KLXN0cnVjdCBfV2ViS2l0RE9NRGF0YWJhc2UgewotICAgIFdlYktpdERPTU9iamVj
dCBwYXJlbnRfaW5zdGFuY2U7Ci19OwotCi1zdHJ1Y3QgX1dlYktpdERPTURhdGFiYXNlQ2xhc3Mg
ewotICAgIFdlYktpdERPTU9iamVjdENsYXNzIHBhcmVudF9jbGFzczsKLX07Ci0KLVdFQktJVF9B
UEkgR1R5cGUKLXdlYmtpdF9kb21fZGF0YWJhc2VfZ2V0X3R5cGUodm9pZCk7Ci0KLS8qKgotICog
d2Via2l0X2RvbV9kYXRhYmFzZV9nZXRfdmVyc2lvbjoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01E
YXRhYmFzZQotICoKLSAqIFJldHVybnM6IEEgI2djaGFyCi0gKgotICogU3RhYmlsaXR5OiBVbnN0
YWJsZQotKiovCi1XRUJLSVRfQVBJIGdjaGFyKgotd2Via2l0X2RvbV9kYXRhYmFzZV9nZXRfdmVy
c2lvbihXZWJLaXRET01EYXRhYmFzZSogc2VsZik7Ci0KLUdfRU5EX0RFQ0xTCi0KLSNlbmRpZiAv
KiBXRUJLSVRfRE9NX1VTRV9VTlNUQUJMRV9BUEkgKi8KLSNlbmRpZiAvKiBXZWJLaXRET01EYXRh
YmFzZV9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURhdGFiYXNlUHJpdmF0ZS5oIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01EYXRh
YmFzZVByaXZhdGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjEzMTJmNy4uMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
dGsvRE9NL1dlYktpdERPTURhdGFiYXNlUHJpdmF0ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMzMg
KzAsMCBAQAotLyoKLSAqICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291
cmNlIHByb2plY3QuCi0gKiAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0
ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiAg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
Ci0gKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0g
KgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
Ci0gKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBXZWJLaXRE
T01EYXRhYmFzZVByaXZhdGVfaAotI2RlZmluZSBXZWJLaXRET01EYXRhYmFzZVByaXZhdGVfaAot
Ci0jaW5jbHVkZSA8V2ViQ29yZS9EYXRhYmFzZS5oPgotI2luY2x1ZGUgPHdlYmtpdGRvbS9XZWJL
aXRET01EYXRhYmFzZS5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLVdlYktpdERPTURhdGFiYXNl
KiB3cmFwRGF0YWJhc2UoV2ViQ29yZTo6RGF0YWJhc2UqKTsKLVdlYktpdERPTURhdGFiYXNlKiBr
aXQoV2ViQ29yZTo6RGF0YWJhc2UqKTsKLVdlYkNvcmU6OkRhdGFiYXNlKiBjb3JlKFdlYktpdERP
TURhdGFiYXNlKik7Ci19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8qIFdlYktpdERP
TURhdGFiYXNlUHJpdmF0ZV9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURvY3VtZW50QW5pbWF0aW9u
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9E
T00vV2ViS2l0RE9NRG9jdW1lbnRBbmltYXRpb24uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA4ZjRjNDhmLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRG9jdW1lbnRBbmltYXRpb24uY3Bw
CisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi0vKgotICAgIFRoaXMgZmlsZSBpcyBnZW5l
cmF0ZWQganVzdCB0byB0ZWxsIGJ1aWxkIHNjcmlwdHMgdGhhdCBXZWJLaXRET01Eb2N1bWVudEFu
aW1hdGlvbi5oIGFuZAotICAgIFdlYktpdERPTURvY3VtZW50QW5pbWF0aW9uLmNwcCBhcmUgY3Jl
YXRlZCBmb3IgRG9jdW1lbnRBbmltYXRpb24uaWRsLCBhbmQgdGh1cwotICAgIHByZXZlbnQgdGhl
IGJ1aWxkIHNjcmlwdHMgZnJvbSB0cnlpbmcgdG8gZ2VuZXJhdGUgV2ViS2l0RE9NRG9jdW1lbnRB
bmltYXRpb24uaCBhbmQKLSAgICBXZWJLaXRET01Eb2N1bWVudEFuaW1hdGlvbi5jcHAgYXQgZXZl
cnkgYnVpbGQuIFRoaXMgZmlsZSBtdXN0IG5vdCBiZSB0cmllZCB0byBjb21waWxlLgotKi8KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0
ay9ET00vV2ViS2l0RE9NRG9jdW1lbnRBbmltYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRG9jdW1lbnRBbmltYXRp
b24uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGY0YzQ4Zi4uMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dl
YktpdERPTURvY3VtZW50QW5pbWF0aW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAK
LS8qCi0gICAgVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBqdXN0IHRvIHRlbGwgYnVpbGQgc2NyaXB0
cyB0aGF0IFdlYktpdERPTURvY3VtZW50QW5pbWF0aW9uLmggYW5kCi0gICAgV2ViS2l0RE9NRG9j
dW1lbnRBbmltYXRpb24uY3BwIGFyZSBjcmVhdGVkIGZvciBEb2N1bWVudEFuaW1hdGlvbi5pZGws
IGFuZCB0aHVzCi0gICAgcHJldmVudCB0aGUgYnVpbGQgc2NyaXB0cyBmcm9tIHRyeWluZyB0byBn
ZW5lcmF0ZSBXZWJLaXRET01Eb2N1bWVudEFuaW1hdGlvbi5oIGFuZAotICAgIFdlYktpdERPTURv
Y3VtZW50QW5pbWF0aW9uLmNwcCBhdCBldmVyeSBidWlsZC4gVGhpcyBmaWxlIG11c3Qgbm90IGJl
IHRyaWVkIHRvIGNvbXBpbGUuCi0qLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01Eb2N1bWVudFRpbWVsaW5l
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9E
T00vV2ViS2l0RE9NRG9jdW1lbnRUaW1lbGluZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGUwYTU2ZDMuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01Eb2N1bWVudFRpbWVsaW5lLmNwcAor
KysgL2Rldi9udWxsCkBAIC0xLDc3ICswLDAgQEAKLS8qCi0gKiAgVGhpcyBmaWxlIGlzIHBhcnQg
b2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICogIFRoaXMgZmlsZSBoYXMgYmVl
biBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0gKgot
ICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0g
KiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJLaXRET01Eb2N1bWVudFRp
bWVsaW5lLmgiCi0KLSNpbmNsdWRlIDxXZWJDb3JlL0NTU0ltcG9ydFJ1bGUuaD4KLSNpbmNsdWRl
ICJET01PYmplY3RDYWNoZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnQuaD4KLSNpbmNs
dWRlIDxXZWJDb3JlL0V4Y2VwdGlvbkNvZGUuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0V4Y2VwdGlv
bkNvZGVEZXNjcmlwdGlvbi5oPgotI2luY2x1ZGUgPFdlYkNvcmUvSlNNYWluVGhyZWFkRXhlY1N0
YXRlLmg+Ci0jaW5jbHVkZSAiV2ViS2l0RE9NRG9jdW1lbnRUaW1lbGluZVByaXZhdGUuaCIKLSNp
bmNsdWRlICJXZWJLaXRET01Qcml2YXRlLmgiCi0jaW5jbHVkZSAiQ29udmVydFRvVVRGOFN0cmlu
Zy5oIgotI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0K
LSNpZiBFTkFCTEUoV0VCX0FOSU1BVElPTlMpCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1XZWJL
aXRET01Eb2N1bWVudFRpbWVsaW5lKiBraXQoV2ViQ29yZTo6RG9jdW1lbnRUaW1lbGluZSogb2Jq
KQotewotICAgIGlmICghb2JqKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIGlmIChncG9pbnRl
ciByZXQgPSBET01PYmplY3RDYWNoZTo6Z2V0KG9iaikpCi0gICAgICAgIHJldHVybiBXRUJLSVRf
RE9NX0RPQ1VNRU5UX1RJTUVMSU5FKHJldCk7Ci0KLSAgICByZXR1cm4gd3JhcERvY3VtZW50VGlt
ZWxpbmUob2JqKTsKLX0KLQotV2ViQ29yZTo6RG9jdW1lbnRUaW1lbGluZSogY29yZShXZWJLaXRE
T01Eb2N1bWVudFRpbWVsaW5lKiByZXF1ZXN0KQotewotICAgIHJldHVybiByZXF1ZXN0ID8gc3Rh
dGljX2Nhc3Q8V2ViQ29yZTo6RG9jdW1lbnRUaW1lbGluZSo+KFdFQktJVF9ET01fT0JKRUNUKHJl
cXVlc3QpLT5jb3JlT2JqZWN0KSA6IDA7Ci19Ci0KLVdlYktpdERPTURvY3VtZW50VGltZWxpbmUq
IHdyYXBEb2N1bWVudFRpbWVsaW5lKFdlYkNvcmU6OkRvY3VtZW50VGltZWxpbmUqIGNvcmVPYmpl
Y3QpCi17Ci0gICAgQVNTRVJUKGNvcmVPYmplY3QpOwotICAgIHJldHVybiBXRUJLSVRfRE9NX0RP
Q1VNRU5UX1RJTUVMSU5FKGdfb2JqZWN0X25ldyhXRUJLSVRfRE9NX1RZUEVfRE9DVU1FTlRfVElN
RUxJTkUsICJjb3JlLW9iamVjdCIsIGNvcmVPYmplY3QsIG51bGxwdHIpKTsKLX0KLQotfSAvLyBu
YW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCX0FOSU1BVElPTlMpCi0KLUdf
REVGSU5FX1RZUEUoV2ViS2l0RE9NRG9jdW1lbnRUaW1lbGluZSwgd2Via2l0X2RvbV9kb2N1bWVu
dF90aW1lbGluZSwgV0VCS0lUX0RPTV9UWVBFX0FOSU1BVElPTl9USU1FTElORSkKLQotc3RhdGlj
IHZvaWQgd2Via2l0X2RvbV9kb2N1bWVudF90aW1lbGluZV9jbGFzc19pbml0KFdlYktpdERPTURv
Y3VtZW50VGltZWxpbmVDbGFzcyogcmVxdWVzdENsYXNzKQotewotICAgIFVOVVNFRF9QQVJBTShy
ZXF1ZXN0Q2xhc3MpOwotfQotCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX2RvY3VtZW50X3RpbWVs
aW5lX2luaXQoV2ViS2l0RE9NRG9jdW1lbnRUaW1lbGluZSogcmVxdWVzdCkKLXsKLSAgICBVTlVT
RURfUEFSQU0ocmVxdWVzdCk7Ci19Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRG9jdW1lbnRUaW1lbGlu
ZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RP
TS9XZWJLaXRET01Eb2N1bWVudFRpbWVsaW5lLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGJmZTg0Y2EuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01Eb2N1bWVudFRpbWVsaW5lLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0vKgotICogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRo
ZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAqICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2Vu
ZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQotICoKLSAqICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
Ci0gKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwot
Ci0jaWZuZGVmIFdlYktpdERPTURvY3VtZW50VGltZWxpbmVfaAotI2RlZmluZSBXZWJLaXRET01E
b2N1bWVudFRpbWVsaW5lX2gKLQotI2lmZGVmIFdFQktJVF9ET01fVVNFX1VOU1RBQkxFX0FQSQot
Ci0jaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KLSNpbmNsdWRlIDx3ZWJraXRkb20vV2ViS2l0RE9N
QW5pbWF0aW9uVGltZWxpbmUuaD4KLSNpbmNsdWRlIDx3ZWJraXRkb20vd2Via2l0ZG9tZGVmaW5l
cy11bnN0YWJsZS5oPgotCi1HX0JFR0lOX0RFQ0xTCi0KLSNkZWZpbmUgV0VCS0lUX0RPTV9UWVBF
X0RPQ1VNRU5UX1RJTUVMSU5FICAgICAgICAgICAgKHdlYmtpdF9kb21fZG9jdW1lbnRfdGltZWxp
bmVfZ2V0X3R5cGUoKSkKLSNkZWZpbmUgV0VCS0lUX0RPTV9ET0NVTUVOVF9USU1FTElORShvYmop
ICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBXRUJLSVRfRE9N
X1RZUEVfRE9DVU1FTlRfVElNRUxJTkUsIFdlYktpdERPTURvY3VtZW50VGltZWxpbmUpKQotI2Rl
ZmluZSBXRUJLSVRfRE9NX0RPQ1VNRU5UX1RJTUVMSU5FX0NMQVNTKGtsYXNzKSAgICAoR19UWVBF
X0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJVF9ET01fVFlQRV9ET0NVTUVOVF9USU1F
TElORSwgV2ViS2l0RE9NRG9jdW1lbnRUaW1lbGluZUNsYXNzKQotI2RlZmluZSBXRUJLSVRfRE9N
X0lTX0RPQ1VNRU5UX1RJTUVMSU5FKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNF
X1RZUEUoKG9iaiksIFdFQktJVF9ET01fVFlQRV9ET0NVTUVOVF9USU1FTElORSkpCi0jZGVmaW5l
IFdFQktJVF9ET01fSVNfRE9DVU1FTlRfVElNRUxJTkVfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hF
Q0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX0RPTV9UWVBFX0RPQ1VNRU5UX1RJTUVMSU5F
KSkKLSNkZWZpbmUgV0VCS0lUX0RPTV9ET0NVTUVOVF9USU1FTElORV9HRVRfQ0xBU1Mob2JqKSAg
KEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksICBXRUJLSVRfRE9NX1RZUEVfRE9DVU1F
TlRfVElNRUxJTkUsIFdlYktpdERPTURvY3VtZW50VGltZWxpbmVDbGFzcykpCi0KLXN0cnVjdCBf
V2ViS2l0RE9NRG9jdW1lbnRUaW1lbGluZSB7Ci0gICAgV2ViS2l0RE9NQW5pbWF0aW9uVGltZWxp
bmUgcGFyZW50X2luc3RhbmNlOwotfTsKLQotc3RydWN0IF9XZWJLaXRET01Eb2N1bWVudFRpbWVs
aW5lQ2xhc3MgewotICAgIFdlYktpdERPTUFuaW1hdGlvblRpbWVsaW5lQ2xhc3MgcGFyZW50X2Ns
YXNzOwotfTsKLQotV0VCS0lUX0FQSSBHVHlwZQotd2Via2l0X2RvbV9kb2N1bWVudF90aW1lbGlu
ZV9nZXRfdHlwZSh2b2lkKTsKLQotR19FTkRfREVDTFMKLQotI2VuZGlmIC8qIFdFQktJVF9ET01f
VVNFX1VOU1RBQkxFX0FQSSAqLwotI2VuZGlmIC8qIFdlYktpdERPTURvY3VtZW50VGltZWxpbmVf
aCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01Eb2N1bWVudFRpbWVsaW5lUHJpdmF0ZS5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01E
b2N1bWVudFRpbWVsaW5lUHJpdmF0ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBj
OTE2NTdjLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRG9jdW1lbnRUaW1lbGluZVByaXZhdGUuaAorKysg
L2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLS8qCi0gKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2Yg
dGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICogIFRoaXMgZmlsZSBoYXMgYmVlbiBn
ZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICog
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAg
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICov
Ci0KLSNpZm5kZWYgV2ViS2l0RE9NRG9jdW1lbnRUaW1lbGluZVByaXZhdGVfaAotI2RlZmluZSBX
ZWJLaXRET01Eb2N1bWVudFRpbWVsaW5lUHJpdmF0ZV9oCi0KLSNpbmNsdWRlIDxXZWJDb3JlL0Rv
Y3VtZW50VGltZWxpbmUuaD4KLSNpbmNsdWRlIDx3ZWJraXRkb20vV2ViS2l0RE9NRG9jdW1lbnRU
aW1lbGluZS5oPgotI2lmIEVOQUJMRShXRUJfQU5JTUFUSU9OUykKLQotbmFtZXNwYWNlIFdlYktp
dCB7Ci1XZWJLaXRET01Eb2N1bWVudFRpbWVsaW5lKiB3cmFwRG9jdW1lbnRUaW1lbGluZShXZWJD
b3JlOjpEb2N1bWVudFRpbWVsaW5lKik7Ci1XZWJLaXRET01Eb2N1bWVudFRpbWVsaW5lKiBraXQo
V2ViQ29yZTo6RG9jdW1lbnRUaW1lbGluZSopOwotV2ViQ29yZTo6RG9jdW1lbnRUaW1lbGluZSog
Y29yZShXZWJLaXRET01Eb2N1bWVudFRpbWVsaW5lKik7Ci19IC8vIG5hbWVzcGFjZSBXZWJLaXQK
LQotI2VuZGlmIC8qIEVOQUJMRShXRUJfQU5JTUFUSU9OUykgKi8KLQotI2VuZGlmIC8qIFdlYktp
dERPTURvY3VtZW50VGltZWxpbmVQcml2YXRlX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRG9jdW1l
bnRUeXBlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2d0ay9ET00vV2ViS2l0RE9NRG9jdW1lbnRUeXBlLmNwcAppbmRleCA5ODkxYzk0Li5kNzgyZDM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9ndGsvRE9NL1dlYktpdERPTURvY3VtZW50VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01Eb2N1bWVudFR5
cGUuY3BwCkBAIC0zNSw3ICszNSw2IEBACiAjaW5jbHVkZSAiV2ViS2l0RE9NTm9kZVByaXZhdGUu
aCIKICNpbmNsdWRlICJXZWJLaXRET01Qcml2YXRlLmgiCiAjaW5jbHVkZSAiQ29udmVydFRvVVRG
OFN0cmluZy5oIgotI2luY2x1ZGUgIldlYktpdERPTURvY3VtZW50VHlwZVVuc3RhYmxlLmgiCiAj
aW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApAQCAtMjA3
LDIwICsyMDYsNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX2RvY3VtZW50X3R5cGVfaW5pdChX
ZWJLaXRET01Eb2N1bWVudFR5cGUqIHJlcXVlc3QpCiAgICAgVU5VU0VEX1BBUkFNKHJlcXVlc3Qp
OwogfQogCi12b2lkIHdlYmtpdF9kb21fZG9jdW1lbnRfdHlwZV9yZW1vdmUoV2ViS2l0RE9NRG9j
dW1lbnRUeXBlKiBzZWxmLCBHRXJyb3IqKiBlcnJvcikKLXsKLSAgICBXZWJDb3JlOjpKU01haW5U
aHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lT
X0RPQ1VNRU5UX1RZUEUoc2VsZikpOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwoIWVycm9yIHx8ICEq
ZXJyb3IpOwotICAgIFdlYkNvcmU6OkRvY3VtZW50VHlwZSogaXRlbSA9IFdlYktpdDo6Y29yZShz
ZWxmKTsKLSAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBpdGVtLT5yZW1v
dmUoZWMpOwotICAgIGlmIChlYykgewotICAgICAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlRGVz
Y3JpcHRpb24gZWNkZXNjKGVjKTsKLSAgICAgICAgZ19zZXRfZXJyb3JfbGl0ZXJhbChlcnJvciwg
Z19xdWFya19mcm9tX3N0cmluZygiV0VCS0lUX0RPTSIpLCBlY2Rlc2MuY29kZSwgZWNkZXNjLm5h
bWUpOwotICAgIH0KLX0KLQogZ2NoYXIqIHdlYmtpdF9kb21fZG9jdW1lbnRfdHlwZV9nZXRfbmFt
ZShXZWJLaXRET01Eb2N1bWVudFR5cGUqIHNlbGYpCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhy
ZWFkTnVsbFN0YXRlIHN0YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01Eb2N1bWVudFR5cGVVbnN0YWJs
ZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RP
TS9XZWJLaXRET01Eb2N1bWVudFR5cGVVbnN0YWJsZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA1Y2E0YzNiLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRG9jdW1lbnRUeXBlVW5zdGFibGUu
aAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLS8qCi0gKiAgVGhpcyBmaWxlIGlzIHBh
cnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICogIFRoaXMgZmlsZSBoYXMg
YmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0g
KgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
Ci0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgotICovCi0KLSNpZm5kZWYgV2ViS2l0RE9NRG9jdW1lbnRUeXBlVW5zdGFibGVfaAotI2RlZmlu
ZSBXZWJLaXRET01Eb2N1bWVudFR5cGVVbnN0YWJsZV9oCi0KLSNpZmRlZiBXRUJLSVRfRE9NX1VT
RV9VTlNUQUJMRV9BUEkKLQotI2luY2x1ZGUgPHdlYmtpdGRvbS93ZWJraXRkb21kZWZpbmVzLXVu
c3RhYmxlLmg+Ci0KLUdfQkVHSU5fREVDTFMKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2RvY3VtZW50
X3R5cGVfcmVtb3ZlOgotICogQHNlbGY6IEEgI1dlYktpdERPTURvY3VtZW50VHlwZQotICogQGVy
cm9yOiAjR0Vycm9yCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJ
IHZvaWQKLXdlYmtpdF9kb21fZG9jdW1lbnRfdHlwZV9yZW1vdmUoV2ViS2l0RE9NRG9jdW1lbnRU
eXBlKiBzZWxmLCBHRXJyb3IqKiBlcnJvcik7Ci0KLQotR19FTkRfREVDTFMKLQotI2VuZGlmIC8q
IFdFQktJVF9ET01fVVNFX1VOU1RBQkxFX0FQSSAqLwotI2VuZGlmIC8qIFdlYktpdERPTURvY3Vt
ZW50VHlwZVVuc3RhYmxlX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRXZlbnQuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01F
dmVudC5jcHAKaW5kZXggYjk0NmJlZS4uMzI4NGQyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01FdmVudC5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3Rr
L0RPTS9XZWJLaXRET01FdmVudC5jcHAKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJXZWJL
aXRET01FdmVudFRhcmdldFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRET01Qcml2YXRlLmgi
CiAjaW5jbHVkZSAiQ29udmVydFRvVVRGOFN0cmluZy5oIgotI2luY2x1ZGUgIldlYktpdERPTUV2
ZW50VW5zdGFibGUuaCIKICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgogCkBAIC03NywxMCArNzYsNyBAQCBlbnVtIHsKICAgICBQUk9QX0VWRU5UX1BIQVNF
LAogICAgIFBST1BfQlVCQkxFUywKICAgICBQUk9QX0NBTkNFTEFCTEUsCi0gICAgUFJPUF9DT01Q
T1NFRCwKICAgICBQUk9QX1RJTUVfU1RBTVAsCi0gICAgUFJPUF9ERUZBVUxUX1BSRVZFTlRFRCwK
LSAgICBQUk9QX0lTX1RSVVNURUQsCiAgICAgUFJPUF9TUkNfRUxFTUVOVCwKICAgICBQUk9QX1JF
VFVSTl9WQUxVRSwKICAgICBQUk9QX0NBTkNFTF9CVUJCTEUsCkBAIC0xMzYsMTggKzEzMiw5IEBA
IHN0YXRpYyB2b2lkIHdlYmtpdF9kb21fZXZlbnRfZ2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVj
dCwgZ3VpbnQgcHJvcGVydHlJZCwgR1ZhCiAgICAgY2FzZSBQUk9QX0NBTkNFTEFCTEU6CiAgICAg
ICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF9kb21fZXZlbnRfZ2V0X2NhbmNl
bGFibGUoc2VsZikpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfQ09NUE9TRUQ6Ci0g
ICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF9kb21fZXZlbnRfZ2V0X2Nv
bXBvc2VkKHNlbGYpKTsKLSAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9QX1RJTUVfU1RBTVA6
CiAgICAgICAgIGdfdmFsdWVfc2V0X3VpbnQodmFsdWUsIHdlYmtpdF9kb21fZXZlbnRfZ2V0X3Rp
bWVfc3RhbXAoc2VsZikpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfREVGQVVMVF9Q
UkVWRU5URUQ6Ci0gICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF9kb21f
ZXZlbnRfZ2V0X2RlZmF1bHRfcHJldmVudGVkKHNlbGYpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBQUk9QX0lTX1RSVVNURUQ6Ci0gICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUs
IHdlYmtpdF9kb21fZXZlbnRfZ2V0X2lzX3RydXN0ZWQoc2VsZikpOwotICAgICAgICBicmVhazsK
ICAgICBjYXNlIFBST1BfU1JDX0VMRU1FTlQ6CiAgICAgICAgIGdfdmFsdWVfc2V0X29iamVjdCh2
YWx1ZSwgd2Via2l0X2RvbV9ldmVudF9nZXRfc3JjX2VsZW1lbnQoc2VsZikpOwogICAgICAgICBi
cmVhazsKQEAgLTI0NSwxNiArMjMyLDYgQEAgc3RhdGljIHZvaWQgd2Via2l0X2RvbV9ldmVudF9j
bGFzc19pbml0KFdlYktpdERPTUV2ZW50Q2xhc3MqIHJlcXVlc3RDbGFzcykKIAogICAgIGdfb2Jq
ZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCiAgICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAg
ICAgUFJPUF9DT01QT1NFRCwKLSAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oCi0gICAgICAg
ICAgICAiY29tcG9zZWQiLAotICAgICAgICAgICAgIkV2ZW50OmNvbXBvc2VkIiwKLSAgICAgICAg
ICAgICJyZWFkLW9ubHkgZ2Jvb2xlYW4gRXZlbnQ6Y29tcG9zZWQiLAotICAgICAgICAgICAgRkFM
U0UsCi0gICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKLQotICAgIGdfb2JqZWN0
X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKICAgICAgICAg
UFJPUF9USU1FX1NUQU1QLAogICAgICAgICBnX3BhcmFtX3NwZWNfdWludCgKICAgICAgICAgICAg
ICJ0aW1lLXN0YW1wIiwKQEAgLTI2NSwyNiArMjQyLDYgQEAgc3RhdGljIHZvaWQgd2Via2l0X2Rv
bV9ldmVudF9jbGFzc19pbml0KFdlYktpdERPTUV2ZW50Q2xhc3MqIHJlcXVlc3RDbGFzcykKIAog
ICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCiAgICAgICAgIGdvYmplY3RDbGFz
cywKLSAgICAgICAgUFJPUF9ERUZBVUxUX1BSRVZFTlRFRCwKLSAgICAgICAgZ19wYXJhbV9zcGVj
X2Jvb2xlYW4oCi0gICAgICAgICAgICAiZGVmYXVsdC1wcmV2ZW50ZWQiLAotICAgICAgICAgICAg
IkV2ZW50OmRlZmF1bHQtcHJldmVudGVkIiwKLSAgICAgICAgICAgICJyZWFkLW9ubHkgZ2Jvb2xl
YW4gRXZlbnQ6ZGVmYXVsdC1wcmV2ZW50ZWQiLAotICAgICAgICAgICAgRkFMU0UsCi0gICAgICAg
ICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3Rh
bGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9JU19UUlVT
VEVELAotICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigKLSAgICAgICAgICAgICJpcy10cnVz
dGVkIiwKLSAgICAgICAgICAgICJFdmVudDppcy10cnVzdGVkIiwKLSAgICAgICAgICAgICJyZWFk
LW9ubHkgZ2Jvb2xlYW4gRXZlbnQ6aXMtdHJ1c3RlZCIsCi0gICAgICAgICAgICBGQUxTRSwKLSAg
ICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSkpOwotCi0gICAgZ19vYmplY3RfY2xhc3Nf
aW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAgZ29iamVjdENsYXNzLAogICAgICAgICBQUk9QX1NS
Q19FTEVNRU5ULAogICAgICAgICBnX3BhcmFtX3NwZWNfb2JqZWN0KAogICAgICAgICAgICAgInNy
Yy1lbGVtZW50IiwKQEAgLTM0NywxNCArMzA0LDYgQEAgdm9pZCB3ZWJraXRfZG9tX2V2ZW50X2lu
aXRfZXZlbnQoV2ViS2l0RE9NRXZlbnQqIHNlbGYsIGNvbnN0IGdjaGFyKiBldmVudFR5cGVBcmcK
ICAgICBpdGVtLT5pbml0RXZlbnQoY29udmVydGVkRXZlbnRUeXBlQXJnLCBjYW5CdWJibGVBcmcs
IGNhbmNlbGFibGVBcmcpOwogfQogCi12b2lkIHdlYmtpdF9kb21fZXZlbnRfc3RvcF9pbW1lZGlh
dGVfcHJvcGFnYXRpb24oV2ViS2l0RE9NRXZlbnQqIHNlbGYpCi17Ci0gICAgV2ViQ29yZTo6SlNN
YWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RP
TV9JU19FVkVOVChzZWxmKSk7Ci0gICAgV2ViQ29yZTo6RXZlbnQqIGl0ZW0gPSBXZWJLaXQ6OmNv
cmUoc2VsZik7Ci0gICAgaXRlbS0+c3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7Ci19Ci0KIGdj
aGFyKiB3ZWJraXRfZG9tX2V2ZW50X2dldF9ldmVudF90eXBlKFdlYktpdERPTUV2ZW50KiBzZWxm
KQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKQEAgLTQwOSwx
NSArMzU4LDYgQEAgZ2Jvb2xlYW4gd2Via2l0X2RvbV9ldmVudF9nZXRfY2FuY2VsYWJsZShXZWJL
aXRET01FdmVudCogc2VsZikKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1nYm9vbGVhbiB3ZWJr
aXRfZG9tX2V2ZW50X2dldF9jb21wb3NlZChXZWJLaXRET01FdmVudCogc2VsZikKLXsKLSAgICBX
ZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoV0VCS0lUX0RPTV9JU19FVkVOVChzZWxmKSwgRkFMU0UpOwotICAgIFdlYkNvcmU6OkV2
ZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdib29sZWFuIHJlc3VsdCA9IGl0
ZW0tPmNvbXBvc2VkKCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQogZ3VpbnQzMiB3ZWJraXRf
ZG9tX2V2ZW50X2dldF90aW1lX3N0YW1wKFdlYktpdERPTUV2ZW50KiBzZWxmKQogewogICAgIFdl
YkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKQEAgLTQyNywyNCArMzY3LDYgQEAg
Z3VpbnQzMiB3ZWJraXRfZG9tX2V2ZW50X2dldF90aW1lX3N0YW1wKFdlYktpdERPTUV2ZW50KiBz
ZWxmKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWdib29sZWFuIHdlYmtpdF9kb21fZXZlbnRf
Z2V0X2RlZmF1bHRfcHJldmVudGVkKFdlYktpdERPTUV2ZW50KiBzZWxmKQotewotICAgIFdlYkNv
cmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFp
bChXRUJLSVRfRE9NX0lTX0VWRU5UKHNlbGYpLCBGQUxTRSk7Ci0gICAgV2ViQ29yZTo6RXZlbnQq
IGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ2Jvb2xlYW4gcmVzdWx0ID0gaXRlbS0+
ZGVmYXVsdFByZXZlbnRlZCgpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLWdib29sZWFuIHdl
YmtpdF9kb21fZXZlbnRfZ2V0X2lzX3RydXN0ZWQoV2ViS2l0RE9NRXZlbnQqIHNlbGYpCi17Ci0g
ICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKFdFQktJVF9ET01fSVNfRVZFTlQoc2VsZiksIEZBTFNFKTsKLSAgICBXZWJDb3Jl
OjpFdmVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBnYm9vbGVhbiByZXN1bHQg
PSBpdGVtLT5pc1RydXN0ZWQoKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCiBXZWJLaXRET01F
dmVudFRhcmdldCogd2Via2l0X2RvbV9ldmVudF9nZXRfc3JjX2VsZW1lbnQoV2ViS2l0RE9NRXZl
bnQqIHNlbGYpCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z3RrL0RPTS9XZWJLaXRET01FdmVudFVuc3RhYmxlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUV2ZW50VW5zdGFibGUuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDY4MTY2NS4uMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERP
TUV2ZW50VW5zdGFibGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDc2ICswLDAgQEAKLS8qCi0gKiAg
VGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICog
IFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERP
IE5PVCBNT0RJRlkhCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
LSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgV2ViS2l0RE9NRXZlbnRVbnN0YWJsZV9o
Ci0jZGVmaW5lIFdlYktpdERPTUV2ZW50VW5zdGFibGVfaAotCi0jaWZkZWYgV0VCS0lUX0RPTV9V
U0VfVU5TVEFCTEVfQVBJCi0KLSNpbmNsdWRlIDx3ZWJraXRkb20vd2Via2l0ZG9tZGVmaW5lcy11
bnN0YWJsZS5oPgotCi1HX0JFR0lOX0RFQ0xTCi0KLS8qKgotICogd2Via2l0X2RvbV9ldmVudF9z
dG9wX2ltbWVkaWF0ZV9wcm9wYWdhdGlvbjoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01FdmVudAot
ICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSB2b2lkCi13ZWJraXRf
ZG9tX2V2ZW50X3N0b3BfaW1tZWRpYXRlX3Byb3BhZ2F0aW9uKFdlYktpdERPTUV2ZW50KiBzZWxm
KTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2V2ZW50X2dldF9jb21wb3NlZDoKLSAqIEBzZWxmOiBB
ICNXZWJLaXRET01FdmVudAotICoKLSAqIFJldHVybnM6IEEgI2dib29sZWFuCi0gKgotICogU3Rh
YmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIGdib29sZWFuCi13ZWJraXRfZG9tX2V2
ZW50X2dldF9jb21wb3NlZChXZWJLaXRET01FdmVudCogc2VsZik7Ci0KLS8qKgotICogd2Via2l0
X2RvbV9ldmVudF9nZXRfZGVmYXVsdF9wcmV2ZW50ZWQ6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9N
RXZlbnQKLSAqCi0gKiBSZXR1cm5zOiBBICNnYm9vbGVhbgotICoKLSAqIFN0YWJpbGl0eTogVW5z
dGFibGUKLSoqLwotV0VCS0lUX0FQSSBnYm9vbGVhbgotd2Via2l0X2RvbV9ldmVudF9nZXRfZGVm
YXVsdF9wcmV2ZW50ZWQoV2ViS2l0RE9NRXZlbnQqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9k
b21fZXZlbnRfZ2V0X2lzX3RydXN0ZWQ6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NRXZlbnQKLSAq
Ci0gKiBSZXR1cm5zOiBBICNnYm9vbGVhbgotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoq
LwotV0VCS0lUX0FQSSBnYm9vbGVhbgotd2Via2l0X2RvbV9ldmVudF9nZXRfaXNfdHJ1c3RlZChX
ZWJLaXRET01FdmVudCogc2VsZik7Ci0KLQotR19FTkRfREVDTFMKLQotI2VuZGlmIC8qIFdFQktJ
VF9ET01fVVNFX1VOU1RBQkxFX0FQSSAqLwotI2VuZGlmIC8qIFdlYktpdERPTUV2ZW50VW5zdGFi
bGVfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01GaWxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRmlsZS5jcHAKaW5kZXgg
ZTEyOWMwYi4uMmI2YmJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01GaWxlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUZp
bGUuY3BwCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiV2ViS2l0RE9NRmlsZVByaXZhdGUu
aCIKICNpbmNsdWRlICJXZWJLaXRET01Qcml2YXRlLmgiCiAjaW5jbHVkZSAiQ29udmVydFRvVVRG
OFN0cmluZy5oIgotI2luY2x1ZGUgIldlYktpdERPTUZpbGVVbnN0YWJsZS5oIgogI2luY2x1ZGUg
PHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKQEAgLTYwLDcgKzU5LDYg
QEAgR19ERUZJTkVfVFlQRShXZWJLaXRET01GaWxlLCB3ZWJraXRfZG9tX2ZpbGUsIFdFQktJVF9E
T01fVFlQRV9CTE9CKQogZW51bSB7CiAgICAgUFJPUF8wLAogICAgIFBST1BfTkFNRSwKLSAgICBQ
Uk9QX0xBU1RfTU9ESUZJRUQsCiB9OwogCiBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX2ZpbGVfZ2V0
X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcGVydHlJZCwgR1ZhbHVlKiB2YWx1
ZSwgR1BhcmFtU3BlYyogcHNwZWMpCkBAIC03MSw5ICs2OSw2IEBAIHN0YXRpYyB2b2lkIHdlYmtp
dF9kb21fZmlsZV9nZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wZXJ0eUlk
LCBHVmFsCiAgICAgY2FzZSBQUk9QX05BTUU6CiAgICAgICAgIGdfdmFsdWVfdGFrZV9zdHJpbmco
dmFsdWUsIHdlYmtpdF9kb21fZmlsZV9nZXRfbmFtZShzZWxmKSk7CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgUFJPUF9MQVNUX01PRElGSUVEOgotICAgICAgICBnX3ZhbHVlX3NldF9pbnQ2NCh2
YWx1ZSwgd2Via2l0X2RvbV9maWxlX2dldF9sYXN0X21vZGlmaWVkKHNlbGYpKTsKLSAgICAgICAg
YnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BF
UlRZX0lEKG9iamVjdCwgcHJvcGVydHlJZCwgcHNwZWMpOwogICAgICAgICBicmVhazsKQEAgLTk0
LDE3ICs4OSw2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21fZmlsZV9jbGFzc19pbml0KFdlYktp
dERPTUZpbGVDbGFzcyogcmVxdWVzdENsYXNzKQogICAgICAgICAgICAgInJlYWQtb25seSBnY2hh
ciogRmlsZTpuYW1lIiwKICAgICAgICAgICAgICIiLAogICAgICAgICAgICAgV0VCS0lUX1BBUkFN
X1JFQURBQkxFKSk7Ci0KLSAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAotICAg
ICAgICBnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBST1BfTEFTVF9NT0RJRklFRCwKLSAgICAgICAg
Z19wYXJhbV9zcGVjX2ludDY0KAotICAgICAgICAgICAgImxhc3QtbW9kaWZpZWQiLAotICAgICAg
ICAgICAgIkZpbGU6bGFzdC1tb2RpZmllZCIsCi0gICAgICAgICAgICAicmVhZC1vbmx5IGdpbnQ2
NCBGaWxlOmxhc3QtbW9kaWZpZWQiLAotICAgICAgICAgICAgR19NSU5JTlQ2NCwgR19NQVhJTlQ2
NCwgMCwKLSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSkpOwotCiB9CiAKIHN0YXRp
YyB2b2lkIHdlYmtpdF9kb21fZmlsZV9pbml0KFdlYktpdERPTUZpbGUqIHJlcXVlc3QpCkBAIC0x
MjAsMTMgKzEwNCwzIEBAIGdjaGFyKiB3ZWJraXRfZG9tX2ZpbGVfZ2V0X25hbWUoV2ViS2l0RE9N
RmlsZSogc2VsZikKICAgICBnY2hhciogcmVzdWx0ID0gY29udmVydFRvVVRGOFN0cmluZyhpdGVt
LT5uYW1lKCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9Ci0KLWdpbnQ2NCB3ZWJraXRfZG9tX2Zp
bGVfZ2V0X2xhc3RfbW9kaWZpZWQoV2ViS2l0RE9NRmlsZSogc2VsZikKLXsKLSAgICBXZWJDb3Jl
OjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwo
V0VCS0lUX0RPTV9JU19GSUxFKHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpGaWxlKiBpdGVtID0g
V2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdpbnQ2NCByZXN1bHQgPSBpdGVtLT5sYXN0TW9kaWZp
ZWQoKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUZpbGVVbnN0
YWJsZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3Rr
L0RPTS9XZWJLaXRET01GaWxlVW5zdGFibGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZGJkZGYyMy4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUZpbGVVbnN0YWJsZS5oCisrKyAvZGV2L251
bGwKQEAgLTEsNDUgKzAsMCBAQAotLyoKLSAqICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2Vi
S2l0IG9wZW4gc291cmNlIHByb2plY3QuCi0gKiAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRl
ZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKLSAqCi0gKiAgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgot
ICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgot
ICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCi0gKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqICBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICog
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCi0gKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lm
bmRlZiBXZWJLaXRET01GaWxlVW5zdGFibGVfaAotI2RlZmluZSBXZWJLaXRET01GaWxlVW5zdGFi
bGVfaAotCi0jaWZkZWYgV0VCS0lUX0RPTV9VU0VfVU5TVEFCTEVfQVBJCi0KLSNpbmNsdWRlIDx3
ZWJraXRkb20vd2Via2l0ZG9tZGVmaW5lcy11bnN0YWJsZS5oPgotCi1HX0JFR0lOX0RFQ0xTCi0K
LS8qKgotICogd2Via2l0X2RvbV9maWxlX2dldF9sYXN0X21vZGlmaWVkOgotICogQHNlbGY6IEEg
I1dlYktpdERPTUZpbGUKLSAqCi0gKiBSZXR1cm5zOiBBICNnaW50NjQKLSAqCi0gKiBTdGFiaWxp
dHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgZ2ludDY0Ci13ZWJraXRfZG9tX2ZpbGVfZ2V0
X2xhc3RfbW9kaWZpZWQoV2ViS2l0RE9NRmlsZSogc2VsZik7Ci0KLQotR19FTkRfREVDTFMKLQot
I2VuZGlmIC8qIFdFQktJVF9ET01fVVNFX1VOU1RBQkxFX0FQSSAqLwotI2VuZGlmIC8qIFdlYktp
dERPTUZpbGVVbnN0YWJsZV9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUdhbWVwYWQuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRE
T01HYW1lcGFkLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDM5NTQ1Mi4uMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
dGsvRE9NL1dlYktpdERPTUdhbWVwYWQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBA
Ci0vKgotICAgIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQganVzdCB0byB0ZWxsIGJ1aWxkIHNjcmlw
dHMgdGhhdCBXZWJLaXRET01HYW1lcGFkLmggYW5kCi0gICAgV2ViS2l0RE9NR2FtZXBhZC5jcHAg
YXJlIGNyZWF0ZWQgZm9yIEdhbWVwYWQuaWRsLCBhbmQgdGh1cwotICAgIHByZXZlbnQgdGhlIGJ1
aWxkIHNjcmlwdHMgZnJvbSB0cnlpbmcgdG8gZ2VuZXJhdGUgV2ViS2l0RE9NR2FtZXBhZC5oIGFu
ZAotICAgIFdlYktpdERPTUdhbWVwYWQuY3BwIGF0IGV2ZXJ5IGJ1aWxkLiBUaGlzIGZpbGUgbXVz
dCBub3QgYmUgdHJpZWQgdG8gY29tcGlsZS4KLSovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUdhbWVwYWQu
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00v
V2ViS2l0RE9NR2FtZXBhZC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMzk1NDUy
Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2d0ay9ET00vV2ViS2l0RE9NR2FtZXBhZC5oCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCww
IEBACi0vKgotICAgIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQganVzdCB0byB0ZWxsIGJ1aWxkIHNj
cmlwdHMgdGhhdCBXZWJLaXRET01HYW1lcGFkLmggYW5kCi0gICAgV2ViS2l0RE9NR2FtZXBhZC5j
cHAgYXJlIGNyZWF0ZWQgZm9yIEdhbWVwYWQuaWRsLCBhbmQgdGh1cwotICAgIHByZXZlbnQgdGhl
IGJ1aWxkIHNjcmlwdHMgZnJvbSB0cnlpbmcgdG8gZ2VuZXJhdGUgV2ViS2l0RE9NR2FtZXBhZC5o
IGFuZAotICAgIFdlYktpdERPTUdhbWVwYWQuY3BwIGF0IGV2ZXJ5IGJ1aWxkLiBUaGlzIGZpbGUg
bXVzdCBub3QgYmUgdHJpZWQgdG8gY29tcGlsZS4KLSovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUdhbWVw
YWRMaXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2d0ay9ET00vV2ViS2l0RE9NR2FtZXBhZExpc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBmYjc4MTQ3Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NR2FtZXBhZExpc3QuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi0vKgotICAgIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQg
anVzdCB0byB0ZWxsIGJ1aWxkIHNjcmlwdHMgdGhhdCBXZWJLaXRET01HYW1lcGFkTGlzdC5oIGFu
ZAotICAgIFdlYktpdERPTUdhbWVwYWRMaXN0LmNwcCBhcmUgY3JlYXRlZCBmb3IgR2FtZXBhZExp
c3QuaWRsLCBhbmQgdGh1cwotICAgIHByZXZlbnQgdGhlIGJ1aWxkIHNjcmlwdHMgZnJvbSB0cnlp
bmcgdG8gZ2VuZXJhdGUgV2ViS2l0RE9NR2FtZXBhZExpc3QuaCBhbmQKLSAgICBXZWJLaXRET01H
YW1lcGFkTGlzdC5jcHAgYXQgZXZlcnkgYnVpbGQuIFRoaXMgZmlsZSBtdXN0IG5vdCBiZSB0cmll
ZCB0byBjb21waWxlLgotKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NR2FtZXBhZExpc3QuaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9N
R2FtZXBhZExpc3QuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmI3ODE0Ny4uMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
dGsvRE9NL1dlYktpdERPTUdhbWVwYWRMaXN0LmgKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAg
QEAKLS8qCi0gICAgVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBqdXN0IHRvIHRlbGwgYnVpbGQgc2Ny
aXB0cyB0aGF0IFdlYktpdERPTUdhbWVwYWRMaXN0LmggYW5kCi0gICAgV2ViS2l0RE9NR2FtZXBh
ZExpc3QuY3BwIGFyZSBjcmVhdGVkIGZvciBHYW1lcGFkTGlzdC5pZGwsIGFuZCB0aHVzCi0gICAg
cHJldmVudCB0aGUgYnVpbGQgc2NyaXB0cyBmcm9tIHRyeWluZyB0byBnZW5lcmF0ZSBXZWJLaXRE
T01HYW1lcGFkTGlzdC5oIGFuZAotICAgIFdlYktpdERPTUdhbWVwYWRMaXN0LmNwcCBhdCBldmVy
eSBidWlsZC4gVGhpcyBmaWxlIG11c3Qgbm90IGJlIHRyaWVkIHRvIGNvbXBpbGUuCi0qLwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3Rr
L0RPTS9XZWJLaXRET01HZW9sb2NhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUdlb2xvY2F0aW9uLmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDU1Mzg0Zi4uMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUdl
b2xvY2F0aW9uLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyNCArMCwwIEBACi0vKgotICogIFRo
aXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAqICBU
aGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBO
T1QgTU9ESUZZIQotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0g
KgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQotICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2Vi
S2l0RE9NR2VvbG9jYXRpb24uaCIKLQotI2luY2x1ZGUgPFdlYkNvcmUvQ1NTSW1wb3J0UnVsZS5o
PgotI2luY2x1ZGUgIkRPTU9iamVjdENhY2hlLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVu
dC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRXhjZXB0aW9uQ29kZS5oPgotI2luY2x1ZGUgPFdlYkNv
cmUvRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9KU01haW5U
aHJlYWRFeGVjU3RhdGUuaD4KLSNpbmNsdWRlICJXZWJLaXRET01HZW9sb2NhdGlvblByaXZhdGUu
aCIKLSNpbmNsdWRlICJXZWJLaXRET01Qcml2YXRlLmgiCi0jaW5jbHVkZSAiQ29udmVydFRvVVRG
OFN0cmluZy5oIgotI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+Ci0KLSNkZWZpbmUgV0VCS0lUX0RPTV9HRU9MT0NBVElPTl9HRVRfUFJJVkFURShvYmopIEdf
VFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURShvYmosIFdFQktJVF9ET01fVFlQRV9HRU9MT0NBVElP
TiwgV2ViS2l0RE9NR2VvbG9jYXRpb25Qcml2YXRlKQotCi10eXBlZGVmIHN0cnVjdCBfV2ViS2l0
RE9NR2VvbG9jYXRpb25Qcml2YXRlIHsKLSNpZiBFTkFCTEUoR0VPTE9DQVRJT04pCi0gICAgUmVm
UHRyPFdlYkNvcmU6Okdlb2xvY2F0aW9uPiBjb3JlT2JqZWN0OwotI2VuZGlmIC8vIEVOQUJMRShH
RU9MT0NBVElPTikKLX0gV2ViS2l0RE9NR2VvbG9jYXRpb25Qcml2YXRlOwotCi0jaWYgRU5BQkxF
KEdFT0xPQ0FUSU9OKQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotV2ViS2l0RE9NR2VvbG9jYXRp
b24qIGtpdChXZWJDb3JlOjpHZW9sb2NhdGlvbiogb2JqKQotewotICAgIGlmICghb2JqKQotICAg
ICAgICByZXR1cm4gMDsKLQotICAgIGlmIChncG9pbnRlciByZXQgPSBET01PYmplY3RDYWNoZTo6
Z2V0KG9iaikpCi0gICAgICAgIHJldHVybiBXRUJLSVRfRE9NX0dFT0xPQ0FUSU9OKHJldCk7Ci0K
LSAgICByZXR1cm4gd3JhcEdlb2xvY2F0aW9uKG9iaik7Ci19Ci0KLVdlYkNvcmU6Okdlb2xvY2F0
aW9uKiBjb3JlKFdlYktpdERPTUdlb2xvY2F0aW9uKiByZXF1ZXN0KQotewotICAgIHJldHVybiBy
ZXF1ZXN0ID8gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6R2VvbG9jYXRpb24qPihXRUJLSVRfRE9NX09C
SkVDVChyZXF1ZXN0KS0+Y29yZU9iamVjdCkgOiAwOwotfQotCi1XZWJLaXRET01HZW9sb2NhdGlv
biogd3JhcEdlb2xvY2F0aW9uKFdlYkNvcmU6Okdlb2xvY2F0aW9uKiBjb3JlT2JqZWN0KQotewot
ICAgIEFTU0VSVChjb3JlT2JqZWN0KTsKLSAgICByZXR1cm4gV0VCS0lUX0RPTV9HRU9MT0NBVElP
TihnX29iamVjdF9uZXcoV0VCS0lUX0RPTV9UWVBFX0dFT0xPQ0FUSU9OLCAiY29yZS1vYmplY3Qi
LCBjb3JlT2JqZWN0LCBudWxscHRyKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0j
ZW5kaWYgLy8gRU5BQkxFKEdFT0xPQ0FUSU9OKQotCi1HX0RFRklORV9UWVBFKFdlYktpdERPTUdl
b2xvY2F0aW9uLCB3ZWJraXRfZG9tX2dlb2xvY2F0aW9uLCBXRUJLSVRfRE9NX1RZUEVfT0JKRUNU
KQotCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX2dlb2xvY2F0aW9uX2ZpbmFsaXplKEdPYmplY3Qq
IG9iamVjdCkKLXsKLSAgICBXZWJLaXRET01HZW9sb2NhdGlvblByaXZhdGUqIHByaXYgPSBXRUJL
SVRfRE9NX0dFT0xPQ0FUSU9OX0dFVF9QUklWQVRFKG9iamVjdCk7Ci0jaWYgRU5BQkxFKEdFT0xP
Q0FUSU9OKQotICAgIFdlYktpdDo6RE9NT2JqZWN0Q2FjaGU6OmZvcmdldChwcml2LT5jb3JlT2Jq
ZWN0LmdldCgpKTsKLSNlbmRpZiAvLyBFTkFCTEUoR0VPTE9DQVRJT04pCi0gICAgcHJpdi0+fldl
YktpdERPTUdlb2xvY2F0aW9uUHJpdmF0ZSgpOwotICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9k
b21fZ2VvbG9jYXRpb25fcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKLX0KLQotc3Rh
dGljIEdPYmplY3QqIHdlYmtpdF9kb21fZ2VvbG9jYXRpb25fY29uc3RydWN0b3IoR1R5cGUgdHlw
ZSwgZ3VpbnQgY29uc3RydWN0UHJvcGVydGllc0NvdW50LCBHT2JqZWN0Q29uc3RydWN0UGFyYW0q
IGNvbnN0cnVjdFByb3BlcnRpZXMpCi17Ci0gICAgR09iamVjdCogb2JqZWN0ID0gR19PQkpFQ1Rf
Q0xBU1Mod2Via2l0X2RvbV9nZW9sb2NhdGlvbl9wYXJlbnRfY2xhc3MpLT5jb25zdHJ1Y3Rvcih0
eXBlLCBjb25zdHJ1Y3RQcm9wZXJ0aWVzQ291bnQsIGNvbnN0cnVjdFByb3BlcnRpZXMpOwotI2lm
IEVOQUJMRShHRU9MT0NBVElPTikKLSAgICBXZWJLaXRET01HZW9sb2NhdGlvblByaXZhdGUqIHBy
aXYgPSBXRUJLSVRfRE9NX0dFT0xPQ0FUSU9OX0dFVF9QUklWQVRFKG9iamVjdCk7Ci0gICAgcHJp
di0+Y29yZU9iamVjdCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6Okdlb2xvY2F0aW9uKj4oV0VCS0lU
X0RPTV9PQkpFQ1Qob2JqZWN0KS0+Y29yZU9iamVjdCk7Ci0gICAgV2ViS2l0OjpET01PYmplY3RD
YWNoZTo6cHV0KHByaXYtPmNvcmVPYmplY3QuZ2V0KCksIG9iamVjdCk7Ci0jZW5kaWYgLy8gRU5B
QkxFKEdFT0xPQ0FUSU9OKQotICAgIHJldHVybiBvYmplY3Q7Ci19Ci0KLXN0YXRpYyB2b2lkIHdl
YmtpdF9kb21fZ2VvbG9jYXRpb25fY2xhc3NfaW5pdChXZWJLaXRET01HZW9sb2NhdGlvbkNsYXNz
KiByZXF1ZXN0Q2xhc3MpCi17Ci0gICAgR09iamVjdENsYXNzKiBnb2JqZWN0Q2xhc3MgPSBHX09C
SkVDVF9DTEFTUyhyZXF1ZXN0Q2xhc3MpOwotICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShn
b2JqZWN0Q2xhc3MsIHNpemVvZihXZWJLaXRET01HZW9sb2NhdGlvblByaXZhdGUpKTsKLSAgICBn
b2JqZWN0Q2xhc3MtPmNvbnN0cnVjdG9yID0gd2Via2l0X2RvbV9nZW9sb2NhdGlvbl9jb25zdHJ1
Y3RvcjsKLSAgICBnb2JqZWN0Q2xhc3MtPmZpbmFsaXplID0gd2Via2l0X2RvbV9nZW9sb2NhdGlv
bl9maW5hbGl6ZTsKLX0KLQotc3RhdGljIHZvaWQgd2Via2l0X2RvbV9nZW9sb2NhdGlvbl9pbml0
KFdlYktpdERPTUdlb2xvY2F0aW9uKiByZXF1ZXN0KQotewotICAgIFdlYktpdERPTUdlb2xvY2F0
aW9uUHJpdmF0ZSogcHJpdiA9IFdFQktJVF9ET01fR0VPTE9DQVRJT05fR0VUX1BSSVZBVEUocmVx
dWVzdCk7Ci0gICAgbmV3IChwcml2KSBXZWJLaXRET01HZW9sb2NhdGlvblByaXZhdGUoKTsKLX0K
LQotdm9pZCB3ZWJraXRfZG9tX2dlb2xvY2F0aW9uX2NsZWFyX3dhdGNoKFdlYktpdERPTUdlb2xv
Y2F0aW9uKiBzZWxmLCBnbG9uZyB3YXRjaElEKQotewotI2lmIEVOQUJMRShHRU9MT0NBVElPTikK
LSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5f
aWZfZmFpbChXRUJLSVRfRE9NX0lTX0dFT0xPQ0FUSU9OKHNlbGYpKTsKLSAgICBXZWJDb3JlOjpH
ZW9sb2NhdGlvbiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBpdGVtLT5jbGVhcldh
dGNoKHdhdGNoSUQpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc2VsZik7Ci0gICAgVU5VU0VE
X1BBUkFNKHdhdGNoSUQpOwotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIkdl
b2xvY2F0aW9uIikKLSNlbmRpZiAvKiBFTkFCTEUoR0VPTE9DQVRJT04pICovCi19Ci0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9E
T00vV2ViS2l0RE9NR2VvbG9jYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NR2VvbG9jYXRpb24uaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNGVkNmU1ZS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUdlb2xvY2F0
aW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MyArMCwwIEBACi0vKgotICogIFRoaXMgZmlsZSBp
cyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAqICBUaGlzIGZpbGUg
aGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZ
IQotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICog
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KLSAqLwotCi0jaWZuZGVmIFdlYktpdERPTUdlb2xvY2F0aW9uX2gKLSNkZWZpbmUgV2Vi
S2l0RE9NR2VvbG9jYXRpb25faAotCi0jaWZkZWYgV0VCS0lUX0RPTV9VU0VfVU5TVEFCTEVfQVBJ
Ci0KLSNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgotI2luY2x1ZGUgPHdlYmtpdGRvbS9XZWJLaXRE
T01PYmplY3QuaD4KLSNpbmNsdWRlIDx3ZWJraXRkb20vd2Via2l0ZG9tZGVmaW5lcy11bnN0YWJs
ZS5oPgotCi1HX0JFR0lOX0RFQ0xTCi0KLSNkZWZpbmUgV0VCS0lUX0RPTV9UWVBFX0dFT0xPQ0FU
SU9OICAgICAgICAgICAgKHdlYmtpdF9kb21fZ2VvbG9jYXRpb25fZ2V0X3R5cGUoKSkKLSNkZWZp
bmUgV0VCS0lUX0RPTV9HRU9MT0NBVElPTihvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19J
TlNUQU5DRV9DQVNUKChvYmopLCBXRUJLSVRfRE9NX1RZUEVfR0VPTE9DQVRJT04sIFdlYktpdERP
TUdlb2xvY2F0aW9uKSkKLSNkZWZpbmUgV0VCS0lUX0RPTV9HRU9MT0NBVElPTl9DTEFTUyhrbGFz
cykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksICBXRUJLSVRfRE9NX1RZUEVf
R0VPTE9DQVRJT04sIFdlYktpdERPTUdlb2xvY2F0aW9uQ2xhc3MpCi0jZGVmaW5lIFdFQktJVF9E
T01fSVNfR0VPTE9DQVRJT04ob2JqKSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQ
RSgob2JqKSwgV0VCS0lUX0RPTV9UWVBFX0dFT0xPQ0FUSU9OKSkKLSNkZWZpbmUgV0VCS0lUX0RP
TV9JU19HRU9MT0NBVElPTl9DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChr
bGFzcyksICBXRUJLSVRfRE9NX1RZUEVfR0VPTE9DQVRJT04pKQotI2RlZmluZSBXRUJLSVRfRE9N
X0dFT0xPQ0FUSU9OX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygo
b2JqKSwgIFdFQktJVF9ET01fVFlQRV9HRU9MT0NBVElPTiwgV2ViS2l0RE9NR2VvbG9jYXRpb25D
bGFzcykpCi0KLXN0cnVjdCBfV2ViS2l0RE9NR2VvbG9jYXRpb24gewotICAgIFdlYktpdERPTU9i
amVjdCBwYXJlbnRfaW5zdGFuY2U7Ci19OwotCi1zdHJ1Y3QgX1dlYktpdERPTUdlb2xvY2F0aW9u
Q2xhc3MgewotICAgIFdlYktpdERPTU9iamVjdENsYXNzIHBhcmVudF9jbGFzczsKLX07Ci0KLVdF
QktJVF9BUEkgR1R5cGUKLXdlYmtpdF9kb21fZ2VvbG9jYXRpb25fZ2V0X3R5cGUodm9pZCk7Ci0K
LS8qKgotICogd2Via2l0X2RvbV9nZW9sb2NhdGlvbl9jbGVhcl93YXRjaDoKLSAqIEBzZWxmOiBB
ICNXZWJLaXRET01HZW9sb2NhdGlvbgotICogQHdhdGNoSUQ6IEEgI2dsb25nCi0gKgotICogU3Rh
YmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIHZvaWQKLXdlYmtpdF9kb21fZ2VvbG9j
YXRpb25fY2xlYXJfd2F0Y2goV2ViS2l0RE9NR2VvbG9jYXRpb24qIHNlbGYsIGdsb25nIHdhdGNo
SUQpOwotCi1HX0VORF9ERUNMUwotCi0jZW5kaWYgLyogV0VCS0lUX0RPTV9VU0VfVU5TVEFCTEVf
QVBJICovCi0jZW5kaWYgLyogV2ViS2l0RE9NR2VvbG9jYXRpb25faCAqLwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJL
aXRET01HZW9sb2NhdGlvblByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NR2VvbG9jYXRpb25Qcml2YXRlLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1Y2Y1ZTUuLjAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01H
ZW9sb2NhdGlvblByaXZhdGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLS8qCi0g
KiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0Lgot
ICogIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwu
IERPIE5PVCBNT0RJRlkhCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgV2ViS2l0RE9NR2VvbG9jYXRpb25Q
cml2YXRlX2gKLSNkZWZpbmUgV2ViS2l0RE9NR2VvbG9jYXRpb25Qcml2YXRlX2gKLQotI2luY2x1
ZGUgPFdlYkNvcmUvR2VvbG9jYXRpb24uaD4KLSNpbmNsdWRlIDx3ZWJraXRkb20vV2ViS2l0RE9N
R2VvbG9jYXRpb24uaD4KLSNpZiBFTkFCTEUoR0VPTE9DQVRJT04pCi0KLW5hbWVzcGFjZSBXZWJL
aXQgewotV2ViS2l0RE9NR2VvbG9jYXRpb24qIHdyYXBHZW9sb2NhdGlvbihXZWJDb3JlOjpHZW9s
b2NhdGlvbiopOwotV2ViS2l0RE9NR2VvbG9jYXRpb24qIGtpdChXZWJDb3JlOjpHZW9sb2NhdGlv
biopOwotV2ViQ29yZTo6R2VvbG9jYXRpb24qIGNvcmUoV2ViS2l0RE9NR2VvbG9jYXRpb24qKTsK
LX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLyogRU5BQkxFKEdFT0xPQ0FUSU9OKSAq
LwotCi0jZW5kaWYgLyogV2ViS2l0RE9NR2VvbG9jYXRpb25Qcml2YXRlX2ggKi8KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00v
V2ViS2l0RE9NSFRNTEFuY2hvckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MQW5jaG9yRWxlbWVudC5j
cHAKaW5kZXggZTY2N2VhOS4uZTk4NmE5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MQW5jaG9yRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MQW5jaG9yRWxlbWVudC5jcHAKQEAgLTM2LDcgKzM2LDYg
QEAKICNpbmNsdWRlICJXZWJLaXRET01Ob2RlUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdERP
TVByaXZhdGUuaCIKICNpbmNsdWRlICJDb252ZXJ0VG9VVEY4U3RyaW5nLmgiCi0jaW5jbHVkZSAi
V2ViS2l0RE9NSFRNTEFuY2hvckVsZW1lbnRVbnN0YWJsZS5oIgogI2luY2x1ZGUgPHd0Zi9HZXRQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKQEAgLTEwMSwyMiArMTAwLDE2IEBAIGVu
dW0gewogICAgIFBST1BfMCwKICAgICBQUk9QX0NIQVJTRVQsCiAgICAgUFJPUF9DT09SRFMsCi0g
ICAgUFJPUF9ET1dOTE9BRCwKICAgICBQUk9QX0hSRUZMQU5HLAogICAgIFBST1BfTkFNRSwKLSAg
ICBQUk9QX1BJTkcsCiAgICAgUFJPUF9SRUwsCiAgICAgUFJPUF9SRVYsCiAgICAgUFJPUF9TSEFQ
RSwKICAgICBQUk9QX1RBUkdFVCwKICAgICBQUk9QX1RZUEUsCiAgICAgUFJPUF9URVhULAotICAg
IFBST1BfUkVMX0xJU1QsCiAgICAgUFJPUF9IUkVGLAotICAgIFBST1BfT1JJR0lOLAogICAgIFBS
T1BfUFJPVE9DT0wsCi0gICAgUFJPUF9VU0VSTkFNRSwKLSAgICBQUk9QX1BBU1NXT1JELAogICAg
IFBST1BfSE9TVCwKICAgICBQUk9QX0hPU1ROQU1FLAogICAgIFBST1BfUE9SVCwKQEAgLTEzNiwx
OCArMTI5LDEyIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21faHRtbF9hbmNob3JfZWxlbWVudF9z
ZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwCiAgICAgY2FzZSBQUk9QX0NPT1JE
UzoKICAgICAgICAgd2Via2l0X2RvbV9odG1sX2FuY2hvcl9lbGVtZW50X3NldF9jb29yZHMoc2Vs
ZiwgZ192YWx1ZV9nZXRfc3RyaW5nKHZhbHVlKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
UFJPUF9ET1dOTE9BRDoKLSAgICAgICAgd2Via2l0X2RvbV9odG1sX2FuY2hvcl9lbGVtZW50X3Nl
dF9kb3dubG9hZChzZWxmLCBnX3ZhbHVlX2dldF9zdHJpbmcodmFsdWUpKTsKLSAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBQUk9QX0hSRUZMQU5HOgogICAgICAgICB3ZWJraXRfZG9tX2h0bWxfYW5j
aG9yX2VsZW1lbnRfc2V0X2hyZWZsYW5nKHNlbGYsIGdfdmFsdWVfZ2V0X3N0cmluZyh2YWx1ZSkp
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIFBST1BfTkFNRToKICAgICAgICAgd2Via2l0X2Rv
bV9odG1sX2FuY2hvcl9lbGVtZW50X3NldF9uYW1lKHNlbGYsIGdfdmFsdWVfZ2V0X3N0cmluZyh2
YWx1ZSkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfUElORzoKLSAgICAgICAgd2Vi
a2l0X2RvbV9odG1sX2FuY2hvcl9lbGVtZW50X3NldF9waW5nKHNlbGYsIGdfdmFsdWVfZ2V0X3N0
cmluZyh2YWx1ZSkpOwotICAgICAgICBicmVhazsKICAgICBjYXNlIFBST1BfUkVMOgogICAgICAg
ICB3ZWJraXRfZG9tX2h0bWxfYW5jaG9yX2VsZW1lbnRfc2V0X3JlbChzZWxmLCBnX3ZhbHVlX2dl
dF9zdHJpbmcodmFsdWUpKTsKICAgICAgICAgYnJlYWs7CkBAIC0xNzIsMTIgKzE1OSw2IEBAIHN0
YXRpYyB2b2lkIHdlYmtpdF9kb21faHRtbF9hbmNob3JfZWxlbWVudF9zZXRfcHJvcGVydHkoR09i
amVjdCogb2JqZWN0LCBndWludCBwCiAgICAgY2FzZSBQUk9QX1BST1RPQ09MOgogICAgICAgICB3
ZWJraXRfZG9tX2h0bWxfYW5jaG9yX2VsZW1lbnRfc2V0X3Byb3RvY29sKHNlbGYsIGdfdmFsdWVf
Z2V0X3N0cmluZyh2YWx1ZSkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfVVNFUk5B
TUU6Ci0gICAgICAgIHdlYmtpdF9kb21faHRtbF9hbmNob3JfZWxlbWVudF9zZXRfdXNlcm5hbWUo
c2VsZiwgZ192YWx1ZV9nZXRfc3RyaW5nKHZhbHVlKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgUFJPUF9QQVNTV09SRDoKLSAgICAgICAgd2Via2l0X2RvbV9odG1sX2FuY2hvcl9lbGVtZW50
X3NldF9wYXNzd29yZChzZWxmLCBnX3ZhbHVlX2dldF9zdHJpbmcodmFsdWUpKTsKLSAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBQUk9QX0hPU1Q6CiAgICAgICAgIHdlYmtpdF9kb21faHRtbF9hbmNo
b3JfZWxlbWVudF9zZXRfaG9zdChzZWxmLCBnX3ZhbHVlX2dldF9zdHJpbmcodmFsdWUpKTsKICAg
ICAgICAgYnJlYWs7CkBAIC0yMTMsMTggKzE5NCwxMiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfZG9t
X2h0bWxfYW5jaG9yX2VsZW1lbnRfZ2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQg
cAogICAgIGNhc2UgUFJPUF9DT09SRFM6CiAgICAgICAgIGdfdmFsdWVfdGFrZV9zdHJpbmcodmFs
dWUsIHdlYmtpdF9kb21faHRtbF9hbmNob3JfZWxlbWVudF9nZXRfY29vcmRzKHNlbGYpKTsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX0RPV05MT0FEOgotICAgICAgICBnX3ZhbHVlX3Rh
a2Vfc3RyaW5nKHZhbHVlLCB3ZWJraXRfZG9tX2h0bWxfYW5jaG9yX2VsZW1lbnRfZ2V0X2Rvd25s
b2FkKHNlbGYpKTsKLSAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9QX0hSRUZMQU5HOgogICAg
ICAgICBnX3ZhbHVlX3Rha2Vfc3RyaW5nKHZhbHVlLCB3ZWJraXRfZG9tX2h0bWxfYW5jaG9yX2Vs
ZW1lbnRfZ2V0X2hyZWZsYW5nKHNlbGYpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9Q
X05BTUU6CiAgICAgICAgIGdfdmFsdWVfdGFrZV9zdHJpbmcodmFsdWUsIHdlYmtpdF9kb21faHRt
bF9hbmNob3JfZWxlbWVudF9nZXRfbmFtZShzZWxmKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNh
c2UgUFJPUF9QSU5HOgotICAgICAgICBnX3ZhbHVlX3Rha2Vfc3RyaW5nKHZhbHVlLCB3ZWJraXRf
ZG9tX2h0bWxfYW5jaG9yX2VsZW1lbnRfZ2V0X3Bpbmcoc2VsZikpOwotICAgICAgICBicmVhazsK
ICAgICBjYXNlIFBST1BfUkVMOgogICAgICAgICBnX3ZhbHVlX3Rha2Vfc3RyaW5nKHZhbHVlLCB3
ZWJraXRfZG9tX2h0bWxfYW5jaG9yX2VsZW1lbnRfZ2V0X3JlbChzZWxmKSk7CiAgICAgICAgIGJy
ZWFrOwpAQCAtMjQzLDI0ICsyMTgsMTIgQEAgc3RhdGljIHZvaWQgd2Via2l0X2RvbV9odG1sX2Fu
Y2hvcl9lbGVtZW50X2dldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHAKICAgICBj
YXNlIFBST1BfVEVYVDoKICAgICAgICAgZ192YWx1ZV90YWtlX3N0cmluZyh2YWx1ZSwgd2Via2l0
X2RvbV9odG1sX2FuY2hvcl9lbGVtZW50X2dldF90ZXh0KHNlbGYpKTsKICAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBQUk9QX1JFTF9MSVNUOgotICAgICAgICBnX3ZhbHVlX3NldF9vYmplY3QodmFs
dWUsIHdlYmtpdF9kb21faHRtbF9hbmNob3JfZWxlbWVudF9nZXRfcmVsX2xpc3Qoc2VsZikpOwot
ICAgICAgICBicmVhazsKICAgICBjYXNlIFBST1BfSFJFRjoKICAgICAgICAgZ192YWx1ZV90YWtl
X3N0cmluZyh2YWx1ZSwgd2Via2l0X2RvbV9odG1sX2FuY2hvcl9lbGVtZW50X2dldF9ocmVmKHNl
bGYpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX09SSUdJTjoKLSAgICAgICAgZ192
YWx1ZV90YWtlX3N0cmluZyh2YWx1ZSwgd2Via2l0X2RvbV9odG1sX2FuY2hvcl9lbGVtZW50X2dl
dF9vcmlnaW4oc2VsZikpOwotICAgICAgICBicmVhazsKICAgICBjYXNlIFBST1BfUFJPVE9DT0w6
CiAgICAgICAgIGdfdmFsdWVfdGFrZV9zdHJpbmcodmFsdWUsIHdlYmtpdF9kb21faHRtbF9hbmNo
b3JfZWxlbWVudF9nZXRfcHJvdG9jb2woc2VsZikpOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IFBST1BfVVNFUk5BTUU6Ci0gICAgICAgIGdfdmFsdWVfdGFrZV9zdHJpbmcodmFsdWUsIHdlYmtp
dF9kb21faHRtbF9hbmNob3JfZWxlbWVudF9nZXRfdXNlcm5hbWUoc2VsZikpOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIFBST1BfUEFTU1dPUkQ6Ci0gICAgICAgIGdfdmFsdWVfdGFrZV9zdHJp
bmcodmFsdWUsIHdlYmtpdF9kb21faHRtbF9hbmNob3JfZWxlbWVudF9nZXRfcGFzc3dvcmQoc2Vs
ZikpOwotICAgICAgICBicmVhazsKICAgICBjYXNlIFBST1BfSE9TVDoKICAgICAgICAgZ192YWx1
ZV90YWtlX3N0cmluZyh2YWx1ZSwgd2Via2l0X2RvbV9odG1sX2FuY2hvcl9lbGVtZW50X2dldF9o
b3N0KHNlbGYpKTsKICAgICAgICAgYnJlYWs7CkBAIC0zMTMsMTYgKzI3Niw2IEBAIHN0YXRpYyB2
b2lkIHdlYmtpdF9kb21faHRtbF9hbmNob3JfZWxlbWVudF9jbGFzc19pbml0KFdlYktpdERPTUhU
TUxBbmNob3JFbGVtZW50CiAKICAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAog
ICAgICAgICBnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBST1BfRE9XTkxPQUQsCi0gICAgICAgIGdf
cGFyYW1fc3BlY19zdHJpbmcoCi0gICAgICAgICAgICAiZG93bmxvYWQiLAotICAgICAgICAgICAg
IkhUTUxBbmNob3JFbGVtZW50OmRvd25sb2FkIiwKLSAgICAgICAgICAgICJyZWFkLXdyaXRlIGdj
aGFyKiBIVE1MQW5jaG9yRWxlbWVudDpkb3dubG9hZCIsCi0gICAgICAgICAgICAiIiwKLSAgICAg
ICAgICAgIFdFQktJVF9QQVJBTV9SRUFEV1JJVEUpKTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2lu
c3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKICAgICAgICAgUFJPUF9IUkVG
TEFORywKICAgICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZygKICAgICAgICAgICAgICJocmVmbGFu
ZyIsCkBAIC0zNDMsMTYgKzI5Niw2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21faHRtbF9hbmNo
b3JfZWxlbWVudF9jbGFzc19pbml0KFdlYktpdERPTUhUTUxBbmNob3JFbGVtZW50CiAKICAgICBn
X29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAogICAgICAgICBnb2JqZWN0Q2xhc3MsCi0g
ICAgICAgIFBST1BfUElORywKLSAgICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZygKLSAgICAgICAg
ICAgICJwaW5nIiwKLSAgICAgICAgICAgICJIVE1MQW5jaG9yRWxlbWVudDpwaW5nIiwKLSAgICAg
ICAgICAgICJyZWFkLXdyaXRlIGdjaGFyKiBIVE1MQW5jaG9yRWxlbWVudDpwaW5nIiwKLSAgICAg
ICAgICAgICIiLAotICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURXUklURSkpOwotCi0gICAg
Z19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAgZ29iamVjdENsYXNzLAog
ICAgICAgICBQUk9QX1JFTCwKICAgICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZygKICAgICAgICAg
ICAgICJyZWwiLApAQCAtNDEzLDE2ICszNTYsNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX2h0
bWxfYW5jaG9yX2VsZW1lbnRfY2xhc3NfaW5pdChXZWJLaXRET01IVE1MQW5jaG9yRWxlbWVudAog
CiAgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKICAgICAgICAgZ29iamVjdENs
YXNzLAotICAgICAgICBQUk9QX1JFTF9MSVNULAotICAgICAgICBnX3BhcmFtX3NwZWNfb2JqZWN0
KAotICAgICAgICAgICAgInJlbC1saXN0IiwKLSAgICAgICAgICAgICJIVE1MQW5jaG9yRWxlbWVu
dDpyZWwtbGlzdCIsCi0gICAgICAgICAgICAicmVhZC1vbmx5IFdlYktpdERPTURPTVRva2VuTGlz
dCogSFRNTEFuY2hvckVsZW1lbnQ6cmVsLWxpc3QiLAotICAgICAgICAgICAgV0VCS0lUX0RPTV9U
WVBFX0RPTV9UT0tFTl9MSVNULAotICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7
Ci0KLSAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAotICAgICAgICBnb2JqZWN0
Q2xhc3MsCiAgICAgICAgIFBST1BfSFJFRiwKICAgICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZygK
ICAgICAgICAgICAgICJocmVmIiwKQEAgLTQzMywxNiArMzY2LDYgQEAgc3RhdGljIHZvaWQgd2Vi
a2l0X2RvbV9odG1sX2FuY2hvcl9lbGVtZW50X2NsYXNzX2luaXQoV2ViS2l0RE9NSFRNTEFuY2hv
ckVsZW1lbnQKIAogICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCiAgICAgICAg
IGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9PUklHSU4sCi0gICAgICAgIGdfcGFyYW1fc3Bl
Y19zdHJpbmcoCi0gICAgICAgICAgICAib3JpZ2luIiwKLSAgICAgICAgICAgICJIVE1MQW5jaG9y
RWxlbWVudDpvcmlnaW4iLAotICAgICAgICAgICAgInJlYWQtb25seSBnY2hhciogSFRNTEFuY2hv
ckVsZW1lbnQ6b3JpZ2luIiwKLSAgICAgICAgICAgICIiLAotICAgICAgICAgICAgV0VCS0lUX1BB
UkFNX1JFQURBQkxFKSk7Ci0KLSAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAot
ICAgICAgICBnb2JqZWN0Q2xhc3MsCiAgICAgICAgIFBST1BfUFJPVE9DT0wsCiAgICAgICAgIGdf
cGFyYW1fc3BlY19zdHJpbmcoCiAgICAgICAgICAgICAicHJvdG9jb2wiLApAQCAtNDUzLDI2ICsz
NzYsNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX2h0bWxfYW5jaG9yX2VsZW1lbnRfY2xhc3Nf
aW5pdChXZWJLaXRET01IVE1MQW5jaG9yRWxlbWVudAogCiAgICAgZ19vYmplY3RfY2xhc3NfaW5z
dGFsbF9wcm9wZXJ0eSgKICAgICAgICAgZ29iamVjdENsYXNzLAotICAgICAgICBQUk9QX1VTRVJO
QU1FLAotICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nKAotICAgICAgICAgICAgInVzZXJuYW1l
IiwKLSAgICAgICAgICAgICJIVE1MQW5jaG9yRWxlbWVudDp1c2VybmFtZSIsCi0gICAgICAgICAg
ICAicmVhZC13cml0ZSBnY2hhciogSFRNTEFuY2hvckVsZW1lbnQ6dXNlcm5hbWUiLAotICAgICAg
ICAgICAgIiIsCi0gICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBRFdSSVRFKSk7Ci0KLSAgICBn
X29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAotICAgICAgICBnb2JqZWN0Q2xhc3MsCi0g
ICAgICAgIFBST1BfUEFTU1dPUkQsCi0gICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcoCi0gICAg
ICAgICAgICAicGFzc3dvcmQiLAotICAgICAgICAgICAgIkhUTUxBbmNob3JFbGVtZW50OnBhc3N3
b3JkIiwKLSAgICAgICAgICAgICJyZWFkLXdyaXRlIGdjaGFyKiBIVE1MQW5jaG9yRWxlbWVudDpw
YXNzd29yZCIsCi0gICAgICAgICAgICAiIiwKLSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFE
V1JJVEUpKTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAg
IGdvYmplY3RDbGFzcywKICAgICAgICAgUFJPUF9IT1NULAogICAgICAgICBnX3BhcmFtX3NwZWNf
c3RyaW5nKAogICAgICAgICAgICAgImhvc3QiLApAQCAtNTc2LDM3ICs0NzksNiBAQCB2b2lkIHdl
YmtpdF9kb21faHRtbF9hbmNob3JfZWxlbWVudF9zZXRfY29vcmRzKFdlYktpdERPTUhUTUxBbmNo
b3JFbGVtZW50KiBzZWxmLAogICAgIGl0ZW0tPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6
YXRpb24oV2ViQ29yZTo6SFRNTE5hbWVzOjpjb29yZHNBdHRyLCBjb252ZXJ0ZWRWYWx1ZSk7CiB9
CiAKLWdjaGFyKiB3ZWJraXRfZG9tX2h0bWxfYW5jaG9yX2VsZW1lbnRfZ2V0X2Rvd25sb2FkKFdl
YktpdERPTUhUTUxBbmNob3JFbGVtZW50KiBzZWxmKQotewotI2lmIEVOQUJMRShET1dOTE9BRF9B
VFRSSUJVVEUpCi0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAg
IGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfSFRNTF9BTkNIT1JfRUxFTUVOVChz
ZWxmKSwgMCk7Ci0gICAgV2ViQ29yZTo6SFRNTEFuY2hvckVsZW1lbnQqIGl0ZW0gPSBXZWJLaXQ6
OmNvcmUoc2VsZik7Ci0gICAgZ2NoYXIqIHJlc3VsdCA9IGNvbnZlcnRUb1VURjhTdHJpbmcoaXRl
bS0+YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihXZWJDb3JlOjpIVE1MTmFtZXM6OmRv
d25sb2FkQXR0cikpOwotICAgIHJldHVybiByZXN1bHQ7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJB
TShzZWxmKTsKLSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJEb3dubG9hZCBB
dHRyaWJ1dGUiKQotICAgIHJldHVybiAwOwotI2VuZGlmIC8qIEVOQUJMRShET1dOTE9BRF9BVFRS
SUJVVEUpICovCi19Ci0KLXZvaWQgd2Via2l0X2RvbV9odG1sX2FuY2hvcl9lbGVtZW50X3NldF9k
b3dubG9hZChXZWJLaXRET01IVE1MQW5jaG9yRWxlbWVudCogc2VsZiwgY29uc3QgZ2NoYXIqIHZh
bHVlKQotewotI2lmIEVOQUJMRShET1dOTE9BRF9BVFRSSUJVVEUpCi0gICAgV2ViQ29yZTo6SlNN
YWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RP
TV9JU19IVE1MX0FOQ0hPUl9FTEVNRU5UKHNlbGYpKTsKLSAgICBnX3JldHVybl9pZl9mYWlsKHZh
bHVlKTsKLSAgICBXZWJDb3JlOjpIVE1MQW5jaG9yRWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29y
ZShzZWxmKTsKLSAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRWYWx1ZSA9IFdURjo6U3RyaW5nOjpm
cm9tVVRGOCh2YWx1ZSk7Ci0gICAgaXRlbS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXph
dGlvbihXZWJDb3JlOjpIVE1MTmFtZXM6OmRvd25sb2FkQXR0ciwgY29udmVydGVkVmFsdWUpOwot
I2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc2VsZik7Ci0gICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsK
LSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJEb3dubG9hZCBBdHRyaWJ1dGUi
KQotI2VuZGlmIC8qIEVOQUJMRShET1dOTE9BRF9BVFRSSUJVVEUpICovCi19Ci0KIGdjaGFyKiB3
ZWJraXRfZG9tX2h0bWxfYW5jaG9yX2VsZW1lbnRfZ2V0X2hyZWZsYW5nKFdlYktpdERPTUhUTUxB
bmNob3JFbGVtZW50KiBzZWxmKQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0
ZSBzdGF0ZTsKQEAgLTY0NSwyNSArNTE3LDYgQEAgdm9pZCB3ZWJraXRfZG9tX2h0bWxfYW5jaG9y
X2VsZW1lbnRfc2V0X25hbWUoV2ViS2l0RE9NSFRNTEFuY2hvckVsZW1lbnQqIHNlbGYsIGMKICAg
ICBpdGVtLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFdlYkNvcmU6OkhUTUxO
YW1lczo6bmFtZUF0dHIsIGNvbnZlcnRlZFZhbHVlKTsKIH0KIAotZ2NoYXIqIHdlYmtpdF9kb21f
aHRtbF9hbmNob3JfZWxlbWVudF9nZXRfcGluZyhXZWJLaXRET01IVE1MQW5jaG9yRWxlbWVudCog
c2VsZikKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAg
Z19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19IVE1MX0FOQ0hPUl9FTEVNRU5UKHNl
bGYpLCAwKTsKLSAgICBXZWJDb3JlOjpIVE1MQW5jaG9yRWxlbWVudCogaXRlbSA9IFdlYktpdDo6
Y29yZShzZWxmKTsKLSAgICBnY2hhciogcmVzdWx0ID0gY29udmVydFRvVVRGOFN0cmluZyhpdGVt
LT5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFdlYkNvcmU6OkhUTUxOYW1lczo6cGlu
Z0F0dHIpKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi12b2lkIHdlYmtpdF9kb21faHRtbF9h
bmNob3JfZWxlbWVudF9zZXRfcGluZyhXZWJLaXRET01IVE1MQW5jaG9yRWxlbWVudCogc2VsZiwg
Y29uc3QgZ2NoYXIqIHZhbHVlKQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0
ZSBzdGF0ZTsKLSAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfSFRNTF9BTkNIT1Jf
RUxFTUVOVChzZWxmKSk7Ci0gICAgZ19yZXR1cm5faWZfZmFpbCh2YWx1ZSk7Ci0gICAgV2ViQ29y
ZTo6SFRNTEFuY2hvckVsZW1lbnQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgV1RG
OjpTdHJpbmcgY29udmVydGVkVmFsdWUgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgodmFsdWUpOwot
ICAgIGl0ZW0tPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oV2ViQ29yZTo6SFRN
TE5hbWVzOjpwaW5nQXR0ciwgY29udmVydGVkVmFsdWUpOwotfQotCiBnY2hhciogd2Via2l0X2Rv
bV9odG1sX2FuY2hvcl9lbGVtZW50X2dldF9yZWwoV2ViS2l0RE9NSFRNTEFuY2hvckVsZW1lbnQq
IHNlbGYpCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwpAQCAt
Nzc4LDE1ICs2MzEsNiBAQCB2b2lkIHdlYmtpdF9kb21faHRtbF9hbmNob3JfZWxlbWVudF9zZXRf
dGV4dChXZWJLaXRET01IVE1MQW5jaG9yRWxlbWVudCogc2VsZiwgYwogICAgIGl0ZW0tPnNldFRl
eHQoY29udmVydGVkVmFsdWUpOwogfQogCi1XZWJLaXRET01ET01Ub2tlbkxpc3QqIHdlYmtpdF9k
b21faHRtbF9hbmNob3JfZWxlbWVudF9nZXRfcmVsX2xpc3QoV2ViS2l0RE9NSFRNTEFuY2hvckVs
ZW1lbnQqIHNlbGYpCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRl
OwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfSFRNTF9BTkNIT1JfRUxF
TUVOVChzZWxmKSwgMCk7Ci0gICAgV2ViQ29yZTo6SFRNTEFuY2hvckVsZW1lbnQqIGl0ZW0gPSBX
ZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkRPTVRva2VuTGlzdD4gZ29i
amVjdFJlc3VsdCA9IFdURjo6Z2V0UHRyKGl0ZW0tPnJlbExpc3QoKSk7Ci0gICAgcmV0dXJuIFdl
YktpdDo6a2l0KGdvYmplY3RSZXN1bHQuZ2V0KCkpOwotfQotCiBnY2hhciogd2Via2l0X2RvbV9o
dG1sX2FuY2hvcl9lbGVtZW50X2dldF9ocmVmKFdlYktpdERPTUhUTUxBbmNob3JFbGVtZW50KiBz
ZWxmKQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKQEAgLTgw
NiwxNSArNjUwLDYgQEAgdm9pZCB3ZWJraXRfZG9tX2h0bWxfYW5jaG9yX2VsZW1lbnRfc2V0X2hy
ZWYoV2ViS2l0RE9NSFRNTEFuY2hvckVsZW1lbnQqIHNlbGYsIGMKICAgICBpdGVtLT5zZXRBdHRy
aWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFdlYkNvcmU6OkhUTUxOYW1lczo6aHJlZkF0dHIs
IGNvbnZlcnRlZFZhbHVlKTsKIH0KIAotZ2NoYXIqIHdlYmtpdF9kb21faHRtbF9hbmNob3JfZWxl
bWVudF9nZXRfb3JpZ2luKFdlYktpdERPTUhUTUxBbmNob3JFbGVtZW50KiBzZWxmKQotewotICAg
IFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxf
aWZfZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxfQU5DSE9SX0VMRU1FTlQoc2VsZiksIDApOwotICAg
IFdlYkNvcmU6OkhUTUxBbmNob3JFbGVtZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwot
ICAgIGdjaGFyKiByZXN1bHQgPSBjb252ZXJ0VG9VVEY4U3RyaW5nKGl0ZW0tPm9yaWdpbigpKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotCiBnY2hhciogd2Via2l0X2RvbV9odG1sX2FuY2hvcl9l
bGVtZW50X2dldF9wcm90b2NvbChXZWJLaXRET01IVE1MQW5jaG9yRWxlbWVudCogc2VsZikKIHsK
ICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CkBAIC04MzQsNDQgKzY2
OSw2IEBAIHZvaWQgd2Via2l0X2RvbV9odG1sX2FuY2hvcl9lbGVtZW50X3NldF9wcm90b2NvbChX
ZWJLaXRET01IVE1MQW5jaG9yRWxlbWVudCogc2VsCiAgICAgaXRlbS0+c2V0UHJvdG9jb2woY29u
dmVydGVkVmFsdWUpOwogfQogCi1nY2hhciogd2Via2l0X2RvbV9odG1sX2FuY2hvcl9lbGVtZW50
X2dldF91c2VybmFtZShXZWJLaXRET01IVE1MQW5jaG9yRWxlbWVudCogc2VsZikKLXsKLSAgICBX
ZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoV0VCS0lUX0RPTV9JU19IVE1MX0FOQ0hPUl9FTEVNRU5UKHNlbGYpLCAwKTsKLSAgICBX
ZWJDb3JlOjpIVE1MQW5jaG9yRWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAg
ICBnY2hhciogcmVzdWx0ID0gY29udmVydFRvVVRGOFN0cmluZyhpdGVtLT51c2VybmFtZSgpKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotCi12b2lkIHdlYmtpdF9kb21faHRtbF9hbmNob3JfZWxl
bWVudF9zZXRfdXNlcm5hbWUoV2ViS2l0RE9NSFRNTEFuY2hvckVsZW1lbnQqIHNlbGYsIGNvbnN0
IGdjaGFyKiB2YWx1ZSkKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3Rh
dGU7Ci0gICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxfQU5DSE9SX0VMRU1F
TlQoc2VsZikpOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwodmFsdWUpOwotICAgIFdlYkNvcmU6OkhU
TUxBbmNob3JFbGVtZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIFdURjo6U3Ry
aW5nIGNvbnZlcnRlZFZhbHVlID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KHZhbHVlKTsKLSAgICBp
dGVtLT5zZXRVc2VybmFtZShjb252ZXJ0ZWRWYWx1ZSk7Ci19Ci0KLWdjaGFyKiB3ZWJraXRfZG9t
X2h0bWxfYW5jaG9yX2VsZW1lbnRfZ2V0X3Bhc3N3b3JkKFdlYktpdERPTUhUTUxBbmNob3JFbGVt
ZW50KiBzZWxmKQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsK
LSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxfQU5DSE9SX0VMRU1F
TlQoc2VsZiksIDApOwotICAgIFdlYkNvcmU6OkhUTUxBbmNob3JFbGVtZW50KiBpdGVtID0gV2Vi
S2l0Ojpjb3JlKHNlbGYpOwotICAgIGdjaGFyKiByZXN1bHQgPSBjb252ZXJ0VG9VVEY4U3RyaW5n
KGl0ZW0tPnBhc3N3b3JkKCkpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXZvaWQgd2Via2l0
X2RvbV9odG1sX2FuY2hvcl9lbGVtZW50X3NldF9wYXNzd29yZChXZWJLaXRET01IVE1MQW5jaG9y
RWxlbWVudCogc2VsZiwgY29uc3QgZ2NoYXIqIHZhbHVlKQotewotICAgIFdlYkNvcmU6OkpTTWFp
blRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01f
SVNfSFRNTF9BTkNIT1JfRUxFTUVOVChzZWxmKSk7Ci0gICAgZ19yZXR1cm5faWZfZmFpbCh2YWx1
ZSk7Ci0gICAgV2ViQ29yZTo6SFRNTEFuY2hvckVsZW1lbnQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUo
c2VsZik7Ci0gICAgV1RGOjpTdHJpbmcgY29udmVydGVkVmFsdWUgPSBXVEY6OlN0cmluZzo6ZnJv
bVVURjgodmFsdWUpOwotICAgIGl0ZW0tPnNldFBhc3N3b3JkKGNvbnZlcnRlZFZhbHVlKTsKLX0K
LQogZ2NoYXIqIHdlYmtpdF9kb21faHRtbF9hbmNob3JfZWxlbWVudF9nZXRfaG9zdChXZWJLaXRE
T01IVE1MQW5jaG9yRWxlbWVudCogc2VsZikKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWRO
dWxsU3RhdGUgc3RhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxBbmNob3JFbGVtZW50LmggYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktp
dERPTUhUTUxBbmNob3JFbGVtZW50LmgKaW5kZXggZWE5ZDk2Ni4uNTVhYTk0YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9X
ZWJLaXRET01IVE1MQW5jaG9yRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTEFuY2hvckVsZW1lbnQu
aApAQCAtMjIxLDYgKzIyMSwxNiBAQCBXRUJLSVRfQVBJIGdjaGFyKgogd2Via2l0X2RvbV9odG1s
X2FuY2hvcl9lbGVtZW50X2dldF90ZXh0KFdlYktpdERPTUhUTUxBbmNob3JFbGVtZW50KiBzZWxm
KTsKIAogLyoqCisgKiB3ZWJraXRfZG9tX2h0bWxfYW5jaG9yX2VsZW1lbnRfc2V0X3RleHQ6Cisg
KiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTEFuY2hvckVsZW1lbnQKKyAqIEB2YWx1ZTogQSAjZ2No
YXIKKyAqCisgKiBTaW5jZTogMi4xNgorKiovCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9kb21f
aHRtbF9hbmNob3JfZWxlbWVudF9zZXRfdGV4dChXZWJLaXRET01IVE1MQW5jaG9yRWxlbWVudCog
c2VsZiwgY29uc3QgZ2NoYXIqIHZhbHVlKTsKKworLyoqCiAgKiB3ZWJraXRfZG9tX2h0bWxfYW5j
aG9yX2VsZW1lbnRfZ2V0X2hyZWY6CiAgKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTEFuY2hvckVs
ZW1lbnQKICAqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxBbmNob3JFbGVtZW50VW5zdGFibGUuaCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2Vi
S2l0RE9NSFRNTEFuY2hvckVsZW1lbnRVbnN0YWJsZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAxY2U5ZTkwLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTEFuY2hvckVsZW1lbnRVbnN0
YWJsZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTUwICswLDAgQEAKLS8qCi0gKiAgVGhpcyBmaWxl
IGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICogIFRoaXMgZmls
ZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJ
RlkhCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAg
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0g
KiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgotICovCi0KLSNpZm5kZWYgV2ViS2l0RE9NSFRNTEFuY2hvckVsZW1lbnRVbnN0YWJs
ZV9oCi0jZGVmaW5lIFdlYktpdERPTUhUTUxBbmNob3JFbGVtZW50VW5zdGFibGVfaAotCi0jaWZk
ZWYgV0VCS0lUX0RPTV9VU0VfVU5TVEFCTEVfQVBJCi0KLSNpbmNsdWRlIDx3ZWJraXRkb20vd2Vi
a2l0ZG9tZGVmaW5lcy11bnN0YWJsZS5oPgotCi1HX0JFR0lOX0RFQ0xTCi0KLS8qKgotICogd2Vi
a2l0X2RvbV9odG1sX2FuY2hvcl9lbGVtZW50X2dldF9kb3dubG9hZDoKLSAqIEBzZWxmOiBBICNX
ZWJLaXRET01IVE1MQW5jaG9yRWxlbWVudAotICoKLSAqIFJldHVybnM6IEEgI2djaGFyCi0gKgot
ICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIGdjaGFyKgotd2Via2l0X2Rv
bV9odG1sX2FuY2hvcl9lbGVtZW50X2dldF9kb3dubG9hZChXZWJLaXRET01IVE1MQW5jaG9yRWxl
bWVudCogc2VsZik7Ci0KLS8qKgotICogd2Via2l0X2RvbV9odG1sX2FuY2hvcl9lbGVtZW50X3Nl
dF9kb3dubG9hZDoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MQW5jaG9yRWxlbWVudAotICog
QHZhbHVlOiBBICNnY2hhcgotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lU
X0FQSSB2b2lkCi13ZWJraXRfZG9tX2h0bWxfYW5jaG9yX2VsZW1lbnRfc2V0X2Rvd25sb2FkKFdl
YktpdERPTUhUTUxBbmNob3JFbGVtZW50KiBzZWxmLCBjb25zdCBnY2hhciogdmFsdWUpOwotCi0v
KioKLSAqIHdlYmtpdF9kb21faHRtbF9hbmNob3JfZWxlbWVudF9nZXRfcGluZzoKLSAqIEBzZWxm
OiBBICNXZWJLaXRET01IVE1MQW5jaG9yRWxlbWVudAotICoKLSAqIFJldHVybnM6IEEgI2djaGFy
Ci0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIGdjaGFyKgotd2Vi
a2l0X2RvbV9odG1sX2FuY2hvcl9lbGVtZW50X2dldF9waW5nKFdlYktpdERPTUhUTUxBbmNob3JF
bGVtZW50KiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0bWxfYW5jaG9yX2VsZW1lbnRf
c2V0X3Bpbmc6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTEFuY2hvckVsZW1lbnQKLSAqIEB2
YWx1ZTogQSAjZ2NoYXIKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9B
UEkgdm9pZAotd2Via2l0X2RvbV9odG1sX2FuY2hvcl9lbGVtZW50X3NldF9waW5nKFdlYktpdERP
TUhUTUxBbmNob3JFbGVtZW50KiBzZWxmLCBjb25zdCBnY2hhciogdmFsdWUpOwotCi0vKioKLSAq
IHdlYmtpdF9kb21faHRtbF9hbmNob3JfZWxlbWVudF9zZXRfdGV4dDoKLSAqIEBzZWxmOiBBICNX
ZWJLaXRET01IVE1MQW5jaG9yRWxlbWVudAotICogQHZhbHVlOiBBICNnY2hhcgotICoKLSAqIFN0
YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSB2b2lkCi13ZWJraXRfZG9tX2h0bWxf
YW5jaG9yX2VsZW1lbnRfc2V0X3RleHQoV2ViS2l0RE9NSFRNTEFuY2hvckVsZW1lbnQqIHNlbGYs
IGNvbnN0IGdjaGFyKiB2YWx1ZSk7Ci0KLS8qKgotICogd2Via2l0X2RvbV9odG1sX2FuY2hvcl9l
bGVtZW50X2dldF9yZWxfbGlzdDoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MQW5jaG9yRWxl
bWVudAotICoKLSAqIFJldHVybnM6ICh0cmFuc2ZlciBmdWxsKTogQSAjV2ViS2l0RE9NRE9NVG9r
ZW5MaXN0Ci0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIFdlYktp
dERPTURPTVRva2VuTGlzdCoKLXdlYmtpdF9kb21faHRtbF9hbmNob3JfZWxlbWVudF9nZXRfcmVs
X2xpc3QoV2ViS2l0RE9NSFRNTEFuY2hvckVsZW1lbnQqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtp
dF9kb21faHRtbF9hbmNob3JfZWxlbWVudF9nZXRfb3JpZ2luOgotICogQHNlbGY6IEEgI1dlYktp
dERPTUhUTUxBbmNob3JFbGVtZW50Ci0gKgotICogUmV0dXJuczogQSAjZ2NoYXIKLSAqCi0gKiBT
dGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgZ2NoYXIqCi13ZWJraXRfZG9tX2h0
bWxfYW5jaG9yX2VsZW1lbnRfZ2V0X29yaWdpbihXZWJLaXRET01IVE1MQW5jaG9yRWxlbWVudCog
c2VsZik7Ci0KLS8qKgotICogd2Via2l0X2RvbV9odG1sX2FuY2hvcl9lbGVtZW50X2dldF91c2Vy
bmFtZToKLSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MQW5jaG9yRWxlbWVudAotICoKLSAqIFJl
dHVybnM6IEEgI2djaGFyCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRf
QVBJIGdjaGFyKgotd2Via2l0X2RvbV9odG1sX2FuY2hvcl9lbGVtZW50X2dldF91c2VybmFtZShX
ZWJLaXRET01IVE1MQW5jaG9yRWxlbWVudCogc2VsZik7Ci0KLS8qKgotICogd2Via2l0X2RvbV9o
dG1sX2FuY2hvcl9lbGVtZW50X3NldF91c2VybmFtZToKLSAqIEBzZWxmOiBBICNXZWJLaXRET01I
VE1MQW5jaG9yRWxlbWVudAotICogQHZhbHVlOiBBICNnY2hhcgotICoKLSAqIFN0YWJpbGl0eTog
VW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSB2b2lkCi13ZWJraXRfZG9tX2h0bWxfYW5jaG9yX2Vs
ZW1lbnRfc2V0X3VzZXJuYW1lKFdlYktpdERPTUhUTUxBbmNob3JFbGVtZW50KiBzZWxmLCBjb25z
dCBnY2hhciogdmFsdWUpOwotCi0vKioKLSAqIHdlYmtpdF9kb21faHRtbF9hbmNob3JfZWxlbWVu
dF9nZXRfcGFzc3dvcmQ6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTEFuY2hvckVsZW1lbnQK
LSAqCi0gKiBSZXR1cm5zOiBBICNnY2hhcgotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoq
LwotV0VCS0lUX0FQSSBnY2hhcioKLXdlYmtpdF9kb21faHRtbF9hbmNob3JfZWxlbWVudF9nZXRf
cGFzc3dvcmQoV2ViS2l0RE9NSFRNTEFuY2hvckVsZW1lbnQqIHNlbGYpOwotCi0vKioKLSAqIHdl
YmtpdF9kb21faHRtbF9hbmNob3JfZWxlbWVudF9zZXRfcGFzc3dvcmQ6Ci0gKiBAc2VsZjogQSAj
V2ViS2l0RE9NSFRNTEFuY2hvckVsZW1lbnQKLSAqIEB2YWx1ZTogQSAjZ2NoYXIKLSAqCi0gKiBT
dGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgdm9pZAotd2Via2l0X2RvbV9odG1s
X2FuY2hvcl9lbGVtZW50X3NldF9wYXNzd29yZChXZWJLaXRET01IVE1MQW5jaG9yRWxlbWVudCog
c2VsZiwgY29uc3QgZ2NoYXIqIHZhbHVlKTsKLQotCi1HX0VORF9ERUNMUwotCi0jZW5kaWYgLyog
V0VCS0lUX0RPTV9VU0VfVU5TVEFCTEVfQVBJICovCi0jZW5kaWYgLyogV2ViS2l0RE9NSFRNTEFu
Y2hvckVsZW1lbnRVbnN0YWJsZV9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxBcmVhRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsv
RE9NL1dlYktpdERPTUhUTUxBcmVhRWxlbWVudC5jcHAKaW5kZXggODU0YmQwZi4uZTM5OWY4OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z3RrL0RPTS9XZWJLaXRET01IVE1MQXJlYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTEFyZWFF
bGVtZW50LmNwcApAQCAtMzYsNyArMzYsNiBAQAogI2luY2x1ZGUgIldlYktpdERPTU5vZGVQcml2
YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0RE9NUHJpdmF0ZS5oIgogI2luY2x1ZGUgIkNvbnZlcnRU
b1VURjhTdHJpbmcuaCIKLSNpbmNsdWRlICJXZWJLaXRET01IVE1MQXJlYUVsZW1lbnRVbnN0YWJs
ZS5oIgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAK
QEAgLTEwMiwxNiArMTAxLDEwIEBAIGVudW0gewogICAgIFBST1BfQUxULAogICAgIFBST1BfQ09P
UkRTLAogICAgIFBST1BfTk9fSFJFRiwKLSAgICBQUk9QX1BJTkcsCi0gICAgUFJPUF9SRUwsCiAg
ICAgUFJPUF9TSEFQRSwKICAgICBQUk9QX1RBUkdFVCwKLSAgICBQUk9QX1JFTF9MSVNULAogICAg
IFBST1BfSFJFRiwKLSAgICBQUk9QX09SSUdJTiwKICAgICBQUk9QX1BST1RPQ09MLAotICAgIFBS
T1BfVVNFUk5BTUUsCi0gICAgUFJPUF9QQVNTV09SRCwKICAgICBQUk9QX0hPU1QsCiAgICAgUFJP
UF9IT1NUTkFNRSwKICAgICBQUk9QX1BPUlQsCkBAIC0xMzQsMTIgKzEyNyw2IEBAIHN0YXRpYyB2
b2lkIHdlYmtpdF9kb21faHRtbF9hcmVhX2VsZW1lbnRfc2V0X3Byb3BlcnR5KEdPYmplY3QqIG9i
amVjdCwgZ3VpbnQgcHJvCiAgICAgY2FzZSBQUk9QX05PX0hSRUY6CiAgICAgICAgIHdlYmtpdF9k
b21faHRtbF9hcmVhX2VsZW1lbnRfc2V0X25vX2hyZWYoc2VsZiwgZ192YWx1ZV9nZXRfYm9vbGVh
bih2YWx1ZSkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfUElORzoKLSAgICAgICAg
d2Via2l0X2RvbV9odG1sX2FyZWFfZWxlbWVudF9zZXRfcGluZyhzZWxmLCBnX3ZhbHVlX2dldF9z
dHJpbmcodmFsdWUpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX1JFTDoKLSAgICAg
ICAgd2Via2l0X2RvbV9odG1sX2FyZWFfZWxlbWVudF9zZXRfcmVsKHNlbGYsIGdfdmFsdWVfZ2V0
X3N0cmluZyh2YWx1ZSkpOwotICAgICAgICBicmVhazsKICAgICBjYXNlIFBST1BfU0hBUEU6CiAg
ICAgICAgIHdlYmtpdF9kb21faHRtbF9hcmVhX2VsZW1lbnRfc2V0X3NoYXBlKHNlbGYsIGdfdmFs
dWVfZ2V0X3N0cmluZyh2YWx1ZSkpOwogICAgICAgICBicmVhazsKQEAgLTE1MiwxMiArMTM5LDYg
QEAgc3RhdGljIHZvaWQgd2Via2l0X2RvbV9odG1sX2FyZWFfZWxlbWVudF9zZXRfcHJvcGVydHko
R09iamVjdCogb2JqZWN0LCBndWludCBwcm8KICAgICBjYXNlIFBST1BfUFJPVE9DT0w6CiAgICAg
ICAgIHdlYmtpdF9kb21faHRtbF9hcmVhX2VsZW1lbnRfc2V0X3Byb3RvY29sKHNlbGYsIGdfdmFs
dWVfZ2V0X3N0cmluZyh2YWx1ZSkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfVVNF
Uk5BTUU6Ci0gICAgICAgIHdlYmtpdF9kb21faHRtbF9hcmVhX2VsZW1lbnRfc2V0X3VzZXJuYW1l
KHNlbGYsIGdfdmFsdWVfZ2V0X3N0cmluZyh2YWx1ZSkpOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIFBST1BfUEFTU1dPUkQ6Ci0gICAgICAgIHdlYmtpdF9kb21faHRtbF9hcmVhX2VsZW1lbnRf
c2V0X3Bhc3N3b3JkKHNlbGYsIGdfdmFsdWVfZ2V0X3N0cmluZyh2YWx1ZSkpOwotICAgICAgICBi
cmVhazsKICAgICBjYXNlIFBST1BfSE9TVDoKICAgICAgICAgd2Via2l0X2RvbV9odG1sX2FyZWFf
ZWxlbWVudF9zZXRfaG9zdChzZWxmLCBnX3ZhbHVlX2dldF9zdHJpbmcodmFsdWUpKTsKICAgICAg
ICAgYnJlYWs7CkBAIC0xOTYsMzYgKzE3NywxOCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX2h0
bWxfYXJlYV9lbGVtZW50X2dldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHBybwog
ICAgIGNhc2UgUFJPUF9OT19IUkVGOgogICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVl
LCB3ZWJraXRfZG9tX2h0bWxfYXJlYV9lbGVtZW50X2dldF9ub19ocmVmKHNlbGYpKTsKICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX1BJTkc6Ci0gICAgICAgIGdfdmFsdWVfdGFrZV9zdHJp
bmcodmFsdWUsIHdlYmtpdF9kb21faHRtbF9hcmVhX2VsZW1lbnRfZ2V0X3Bpbmcoc2VsZikpOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfUkVMOgotICAgICAgICBnX3ZhbHVlX3Rha2Vf
c3RyaW5nKHZhbHVlLCB3ZWJraXRfZG9tX2h0bWxfYXJlYV9lbGVtZW50X2dldF9yZWwoc2VsZikp
OwotICAgICAgICBicmVhazsKICAgICBjYXNlIFBST1BfU0hBUEU6CiAgICAgICAgIGdfdmFsdWVf
dGFrZV9zdHJpbmcodmFsdWUsIHdlYmtpdF9kb21faHRtbF9hcmVhX2VsZW1lbnRfZ2V0X3NoYXBl
KHNlbGYpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9QX1RBUkdFVDoKICAgICAgICAg
Z192YWx1ZV90YWtlX3N0cmluZyh2YWx1ZSwgd2Via2l0X2RvbV9odG1sX2FyZWFfZWxlbWVudF9n
ZXRfdGFyZ2V0KHNlbGYpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX1JFTF9MSVNU
OgotICAgICAgICBnX3ZhbHVlX3NldF9vYmplY3QodmFsdWUsIHdlYmtpdF9kb21faHRtbF9hcmVh
X2VsZW1lbnRfZ2V0X3JlbF9saXN0KHNlbGYpKTsKLSAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQ
Uk9QX0hSRUY6CiAgICAgICAgIGdfdmFsdWVfdGFrZV9zdHJpbmcodmFsdWUsIHdlYmtpdF9kb21f
aHRtbF9hcmVhX2VsZW1lbnRfZ2V0X2hyZWYoc2VsZikpOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIFBST1BfT1JJR0lOOgotICAgICAgICBnX3ZhbHVlX3Rha2Vfc3RyaW5nKHZhbHVlLCB3ZWJr
aXRfZG9tX2h0bWxfYXJlYV9lbGVtZW50X2dldF9vcmlnaW4oc2VsZikpOwotICAgICAgICBicmVh
azsKICAgICBjYXNlIFBST1BfUFJPVE9DT0w6CiAgICAgICAgIGdfdmFsdWVfdGFrZV9zdHJpbmco
dmFsdWUsIHdlYmtpdF9kb21faHRtbF9hcmVhX2VsZW1lbnRfZ2V0X3Byb3RvY29sKHNlbGYpKTsK
ICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX1VTRVJOQU1FOgotICAgICAgICBnX3ZhbHVl
X3Rha2Vfc3RyaW5nKHZhbHVlLCB3ZWJraXRfZG9tX2h0bWxfYXJlYV9lbGVtZW50X2dldF91c2Vy
bmFtZShzZWxmKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9QQVNTV09SRDoKLSAg
ICAgICAgZ192YWx1ZV90YWtlX3N0cmluZyh2YWx1ZSwgd2Via2l0X2RvbV9odG1sX2FyZWFfZWxl
bWVudF9nZXRfcGFzc3dvcmQoc2VsZikpOwotICAgICAgICBicmVhazsKICAgICBjYXNlIFBST1Bf
SE9TVDoKICAgICAgICAgZ192YWx1ZV90YWtlX3N0cmluZyh2YWx1ZSwgd2Via2l0X2RvbV9odG1s
X2FyZWFfZWxlbWVudF9nZXRfaG9zdChzZWxmKSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMjg4LDI2
ICsyNTEsNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX2h0bWxfYXJlYV9lbGVtZW50X2NsYXNz
X2luaXQoV2ViS2l0RE9NSFRNTEFyZWFFbGVtZW50Q2xhcwogCiAgICAgZ19vYmplY3RfY2xhc3Nf
aW5zdGFsbF9wcm9wZXJ0eSgKICAgICAgICAgZ29iamVjdENsYXNzLAotICAgICAgICBQUk9QX1BJ
TkcsCi0gICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcoCi0gICAgICAgICAgICAicGluZyIsCi0g
ICAgICAgICAgICAiSFRNTEFyZWFFbGVtZW50OnBpbmciLAotICAgICAgICAgICAgInJlYWQtd3Jp
dGUgZ2NoYXIqIEhUTUxBcmVhRWxlbWVudDpwaW5nIiwKLSAgICAgICAgICAgICIiLAotICAgICAg
ICAgICAgV0VCS0lUX1BBUkFNX1JFQURXUklURSkpOwotCi0gICAgZ19vYmplY3RfY2xhc3NfaW5z
dGFsbF9wcm9wZXJ0eSgKLSAgICAgICAgZ29iamVjdENsYXNzLAotICAgICAgICBQUk9QX1JFTCwK
LSAgICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZygKLSAgICAgICAgICAgICJyZWwiLAotICAgICAg
ICAgICAgIkhUTUxBcmVhRWxlbWVudDpyZWwiLAotICAgICAgICAgICAgInJlYWQtd3JpdGUgZ2No
YXIqIEhUTUxBcmVhRWxlbWVudDpyZWwiLAotICAgICAgICAgICAgIiIsCi0gICAgICAgICAgICBX
RUJLSVRfUEFSQU1fUkVBRFdSSVRFKSk7Ci0KLSAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3By
b3BlcnR5KAotICAgICAgICBnb2JqZWN0Q2xhc3MsCiAgICAgICAgIFBST1BfU0hBUEUsCiAgICAg
ICAgIGdfcGFyYW1fc3BlY19zdHJpbmcoCiAgICAgICAgICAgICAic2hhcGUiLApAQCAtMzI4LDE2
ICsyNzEsNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX2h0bWxfYXJlYV9lbGVtZW50X2NsYXNz
X2luaXQoV2ViS2l0RE9NSFRNTEFyZWFFbGVtZW50Q2xhcwogCiAgICAgZ19vYmplY3RfY2xhc3Nf
aW5zdGFsbF9wcm9wZXJ0eSgKICAgICAgICAgZ29iamVjdENsYXNzLAotICAgICAgICBQUk9QX1JF
TF9MSVNULAotICAgICAgICBnX3BhcmFtX3NwZWNfb2JqZWN0KAotICAgICAgICAgICAgInJlbC1s
aXN0IiwKLSAgICAgICAgICAgICJIVE1MQXJlYUVsZW1lbnQ6cmVsLWxpc3QiLAotICAgICAgICAg
ICAgInJlYWQtb25seSBXZWJLaXRET01ET01Ub2tlbkxpc3QqIEhUTUxBcmVhRWxlbWVudDpyZWwt
bGlzdCIsCi0gICAgICAgICAgICBXRUJLSVRfRE9NX1RZUEVfRE9NX1RPS0VOX0xJU1QsCi0gICAg
ICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2lu
c3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKICAgICAgICAgUFJPUF9IUkVG
LAogICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nKAogICAgICAgICAgICAgImhyZWYiLApAQCAt
MzQ4LDE2ICsyODEsNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX2h0bWxfYXJlYV9lbGVtZW50
X2NsYXNzX2luaXQoV2ViS2l0RE9NSFRNTEFyZWFFbGVtZW50Q2xhcwogCiAgICAgZ19vYmplY3Rf
Y2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKICAgICAgICAgZ29iamVjdENsYXNzLAotICAgICAgICBQ
Uk9QX09SSUdJTiwKLSAgICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZygKLSAgICAgICAgICAgICJv
cmlnaW4iLAotICAgICAgICAgICAgIkhUTUxBcmVhRWxlbWVudDpvcmlnaW4iLAotICAgICAgICAg
ICAgInJlYWQtb25seSBnY2hhciogSFRNTEFyZWFFbGVtZW50Om9yaWdpbiIsCi0gICAgICAgICAg
ICAiIiwKLSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSkpOwotCi0gICAgZ19vYmpl
Y3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAgZ29iamVjdENsYXNzLAogICAgICAg
ICBQUk9QX1BST1RPQ09MLAogICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nKAogICAgICAgICAg
ICAgInByb3RvY29sIiwKQEAgLTM2OCwyNiArMjkxLDYgQEAgc3RhdGljIHZvaWQgd2Via2l0X2Rv
bV9odG1sX2FyZWFfZWxlbWVudF9jbGFzc19pbml0KFdlYktpdERPTUhUTUxBcmVhRWxlbWVudENs
YXMKIAogICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCiAgICAgICAgIGdvYmpl
Y3RDbGFzcywKLSAgICAgICAgUFJPUF9VU0VSTkFNRSwKLSAgICAgICAgZ19wYXJhbV9zcGVjX3N0
cmluZygKLSAgICAgICAgICAgICJ1c2VybmFtZSIsCi0gICAgICAgICAgICAiSFRNTEFyZWFFbGVt
ZW50OnVzZXJuYW1lIiwKLSAgICAgICAgICAgICJyZWFkLXdyaXRlIGdjaGFyKiBIVE1MQXJlYUVs
ZW1lbnQ6dXNlcm5hbWUiLAotICAgICAgICAgICAgIiIsCi0gICAgICAgICAgICBXRUJLSVRfUEFS
QU1fUkVBRFdSSVRFKSk7Ci0KLSAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAot
ICAgICAgICBnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBST1BfUEFTU1dPUkQsCi0gICAgICAgIGdf
cGFyYW1fc3BlY19zdHJpbmcoCi0gICAgICAgICAgICAicGFzc3dvcmQiLAotICAgICAgICAgICAg
IkhUTUxBcmVhRWxlbWVudDpwYXNzd29yZCIsCi0gICAgICAgICAgICAicmVhZC13cml0ZSBnY2hh
ciogSFRNTEFyZWFFbGVtZW50OnBhc3N3b3JkIiwKLSAgICAgICAgICAgICIiLAotICAgICAgICAg
ICAgV0VCS0lUX1BBUkFNX1JFQURXUklURSkpOwotCi0gICAgZ19vYmplY3RfY2xhc3NfaW5zdGFs
bF9wcm9wZXJ0eSgKLSAgICAgICAgZ29iamVjdENsYXNzLAogICAgICAgICBQUk9QX0hPU1QsCiAg
ICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcoCiAgICAgICAgICAgICAiaG9zdCIsCkBAIC01MDgs
NDQgKzQxMSw2IEBAIHZvaWQgd2Via2l0X2RvbV9odG1sX2FyZWFfZWxlbWVudF9zZXRfbm9faHJl
ZihXZWJLaXRET01IVE1MQXJlYUVsZW1lbnQqIHNlbGYsIGdiCiAgICAgaXRlbS0+c2V0Qm9vbGVh
bkF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6Om5vaHJlZkF0dHIsIHZhbHVlKTsKIH0KIAot
Z2NoYXIqIHdlYmtpdF9kb21faHRtbF9hcmVhX2VsZW1lbnRfZ2V0X3BpbmcoV2ViS2l0RE9NSFRN
TEFyZWFFbGVtZW50KiBzZWxmKQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0
ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxfQVJF
QV9FTEVNRU5UKHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpIVE1MQXJlYUVsZW1lbnQqIGl0ZW0g
PSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ2NoYXIqIHJlc3VsdCA9IGNvbnZlcnRUb1VURjhT
dHJpbmcoaXRlbS0+YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihXZWJDb3JlOjpIVE1M
TmFtZXM6OnBpbmdBdHRyKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotdm9pZCB3ZWJraXRf
ZG9tX2h0bWxfYXJlYV9lbGVtZW50X3NldF9waW5nKFdlYktpdERPTUhUTUxBcmVhRWxlbWVudCog
c2VsZiwgY29uc3QgZ2NoYXIqIHZhbHVlKQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51
bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfSFRNTF9B
UkVBX0VMRU1FTlQoc2VsZikpOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwodmFsdWUpOwotICAgIFdl
YkNvcmU6OkhUTUxBcmVhRWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBX
VEY6OlN0cmluZyBjb252ZXJ0ZWRWYWx1ZSA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOCh2YWx1ZSk7
Ci0gICAgaXRlbS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihXZWJDb3JlOjpI
VE1MTmFtZXM6OnBpbmdBdHRyLCBjb252ZXJ0ZWRWYWx1ZSk7Ci19Ci0KLWdjaGFyKiB3ZWJraXRf
ZG9tX2h0bWxfYXJlYV9lbGVtZW50X2dldF9yZWwoV2ViS2l0RE9NSFRNTEFyZWFFbGVtZW50KiBz
ZWxmKQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBn
X3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxfQVJFQV9FTEVNRU5UKHNlbGYp
LCAwKTsKLSAgICBXZWJDb3JlOjpIVE1MQXJlYUVsZW1lbnQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUo
c2VsZik7Ci0gICAgZ2NoYXIqIHJlc3VsdCA9IGNvbnZlcnRUb1VURjhTdHJpbmcoaXRlbS0+YXR0
cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihXZWJDb3JlOjpIVE1MTmFtZXM6OnJlbEF0dHIp
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi12b2lkIHdlYmtpdF9kb21faHRtbF9hcmVhX2Vs
ZW1lbnRfc2V0X3JlbChXZWJLaXRET01IVE1MQXJlYUVsZW1lbnQqIHNlbGYsIGNvbnN0IGdjaGFy
KiB2YWx1ZSkKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0g
ICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxfQVJFQV9FTEVNRU5UKHNlbGYp
KTsKLSAgICBnX3JldHVybl9pZl9mYWlsKHZhbHVlKTsKLSAgICBXZWJDb3JlOjpIVE1MQXJlYUVs
ZW1lbnQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgV1RGOjpTdHJpbmcgY29udmVy
dGVkVmFsdWUgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgodmFsdWUpOwotICAgIGl0ZW0tPnNldEF0
dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWxBdHRy
LCBjb252ZXJ0ZWRWYWx1ZSk7Ci19Ci0KIGdjaGFyKiB3ZWJraXRfZG9tX2h0bWxfYXJlYV9lbGVt
ZW50X2dldF9zaGFwZShXZWJLaXRET01IVE1MQXJlYUVsZW1lbnQqIHNlbGYpCiB7CiAgICAgV2Vi
Q29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwpAQCAtNTg0LDE1ICs0NDksNiBAQCB2
b2lkIHdlYmtpdF9kb21faHRtbF9hcmVhX2VsZW1lbnRfc2V0X3RhcmdldChXZWJLaXRET01IVE1M
QXJlYUVsZW1lbnQqIHNlbGYsIGNvbgogICAgIGl0ZW0tPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5j
aHJvbml6YXRpb24oV2ViQ29yZTo6SFRNTE5hbWVzOjp0YXJnZXRBdHRyLCBjb252ZXJ0ZWRWYWx1
ZSk7CiB9CiAKLVdlYktpdERPTURPTVRva2VuTGlzdCogd2Via2l0X2RvbV9odG1sX2FyZWFfZWxl
bWVudF9nZXRfcmVsX2xpc3QoV2ViS2l0RE9NSFRNTEFyZWFFbGVtZW50KiBzZWxmKQotewotICAg
IFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxf
aWZfZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxfQVJFQV9FTEVNRU5UKHNlbGYpLCAwKTsKLSAgICBX
ZWJDb3JlOjpIVE1MQXJlYUVsZW1lbnQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAg
UmVmUHRyPFdlYkNvcmU6OkRPTVRva2VuTGlzdD4gZ29iamVjdFJlc3VsdCA9IFdURjo6Z2V0UHRy
KGl0ZW0tPnJlbExpc3QoKSk7Ci0gICAgcmV0dXJuIFdlYktpdDo6a2l0KGdvYmplY3RSZXN1bHQu
Z2V0KCkpOwotfQotCiBnY2hhciogd2Via2l0X2RvbV9odG1sX2FyZWFfZWxlbWVudF9nZXRfaHJl
ZihXZWJLaXRET01IVE1MQXJlYUVsZW1lbnQqIHNlbGYpCiB7CiAgICAgV2ViQ29yZTo6SlNNYWlu
VGhyZWFkTnVsbFN0YXRlIHN0YXRlOwpAQCAtNjEyLDE1ICs0NjgsNiBAQCB2b2lkIHdlYmtpdF9k
b21faHRtbF9hcmVhX2VsZW1lbnRfc2V0X2hyZWYoV2ViS2l0RE9NSFRNTEFyZWFFbGVtZW50KiBz
ZWxmLCBjb25zdAogICAgIGl0ZW0tPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24o
V2ViQ29yZTo6SFRNTE5hbWVzOjpocmVmQXR0ciwgY29udmVydGVkVmFsdWUpOwogfQogCi1nY2hh
ciogd2Via2l0X2RvbV9odG1sX2FyZWFfZWxlbWVudF9nZXRfb3JpZ2luKFdlYktpdERPTUhUTUxB
cmVhRWxlbWVudCogc2VsZikKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUg
c3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19IVE1MX0FSRUFf
RUxFTUVOVChzZWxmKSwgMCk7Ci0gICAgV2ViQ29yZTo6SFRNTEFyZWFFbGVtZW50KiBpdGVtID0g
V2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdjaGFyKiByZXN1bHQgPSBjb252ZXJ0VG9VVEY4U3Ry
aW5nKGl0ZW0tPm9yaWdpbigpKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCiBnY2hhciogd2Vi
a2l0X2RvbV9odG1sX2FyZWFfZWxlbWVudF9nZXRfcHJvdG9jb2woV2ViS2l0RE9NSFRNTEFyZWFF
bGVtZW50KiBzZWxmKQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0
ZTsKQEAgLTY0MCw0NCArNDg3LDYgQEAgdm9pZCB3ZWJraXRfZG9tX2h0bWxfYXJlYV9lbGVtZW50
X3NldF9wcm90b2NvbChXZWJLaXRET01IVE1MQXJlYUVsZW1lbnQqIHNlbGYsIGMKICAgICBpdGVt
LT5zZXRQcm90b2NvbChjb252ZXJ0ZWRWYWx1ZSk7CiB9CiAKLWdjaGFyKiB3ZWJraXRfZG9tX2h0
bWxfYXJlYV9lbGVtZW50X2dldF91c2VybmFtZShXZWJLaXRET01IVE1MQXJlYUVsZW1lbnQqIHNl
bGYpCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdf
cmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfSFRNTF9BUkVBX0VMRU1FTlQoc2VsZiks
IDApOwotICAgIFdlYkNvcmU6OkhUTUxBcmVhRWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShz
ZWxmKTsKLSAgICBnY2hhciogcmVzdWx0ID0gY29udmVydFRvVVRGOFN0cmluZyhpdGVtLT51c2Vy
bmFtZSgpKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi12b2lkIHdlYmtpdF9kb21faHRtbF9h
cmVhX2VsZW1lbnRfc2V0X3VzZXJuYW1lKFdlYktpdERPTUhUTUxBcmVhRWxlbWVudCogc2VsZiwg
Y29uc3QgZ2NoYXIqIHZhbHVlKQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0
ZSBzdGF0ZTsKLSAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfSFRNTF9BUkVBX0VM
RU1FTlQoc2VsZikpOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwodmFsdWUpOwotICAgIFdlYkNvcmU6
OkhUTUxBcmVhRWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBXVEY6OlN0
cmluZyBjb252ZXJ0ZWRWYWx1ZSA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOCh2YWx1ZSk7Ci0gICAg
aXRlbS0+c2V0VXNlcm5hbWUoY29udmVydGVkVmFsdWUpOwotfQotCi1nY2hhciogd2Via2l0X2Rv
bV9odG1sX2FyZWFfZWxlbWVudF9nZXRfcGFzc3dvcmQoV2ViS2l0RE9NSFRNTEFyZWFFbGVtZW50
KiBzZWxmKQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxfQVJFQV9FTEVNRU5UKHNl
bGYpLCAwKTsKLSAgICBXZWJDb3JlOjpIVE1MQXJlYUVsZW1lbnQqIGl0ZW0gPSBXZWJLaXQ6OmNv
cmUoc2VsZik7Ci0gICAgZ2NoYXIqIHJlc3VsdCA9IGNvbnZlcnRUb1VURjhTdHJpbmcoaXRlbS0+
cGFzc3dvcmQoKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotdm9pZCB3ZWJraXRfZG9tX2h0
bWxfYXJlYV9lbGVtZW50X3NldF9wYXNzd29yZChXZWJLaXRET01IVE1MQXJlYUVsZW1lbnQqIHNl
bGYsIGNvbnN0IGdjaGFyKiB2YWx1ZSkKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxs
U3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxfQVJF
QV9FTEVNRU5UKHNlbGYpKTsKLSAgICBnX3JldHVybl9pZl9mYWlsKHZhbHVlKTsKLSAgICBXZWJD
b3JlOjpIVE1MQXJlYUVsZW1lbnQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgV1RG
OjpTdHJpbmcgY29udmVydGVkVmFsdWUgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgodmFsdWUpOwot
ICAgIGl0ZW0tPnNldFBhc3N3b3JkKGNvbnZlcnRlZFZhbHVlKTsKLX0KLQogZ2NoYXIqIHdlYmtp
dF9kb21faHRtbF9hcmVhX2VsZW1lbnRfZ2V0X2hvc3QoV2ViS2l0RE9NSFRNTEFyZWFFbGVtZW50
KiBzZWxmKQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0
ay9ET00vV2ViS2l0RE9NSFRNTEFyZWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxBcmVhRWxlbWVudC5o
CmluZGV4IDEzNTU5MzYuLmFlNzA1YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTEFyZWFFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3Rr
L0RPTS9XZWJLaXRET01IVE1MQXJlYUVsZW1lbnQuaApAQCAtMTY3LDYgKzE2NywxNiBAQCBXRUJL
SVRfQVBJIGdjaGFyKgogd2Via2l0X2RvbV9odG1sX2FyZWFfZWxlbWVudF9nZXRfcHJvdG9jb2wo
V2ViS2l0RE9NSFRNTEFyZWFFbGVtZW50KiBzZWxmKTsKIAogLyoqCisgKiB3ZWJraXRfZG9tX2h0
bWxfYXJlYV9lbGVtZW50X3NldF9wcm90b2NvbDoKKyAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1M
QXJlYUVsZW1lbnQKKyAqIEB2YWx1ZTogQSAjZ2NoYXIKKyAqCisgKiBTaW5jZTogMi4xNgorKiov
CitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9kb21faHRtbF9hcmVhX2VsZW1lbnRfc2V0X3Byb3Rv
Y29sKFdlYktpdERPTUhUTUxBcmVhRWxlbWVudCogc2VsZiwgY29uc3QgZ2NoYXIqIHZhbHVlKTsK
KworLyoqCiAgKiB3ZWJraXRfZG9tX2h0bWxfYXJlYV9lbGVtZW50X2dldF9ob3N0OgogICogQHNl
bGY6IEEgI1dlYktpdERPTUhUTUxBcmVhRWxlbWVudAogICoKQEAgLTE3Niw2ICsxODYsMTYgQEAg
V0VCS0lUX0FQSSBnY2hhcioKIHdlYmtpdF9kb21faHRtbF9hcmVhX2VsZW1lbnRfZ2V0X2hvc3Qo
V2ViS2l0RE9NSFRNTEFyZWFFbGVtZW50KiBzZWxmKTsKIAogLyoqCisgKiB3ZWJraXRfZG9tX2h0
bWxfYXJlYV9lbGVtZW50X3NldF9ob3N0OgorICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxBcmVh
RWxlbWVudAorICogQHZhbHVlOiBBICNnY2hhcgorICoKKyAqIFNpbmNlOiAyLjE2CisqKi8KK1dF
QktJVF9BUEkgdm9pZAord2Via2l0X2RvbV9odG1sX2FyZWFfZWxlbWVudF9zZXRfaG9zdChXZWJL
aXRET01IVE1MQXJlYUVsZW1lbnQqIHNlbGYsIGNvbnN0IGdjaGFyKiB2YWx1ZSk7CisKKy8qKgog
ICogd2Via2l0X2RvbV9odG1sX2FyZWFfZWxlbWVudF9nZXRfaG9zdG5hbWU6CiAgKiBAc2VsZjog
QSAjV2ViS2l0RE9NSFRNTEFyZWFFbGVtZW50CiAgKgpAQCAtMTg1LDYgKzIwNSwxNiBAQCBXRUJL
SVRfQVBJIGdjaGFyKgogd2Via2l0X2RvbV9odG1sX2FyZWFfZWxlbWVudF9nZXRfaG9zdG5hbWUo
V2ViS2l0RE9NSFRNTEFyZWFFbGVtZW50KiBzZWxmKTsKIAogLyoqCisgKiB3ZWJraXRfZG9tX2h0
bWxfYXJlYV9lbGVtZW50X3NldF9ob3N0bmFtZToKKyAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1M
QXJlYUVsZW1lbnQKKyAqIEB2YWx1ZTogQSAjZ2NoYXIKKyAqCisgKiBTaW5jZTogMi4xNgorKiov
CitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9kb21faHRtbF9hcmVhX2VsZW1lbnRfc2V0X2hvc3Ru
YW1lKFdlYktpdERPTUhUTUxBcmVhRWxlbWVudCogc2VsZiwgY29uc3QgZ2NoYXIqIHZhbHVlKTsK
KworLyoqCiAgKiB3ZWJraXRfZG9tX2h0bWxfYXJlYV9lbGVtZW50X2dldF9wb3J0OgogICogQHNl
bGY6IEEgI1dlYktpdERPTUhUTUxBcmVhRWxlbWVudAogICoKQEAgLTE5NCw2ICsyMjQsMTYgQEAg
V0VCS0lUX0FQSSBnY2hhcioKIHdlYmtpdF9kb21faHRtbF9hcmVhX2VsZW1lbnRfZ2V0X3BvcnQo
V2ViS2l0RE9NSFRNTEFyZWFFbGVtZW50KiBzZWxmKTsKIAogLyoqCisgKiB3ZWJraXRfZG9tX2h0
bWxfYXJlYV9lbGVtZW50X3NldF9wb3J0OgorICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxBcmVh
RWxlbWVudAorICogQHZhbHVlOiBBICNnY2hhcgorICoKKyAqIFNpbmNlOiAyLjE2CisqKi8KK1dF
QktJVF9BUEkgdm9pZAord2Via2l0X2RvbV9odG1sX2FyZWFfZWxlbWVudF9zZXRfcG9ydChXZWJL
aXRET01IVE1MQXJlYUVsZW1lbnQqIHNlbGYsIGNvbnN0IGdjaGFyKiB2YWx1ZSk7CisKKy8qKgog
ICogd2Via2l0X2RvbV9odG1sX2FyZWFfZWxlbWVudF9nZXRfcGF0aG5hbWU6CiAgKiBAc2VsZjog
QSAjV2ViS2l0RE9NSFRNTEFyZWFFbGVtZW50CiAgKgpAQCAtMjAzLDYgKzI0MywxNiBAQCBXRUJL
SVRfQVBJIGdjaGFyKgogd2Via2l0X2RvbV9odG1sX2FyZWFfZWxlbWVudF9nZXRfcGF0aG5hbWUo
V2ViS2l0RE9NSFRNTEFyZWFFbGVtZW50KiBzZWxmKTsKIAogLyoqCisgKiB3ZWJraXRfZG9tX2h0
bWxfYXJlYV9lbGVtZW50X3NldF9wYXRobmFtZToKKyAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1M
QXJlYUVsZW1lbnQKKyAqIEB2YWx1ZTogQSAjZ2NoYXIKKyAqCisgKiBTaW5jZTogMi4xNgorKiov
CitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9kb21faHRtbF9hcmVhX2VsZW1lbnRfc2V0X3BhdGhu
YW1lKFdlYktpdERPTUhUTUxBcmVhRWxlbWVudCogc2VsZiwgY29uc3QgZ2NoYXIqIHZhbHVlKTsK
KworLyoqCiAgKiB3ZWJraXRfZG9tX2h0bWxfYXJlYV9lbGVtZW50X2dldF9zZWFyY2g6CiAgKiBA
c2VsZjogQSAjV2ViS2l0RE9NSFRNTEFyZWFFbGVtZW50CiAgKgpAQCAtMjEyLDYgKzI2MiwxNiBA
QCBXRUJLSVRfQVBJIGdjaGFyKgogd2Via2l0X2RvbV9odG1sX2FyZWFfZWxlbWVudF9nZXRfc2Vh
cmNoKFdlYktpdERPTUhUTUxBcmVhRWxlbWVudCogc2VsZik7CiAKIC8qKgorICogd2Via2l0X2Rv
bV9odG1sX2FyZWFfZWxlbWVudF9zZXRfc2VhcmNoOgorICogQHNlbGY6IEEgI1dlYktpdERPTUhU
TUxBcmVhRWxlbWVudAorICogQHZhbHVlOiBBICNnY2hhcgorICoKKyAqIFNpbmNlOiAyLjE2Cisq
Ki8KK1dFQktJVF9BUEkgdm9pZAord2Via2l0X2RvbV9odG1sX2FyZWFfZWxlbWVudF9zZXRfc2Vh
cmNoKFdlYktpdERPTUhUTUxBcmVhRWxlbWVudCogc2VsZiwgY29uc3QgZ2NoYXIqIHZhbHVlKTsK
KworLyoqCiAgKiB3ZWJraXRfZG9tX2h0bWxfYXJlYV9lbGVtZW50X2dldF9oYXNoOgogICogQHNl
bGY6IEEgI1dlYktpdERPTUhUTUxBcmVhRWxlbWVudAogICoKQEAgLTIyMCw2ICsyODAsMTYgQEAg
d2Via2l0X2RvbV9odG1sX2FyZWFfZWxlbWVudF9nZXRfc2VhcmNoKFdlYktpdERPTUhUTUxBcmVh
RWxlbWVudCogc2VsZik7CiBXRUJLSVRfQVBJIGdjaGFyKgogd2Via2l0X2RvbV9odG1sX2FyZWFf
ZWxlbWVudF9nZXRfaGFzaChXZWJLaXRET01IVE1MQXJlYUVsZW1lbnQqIHNlbGYpOwogCisvKioK
KyAqIHdlYmtpdF9kb21faHRtbF9hcmVhX2VsZW1lbnRfc2V0X2hhc2g6CisgKiBAc2VsZjogQSAj
V2ViS2l0RE9NSFRNTEFyZWFFbGVtZW50CisgKiBAdmFsdWU6IEEgI2djaGFyCisgKgorICogU3Rh
YmlsaXR5OiBVbnN0YWJsZQorKiovCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9kb21faHRtbF9h
cmVhX2VsZW1lbnRfc2V0X2hhc2goV2ViS2l0RE9NSFRNTEFyZWFFbGVtZW50KiBzZWxmLCBjb25z
dCBnY2hhciogdmFsdWUpOworCiBHX0VORF9ERUNMUwogCiAjZW5kaWYgLyogV2ViS2l0RE9NSFRN
TEFyZWFFbGVtZW50X2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTEFyZWFFbGVtZW50VW5zdGFi
bGUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9E
T00vV2ViS2l0RE9NSFRNTEFyZWFFbGVtZW50VW5zdGFibGUuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMGMxNGFlNC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxBcmVhRWxlbWVudFVu
c3RhYmxlLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyMTAgKzAsMCBAQAotLyoKLSAqICBUaGlzIGZp
bGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCi0gKiAgVGhpcyBm
aWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1P
RElGWSEKLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAq
ICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
LSAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiAgQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBXZWJLaXRET01IVE1MQXJlYUVsZW1lbnRVbnN0YWJs
ZV9oCi0jZGVmaW5lIFdlYktpdERPTUhUTUxBcmVhRWxlbWVudFVuc3RhYmxlX2gKLQotI2lmZGVm
IFdFQktJVF9ET01fVVNFX1VOU1RBQkxFX0FQSQotCi0jaW5jbHVkZSA8d2Via2l0ZG9tL3dlYmtp
dGRvbWRlZmluZXMtdW5zdGFibGUuaD4KLQotR19CRUdJTl9ERUNMUwotCi0vKioKLSAqIHdlYmtp
dF9kb21faHRtbF9hcmVhX2VsZW1lbnRfZ2V0X3Bpbmc6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9N
SFRNTEFyZWFFbGVtZW50Ci0gKgotICogUmV0dXJuczogQSAjZ2NoYXIKLSAqCi0gKiBTdGFiaWxp
dHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgZ2NoYXIqCi13ZWJraXRfZG9tX2h0bWxfYXJl
YV9lbGVtZW50X2dldF9waW5nKFdlYktpdERPTUhUTUxBcmVhRWxlbWVudCogc2VsZik7Ci0KLS8q
KgotICogd2Via2l0X2RvbV9odG1sX2FyZWFfZWxlbWVudF9zZXRfcGluZzoKLSAqIEBzZWxmOiBB
ICNXZWJLaXRET01IVE1MQXJlYUVsZW1lbnQKLSAqIEB2YWx1ZTogQSAjZ2NoYXIKLSAqCi0gKiBT
dGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgdm9pZAotd2Via2l0X2RvbV9odG1s
X2FyZWFfZWxlbWVudF9zZXRfcGluZyhXZWJLaXRET01IVE1MQXJlYUVsZW1lbnQqIHNlbGYsIGNv
bnN0IGdjaGFyKiB2YWx1ZSk7Ci0KLS8qKgotICogd2Via2l0X2RvbV9odG1sX2FyZWFfZWxlbWVu
dF9nZXRfcmVsOgotICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxBcmVhRWxlbWVudAotICoKLSAq
IFJldHVybnM6IEEgI2djaGFyCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJL
SVRfQVBJIGdjaGFyKgotd2Via2l0X2RvbV9odG1sX2FyZWFfZWxlbWVudF9nZXRfcmVsKFdlYktp
dERPTUhUTUxBcmVhRWxlbWVudCogc2VsZik7Ci0KLS8qKgotICogd2Via2l0X2RvbV9odG1sX2Fy
ZWFfZWxlbWVudF9zZXRfcmVsOgotICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxBcmVhRWxlbWVu
dAotICogQHZhbHVlOiBBICNnY2hhcgotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwot
V0VCS0lUX0FQSSB2b2lkCi13ZWJraXRfZG9tX2h0bWxfYXJlYV9lbGVtZW50X3NldF9yZWwoV2Vi
S2l0RE9NSFRNTEFyZWFFbGVtZW50KiBzZWxmLCBjb25zdCBnY2hhciogdmFsdWUpOwotCi0vKioK
LSAqIHdlYmtpdF9kb21faHRtbF9hcmVhX2VsZW1lbnRfZ2V0X3JlbF9saXN0OgotICogQHNlbGY6
IEEgI1dlYktpdERPTUhUTUxBcmVhRWxlbWVudAotICoKLSAqIFJldHVybnM6ICh0cmFuc2ZlciBm
dWxsKTogQSAjV2ViS2l0RE9NRE9NVG9rZW5MaXN0Ci0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJs
ZQotKiovCi1XRUJLSVRfQVBJIFdlYktpdERPTURPTVRva2VuTGlzdCoKLXdlYmtpdF9kb21faHRt
bF9hcmVhX2VsZW1lbnRfZ2V0X3JlbF9saXN0KFdlYktpdERPTUhUTUxBcmVhRWxlbWVudCogc2Vs
Zik7Ci0KLS8qKgotICogd2Via2l0X2RvbV9odG1sX2FyZWFfZWxlbWVudF9nZXRfb3JpZ2luOgot
ICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxBcmVhRWxlbWVudAotICoKLSAqIFJldHVybnM6IEEg
I2djaGFyCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIGdjaGFy
Kgotd2Via2l0X2RvbV9odG1sX2FyZWFfZWxlbWVudF9nZXRfb3JpZ2luKFdlYktpdERPTUhUTUxB
cmVhRWxlbWVudCogc2VsZik7Ci0KLS8qKgotICogd2Via2l0X2RvbV9odG1sX2FyZWFfZWxlbWVu
dF9zZXRfcHJvdG9jb2w6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTEFyZWFFbGVtZW50Ci0g
KiBAdmFsdWU6IEEgI2djaGFyCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJL
SVRfQVBJIHZvaWQKLXdlYmtpdF9kb21faHRtbF9hcmVhX2VsZW1lbnRfc2V0X3Byb3RvY29sKFdl
YktpdERPTUhUTUxBcmVhRWxlbWVudCogc2VsZiwgY29uc3QgZ2NoYXIqIHZhbHVlKTsKLQotLyoq
Ci0gKiB3ZWJraXRfZG9tX2h0bWxfYXJlYV9lbGVtZW50X2dldF91c2VybmFtZToKLSAqIEBzZWxm
OiBBICNXZWJLaXRET01IVE1MQXJlYUVsZW1lbnQKLSAqCi0gKiBSZXR1cm5zOiBBICNnY2hhcgot
ICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSBnY2hhcioKLXdlYmtp
dF9kb21faHRtbF9hcmVhX2VsZW1lbnRfZ2V0X3VzZXJuYW1lKFdlYktpdERPTUhUTUxBcmVhRWxl
bWVudCogc2VsZik7Ci0KLS8qKgotICogd2Via2l0X2RvbV9odG1sX2FyZWFfZWxlbWVudF9zZXRf
dXNlcm5hbWU6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTEFyZWFFbGVtZW50Ci0gKiBAdmFs
dWU6IEEgI2djaGFyCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJ
IHZvaWQKLXdlYmtpdF9kb21faHRtbF9hcmVhX2VsZW1lbnRfc2V0X3VzZXJuYW1lKFdlYktpdERP
TUhUTUxBcmVhRWxlbWVudCogc2VsZiwgY29uc3QgZ2NoYXIqIHZhbHVlKTsKLQotLyoqCi0gKiB3
ZWJraXRfZG9tX2h0bWxfYXJlYV9lbGVtZW50X2dldF9wYXNzd29yZDoKLSAqIEBzZWxmOiBBICNX
ZWJLaXRET01IVE1MQXJlYUVsZW1lbnQKLSAqCi0gKiBSZXR1cm5zOiBBICNnY2hhcgotICoKLSAq
IFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSBnY2hhcioKLXdlYmtpdF9kb21f
aHRtbF9hcmVhX2VsZW1lbnRfZ2V0X3Bhc3N3b3JkKFdlYktpdERPTUhUTUxBcmVhRWxlbWVudCog
c2VsZik7Ci0KLS8qKgotICogd2Via2l0X2RvbV9odG1sX2FyZWFfZWxlbWVudF9zZXRfcGFzc3dv
cmQ6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTEFyZWFFbGVtZW50Ci0gKiBAdmFsdWU6IEEg
I2djaGFyCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIHZvaWQK
LXdlYmtpdF9kb21faHRtbF9hcmVhX2VsZW1lbnRfc2V0X3Bhc3N3b3JkKFdlYktpdERPTUhUTUxB
cmVhRWxlbWVudCogc2VsZiwgY29uc3QgZ2NoYXIqIHZhbHVlKTsKLQotLyoqCi0gKiB3ZWJraXRf
ZG9tX2h0bWxfYXJlYV9lbGVtZW50X3NldF9ob3N0OgotICogQHNlbGY6IEEgI1dlYktpdERPTUhU
TUxBcmVhRWxlbWVudAotICogQHZhbHVlOiBBICNnY2hhcgotICoKLSAqIFN0YWJpbGl0eTogVW5z
dGFibGUKLSoqLwotV0VCS0lUX0FQSSB2b2lkCi13ZWJraXRfZG9tX2h0bWxfYXJlYV9lbGVtZW50
X3NldF9ob3N0KFdlYktpdERPTUhUTUxBcmVhRWxlbWVudCogc2VsZiwgY29uc3QgZ2NoYXIqIHZh
bHVlKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0bWxfYXJlYV9lbGVtZW50X3NldF9ob3N0bmFt
ZToKLSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MQXJlYUVsZW1lbnQKLSAqIEB2YWx1ZTogQSAj
Z2NoYXIKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgdm9pZAot
d2Via2l0X2RvbV9odG1sX2FyZWFfZWxlbWVudF9zZXRfaG9zdG5hbWUoV2ViS2l0RE9NSFRNTEFy
ZWFFbGVtZW50KiBzZWxmLCBjb25zdCBnY2hhciogdmFsdWUpOwotCi0vKioKLSAqIHdlYmtpdF9k
b21faHRtbF9hcmVhX2VsZW1lbnRfc2V0X3BvcnQ6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRN
TEFyZWFFbGVtZW50Ci0gKiBAdmFsdWU6IEEgI2djaGFyCi0gKgotICogU3RhYmlsaXR5OiBVbnN0
YWJsZQotKiovCi1XRUJLSVRfQVBJIHZvaWQKLXdlYmtpdF9kb21faHRtbF9hcmVhX2VsZW1lbnRf
c2V0X3BvcnQoV2ViS2l0RE9NSFRNTEFyZWFFbGVtZW50KiBzZWxmLCBjb25zdCBnY2hhciogdmFs
dWUpOwotCi0vKioKLSAqIHdlYmtpdF9kb21faHRtbF9hcmVhX2VsZW1lbnRfc2V0X3BhdGhuYW1l
OgotICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxBcmVhRWxlbWVudAotICogQHZhbHVlOiBBICNn
Y2hhcgotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSB2b2lkCi13
ZWJraXRfZG9tX2h0bWxfYXJlYV9lbGVtZW50X3NldF9wYXRobmFtZShXZWJLaXRET01IVE1MQXJl
YUVsZW1lbnQqIHNlbGYsIGNvbnN0IGdjaGFyKiB2YWx1ZSk7Ci0KLS8qKgotICogd2Via2l0X2Rv
bV9odG1sX2FyZWFfZWxlbWVudF9zZXRfc2VhcmNoOgotICogQHNlbGY6IEEgI1dlYktpdERPTUhU
TUxBcmVhRWxlbWVudAotICogQHZhbHVlOiBBICNnY2hhcgotICoKLSAqIFN0YWJpbGl0eTogVW5z
dGFibGUKLSoqLwotV0VCS0lUX0FQSSB2b2lkCi13ZWJraXRfZG9tX2h0bWxfYXJlYV9lbGVtZW50
X3NldF9zZWFyY2goV2ViS2l0RE9NSFRNTEFyZWFFbGVtZW50KiBzZWxmLCBjb25zdCBnY2hhciog
dmFsdWUpOwotCi0vKioKLSAqIHdlYmtpdF9kb21faHRtbF9hcmVhX2VsZW1lbnRfc2V0X2hhc2g6
Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTEFyZWFFbGVtZW50Ci0gKiBAdmFsdWU6IEEgI2dj
aGFyCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIHZvaWQKLXdl
YmtpdF9kb21faHRtbF9hcmVhX2VsZW1lbnRfc2V0X2hhc2goV2ViS2l0RE9NSFRNTEFyZWFFbGVt
ZW50KiBzZWxmLCBjb25zdCBnY2hhciogdmFsdWUpOwotCi0KLUdfRU5EX0RFQ0xTCi0KLSNlbmRp
ZiAvKiBXRUJLSVRfRE9NX1VTRV9VTlNUQUJMRV9BUEkgKi8KLSNlbmRpZiAvKiBXZWJLaXRET01I
VE1MQXJlYUVsZW1lbnRVbnN0YWJsZV9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxBdWRpb0Vs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z3RrL0RPTS9XZWJLaXRET01IVE1MQXVkaW9FbGVtZW50LmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZjM1NTg1Zi4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxBdWRpb0VsZW1lbnQu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTM2ICswLDAgQEAKLS8qCi0gKiAgVGhpcyBmaWxlIGlz
IHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICogIFRoaXMgZmlsZSBo
YXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkh
Ci0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAg
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJLaXRET01IVE1M
QXVkaW9FbGVtZW50LmgiCi0KLSNpbmNsdWRlIDxXZWJDb3JlL0NTU0ltcG9ydFJ1bGUuaD4KLSNp
bmNsdWRlICJET01PYmplY3RDYWNoZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnQuaD4K
LSNpbmNsdWRlIDxXZWJDb3JlL0V4Y2VwdGlvbkNvZGUuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0V4
Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbi5oPgotI2luY2x1ZGUgIkdPYmplY3RFdmVudExpc3RlbmVy
LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9KU01haW5UaHJlYWRFeGVjU3RhdGUuaD4KLSNpbmNsdWRl
ICJXZWJLaXRET01FdmVudFByaXZhdGUuaCIKLSNpbmNsdWRlICJXZWJLaXRET01FdmVudFRhcmdl
dC5oIgotI2luY2x1ZGUgIldlYktpdERPTUhUTUxBdWRpb0VsZW1lbnRQcml2YXRlLmgiCi0jaW5j
bHVkZSAiV2ViS2l0RE9NTm9kZVByaXZhdGUuaCIKLSNpbmNsdWRlICJXZWJLaXRET01Qcml2YXRl
LmgiCi0jaW5jbHVkZSAiQ29udmVydFRvVVRGOFN0cmluZy5oIgotI2luY2x1ZGUgPHd0Zi9HZXRQ
dHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLSNpZiBFTkFCTEUoVklERU8pCi0KLW5h
bWVzcGFjZSBXZWJLaXQgewotCi1XZWJLaXRET01IVE1MQXVkaW9FbGVtZW50KiBraXQoV2ViQ29y
ZTo6SFRNTEF1ZGlvRWxlbWVudCogb2JqKQotewotICAgIHJldHVybiBXRUJLSVRfRE9NX0hUTUxf
QVVESU9fRUxFTUVOVChraXQoc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KG9iaikpKTsKLX0K
LQotV2ViQ29yZTo6SFRNTEF1ZGlvRWxlbWVudCogY29yZShXZWJLaXRET01IVE1MQXVkaW9FbGVt
ZW50KiByZXF1ZXN0KQotewotICAgIHJldHVybiByZXF1ZXN0ID8gc3RhdGljX2Nhc3Q8V2ViQ29y
ZTo6SFRNTEF1ZGlvRWxlbWVudCo+KFdFQktJVF9ET01fT0JKRUNUKHJlcXVlc3QpLT5jb3JlT2Jq
ZWN0KSA6IDA7Ci19Ci0KLVdlYktpdERPTUhUTUxBdWRpb0VsZW1lbnQqIHdyYXBIVE1MQXVkaW9F
bGVtZW50KFdlYkNvcmU6OkhUTUxBdWRpb0VsZW1lbnQqIGNvcmVPYmplY3QpCi17Ci0gICAgQVNT
RVJUKGNvcmVPYmplY3QpOwotICAgIHJldHVybiBXRUJLSVRfRE9NX0hUTUxfQVVESU9fRUxFTUVO
VChnX29iamVjdF9uZXcoV0VCS0lUX0RPTV9UWVBFX0hUTUxfQVVESU9fRUxFTUVOVCwgImNvcmUt
b2JqZWN0IiwgY29yZU9iamVjdCwgbnVsbHB0cikpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJL
aXQKLQotI2VuZGlmIC8vIEVOQUJMRShWSURFTykKLQotc3RhdGljIGdib29sZWFuIHdlYmtpdF9k
b21faHRtbF9hdWRpb19lbGVtZW50X2Rpc3BhdGNoX2V2ZW50KFdlYktpdERPTUV2ZW50VGFyZ2V0
KiB0YXJnZXQsIFdlYktpdERPTUV2ZW50KiBldmVudCwgR0Vycm9yKiogZXJyb3IpCi17Ci0jaWYg
RU5BQkxFKFZJREVPKQotICAgIFdlYkNvcmU6OkV2ZW50KiBjb3JlRXZlbnQgPSBXZWJLaXQ6OmNv
cmUoZXZlbnQpOwotICAgIGlmICghY29yZUV2ZW50KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgV2ViQ29yZTo6SFRNTEF1ZGlvRWxlbWVudCogY29yZVRhcmdldCA9IHN0YXRpY19jYXN0PFdl
YkNvcmU6OkhUTUxBdWRpb0VsZW1lbnQqPihXRUJLSVRfRE9NX09CSkVDVCh0YXJnZXQpLT5jb3Jl
T2JqZWN0KTsKLQotICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGdib29s
ZWFuIHJlc3VsdCA9IGNvcmVUYXJnZXQtPmRpc3BhdGNoRXZlbnRGb3JCaW5kaW5ncygqY29yZUV2
ZW50LCBlYyk7Ci0gICAgaWYgKGVjKSB7Ci0gICAgICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGVE
ZXNjcmlwdGlvbiBkZXNjcmlwdGlvbihlYyk7Ci0gICAgICAgIGdfc2V0X2Vycm9yX2xpdGVyYWwo
ZXJyb3IsIGdfcXVhcmtfZnJvbV9zdHJpbmcoIldFQktJVF9ET00iKSwgZGVzY3JpcHRpb24uY29k
ZSwgZGVzY3JpcHRpb24ubmFtZSk7Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7Ci0jZWxzZQot
ICAgIFVOVVNFRF9QQVJBTSh0YXJnZXQpOwotICAgIFVOVVNFRF9QQVJBTShldmVudCk7Ci0gICAg
VU5VU0VEX1BBUkFNKGVycm9yKTsKLSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5U
KCJWaWRlbyIpCi0gICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmIC8vIEVOQUJMRShWSURFTykKLX0K
LQotc3RhdGljIGdib29sZWFuIHdlYmtpdF9kb21faHRtbF9hdWRpb19lbGVtZW50X2FkZF9ldmVu
dF9saXN0ZW5lcihXZWJLaXRET01FdmVudFRhcmdldCogdGFyZ2V0LCBjb25zdCBjaGFyKiBldmVu
dE5hbWUsIEdDbG9zdXJlKiBoYW5kbGVyLCBnYm9vbGVhbiB1c2VDYXB0dXJlKQotewotI2lmIEVO
QUJMRShWSURFTykKLSAgICBXZWJDb3JlOjpIVE1MQXVkaW9FbGVtZW50KiBjb3JlVGFyZ2V0ID0g
c3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEF1ZGlvRWxlbWVudCo+KFdFQktJVF9ET01fT0JKRUNU
KHRhcmdldCktPmNvcmVPYmplY3QpOwotICAgIHJldHVybiBXZWJLaXQ6OkdPYmplY3RFdmVudExp
c3RlbmVyOjphZGRFdmVudExpc3RlbmVyKEdfT0JKRUNUKHRhcmdldCksIGNvcmVUYXJnZXQsIGV2
ZW50TmFtZSwgaGFuZGxlciwgdXNlQ2FwdHVyZSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTSh0
YXJnZXQpOwotICAgIFVOVVNFRF9QQVJBTShldmVudE5hbWUpOwotICAgIFVOVVNFRF9QQVJBTSho
YW5kbGVyKTsKLSAgICBVTlVTRURfUEFSQU0odXNlQ2FwdHVyZSk7Ci0gICAgV0VCS0lUX1dBUk5f
RkVBVFVSRV9OT1RfUFJFU0VOVCgiVmlkZW8iKQotICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZiAv
LyBFTkFCTEUoVklERU8pCi19Ci0KLXN0YXRpYyBnYm9vbGVhbiB3ZWJraXRfZG9tX2h0bWxfYXVk
aW9fZWxlbWVudF9yZW1vdmVfZXZlbnRfbGlzdGVuZXIoV2ViS2l0RE9NRXZlbnRUYXJnZXQqIHRh
cmdldCwgY29uc3QgY2hhciogZXZlbnROYW1lLCBHQ2xvc3VyZSogaGFuZGxlciwgZ2Jvb2xlYW4g
dXNlQ2FwdHVyZSkKLXsKLSNpZiBFTkFCTEUoVklERU8pCi0gICAgV2ViQ29yZTo6SFRNTEF1ZGlv
RWxlbWVudCogY29yZVRhcmdldCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxBdWRpb0VsZW1l
bnQqPihXRUJLSVRfRE9NX09CSkVDVCh0YXJnZXQpLT5jb3JlT2JqZWN0KTsKLSAgICByZXR1cm4g
V2ViS2l0OjpHT2JqZWN0RXZlbnRMaXN0ZW5lcjo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihHX09CSkVD
VCh0YXJnZXQpLCBjb3JlVGFyZ2V0LCBldmVudE5hbWUsIGhhbmRsZXIsIHVzZUNhcHR1cmUpOwot
I2Vsc2UKLSAgICBVTlVTRURfUEFSQU0odGFyZ2V0KTsKLSAgICBVTlVTRURfUEFSQU0oZXZlbnRO
YW1lKTsKLSAgICBVTlVTRURfUEFSQU0oaGFuZGxlcik7Ci0gICAgVU5VU0VEX1BBUkFNKHVzZUNh
cHR1cmUpOwotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIlZpZGVvIikKLSAg
ICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYgLy8gRU5BQkxFKFZJREVPKQotfQotCi1zdGF0aWMgdm9p
ZCB3ZWJraXRfZG9tX2V2ZW50X3RhcmdldF9pbml0KFdlYktpdERPTUV2ZW50VGFyZ2V0SWZhY2Uq
IGlmYWNlKQotewotICAgIGlmYWNlLT5kaXNwYXRjaF9ldmVudCA9IHdlYmtpdF9kb21faHRtbF9h
dWRpb19lbGVtZW50X2Rpc3BhdGNoX2V2ZW50OwotICAgIGlmYWNlLT5hZGRfZXZlbnRfbGlzdGVu
ZXIgPSB3ZWJraXRfZG9tX2h0bWxfYXVkaW9fZWxlbWVudF9hZGRfZXZlbnRfbGlzdGVuZXI7Ci0g
ICAgaWZhY2UtPnJlbW92ZV9ldmVudF9saXN0ZW5lciA9IHdlYmtpdF9kb21faHRtbF9hdWRpb19l
bGVtZW50X3JlbW92ZV9ldmVudF9saXN0ZW5lcjsKLX0KLQotR19ERUZJTkVfVFlQRV9XSVRIX0NP
REUoV2ViS2l0RE9NSFRNTEF1ZGlvRWxlbWVudCwgd2Via2l0X2RvbV9odG1sX2F1ZGlvX2VsZW1l
bnQsIFdFQktJVF9ET01fVFlQRV9IVE1MX01FRElBX0VMRU1FTlQsIEdfSU1QTEVNRU5UX0lOVEVS
RkFDRShXRUJLSVRfRE9NX1RZUEVfRVZFTlRfVEFSR0VULCB3ZWJraXRfZG9tX2V2ZW50X3Rhcmdl
dF9pbml0KSkKLQotc3RhdGljIHZvaWQgd2Via2l0X2RvbV9odG1sX2F1ZGlvX2VsZW1lbnRfY2xh
c3NfaW5pdChXZWJLaXRET01IVE1MQXVkaW9FbGVtZW50Q2xhc3MqIHJlcXVlc3RDbGFzcykKLXsK
LSAgICBVTlVTRURfUEFSQU0ocmVxdWVzdENsYXNzKTsKLX0KLQotc3RhdGljIHZvaWQgd2Via2l0
X2RvbV9odG1sX2F1ZGlvX2VsZW1lbnRfaW5pdChXZWJLaXRET01IVE1MQXVkaW9FbGVtZW50KiBy
ZXF1ZXN0KQotewotICAgIFVOVVNFRF9QQVJBTShyZXF1ZXN0KTsKLX0KLQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJL
aXRET01IVE1MQXVkaW9FbGVtZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxBdWRpb0VsZW1lbnQuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGI0ZTY3ZC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxB
dWRpb0VsZW1lbnQuaAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLS8qCi0gKiAgVGhp
cyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICogIFRo
aXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5P
VCBNT0RJRlkhCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAq
Ci0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgV2ViS2l0RE9NSFRNTEF1ZGlvRWxlbWVudF9o
Ci0jZGVmaW5lIFdlYktpdERPTUhUTUxBdWRpb0VsZW1lbnRfaAotCi0jaWZkZWYgV0VCS0lUX0RP
TV9VU0VfVU5TVEFCTEVfQVBJCi0KLSNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgotI2luY2x1ZGUg
PHdlYmtpdGRvbS9XZWJLaXRET01IVE1MTWVkaWFFbGVtZW50Lmg+Ci0jaW5jbHVkZSA8d2Via2l0
ZG9tL3dlYmtpdGRvbWRlZmluZXMtdW5zdGFibGUuaD4KLQotR19CRUdJTl9ERUNMUwotCi0jZGVm
aW5lIFdFQktJVF9ET01fVFlQRV9IVE1MX0FVRElPX0VMRU1FTlQgICAgICAgICAgICAod2Via2l0
X2RvbV9odG1sX2F1ZGlvX2VsZW1lbnRfZ2V0X3R5cGUoKSkKLSNkZWZpbmUgV0VCS0lUX0RPTV9I
VE1MX0FVRElPX0VMRU1FTlQob2JqKSAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0Vf
Q0FTVCgob2JqKSwgV0VCS0lUX0RPTV9UWVBFX0hUTUxfQVVESU9fRUxFTUVOVCwgV2ViS2l0RE9N
SFRNTEF1ZGlvRWxlbWVudCkpCi0jZGVmaW5lIFdFQktJVF9ET01fSFRNTF9BVURJT19FTEVNRU5U
X0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJ
VF9ET01fVFlQRV9IVE1MX0FVRElPX0VMRU1FTlQsIFdlYktpdERPTUhUTUxBdWRpb0VsZW1lbnRD
bGFzcykKLSNkZWZpbmUgV0VCS0lUX0RPTV9JU19IVE1MX0FVRElPX0VMRU1FTlQob2JqKSAgICAg
ICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX0RPTV9UWVBFX0hU
TUxfQVVESU9fRUxFTUVOVCkpCi0jZGVmaW5lIFdFQktJVF9ET01fSVNfSFRNTF9BVURJT19FTEVN
RU5UX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwgIFdFQktJ
VF9ET01fVFlQRV9IVE1MX0FVRElPX0VMRU1FTlQpKQotI2RlZmluZSBXRUJLSVRfRE9NX0hUTUxf
QVVESU9fRUxFTUVOVF9HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1Mo
KG9iaiksICBXRUJLSVRfRE9NX1RZUEVfSFRNTF9BVURJT19FTEVNRU5ULCBXZWJLaXRET01IVE1M
QXVkaW9FbGVtZW50Q2xhc3MpKQotCi1zdHJ1Y3QgX1dlYktpdERPTUhUTUxBdWRpb0VsZW1lbnQg
ewotICAgIFdlYktpdERPTUhUTUxNZWRpYUVsZW1lbnQgcGFyZW50X2luc3RhbmNlOwotfTsKLQot
c3RydWN0IF9XZWJLaXRET01IVE1MQXVkaW9FbGVtZW50Q2xhc3MgewotICAgIFdlYktpdERPTUhU
TUxNZWRpYUVsZW1lbnRDbGFzcyBwYXJlbnRfY2xhc3M7Ci19OwotCi1XRUJLSVRfQVBJIEdUeXBl
Ci13ZWJraXRfZG9tX2h0bWxfYXVkaW9fZWxlbWVudF9nZXRfdHlwZSh2b2lkKTsKLQotR19FTkRf
REVDTFMKLQotI2VuZGlmIC8qIFdFQktJVF9ET01fVVNFX1VOU1RBQkxFX0FQSSAqLwotI2VuZGlm
IC8qIFdlYktpdERPTUhUTUxBdWRpb0VsZW1lbnRfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1M
QXVkaW9FbGVtZW50UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MQXVkaW9FbGVtZW50UHJpdmF0ZS5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMjVlYWNjLi4wMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9N
SFRNTEF1ZGlvRWxlbWVudFByaXZhdGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAK
LS8qCi0gKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9q
ZWN0LgotICogIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGlu
Z3MucGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICog
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgV2ViS2l0RE9NSFRNTEF1
ZGlvRWxlbWVudFByaXZhdGVfaAotI2RlZmluZSBXZWJLaXRET01IVE1MQXVkaW9FbGVtZW50UHJp
dmF0ZV9oCi0KLSNpbmNsdWRlIDxXZWJDb3JlL0hUTUxBdWRpb0VsZW1lbnQuaD4KLSNpbmNsdWRl
IDx3ZWJraXRkb20vV2ViS2l0RE9NSFRNTEF1ZGlvRWxlbWVudC5oPgotI2lmIEVOQUJMRShWSURF
TykKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci1XZWJLaXRET01IVE1MQXVkaW9FbGVtZW50KiB3cmFw
SFRNTEF1ZGlvRWxlbWVudChXZWJDb3JlOjpIVE1MQXVkaW9FbGVtZW50Kik7Ci1XZWJLaXRET01I
VE1MQXVkaW9FbGVtZW50KiBraXQoV2ViQ29yZTo6SFRNTEF1ZGlvRWxlbWVudCopOwotV2ViQ29y
ZTo6SFRNTEF1ZGlvRWxlbWVudCogY29yZShXZWJLaXRET01IVE1MQXVkaW9FbGVtZW50Kik7Ci19
IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8qIEVOQUJMRShWSURFTykgKi8KLQotI2Vu
ZGlmIC8qIFdlYktpdERPTUhUTUxBdWRpb0VsZW1lbnRQcml2YXRlX2ggKi8KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2Vi
S2l0RE9NSFRNTEJ1dHRvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MQnV0dG9uRWxlbWVudC5jcHAK
aW5kZXggN2ExZjI3Yi4uNTg2Njg1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MQnV0dG9uRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z3RrL0RPTS9XZWJLaXRET01IVE1MQnV0dG9uRWxlbWVudC5jcHAKQEAgLTM2LDkgKzM2LDcgQEAK
ICNpbmNsdWRlICJXZWJLaXRET01Ob2RlTGlzdFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRE
T01Ob2RlUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdERPTVByaXZhdGUuaCIKLSNpbmNsdWRl
ICJXZWJLaXRET01WYWxpZGl0eVN0YXRlUHJpdmF0ZS5oIgogI2luY2x1ZGUgIkNvbnZlcnRUb1VU
RjhTdHJpbmcuaCIKLSNpbmNsdWRlICJXZWJLaXRET01IVE1MQnV0dG9uRWxlbWVudFVuc3RhYmxl
LmgiCiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApA
QCAtMTA0LDE4ICsxMDIsMTAgQEAgZW51bSB7CiAgICAgUFJPUF9BVVRPRk9DVVMsCiAgICAgUFJP
UF9ESVNBQkxFRCwKICAgICBQUk9QX0ZPUk0sCi0gICAgUFJPUF9GT1JNX0FDVElPTiwKLSAgICBQ
Uk9QX0ZPUk1fRU5DVFlQRSwKLSAgICBQUk9QX0ZPUk1fTUVUSE9ELAogICAgIFBST1BfVFlQRSwK
LSAgICBQUk9QX0ZPUk1fTk9fVkFMSURBVEUsCi0gICAgUFJPUF9GT1JNX1RBUkdFVCwKICAgICBQ
Uk9QX05BTUUsCiAgICAgUFJPUF9WQUxVRSwKICAgICBQUk9QX1dJTExfVkFMSURBVEUsCi0gICAg
UFJPUF9WQUxJRElUWSwKLSAgICBQUk9QX1ZBTElEQVRJT05fTUVTU0FHRSwKLSAgICBQUk9QX0xB
QkVMUywKIH07CiAKIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21faHRtbF9idXR0b25fZWxlbWVudF9z
ZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wZXJ0eUlkLCBjb25zdCBHVmFs
dWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3BlYykKQEAgLTEyOSwyNCArMTE5LDkgQEAgc3RhdGlj
IHZvaWQgd2Via2l0X2RvbV9odG1sX2J1dHRvbl9lbGVtZW50X3NldF9wcm9wZXJ0eShHT2JqZWN0
KiBvYmplY3QsIGd1aW50IHAKICAgICBjYXNlIFBST1BfRElTQUJMRUQ6CiAgICAgICAgIHdlYmtp
dF9kb21faHRtbF9idXR0b25fZWxlbWVudF9zZXRfZGlzYWJsZWQoc2VsZiwgZ192YWx1ZV9nZXRf
Ym9vbGVhbih2YWx1ZSkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfRk9STV9BQ1RJ
T046Ci0gICAgICAgIHdlYmtpdF9kb21faHRtbF9idXR0b25fZWxlbWVudF9zZXRfZm9ybV9hY3Rp
b24oc2VsZiwgZ192YWx1ZV9nZXRfc3RyaW5nKHZhbHVlKSk7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgUFJPUF9GT1JNX0VOQ1RZUEU6Ci0gICAgICAgIHdlYmtpdF9kb21faHRtbF9idXR0b25f
ZWxlbWVudF9zZXRfZm9ybV9lbmN0eXBlKHNlbGYsIGdfdmFsdWVfZ2V0X3N0cmluZyh2YWx1ZSkp
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfRk9STV9NRVRIT0Q6Ci0gICAgICAgIHdl
YmtpdF9kb21faHRtbF9idXR0b25fZWxlbWVudF9zZXRfZm9ybV9tZXRob2Qoc2VsZiwgZ192YWx1
ZV9nZXRfc3RyaW5nKHZhbHVlKSk7Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJPUF9UWVBF
OgogICAgICAgICB3ZWJraXRfZG9tX2h0bWxfYnV0dG9uX2VsZW1lbnRfc2V0X2J1dHRvbl90eXBl
KHNlbGYsIGdfdmFsdWVfZ2V0X3N0cmluZyh2YWx1ZSkpOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIFBST1BfRk9STV9OT19WQUxJREFURToKLSAgICAgICAgd2Via2l0X2RvbV9odG1sX2J1dHRv
bl9lbGVtZW50X3NldF9mb3JtX25vX3ZhbGlkYXRlKHNlbGYsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4o
dmFsdWUpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX0ZPUk1fVEFSR0VUOgotICAg
ICAgICB3ZWJraXRfZG9tX2h0bWxfYnV0dG9uX2VsZW1lbnRfc2V0X2Zvcm1fdGFyZ2V0KHNlbGYs
IGdfdmFsdWVfZ2V0X3N0cmluZyh2YWx1ZSkpOwotICAgICAgICBicmVhazsKICAgICBjYXNlIFBS
T1BfTkFNRToKICAgICAgICAgd2Via2l0X2RvbV9odG1sX2J1dHRvbl9lbGVtZW50X3NldF9uYW1l
KHNlbGYsIGdfdmFsdWVfZ2V0X3N0cmluZyh2YWx1ZSkpOwogICAgICAgICBicmVhazsKQEAgLTE3
MywyNCArMTQ4LDkgQEAgc3RhdGljIHZvaWQgd2Via2l0X2RvbV9odG1sX2J1dHRvbl9lbGVtZW50
X2dldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHAKICAgICBjYXNlIFBST1BfRk9S
TToKICAgICAgICAgZ192YWx1ZV9zZXRfb2JqZWN0KHZhbHVlLCB3ZWJraXRfZG9tX2h0bWxfYnV0
dG9uX2VsZW1lbnRfZ2V0X2Zvcm0oc2VsZikpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFBS
T1BfRk9STV9BQ1RJT046Ci0gICAgICAgIGdfdmFsdWVfdGFrZV9zdHJpbmcodmFsdWUsIHdlYmtp
dF9kb21faHRtbF9idXR0b25fZWxlbWVudF9nZXRfZm9ybV9hY3Rpb24oc2VsZikpOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIFBST1BfRk9STV9FTkNUWVBFOgotICAgICAgICBnX3ZhbHVlX3Rh
a2Vfc3RyaW5nKHZhbHVlLCB3ZWJraXRfZG9tX2h0bWxfYnV0dG9uX2VsZW1lbnRfZ2V0X2Zvcm1f
ZW5jdHlwZShzZWxmKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9GT1JNX01FVEhP
RDoKLSAgICAgICAgZ192YWx1ZV90YWtlX3N0cmluZyh2YWx1ZSwgd2Via2l0X2RvbV9odG1sX2J1
dHRvbl9lbGVtZW50X2dldF9mb3JtX21ldGhvZChzZWxmKSk7Ci0gICAgICAgIGJyZWFrOwogICAg
IGNhc2UgUFJPUF9UWVBFOgogICAgICAgICBnX3ZhbHVlX3Rha2Vfc3RyaW5nKHZhbHVlLCB3ZWJr
aXRfZG9tX2h0bWxfYnV0dG9uX2VsZW1lbnRfZ2V0X2J1dHRvbl90eXBlKHNlbGYpKTsKICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX0ZPUk1fTk9fVkFMSURBVEU6Ci0gICAgICAgIGdfdmFs
dWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF9kb21faHRtbF9idXR0b25fZWxlbWVudF9nZXRf
Zm9ybV9ub192YWxpZGF0ZShzZWxmKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9G
T1JNX1RBUkdFVDoKLSAgICAgICAgZ192YWx1ZV90YWtlX3N0cmluZyh2YWx1ZSwgd2Via2l0X2Rv
bV9odG1sX2J1dHRvbl9lbGVtZW50X2dldF9mb3JtX3RhcmdldChzZWxmKSk7Ci0gICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgUFJPUF9OQU1FOgogICAgICAgICBnX3ZhbHVlX3Rha2Vfc3RyaW5nKHZh
bHVlLCB3ZWJraXRfZG9tX2h0bWxfYnV0dG9uX2VsZW1lbnRfZ2V0X25hbWUoc2VsZikpOwogICAg
ICAgICBicmVhazsKQEAgLTIwMCwxNSArMTYwLDYgQEAgc3RhdGljIHZvaWQgd2Via2l0X2RvbV9o
dG1sX2J1dHRvbl9lbGVtZW50X2dldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHAK
ICAgICBjYXNlIFBST1BfV0lMTF9WQUxJREFURToKICAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVh
bih2YWx1ZSwgd2Via2l0X2RvbV9odG1sX2J1dHRvbl9lbGVtZW50X2dldF93aWxsX3ZhbGlkYXRl
KHNlbGYpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX1ZBTElESVRZOgotICAgICAg
ICBnX3ZhbHVlX3NldF9vYmplY3QodmFsdWUsIHdlYmtpdF9kb21faHRtbF9idXR0b25fZWxlbWVu
dF9nZXRfdmFsaWRpdHkoc2VsZikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfVkFM
SURBVElPTl9NRVNTQUdFOgotICAgICAgICBnX3ZhbHVlX3Rha2Vfc3RyaW5nKHZhbHVlLCB3ZWJr
aXRfZG9tX2h0bWxfYnV0dG9uX2VsZW1lbnRfZ2V0X3ZhbGlkYXRpb25fbWVzc2FnZShzZWxmKSk7
Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9MQUJFTFM6Ci0gICAgICAgIGdfdmFsdWVf
c2V0X29iamVjdCh2YWx1ZSwgd2Via2l0X2RvbV9odG1sX2J1dHRvbl9lbGVtZW50X2dldF9sYWJl
bHMoc2VsZikpOwotICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBHX09CSkVD
VF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wZXJ0eUlkLCBwc3BlYyk7CiAg
ICAgICAgIGJyZWFrOwpAQCAtMjUzLDM2ICsyMDQsNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfZG9t
X2h0bWxfYnV0dG9uX2VsZW1lbnRfY2xhc3NfaW5pdChXZWJLaXRET01IVE1MQnV0dG9uRWxlbWVu
dAogCiAgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKICAgICAgICAgZ29iamVj
dENsYXNzLAotICAgICAgICBQUk9QX0ZPUk1fQUNUSU9OLAotICAgICAgICBnX3BhcmFtX3NwZWNf
c3RyaW5nKAotICAgICAgICAgICAgImZvcm0tYWN0aW9uIiwKLSAgICAgICAgICAgICJIVE1MQnV0
dG9uRWxlbWVudDpmb3JtLWFjdGlvbiIsCi0gICAgICAgICAgICAicmVhZC13cml0ZSBnY2hhciog
SFRNTEJ1dHRvbkVsZW1lbnQ6Zm9ybS1hY3Rpb24iLAotICAgICAgICAgICAgIiIsCi0gICAgICAg
ICAgICBXRUJLSVRfUEFSQU1fUkVBRFdSSVRFKSk7Ci0KLSAgICBnX29iamVjdF9jbGFzc19pbnN0
YWxsX3Byb3BlcnR5KAotICAgICAgICBnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBST1BfRk9STV9F
TkNUWVBFLAotICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nKAotICAgICAgICAgICAgImZvcm0t
ZW5jdHlwZSIsCi0gICAgICAgICAgICAiSFRNTEJ1dHRvbkVsZW1lbnQ6Zm9ybS1lbmN0eXBlIiwK
LSAgICAgICAgICAgICJyZWFkLXdyaXRlIGdjaGFyKiBIVE1MQnV0dG9uRWxlbWVudDpmb3JtLWVu
Y3R5cGUiLAotICAgICAgICAgICAgIiIsCi0gICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBRFdS
SVRFKSk7Ci0KLSAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAotICAgICAgICBn
b2JqZWN0Q2xhc3MsCi0gICAgICAgIFBST1BfRk9STV9NRVRIT0QsCi0gICAgICAgIGdfcGFyYW1f
c3BlY19zdHJpbmcoCi0gICAgICAgICAgICAiZm9ybS1tZXRob2QiLAotICAgICAgICAgICAgIkhU
TUxCdXR0b25FbGVtZW50OmZvcm0tbWV0aG9kIiwKLSAgICAgICAgICAgICJyZWFkLXdyaXRlIGdj
aGFyKiBIVE1MQnV0dG9uRWxlbWVudDpmb3JtLW1ldGhvZCIsCi0gICAgICAgICAgICAiIiwKLSAg
ICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEV1JJVEUpKTsKLQotICAgIGdfb2JqZWN0X2NsYXNz
X2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKICAgICAgICAgUFJPUF9U
WVBFLAogICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nKAogICAgICAgICAgICAgInR5cGUiLApA
QCAtMjkzLDI2ICsyMTQsNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX2h0bWxfYnV0dG9uX2Vs
ZW1lbnRfY2xhc3NfaW5pdChXZWJLaXRET01IVE1MQnV0dG9uRWxlbWVudAogCiAgICAgZ19vYmpl
Y3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKICAgICAgICAgZ29iamVjdENsYXNzLAotICAgICAg
ICBQUk9QX0ZPUk1fTk9fVkFMSURBVEUsCi0gICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKAot
ICAgICAgICAgICAgImZvcm0tbm8tdmFsaWRhdGUiLAotICAgICAgICAgICAgIkhUTUxCdXR0b25F
bGVtZW50OmZvcm0tbm8tdmFsaWRhdGUiLAotICAgICAgICAgICAgInJlYWQtd3JpdGUgZ2Jvb2xl
YW4gSFRNTEJ1dHRvbkVsZW1lbnQ6Zm9ybS1uby12YWxpZGF0ZSIsCi0gICAgICAgICAgICBGQUxT
RSwKLSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEV1JJVEUpKTsKLQotICAgIGdfb2JqZWN0
X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAg
UFJPUF9GT1JNX1RBUkdFVCwKLSAgICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZygKLSAgICAgICAg
ICAgICJmb3JtLXRhcmdldCIsCi0gICAgICAgICAgICAiSFRNTEJ1dHRvbkVsZW1lbnQ6Zm9ybS10
YXJnZXQiLAotICAgICAgICAgICAgInJlYWQtd3JpdGUgZ2NoYXIqIEhUTUxCdXR0b25FbGVtZW50
OmZvcm0tdGFyZ2V0IiwKLSAgICAgICAgICAgICIiLAotICAgICAgICAgICAgV0VCS0lUX1BBUkFN
X1JFQURXUklURSkpOwotCi0gICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAg
ICAgICAgZ29iamVjdENsYXNzLAogICAgICAgICBQUk9QX05BTUUsCiAgICAgICAgIGdfcGFyYW1f
c3BlY19zdHJpbmcoCiAgICAgICAgICAgICAibmFtZSIsCkBAIC0zNDAsMzcgKzI0MSw2IEBAIHN0
YXRpYyB2b2lkIHdlYmtpdF9kb21faHRtbF9idXR0b25fZWxlbWVudF9jbGFzc19pbml0KFdlYktp
dERPTUhUTUxCdXR0b25FbGVtZW50CiAgICAgICAgICAgICAicmVhZC1vbmx5IGdib29sZWFuIEhU
TUxCdXR0b25FbGVtZW50OndpbGwtdmFsaWRhdGUiLAogICAgICAgICAgICAgRkFMU0UsCiAgICAg
ICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2lu
c3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9WQUxJ
RElUWSwKLSAgICAgICAgZ19wYXJhbV9zcGVjX29iamVjdCgKLSAgICAgICAgICAgICJ2YWxpZGl0
eSIsCi0gICAgICAgICAgICAiSFRNTEJ1dHRvbkVsZW1lbnQ6dmFsaWRpdHkiLAotICAgICAgICAg
ICAgInJlYWQtb25seSBXZWJLaXRET01WYWxpZGl0eVN0YXRlKiBIVE1MQnV0dG9uRWxlbWVudDp2
YWxpZGl0eSIsCi0gICAgICAgICAgICBXRUJLSVRfRE9NX1RZUEVfVkFMSURJVFlfU1RBVEUsCi0g
ICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKLQotICAgIGdfb2JqZWN0X2NsYXNz
X2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9W
QUxJREFUSU9OX01FU1NBR0UsCi0gICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcoCi0gICAgICAg
ICAgICAidmFsaWRhdGlvbi1tZXNzYWdlIiwKLSAgICAgICAgICAgICJIVE1MQnV0dG9uRWxlbWVu
dDp2YWxpZGF0aW9uLW1lc3NhZ2UiLAotICAgICAgICAgICAgInJlYWQtb25seSBnY2hhciogSFRN
TEJ1dHRvbkVsZW1lbnQ6dmFsaWRhdGlvbi1tZXNzYWdlIiwKLSAgICAgICAgICAgICIiLAotICAg
ICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7Ci0KLSAgICBnX29iamVjdF9jbGFzc19p
bnN0YWxsX3Byb3BlcnR5KAotICAgICAgICBnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBST1BfTEFC
RUxTLAotICAgICAgICBnX3BhcmFtX3NwZWNfb2JqZWN0KAotICAgICAgICAgICAgImxhYmVscyIs
Ci0gICAgICAgICAgICAiSFRNTEJ1dHRvbkVsZW1lbnQ6bGFiZWxzIiwKLSAgICAgICAgICAgICJy
ZWFkLW9ubHkgV2ViS2l0RE9NTm9kZUxpc3QqIEhUTUxCdXR0b25FbGVtZW50OmxhYmVscyIsCi0g
ICAgICAgICAgICBXRUJLSVRfRE9NX1RZUEVfTk9ERV9MSVNULAotICAgICAgICAgICAgV0VCS0lU
X1BBUkFNX1JFQURBQkxFKSk7Ci0KIH0KIAogc3RhdGljIHZvaWQgd2Via2l0X2RvbV9odG1sX2J1
dHRvbl9lbGVtZW50X2luaXQoV2ViS2l0RE9NSFRNTEJ1dHRvbkVsZW1lbnQqIHJlcXVlc3QpCkBA
IC0zNzgsMzMgKzI0OCw2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21faHRtbF9idXR0b25fZWxl
bWVudF9pbml0KFdlYktpdERPTUhUTUxCdXR0b25FbGVtZW50KiByZXF1CiAgICAgVU5VU0VEX1BB
UkFNKHJlcXVlc3QpOwogfQogCi1nYm9vbGVhbiB3ZWJraXRfZG9tX2h0bWxfYnV0dG9uX2VsZW1l
bnRfY2hlY2tfdmFsaWRpdHkoV2ViS2l0RE9NSFRNTEJ1dHRvbkVsZW1lbnQqIHNlbGYpCi17Ci0g
ICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKFdFQktJVF9ET01fSVNfSFRNTF9CVVRUT05fRUxFTUVOVChzZWxmKSwgRkFMU0Up
OwotICAgIFdlYkNvcmU6OkhUTUxCdXR0b25FbGVtZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNl
bGYpOwotICAgIGdib29sZWFuIHJlc3VsdCA9IGl0ZW0tPmNoZWNrVmFsaWRpdHkoKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotCi12b2lkIHdlYmtpdF9kb21faHRtbF9idXR0b25fZWxlbWVudF9z
ZXRfY3VzdG9tX3ZhbGlkaXR5KFdlYktpdERPTUhUTUxCdXR0b25FbGVtZW50KiBzZWxmLCBjb25z
dCBnY2hhciogZXJyb3IpCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0
YXRlOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19IVE1MX0JVVFRPTl9FTEVN
RU5UKHNlbGYpKTsKLSAgICBnX3JldHVybl9pZl9mYWlsKGVycm9yKTsKLSAgICBXZWJDb3JlOjpI
VE1MQnV0dG9uRWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBXVEY6OlN0
cmluZyBjb252ZXJ0ZWRFcnJvciA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOChlcnJvcik7Ci0gICAg
aXRlbS0+c2V0Q3VzdG9tVmFsaWRpdHkoY29udmVydGVkRXJyb3IpOwotfQotCi12b2lkIHdlYmtp
dF9kb21faHRtbF9idXR0b25fZWxlbWVudF9jbGljayhXZWJLaXRET01IVE1MQnV0dG9uRWxlbWVu
dCogc2VsZikKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0g
ICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxfQlVUVE9OX0VMRU1FTlQoc2Vs
ZikpOwotICAgIFdlYkNvcmU6OkhUTUxCdXR0b25FbGVtZW50KiBpdGVtID0gV2ViS2l0Ojpjb3Jl
KHNlbGYpOwotICAgIGl0ZW0tPmNsaWNrKCk7Ci19Ci0KIGdib29sZWFuIHdlYmtpdF9kb21faHRt
bF9idXR0b25fZWxlbWVudF9nZXRfYXV0b2ZvY3VzKFdlYktpdERPTUhUTUxCdXR0b25FbGVtZW50
KiBzZWxmKQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKQEAg
LTQ0OCw2MyArMjkxLDYgQEAgV2ViS2l0RE9NSFRNTEZvcm1FbGVtZW50KiB3ZWJraXRfZG9tX2h0
bWxfYnV0dG9uX2VsZW1lbnRfZ2V0X2Zvcm0oV2ViS2l0RE9NSFRNTEIKICAgICByZXR1cm4gV2Vi
S2l0OjpraXQoZ29iamVjdFJlc3VsdC5nZXQoKSk7CiB9CiAKLWdjaGFyKiB3ZWJraXRfZG9tX2h0
bWxfYnV0dG9uX2VsZW1lbnRfZ2V0X2Zvcm1fYWN0aW9uKFdlYktpdERPTUhUTUxCdXR0b25FbGVt
ZW50KiBzZWxmKQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsK
LSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxfQlVUVE9OX0VMRU1F
TlQoc2VsZiksIDApOwotICAgIFdlYkNvcmU6OkhUTUxCdXR0b25FbGVtZW50KiBpdGVtID0gV2Vi
S2l0Ojpjb3JlKHNlbGYpOwotICAgIGdjaGFyKiByZXN1bHQgPSBjb252ZXJ0VG9VVEY4U3RyaW5n
KGl0ZW0tPmZvcm1BY3Rpb24oKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotdm9pZCB3ZWJr
aXRfZG9tX2h0bWxfYnV0dG9uX2VsZW1lbnRfc2V0X2Zvcm1fYWN0aW9uKFdlYktpdERPTUhUTUxC
dXR0b25FbGVtZW50KiBzZWxmLCBjb25zdCBnY2hhciogdmFsdWUpCi17Ci0gICAgV2ViQ29yZTo6
SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lU
X0RPTV9JU19IVE1MX0JVVFRPTl9FTEVNRU5UKHNlbGYpKTsKLSAgICBnX3JldHVybl9pZl9mYWls
KHZhbHVlKTsKLSAgICBXZWJDb3JlOjpIVE1MQnV0dG9uRWxlbWVudCogaXRlbSA9IFdlYktpdDo6
Y29yZShzZWxmKTsKLSAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRWYWx1ZSA9IFdURjo6U3RyaW5n
Ojpmcm9tVVRGOCh2YWx1ZSk7Ci0gICAgaXRlbS0+c2V0Rm9ybUFjdGlvbihjb252ZXJ0ZWRWYWx1
ZSk7Ci19Ci0KLWdjaGFyKiB3ZWJraXRfZG9tX2h0bWxfYnV0dG9uX2VsZW1lbnRfZ2V0X2Zvcm1f
ZW5jdHlwZShXZWJLaXRET01IVE1MQnV0dG9uRWxlbWVudCogc2VsZikKLXsKLSAgICBXZWJDb3Jl
OjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwo
V0VCS0lUX0RPTV9JU19IVE1MX0JVVFRPTl9FTEVNRU5UKHNlbGYpLCAwKTsKLSAgICBXZWJDb3Jl
OjpIVE1MQnV0dG9uRWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBnY2hh
ciogcmVzdWx0ID0gY29udmVydFRvVVRGOFN0cmluZyhpdGVtLT5mb3JtRW5jdHlwZSgpKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotCi12b2lkIHdlYmtpdF9kb21faHRtbF9idXR0b25fZWxlbWVu
dF9zZXRfZm9ybV9lbmN0eXBlKFdlYktpdERPTUhUTUxCdXR0b25FbGVtZW50KiBzZWxmLCBjb25z
dCBnY2hhciogdmFsdWUpCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0
YXRlOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19IVE1MX0JVVFRPTl9FTEVN
RU5UKHNlbGYpKTsKLSAgICBnX3JldHVybl9pZl9mYWlsKHZhbHVlKTsKLSAgICBXZWJDb3JlOjpI
VE1MQnV0dG9uRWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBXVEY6OlN0
cmluZyBjb252ZXJ0ZWRWYWx1ZSA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOCh2YWx1ZSk7Ci0gICAg
aXRlbS0+c2V0Rm9ybUVuY3R5cGUoY29udmVydGVkVmFsdWUpOwotfQotCi1nY2hhciogd2Via2l0
X2RvbV9odG1sX2J1dHRvbl9lbGVtZW50X2dldF9mb3JtX21ldGhvZChXZWJLaXRET01IVE1MQnV0
dG9uRWxlbWVudCogc2VsZikKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUg
c3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19IVE1MX0JVVFRP
Tl9FTEVNRU5UKHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpIVE1MQnV0dG9uRWxlbWVudCogaXRl
bSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBnY2hhciogcmVzdWx0ID0gY29udmVydFRvVVRG
OFN0cmluZyhpdGVtLT5mb3JtTWV0aG9kKCkpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXZv
aWQgd2Via2l0X2RvbV9odG1sX2J1dHRvbl9lbGVtZW50X3NldF9mb3JtX21ldGhvZChXZWJLaXRE
T01IVE1MQnV0dG9uRWxlbWVudCogc2VsZiwgY29uc3QgZ2NoYXIqIHZhbHVlKQotewotICAgIFdl
YkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl9pZl9mYWls
KFdFQktJVF9ET01fSVNfSFRNTF9CVVRUT05fRUxFTUVOVChzZWxmKSk7Ci0gICAgZ19yZXR1cm5f
aWZfZmFpbCh2YWx1ZSk7Ci0gICAgV2ViQ29yZTo6SFRNTEJ1dHRvbkVsZW1lbnQqIGl0ZW0gPSBX
ZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgV1RGOjpTdHJpbmcgY29udmVydGVkVmFsdWUgPSBXVEY6
OlN0cmluZzo6ZnJvbVVURjgodmFsdWUpOwotICAgIGl0ZW0tPnNldEZvcm1NZXRob2QoY29udmVy
dGVkVmFsdWUpOwotfQotCiBnY2hhciogd2Via2l0X2RvbV9odG1sX2J1dHRvbl9lbGVtZW50X2dl
dF9idXR0b25fdHlwZShXZWJLaXRET01IVE1MQnV0dG9uRWxlbWVudCogc2VsZikKIHsKICAgICBX
ZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CkBAIC01MjQsNDIgKzMxMCw2IEBA
IHZvaWQgd2Via2l0X2RvbV9odG1sX2J1dHRvbl9lbGVtZW50X3NldF9idXR0b25fdHlwZShXZWJL
aXRET01IVE1MQnV0dG9uRWxlbWVudCoKICAgICBpdGVtLT5zZXRUeXBlKGNvbnZlcnRlZFZhbHVl
KTsKIH0KIAotZ2Jvb2xlYW4gd2Via2l0X2RvbV9odG1sX2J1dHRvbl9lbGVtZW50X2dldF9mb3Jt
X25vX3ZhbGlkYXRlKFdlYktpdERPTUhUTUxCdXR0b25FbGVtZW50KiBzZWxmKQotewotICAgIFdl
YkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZf
ZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxfQlVUVE9OX0VMRU1FTlQoc2VsZiksIEZBTFNFKTsKLSAg
ICBXZWJDb3JlOjpIVE1MQnV0dG9uRWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsK
LSAgICBnYm9vbGVhbiByZXN1bHQgPSBpdGVtLT5oYXNBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25p
emF0aW9uKFdlYkNvcmU6OkhUTUxOYW1lczo6Zm9ybW5vdmFsaWRhdGVBdHRyKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotCi12b2lkIHdlYmtpdF9kb21faHRtbF9idXR0b25fZWxlbWVudF9zZXRf
Zm9ybV9ub192YWxpZGF0ZShXZWJLaXRET01IVE1MQnV0dG9uRWxlbWVudCogc2VsZiwgZ2Jvb2xl
YW4gdmFsdWUpCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwot
ICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19IVE1MX0JVVFRPTl9FTEVNRU5UKHNl
bGYpKTsKLSAgICBXZWJDb3JlOjpIVE1MQnV0dG9uRWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29y
ZShzZWxmKTsKLSAgICBpdGVtLT5zZXRCb29sZWFuQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1l
czo6Zm9ybW5vdmFsaWRhdGVBdHRyLCB2YWx1ZSk7Ci19Ci0KLWdjaGFyKiB3ZWJraXRfZG9tX2h0
bWxfYnV0dG9uX2VsZW1lbnRfZ2V0X2Zvcm1fdGFyZ2V0KFdlYktpdERPTUhUTUxCdXR0b25FbGVt
ZW50KiBzZWxmKQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsK
LSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxfQlVUVE9OX0VMRU1F
TlQoc2VsZiksIDApOwotICAgIFdlYkNvcmU6OkhUTUxCdXR0b25FbGVtZW50KiBpdGVtID0gV2Vi
S2l0Ojpjb3JlKHNlbGYpOwotICAgIGdjaGFyKiByZXN1bHQgPSBjb252ZXJ0VG9VVEY4U3RyaW5n
KGl0ZW0tPmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oV2ViQ29yZTo6SFRNTE5hbWVz
Ojpmb3JtdGFyZ2V0QXR0cikpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXZvaWQgd2Via2l0
X2RvbV9odG1sX2J1dHRvbl9lbGVtZW50X3NldF9mb3JtX3RhcmdldChXZWJLaXRET01IVE1MQnV0
dG9uRWxlbWVudCogc2VsZiwgY29uc3QgZ2NoYXIqIHZhbHVlKQotewotICAgIFdlYkNvcmU6OkpT
TWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9E
T01fSVNfSFRNTF9CVVRUT05fRUxFTUVOVChzZWxmKSk7Ci0gICAgZ19yZXR1cm5faWZfZmFpbCh2
YWx1ZSk7Ci0gICAgV2ViQ29yZTo6SFRNTEJ1dHRvbkVsZW1lbnQqIGl0ZW0gPSBXZWJLaXQ6OmNv
cmUoc2VsZik7Ci0gICAgV1RGOjpTdHJpbmcgY29udmVydGVkVmFsdWUgPSBXVEY6OlN0cmluZzo6
ZnJvbVVURjgodmFsdWUpOwotICAgIGl0ZW0tPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6
YXRpb24oV2ViQ29yZTo6SFRNTE5hbWVzOjpmb3JtdGFyZ2V0QXR0ciwgY29udmVydGVkVmFsdWUp
OwotfQotCiBnY2hhciogd2Via2l0X2RvbV9odG1sX2J1dHRvbl9lbGVtZW50X2dldF9uYW1lKFdl
YktpdERPTUhUTUxCdXR0b25FbGVtZW50KiBzZWxmKQogewogICAgIFdlYkNvcmU6OkpTTWFpblRo
cmVhZE51bGxTdGF0ZSBzdGF0ZTsKQEAgLTYwNiwzMSArMzU2LDMgQEAgZ2Jvb2xlYW4gd2Via2l0
X2RvbV9odG1sX2J1dHRvbl9lbGVtZW50X2dldF93aWxsX3ZhbGlkYXRlKFdlYktpdERPTUhUTUxC
dXR0b25FbGUKICAgICBnYm9vbGVhbiByZXN1bHQgPSBpdGVtLT53aWxsVmFsaWRhdGUoKTsKICAg
ICByZXR1cm4gcmVzdWx0OwogfQotCi1XZWJLaXRET01WYWxpZGl0eVN0YXRlKiB3ZWJraXRfZG9t
X2h0bWxfYnV0dG9uX2VsZW1lbnRfZ2V0X3ZhbGlkaXR5KFdlYktpdERPTUhUTUxCdXR0b25FbGVt
ZW50KiBzZWxmKQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsK
LSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxfQlVUVE9OX0VMRU1F
TlQoc2VsZiksIDApOwotICAgIFdlYkNvcmU6OkhUTUxCdXR0b25FbGVtZW50KiBpdGVtID0gV2Vi
S2l0Ojpjb3JlKHNlbGYpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpWYWxpZGl0eVN0YXRlPiBnb2Jq
ZWN0UmVzdWx0ID0gV1RGOjpnZXRQdHIoaXRlbS0+dmFsaWRpdHkoKSk7Ci0gICAgcmV0dXJuIFdl
YktpdDo6a2l0KGdvYmplY3RSZXN1bHQuZ2V0KCkpOwotfQotCi1nY2hhciogd2Via2l0X2RvbV9o
dG1sX2J1dHRvbl9lbGVtZW50X2dldF92YWxpZGF0aW9uX21lc3NhZ2UoV2ViS2l0RE9NSFRNTEJ1
dHRvbkVsZW1lbnQqIHNlbGYpCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRl
IHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfSFRNTF9CVVRU
T05fRUxFTUVOVChzZWxmKSwgMCk7Ci0gICAgV2ViQ29yZTo6SFRNTEJ1dHRvbkVsZW1lbnQqIGl0
ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ2NoYXIqIHJlc3VsdCA9IGNvbnZlcnRUb1VU
RjhTdHJpbmcoaXRlbS0+dmFsaWRhdGlvbk1lc3NhZ2UoKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLQotV2ViS2l0RE9NTm9kZUxpc3QqIHdlYmtpdF9kb21faHRtbF9idXR0b25fZWxlbWVudF9n
ZXRfbGFiZWxzKFdlYktpdERPTUhUTUxCdXR0b25FbGVtZW50KiBzZWxmKQotewotICAgIFdlYkNv
cmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFp
bChXRUJLSVRfRE9NX0lTX0hUTUxfQlVUVE9OX0VMRU1FTlQoc2VsZiksIDApOwotICAgIFdlYkNv
cmU6OkhUTUxCdXR0b25FbGVtZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIFJl
ZlB0cjxXZWJDb3JlOjpOb2RlTGlzdD4gZ29iamVjdFJlc3VsdCA9IFdURjo6Z2V0UHRyKGl0ZW0t
PmxhYmVscygpKTsKLSAgICByZXR1cm4gV2ViS2l0OjpraXQoZ29iamVjdFJlc3VsdC5nZXQoKSk7
Ci19Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTEJ1dHRvbkVsZW1lbnRVbnN0YWJsZS5oIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRE
T01IVE1MQnV0dG9uRWxlbWVudFVuc3RhYmxlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGU2MWMwMDguLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MQnV0dG9uRWxlbWVudFVuc3RhYmxl
LmgKKysrIC9kZXYvbnVsbApAQCAtMSwyMDIgKzAsMCBAQAotLyoKLSAqICBUaGlzIGZpbGUgaXMg
cGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCi0gKiAgVGhpcyBmaWxlIGhh
cyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEK
LSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqICBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCi0gKi8KLQotI2lmbmRlZiBXZWJLaXRET01IVE1MQnV0dG9uRWxlbWVudFVuc3RhYmxlX2gK
LSNkZWZpbmUgV2ViS2l0RE9NSFRNTEJ1dHRvbkVsZW1lbnRVbnN0YWJsZV9oCi0KLSNpZmRlZiBX
RUJLSVRfRE9NX1VTRV9VTlNUQUJMRV9BUEkKLQotI2luY2x1ZGUgPHdlYmtpdGRvbS93ZWJraXRk
b21kZWZpbmVzLXVuc3RhYmxlLmg+Ci0KLUdfQkVHSU5fREVDTFMKLQotLyoqCi0gKiB3ZWJraXRf
ZG9tX2h0bWxfYnV0dG9uX2VsZW1lbnRfY2hlY2tfdmFsaWRpdHk6Ci0gKiBAc2VsZjogQSAjV2Vi
S2l0RE9NSFRNTEJ1dHRvbkVsZW1lbnQKLSAqCi0gKiBSZXR1cm5zOiBBICNnYm9vbGVhbgotICoK
LSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSBnYm9vbGVhbgotd2Via2l0
X2RvbV9odG1sX2J1dHRvbl9lbGVtZW50X2NoZWNrX3ZhbGlkaXR5KFdlYktpdERPTUhUTUxCdXR0
b25FbGVtZW50KiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0bWxfYnV0dG9uX2VsZW1l
bnRfc2V0X2N1c3RvbV92YWxpZGl0eToKLSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MQnV0dG9u
RWxlbWVudAotICogQGVycm9yOiBBICNnY2hhcgotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUK
LSoqLwotV0VCS0lUX0FQSSB2b2lkCi13ZWJraXRfZG9tX2h0bWxfYnV0dG9uX2VsZW1lbnRfc2V0
X2N1c3RvbV92YWxpZGl0eShXZWJLaXRET01IVE1MQnV0dG9uRWxlbWVudCogc2VsZiwgY29uc3Qg
Z2NoYXIqIGVycm9yKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0bWxfYnV0dG9uX2VsZW1lbnRf
Y2xpY2s6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTEJ1dHRvbkVsZW1lbnQKLSAqCi0gKiBT
dGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgdm9pZAotd2Via2l0X2RvbV9odG1s
X2J1dHRvbl9lbGVtZW50X2NsaWNrKFdlYktpdERPTUhUTUxCdXR0b25FbGVtZW50KiBzZWxmKTsK
LQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0bWxfYnV0dG9uX2VsZW1lbnRfZ2V0X2Zvcm1fYWN0aW9u
OgotICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxCdXR0b25FbGVtZW50Ci0gKgotICogUmV0dXJu
czogQSAjZ2NoYXIKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkg
Z2NoYXIqCi13ZWJraXRfZG9tX2h0bWxfYnV0dG9uX2VsZW1lbnRfZ2V0X2Zvcm1fYWN0aW9uKFdl
YktpdERPTUhUTUxCdXR0b25FbGVtZW50KiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0
bWxfYnV0dG9uX2VsZW1lbnRfc2V0X2Zvcm1fYWN0aW9uOgotICogQHNlbGY6IEEgI1dlYktpdERP
TUhUTUxCdXR0b25FbGVtZW50Ci0gKiBAdmFsdWU6IEEgI2djaGFyCi0gKgotICogU3RhYmlsaXR5
OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIHZvaWQKLXdlYmtpdF9kb21faHRtbF9idXR0b25f
ZWxlbWVudF9zZXRfZm9ybV9hY3Rpb24oV2ViS2l0RE9NSFRNTEJ1dHRvbkVsZW1lbnQqIHNlbGYs
IGNvbnN0IGdjaGFyKiB2YWx1ZSk7Ci0KLS8qKgotICogd2Via2l0X2RvbV9odG1sX2J1dHRvbl9l
bGVtZW50X2dldF9mb3JtX2VuY3R5cGU6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTEJ1dHRv
bkVsZW1lbnQKLSAqCi0gKiBSZXR1cm5zOiBBICNnY2hhcgotICoKLSAqIFN0YWJpbGl0eTogVW5z
dGFibGUKLSoqLwotV0VCS0lUX0FQSSBnY2hhcioKLXdlYmtpdF9kb21faHRtbF9idXR0b25fZWxl
bWVudF9nZXRfZm9ybV9lbmN0eXBlKFdlYktpdERPTUhUTUxCdXR0b25FbGVtZW50KiBzZWxmKTsK
LQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0bWxfYnV0dG9uX2VsZW1lbnRfc2V0X2Zvcm1fZW5jdHlw
ZToKLSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MQnV0dG9uRWxlbWVudAotICogQHZhbHVlOiBB
ICNnY2hhcgotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSB2b2lk
Ci13ZWJraXRfZG9tX2h0bWxfYnV0dG9uX2VsZW1lbnRfc2V0X2Zvcm1fZW5jdHlwZShXZWJLaXRE
T01IVE1MQnV0dG9uRWxlbWVudCogc2VsZiwgY29uc3QgZ2NoYXIqIHZhbHVlKTsKLQotLyoqCi0g
KiB3ZWJraXRfZG9tX2h0bWxfYnV0dG9uX2VsZW1lbnRfZ2V0X2Zvcm1fbWV0aG9kOgotICogQHNl
bGY6IEEgI1dlYktpdERPTUhUTUxCdXR0b25FbGVtZW50Ci0gKgotICogUmV0dXJuczogQSAjZ2No
YXIKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgZ2NoYXIqCi13
ZWJraXRfZG9tX2h0bWxfYnV0dG9uX2VsZW1lbnRfZ2V0X2Zvcm1fbWV0aG9kKFdlYktpdERPTUhU
TUxCdXR0b25FbGVtZW50KiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0bWxfYnV0dG9u
X2VsZW1lbnRfc2V0X2Zvcm1fbWV0aG9kOgotICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxCdXR0
b25FbGVtZW50Ci0gKiBAdmFsdWU6IEEgI2djaGFyCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJs
ZQotKiovCi1XRUJLSVRfQVBJIHZvaWQKLXdlYmtpdF9kb21faHRtbF9idXR0b25fZWxlbWVudF9z
ZXRfZm9ybV9tZXRob2QoV2ViS2l0RE9NSFRNTEJ1dHRvbkVsZW1lbnQqIHNlbGYsIGNvbnN0IGdj
aGFyKiB2YWx1ZSk7Ci0KLS8qKgotICogd2Via2l0X2RvbV9odG1sX2J1dHRvbl9lbGVtZW50X2dl
dF9mb3JtX25vX3ZhbGlkYXRlOgotICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxCdXR0b25FbGVt
ZW50Ci0gKgotICogUmV0dXJuczogQSAjZ2Jvb2xlYW4KLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3Rh
YmxlCi0qKi8KLVdFQktJVF9BUEkgZ2Jvb2xlYW4KLXdlYmtpdF9kb21faHRtbF9idXR0b25fZWxl
bWVudF9nZXRfZm9ybV9ub192YWxpZGF0ZShXZWJLaXRET01IVE1MQnV0dG9uRWxlbWVudCogc2Vs
Zik7Ci0KLS8qKgotICogd2Via2l0X2RvbV9odG1sX2J1dHRvbl9lbGVtZW50X3NldF9mb3JtX25v
X3ZhbGlkYXRlOgotICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxCdXR0b25FbGVtZW50Ci0gKiBA
dmFsdWU6IEEgI2dib29sZWFuCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJL
SVRfQVBJIHZvaWQKLXdlYmtpdF9kb21faHRtbF9idXR0b25fZWxlbWVudF9zZXRfZm9ybV9ub192
YWxpZGF0ZShXZWJLaXRET01IVE1MQnV0dG9uRWxlbWVudCogc2VsZiwgZ2Jvb2xlYW4gdmFsdWUp
OwotCi0vKioKLSAqIHdlYmtpdF9kb21faHRtbF9idXR0b25fZWxlbWVudF9nZXRfZm9ybV90YXJn
ZXQ6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTEJ1dHRvbkVsZW1lbnQKLSAqCi0gKiBSZXR1
cm5zOiBBICNnY2hhcgotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQ
SSBnY2hhcioKLXdlYmtpdF9kb21faHRtbF9idXR0b25fZWxlbWVudF9nZXRfZm9ybV90YXJnZXQo
V2ViS2l0RE9NSFRNTEJ1dHRvbkVsZW1lbnQqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9kb21f
aHRtbF9idXR0b25fZWxlbWVudF9zZXRfZm9ybV90YXJnZXQ6Ci0gKiBAc2VsZjogQSAjV2ViS2l0
RE9NSFRNTEJ1dHRvbkVsZW1lbnQKLSAqIEB2YWx1ZTogQSAjZ2NoYXIKLSAqCi0gKiBTdGFiaWxp
dHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgdm9pZAotd2Via2l0X2RvbV9odG1sX2J1dHRv
bl9lbGVtZW50X3NldF9mb3JtX3RhcmdldChXZWJLaXRET01IVE1MQnV0dG9uRWxlbWVudCogc2Vs
ZiwgY29uc3QgZ2NoYXIqIHZhbHVlKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0bWxfYnV0dG9u
X2VsZW1lbnRfZ2V0X3ZhbGlkaXR5OgotICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxCdXR0b25F
bGVtZW50Ci0gKgotICogUmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiBBICNXZWJLaXRET01WYWxp
ZGl0eVN0YXRlCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIFdl
YktpdERPTVZhbGlkaXR5U3RhdGUqCi13ZWJraXRfZG9tX2h0bWxfYnV0dG9uX2VsZW1lbnRfZ2V0
X3ZhbGlkaXR5KFdlYktpdERPTUhUTUxCdXR0b25FbGVtZW50KiBzZWxmKTsKLQotLyoqCi0gKiB3
ZWJraXRfZG9tX2h0bWxfYnV0dG9uX2VsZW1lbnRfZ2V0X3ZhbGlkYXRpb25fbWVzc2FnZToKLSAq
IEBzZWxmOiBBICNXZWJLaXRET01IVE1MQnV0dG9uRWxlbWVudAotICoKLSAqIFJldHVybnM6IEEg
I2djaGFyCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIGdjaGFy
Kgotd2Via2l0X2RvbV9odG1sX2J1dHRvbl9lbGVtZW50X2dldF92YWxpZGF0aW9uX21lc3NhZ2Uo
V2ViS2l0RE9NSFRNTEJ1dHRvbkVsZW1lbnQqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9kb21f
aHRtbF9idXR0b25fZWxlbWVudF9nZXRfbGFiZWxzOgotICogQHNlbGY6IEEgI1dlYktpdERPTUhU
TUxCdXR0b25FbGVtZW50Ci0gKgotICogUmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiBBICNXZWJL
aXRET01Ob2RlTGlzdAotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQ
SSBXZWJLaXRET01Ob2RlTGlzdCoKLXdlYmtpdF9kb21faHRtbF9idXR0b25fZWxlbWVudF9nZXRf
bGFiZWxzKFdlYktpdERPTUhUTUxCdXR0b25FbGVtZW50KiBzZWxmKTsKLQotCi1HX0VORF9ERUNM
UwotCi0jZW5kaWYgLyogV0VCS0lUX0RPTV9VU0VfVU5TVEFCTEVfQVBJICovCi0jZW5kaWYgLyog
V2ViS2l0RE9NSFRNTEJ1dHRvbkVsZW1lbnRVbnN0YWJsZV9oICovCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERP
TUhUTUxEZXRhaWxzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxEZXRhaWxzRWxlbWVudC5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc0MDM2YWYuLjAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01I
VE1MRGV0YWlsc0VsZW1lbnQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjEyICswLDAgQEAKLS8q
Ci0gKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0
LgotICogIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3Mu
cGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJXZWJLaXRET01IVE1MRGV0YWlsc0VsZW1lbnQuaCIKLQotI2luY2x1ZGUgPFdlYkNvcmUv
Q1NTSW1wb3J0UnVsZS5oPgotI2luY2x1ZGUgIkRPTU9iamVjdENhY2hlLmgiCi0jaW5jbHVkZSA8
V2ViQ29yZS9Eb2N1bWVudC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRXhjZXB0aW9uQ29kZS5oPgot
I2luY2x1ZGUgPFdlYkNvcmUvRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uLmg+Ci0jaW5jbHVkZSAi
R09iamVjdEV2ZW50TGlzdGVuZXIuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0hUTUxOYW1lcy5oPgot
I2luY2x1ZGUgPFdlYkNvcmUvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmg+Ci0jaW5jbHVkZSAiV2Vi
S2l0RE9NRXZlbnRQcml2YXRlLmgiCi0jaW5jbHVkZSAiV2ViS2l0RE9NRXZlbnRUYXJnZXQuaCIK
LSNpbmNsdWRlICJXZWJLaXRET01IVE1MRGV0YWlsc0VsZW1lbnRQcml2YXRlLmgiCi0jaW5jbHVk
ZSAiV2ViS2l0RE9NTm9kZVByaXZhdGUuaCIKLSNpbmNsdWRlICJXZWJLaXRET01Qcml2YXRlLmgi
Ci0jaW5jbHVkZSAiQ29udmVydFRvVVRGOFN0cmluZy5oIgotI2luY2x1ZGUgPHd0Zi9HZXRQdHIu
aD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLSNpZiBFTkFCTEUoREVUQUlMU19FTEVNRU5U
KQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotV2ViS2l0RE9NSFRNTERldGFpbHNFbGVtZW50KiBr
aXQoV2ViQ29yZTo6SFRNTERldGFpbHNFbGVtZW50KiBvYmopCi17Ci0gICAgcmV0dXJuIFdFQktJ
VF9ET01fSFRNTF9ERVRBSUxTX0VMRU1FTlQoa2l0KHN0YXRpY19jYXN0PFdlYkNvcmU6Ok5vZGUq
PihvYmopKSk7Ci19Ci0KLVdlYkNvcmU6OkhUTUxEZXRhaWxzRWxlbWVudCogY29yZShXZWJLaXRE
T01IVE1MRGV0YWlsc0VsZW1lbnQqIHJlcXVlc3QpCi17Ci0gICAgcmV0dXJuIHJlcXVlc3QgPyBz
dGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MRGV0YWlsc0VsZW1lbnQqPihXRUJLSVRfRE9NX09CSkVD
VChyZXF1ZXN0KS0+Y29yZU9iamVjdCkgOiAwOwotfQotCi1XZWJLaXRET01IVE1MRGV0YWlsc0Vs
ZW1lbnQqIHdyYXBIVE1MRGV0YWlsc0VsZW1lbnQoV2ViQ29yZTo6SFRNTERldGFpbHNFbGVtZW50
KiBjb3JlT2JqZWN0KQotewotICAgIEFTU0VSVChjb3JlT2JqZWN0KTsKLSAgICByZXR1cm4gV0VC
S0lUX0RPTV9IVE1MX0RFVEFJTFNfRUxFTUVOVChnX29iamVjdF9uZXcoV0VCS0lUX0RPTV9UWVBF
X0hUTUxfREVUQUlMU19FTEVNRU5ULCAiY29yZS1vYmplY3QiLCBjb3JlT2JqZWN0LCBudWxscHRy
KSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKERFVEFJ
TFNfRUxFTUVOVCkKLQotc3RhdGljIGdib29sZWFuIHdlYmtpdF9kb21faHRtbF9kZXRhaWxzX2Vs
ZW1lbnRfZGlzcGF0Y2hfZXZlbnQoV2ViS2l0RE9NRXZlbnRUYXJnZXQqIHRhcmdldCwgV2ViS2l0
RE9NRXZlbnQqIGV2ZW50LCBHRXJyb3IqKiBlcnJvcikKLXsKLSNpZiBFTkFCTEUoREVUQUlMU19F
TEVNRU5UKQotICAgIFdlYkNvcmU6OkV2ZW50KiBjb3JlRXZlbnQgPSBXZWJLaXQ6OmNvcmUoZXZl
bnQpOwotICAgIGlmICghY29yZUV2ZW50KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgV2Vi
Q29yZTo6SFRNTERldGFpbHNFbGVtZW50KiBjb3JlVGFyZ2V0ID0gc3RhdGljX2Nhc3Q8V2ViQ29y
ZTo6SFRNTERldGFpbHNFbGVtZW50Kj4oV0VCS0lUX0RPTV9PQkpFQ1QodGFyZ2V0KS0+Y29yZU9i
amVjdCk7Ci0KLSAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBnYm9vbGVh
biByZXN1bHQgPSBjb3JlVGFyZ2V0LT5kaXNwYXRjaEV2ZW50Rm9yQmluZGluZ3MoKmNvcmVFdmVu
dCwgZWMpOwotICAgIGlmIChlYykgewotICAgICAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlRGVz
Y3JpcHRpb24gZGVzY3JpcHRpb24oZWMpOwotICAgICAgICBnX3NldF9lcnJvcl9saXRlcmFsKGVy
cm9yLCBnX3F1YXJrX2Zyb21fc3RyaW5nKCJXRUJLSVRfRE9NIiksIGRlc2NyaXB0aW9uLmNvZGUs
IGRlc2NyaXB0aW9uLm5hbWUpOwotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OwotI2Vsc2UKLSAg
ICBVTlVTRURfUEFSQU0odGFyZ2V0KTsKLSAgICBVTlVTRURfUEFSQU0oZXZlbnQpOwotICAgIFVO
VVNFRF9QQVJBTShlcnJvcik7Ci0gICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgi
RGV0YWlscyBFbGVtZW50IikKLSAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYgLy8gRU5BQkxFKERF
VEFJTFNfRUxFTUVOVCkKLX0KLQotc3RhdGljIGdib29sZWFuIHdlYmtpdF9kb21faHRtbF9kZXRh
aWxzX2VsZW1lbnRfYWRkX2V2ZW50X2xpc3RlbmVyKFdlYktpdERPTUV2ZW50VGFyZ2V0KiB0YXJn
ZXQsIGNvbnN0IGNoYXIqIGV2ZW50TmFtZSwgR0Nsb3N1cmUqIGhhbmRsZXIsIGdib29sZWFuIHVz
ZUNhcHR1cmUpCi17Ci0jaWYgRU5BQkxFKERFVEFJTFNfRUxFTUVOVCkKLSAgICBXZWJDb3JlOjpI
VE1MRGV0YWlsc0VsZW1lbnQqIGNvcmVUYXJnZXQgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1M
RGV0YWlsc0VsZW1lbnQqPihXRUJLSVRfRE9NX09CSkVDVCh0YXJnZXQpLT5jb3JlT2JqZWN0KTsK
LSAgICByZXR1cm4gV2ViS2l0OjpHT2JqZWN0RXZlbnRMaXN0ZW5lcjo6YWRkRXZlbnRMaXN0ZW5l
cihHX09CSkVDVCh0YXJnZXQpLCBjb3JlVGFyZ2V0LCBldmVudE5hbWUsIGhhbmRsZXIsIHVzZUNh
cHR1cmUpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0odGFyZ2V0KTsKLSAgICBVTlVTRURfUEFS
QU0oZXZlbnROYW1lKTsKLSAgICBVTlVTRURfUEFSQU0oaGFuZGxlcik7Ci0gICAgVU5VU0VEX1BB
UkFNKHVzZUNhcHR1cmUpOwotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIkRl
dGFpbHMgRWxlbWVudCIpCi0gICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmIC8vIEVOQUJMRShERVRB
SUxTX0VMRU1FTlQpCi19Ci0KLXN0YXRpYyBnYm9vbGVhbiB3ZWJraXRfZG9tX2h0bWxfZGV0YWls
c19lbGVtZW50X3JlbW92ZV9ldmVudF9saXN0ZW5lcihXZWJLaXRET01FdmVudFRhcmdldCogdGFy
Z2V0LCBjb25zdCBjaGFyKiBldmVudE5hbWUsIEdDbG9zdXJlKiBoYW5kbGVyLCBnYm9vbGVhbiB1
c2VDYXB0dXJlKQotewotI2lmIEVOQUJMRShERVRBSUxTX0VMRU1FTlQpCi0gICAgV2ViQ29yZTo6
SFRNTERldGFpbHNFbGVtZW50KiBjb3JlVGFyZ2V0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRN
TERldGFpbHNFbGVtZW50Kj4oV0VCS0lUX0RPTV9PQkpFQ1QodGFyZ2V0KS0+Y29yZU9iamVjdCk7
Ci0gICAgcmV0dXJuIFdlYktpdDo6R09iamVjdEV2ZW50TGlzdGVuZXI6OnJlbW92ZUV2ZW50TGlz
dGVuZXIoR19PQkpFQ1QodGFyZ2V0KSwgY29yZVRhcmdldCwgZXZlbnROYW1lLCBoYW5kbGVyLCB1
c2VDYXB0dXJlKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7Ci0gICAgVU5VU0VE
X1BBUkFNKGV2ZW50TmFtZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGhhbmRsZXIpOwotICAgIFVOVVNF
RF9QQVJBTSh1c2VDYXB0dXJlKTsKLSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5U
KCJEZXRhaWxzIEVsZW1lbnQiKQotICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZiAvLyBFTkFCTEUo
REVUQUlMU19FTEVNRU5UKQotfQotCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX2V2ZW50X3Rhcmdl
dF9pbml0KFdlYktpdERPTUV2ZW50VGFyZ2V0SWZhY2UqIGlmYWNlKQotewotICAgIGlmYWNlLT5k
aXNwYXRjaF9ldmVudCA9IHdlYmtpdF9kb21faHRtbF9kZXRhaWxzX2VsZW1lbnRfZGlzcGF0Y2hf
ZXZlbnQ7Ci0gICAgaWZhY2UtPmFkZF9ldmVudF9saXN0ZW5lciA9IHdlYmtpdF9kb21faHRtbF9k
ZXRhaWxzX2VsZW1lbnRfYWRkX2V2ZW50X2xpc3RlbmVyOwotICAgIGlmYWNlLT5yZW1vdmVfZXZl
bnRfbGlzdGVuZXIgPSB3ZWJraXRfZG9tX2h0bWxfZGV0YWlsc19lbGVtZW50X3JlbW92ZV9ldmVu
dF9saXN0ZW5lcjsKLX0KLQotR19ERUZJTkVfVFlQRV9XSVRIX0NPREUoV2ViS2l0RE9NSFRNTERl
dGFpbHNFbGVtZW50LCB3ZWJraXRfZG9tX2h0bWxfZGV0YWlsc19lbGVtZW50LCBXRUJLSVRfRE9N
X1RZUEVfSFRNTF9FTEVNRU5ULCBHX0lNUExFTUVOVF9JTlRFUkZBQ0UoV0VCS0lUX0RPTV9UWVBF
X0VWRU5UX1RBUkdFVCwgd2Via2l0X2RvbV9ldmVudF90YXJnZXRfaW5pdCkpCi0KLWVudW0gewot
ICAgIFBST1BfMCwKLSAgICBQUk9QX09QRU4sCi19OwotCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9t
X2h0bWxfZGV0YWlsc19lbGVtZW50X3NldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50
IHByb3BlcnR5SWQsIGNvbnN0IEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKQotewot
ICAgIFdlYktpdERPTUhUTUxEZXRhaWxzRWxlbWVudCogc2VsZiA9IFdFQktJVF9ET01fSFRNTF9E
RVRBSUxTX0VMRU1FTlQob2JqZWN0KTsKLQotICAgIHN3aXRjaCAocHJvcGVydHlJZCkgewotICAg
IGNhc2UgUFJPUF9PUEVOOgotICAgICAgICB3ZWJraXRfZG9tX2h0bWxfZGV0YWlsc19lbGVtZW50
X3NldF9vcGVuKHNlbGYsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZ
X0lEKG9iamVjdCwgcHJvcGVydHlJZCwgcHNwZWMpOwotICAgICAgICBicmVhazsKLSAgICB9Ci19
Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdF9kb21faHRtbF9kZXRhaWxzX2VsZW1lbnRfZ2V0X3Byb3Bl
cnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcGVydHlJZCwgR1ZhbHVlKiB2YWx1ZSwgR1Bh
cmFtU3BlYyogcHNwZWMpCi17Ci0gICAgV2ViS2l0RE9NSFRNTERldGFpbHNFbGVtZW50KiBzZWxm
ID0gV0VCS0lUX0RPTV9IVE1MX0RFVEFJTFNfRUxFTUVOVChvYmplY3QpOwotCi0gICAgc3dpdGNo
IChwcm9wZXJ0eUlkKSB7Ci0gICAgY2FzZSBQUk9QX09QRU46Ci0gICAgICAgIGdfdmFsdWVfc2V0
X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF9kb21faHRtbF9kZXRhaWxzX2VsZW1lbnRfZ2V0X29wZW4o
c2VsZikpOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBHX09CSkVDVF9X
QVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wZXJ0eUlkLCBwc3BlYyk7Ci0gICAg
ICAgIGJyZWFrOwotICAgIH0KLX0KLQotc3RhdGljIHZvaWQgd2Via2l0X2RvbV9odG1sX2RldGFp
bHNfZWxlbWVudF9jbGFzc19pbml0KFdlYktpdERPTUhUTUxEZXRhaWxzRWxlbWVudENsYXNzKiBy
ZXF1ZXN0Q2xhc3MpCi17Ci0gICAgR09iamVjdENsYXNzKiBnb2JqZWN0Q2xhc3MgPSBHX09CSkVD
VF9DTEFTUyhyZXF1ZXN0Q2xhc3MpOwotICAgIGdvYmplY3RDbGFzcy0+c2V0X3Byb3BlcnR5ID0g
d2Via2l0X2RvbV9odG1sX2RldGFpbHNfZWxlbWVudF9zZXRfcHJvcGVydHk7Ci0gICAgZ29iamVj
dENsYXNzLT5nZXRfcHJvcGVydHkgPSB3ZWJraXRfZG9tX2h0bWxfZGV0YWlsc19lbGVtZW50X2dl
dF9wcm9wZXJ0eTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAg
ICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9PUEVOLAotICAgICAgICBnX3BhcmFtX3Nw
ZWNfYm9vbGVhbigKLSAgICAgICAgICAgICJvcGVuIiwKLSAgICAgICAgICAgICJIVE1MRGV0YWls
c0VsZW1lbnQ6b3BlbiIsCi0gICAgICAgICAgICAicmVhZC13cml0ZSBnYm9vbGVhbiBIVE1MRGV0
YWlsc0VsZW1lbnQ6b3BlbiIsCi0gICAgICAgICAgICBGQUxTRSwKLSAgICAgICAgICAgIFdFQktJ
VF9QQVJBTV9SRUFEV1JJVEUpKTsKLQotfQotCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX2h0bWxf
ZGV0YWlsc19lbGVtZW50X2luaXQoV2ViS2l0RE9NSFRNTERldGFpbHNFbGVtZW50KiByZXF1ZXN0
KQotewotICAgIFVOVVNFRF9QQVJBTShyZXF1ZXN0KTsKLX0KLQotZ2Jvb2xlYW4gd2Via2l0X2Rv
bV9odG1sX2RldGFpbHNfZWxlbWVudF9nZXRfb3BlbihXZWJLaXRET01IVE1MRGV0YWlsc0VsZW1l
bnQqIHNlbGYpCi17Ci0jaWYgRU5BQkxFKERFVEFJTFNfRUxFTUVOVCkKLSAgICBXZWJDb3JlOjpK
U01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VC
S0lUX0RPTV9JU19IVE1MX0RFVEFJTFNfRUxFTUVOVChzZWxmKSwgRkFMU0UpOwotICAgIFdlYkNv
cmU6OkhUTUxEZXRhaWxzRWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBn
Ym9vbGVhbiByZXN1bHQgPSBpdGVtLT5oYXNBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9u
KFdlYkNvcmU6OkhUTUxOYW1lczo6b3BlbkF0dHIpOwotICAgIHJldHVybiByZXN1bHQ7Ci0jZWxz
ZQotICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKLSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9Q
UkVTRU5UKCJEZXRhaWxzIEVsZW1lbnQiKQotICAgIHJldHVybiBzdGF0aWNfY2FzdDxnYm9vbGVh
bj4oMCk7Ci0jZW5kaWYgLyogRU5BQkxFKERFVEFJTFNfRUxFTUVOVCkgKi8KLX0KLQotdm9pZCB3
ZWJraXRfZG9tX2h0bWxfZGV0YWlsc19lbGVtZW50X3NldF9vcGVuKFdlYktpdERPTUhUTUxEZXRh
aWxzRWxlbWVudCogc2VsZiwgZ2Jvb2xlYW4gdmFsdWUpCi17Ci0jaWYgRU5BQkxFKERFVEFJTFNf
RUxFTUVOVCkKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAg
Z19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxfREVUQUlMU19FTEVNRU5UKHNlbGYp
KTsKLSAgICBXZWJDb3JlOjpIVE1MRGV0YWlsc0VsZW1lbnQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUo
c2VsZik7Ci0gICAgaXRlbS0+c2V0Qm9vbGVhbkF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6
Om9wZW5BdHRyLCB2YWx1ZSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKLSAgICBV
TlVTRURfUEFSQU0odmFsdWUpOwotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQo
IkRldGFpbHMgRWxlbWVudCIpCi0jZW5kaWYgLyogRU5BQkxFKERFVEFJTFNfRUxFTUVOVCkgKi8K
LX0KLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MRGV0YWlsc0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTERl
dGFpbHNFbGVtZW50LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY0MjE2OTkuLjAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z3RrL0RPTS9XZWJLaXRET01IVE1MRGV0YWlsc0VsZW1lbnQuaAorKysgL2Rldi9udWxsCkBAIC0x
LDc0ICswLDAgQEAKLS8qCi0gKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVu
IHNvdXJjZSBwcm9qZWN0LgotICogIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2Vu
ZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICogIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwot
ICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgV2Vi
S2l0RE9NSFRNTERldGFpbHNFbGVtZW50X2gKLSNkZWZpbmUgV2ViS2l0RE9NSFRNTERldGFpbHNF
bGVtZW50X2gKLQotI2lmZGVmIFdFQktJVF9ET01fVVNFX1VOU1RBQkxFX0FQSQotCi0jaW5jbHVk
ZSA8Z2xpYi1vYmplY3QuaD4KLSNpbmNsdWRlIDx3ZWJraXRkb20vV2ViS2l0RE9NSFRNTEVsZW1l
bnQuaD4KLSNpbmNsdWRlIDx3ZWJraXRkb20vd2Via2l0ZG9tZGVmaW5lcy11bnN0YWJsZS5oPgot
Ci1HX0JFR0lOX0RFQ0xTCi0KLSNkZWZpbmUgV0VCS0lUX0RPTV9UWVBFX0hUTUxfREVUQUlMU19F
TEVNRU5UICAgICAgICAgICAgKHdlYmtpdF9kb21faHRtbF9kZXRhaWxzX2VsZW1lbnRfZ2V0X3R5
cGUoKSkKLSNkZWZpbmUgV0VCS0lUX0RPTV9IVE1MX0RFVEFJTFNfRUxFTUVOVChvYmopICAgICAg
ICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBXRUJLSVRfRE9NX1RZUEVf
SFRNTF9ERVRBSUxTX0VMRU1FTlQsIFdlYktpdERPTUhUTUxEZXRhaWxzRWxlbWVudCkpCi0jZGVm
aW5lIFdFQktJVF9ET01fSFRNTF9ERVRBSUxTX0VMRU1FTlRfQ0xBU1Moa2xhc3MpICAgIChHX1RZ
UEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLCAgV0VCS0lUX0RPTV9UWVBFX0hUTUxfREVUQUlM
U19FTEVNRU5ULCBXZWJLaXRET01IVE1MRGV0YWlsc0VsZW1lbnRDbGFzcykKLSNkZWZpbmUgV0VC
S0lUX0RPTV9JU19IVE1MX0RFVEFJTFNfRUxFTUVOVChvYmopICAgICAgICAgKEdfVFlQRV9DSEVD
S19JTlNUQU5DRV9UWVBFKChvYmopLCBXRUJLSVRfRE9NX1RZUEVfSFRNTF9ERVRBSUxTX0VMRU1F
TlQpKQotI2RlZmluZSBXRUJLSVRfRE9NX0lTX0hUTUxfREVUQUlMU19FTEVNRU5UX0NMQVNTKGts
YXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwgIFdFQktJVF9ET01fVFlQRV9I
VE1MX0RFVEFJTFNfRUxFTUVOVCkpCi0jZGVmaW5lIFdFQktJVF9ET01fSFRNTF9ERVRBSUxTX0VM
RU1FTlRfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCAg
V0VCS0lUX0RPTV9UWVBFX0hUTUxfREVUQUlMU19FTEVNRU5ULCBXZWJLaXRET01IVE1MRGV0YWls
c0VsZW1lbnRDbGFzcykpCi0KLXN0cnVjdCBfV2ViS2l0RE9NSFRNTERldGFpbHNFbGVtZW50IHsK
LSAgICBXZWJLaXRET01IVE1MRWxlbWVudCBwYXJlbnRfaW5zdGFuY2U7Ci19OwotCi1zdHJ1Y3Qg
X1dlYktpdERPTUhUTUxEZXRhaWxzRWxlbWVudENsYXNzIHsKLSAgICBXZWJLaXRET01IVE1MRWxl
bWVudENsYXNzIHBhcmVudF9jbGFzczsKLX07Ci0KLVdFQktJVF9BUEkgR1R5cGUKLXdlYmtpdF9k
b21faHRtbF9kZXRhaWxzX2VsZW1lbnRfZ2V0X3R5cGUodm9pZCk7Ci0KLS8qKgotICogd2Via2l0
X2RvbV9odG1sX2RldGFpbHNfZWxlbWVudF9nZXRfb3BlbjoKLSAqIEBzZWxmOiBBICNXZWJLaXRE
T01IVE1MRGV0YWlsc0VsZW1lbnQKLSAqCi0gKiBSZXR1cm5zOiBBICNnYm9vbGVhbgotICoKLSAq
IFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSBnYm9vbGVhbgotd2Via2l0X2Rv
bV9odG1sX2RldGFpbHNfZWxlbWVudF9nZXRfb3BlbihXZWJLaXRET01IVE1MRGV0YWlsc0VsZW1l
bnQqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9kb21faHRtbF9kZXRhaWxzX2VsZW1lbnRfc2V0
X29wZW46Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTERldGFpbHNFbGVtZW50Ci0gKiBAdmFs
dWU6IEEgI2dib29sZWFuCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRf
QVBJIHZvaWQKLXdlYmtpdF9kb21faHRtbF9kZXRhaWxzX2VsZW1lbnRfc2V0X29wZW4oV2ViS2l0
RE9NSFRNTERldGFpbHNFbGVtZW50KiBzZWxmLCBnYm9vbGVhbiB2YWx1ZSk7Ci0KLUdfRU5EX0RF
Q0xTCi0KLSNlbmRpZiAvKiBXRUJLSVRfRE9NX1VTRV9VTlNUQUJMRV9BUEkgKi8KLSNlbmRpZiAv
KiBXZWJLaXRET01IVE1MRGV0YWlsc0VsZW1lbnRfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1M
RGV0YWlsc0VsZW1lbnRQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxEZXRhaWxzRWxlbWVudFByaXZhdGUu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDEwMTlhZC4uMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktp
dERPTUhUTUxEZXRhaWxzRWxlbWVudFByaXZhdGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICsw
LDAgQEAKLS8qCi0gKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJj
ZSBwcm9qZWN0LgotICogIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUt
YmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQot
ICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoK
LSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAot
ICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgV2ViS2l0RE9N
SFRNTERldGFpbHNFbGVtZW50UHJpdmF0ZV9oCi0jZGVmaW5lIFdlYktpdERPTUhUTUxEZXRhaWxz
RWxlbWVudFByaXZhdGVfaAotCi0jaW5jbHVkZSA8V2ViQ29yZS9IVE1MRGV0YWlsc0VsZW1lbnQu
aD4KLSNpbmNsdWRlIDx3ZWJraXRkb20vV2ViS2l0RE9NSFRNTERldGFpbHNFbGVtZW50Lmg+Ci0j
aWYgRU5BQkxFKERFVEFJTFNfRUxFTUVOVCkKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci1XZWJLaXRE
T01IVE1MRGV0YWlsc0VsZW1lbnQqIHdyYXBIVE1MRGV0YWlsc0VsZW1lbnQoV2ViQ29yZTo6SFRN
TERldGFpbHNFbGVtZW50Kik7Ci1XZWJLaXRET01IVE1MRGV0YWlsc0VsZW1lbnQqIGtpdChXZWJD
b3JlOjpIVE1MRGV0YWlsc0VsZW1lbnQqKTsKLVdlYkNvcmU6OkhUTUxEZXRhaWxzRWxlbWVudCog
Y29yZShXZWJLaXRET01IVE1MRGV0YWlsc0VsZW1lbnQqKTsKLX0gLy8gbmFtZXNwYWNlIFdlYktp
dAotCi0jZW5kaWYgLyogRU5BQkxFKERFVEFJTFNfRUxFTUVOVCkgKi8KLQotI2VuZGlmIC8qIFdl
YktpdERPTUhUTUxEZXRhaWxzRWxlbWVudFByaXZhdGVfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01I
VE1MRmllbGRTZXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTEZpZWxkU2V0RWxlbWVudC5jcHAKaW5k
ZXggN2Y3ODNlYi4uOTFhM2Y1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MRmllbGRTZXRFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
dGsvRE9NL1dlYktpdERPTUhUTUxGaWVsZFNldEVsZW1lbnQuY3BwCkBAIC0zNiw5ICszNiw3IEBA
CiAjaW5jbHVkZSAiV2ViS2l0RE9NSFRNTEZvcm1FbGVtZW50UHJpdmF0ZS5oIgogI2luY2x1ZGUg
IldlYktpdERPTU5vZGVQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0RE9NUHJpdmF0ZS5oIgot
I2luY2x1ZGUgIldlYktpdERPTVZhbGlkaXR5U3RhdGVQcml2YXRlLmgiCiAjaW5jbHVkZSAiQ29u
dmVydFRvVVRGOFN0cmluZy5oIgotI2luY2x1ZGUgIldlYktpdERPTUhUTUxGaWVsZFNldEVsZW1l
bnRVbnN0YWJsZS5oIgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CiAKQEAgLTEwMSw2MiArOTksMTcgQEAgR19ERUZJTkVfVFlQRV9XSVRIX0NPREUoV2Vi
S2l0RE9NSFRNTEZpZWxkU2V0RWxlbWVudCwgd2Via2l0X2RvbV9odG1sX2ZpZWxkX3NldF8KIAog
ZW51bSB7CiAgICAgUFJPUF8wLAotICAgIFBST1BfRElTQUJMRUQsCiAgICAgUFJPUF9GT1JNLAot
ICAgIFBST1BfTkFNRSwKLSAgICBQUk9QX1RZUEUsCi0gICAgUFJPUF9FTEVNRU5UUywKLSAgICBQ
Uk9QX1dJTExfVkFMSURBVEUsCi0gICAgUFJPUF9WQUxJRElUWSwKLSAgICBQUk9QX1ZBTElEQVRJ
T05fTUVTU0FHRSwKIH07CiAKLXN0YXRpYyB2b2lkIHdlYmtpdF9kb21faHRtbF9maWVsZF9zZXRf
ZWxlbWVudF9zZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wZXJ0eUlkLCBj
b25zdCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3BlYykKLXsKLSAgICBXZWJLaXRET01I
VE1MRmllbGRTZXRFbGVtZW50KiBzZWxmID0gV0VCS0lUX0RPTV9IVE1MX0ZJRUxEX1NFVF9FTEVN
RU5UKG9iamVjdCk7Ci0KLSAgICBzd2l0Y2ggKHByb3BlcnR5SWQpIHsKLSAgICBjYXNlIFBST1Bf
RElTQUJMRUQ6Ci0gICAgICAgIHdlYmtpdF9kb21faHRtbF9maWVsZF9zZXRfZWxlbWVudF9zZXRf
ZGlzYWJsZWQoc2VsZiwgZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIFBST1BfTkFNRToKLSAgICAgICAgd2Via2l0X2RvbV9odG1sX2ZpZWxkX3Nl
dF9lbGVtZW50X3NldF9uYW1lKHNlbGYsIGdfdmFsdWVfZ2V0X3N0cmluZyh2YWx1ZSkpOwotICAg
ICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURf
UFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wZXJ0eUlkLCBwc3BlYyk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIH0KLX0KLQogc3RhdGljIHZvaWQgd2Via2l0X2RvbV9odG1sX2ZpZWxkX3NldF9lbGVtZW50
X2dldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BlcnR5SWQsIEdWYWx1ZSog
dmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKQogewogICAgIFdlYktpdERPTUhUTUxGaWVsZFNldEVs
ZW1lbnQqIHNlbGYgPSBXRUJLSVRfRE9NX0hUTUxfRklFTERfU0VUX0VMRU1FTlQob2JqZWN0KTsK
IAogICAgIHN3aXRjaCAocHJvcGVydHlJZCkgewotICAgIGNhc2UgUFJPUF9ESVNBQkxFRDoKLSAg
ICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X2RvbV9odG1sX2ZpZWxkX3Nl
dF9lbGVtZW50X2dldF9kaXNhYmxlZChzZWxmKSk7Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
UFJPUF9GT1JNOgogICAgICAgICBnX3ZhbHVlX3NldF9vYmplY3QodmFsdWUsIHdlYmtpdF9kb21f
aHRtbF9maWVsZF9zZXRfZWxlbWVudF9nZXRfZm9ybShzZWxmKSk7CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgUFJPUF9OQU1FOgotICAgICAgICBnX3ZhbHVlX3Rha2Vfc3RyaW5nKHZhbHVlLCB3
ZWJraXRfZG9tX2h0bWxfZmllbGRfc2V0X2VsZW1lbnRfZ2V0X25hbWUoc2VsZikpOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIFBST1BfVFlQRToKLSAgICAgICAgZ192YWx1ZV90YWtlX3N0cmlu
Zyh2YWx1ZSwgd2Via2l0X2RvbV9odG1sX2ZpZWxkX3NldF9lbGVtZW50X2dldF9zZXRfdHlwZShz
ZWxmKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9FTEVNRU5UUzoKLSAgICAgICAg
Z192YWx1ZV9zZXRfb2JqZWN0KHZhbHVlLCB3ZWJraXRfZG9tX2h0bWxfZmllbGRfc2V0X2VsZW1l
bnRfZ2V0X2VsZW1lbnRzKHNlbGYpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX1dJ
TExfVkFMSURBVEU6Ci0gICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF9k
b21faHRtbF9maWVsZF9zZXRfZWxlbWVudF9nZXRfd2lsbF92YWxpZGF0ZShzZWxmKSk7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9WQUxJRElUWToKLSAgICAgICAgZ192YWx1ZV9zZXRf
b2JqZWN0KHZhbHVlLCB3ZWJraXRfZG9tX2h0bWxfZmllbGRfc2V0X2VsZW1lbnRfZ2V0X3ZhbGlk
aXR5KHNlbGYpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX1ZBTElEQVRJT05fTUVT
U0FHRToKLSAgICAgICAgZ192YWx1ZV90YWtlX3N0cmluZyh2YWx1ZSwgd2Via2l0X2RvbV9odG1s
X2ZpZWxkX3NldF9lbGVtZW50X2dldF92YWxpZGF0aW9uX21lc3NhZ2Uoc2VsZikpOwotICAgICAg
ICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJP
UEVSVFlfSUQob2JqZWN0LCBwcm9wZXJ0eUlkLCBwc3BlYyk7CiAgICAgICAgIGJyZWFrOwpAQCAt
MTY2LDIxICsxMTksMTAgQEAgc3RhdGljIHZvaWQgd2Via2l0X2RvbV9odG1sX2ZpZWxkX3NldF9l
bGVtZW50X2dldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW4KIHN0YXRpYyB2b2lkIHdl
YmtpdF9kb21faHRtbF9maWVsZF9zZXRfZWxlbWVudF9jbGFzc19pbml0KFdlYktpdERPTUhUTUxG
aWVsZFNldEVsZW1lbnRDbGFzcyogcmVxdWVzdENsYXNzKQogewogICAgIEdPYmplY3RDbGFzcyog
Z29iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1MocmVxdWVzdENsYXNzKTsKLSAgICBnb2JqZWN0
Q2xhc3MtPnNldF9wcm9wZXJ0eSA9IHdlYmtpdF9kb21faHRtbF9maWVsZF9zZXRfZWxlbWVudF9z
ZXRfcHJvcGVydHk7CiAgICAgZ29iamVjdENsYXNzLT5nZXRfcHJvcGVydHkgPSB3ZWJraXRfZG9t
X2h0bWxfZmllbGRfc2V0X2VsZW1lbnRfZ2V0X3Byb3BlcnR5OwogCiAgICAgZ19vYmplY3RfY2xh
c3NfaW5zdGFsbF9wcm9wZXJ0eSgKICAgICAgICAgZ29iamVjdENsYXNzLAotICAgICAgICBQUk9Q
X0RJU0FCTEVELAotICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigKLSAgICAgICAgICAgICJk
aXNhYmxlZCIsCi0gICAgICAgICAgICAiSFRNTEZpZWxkU2V0RWxlbWVudDpkaXNhYmxlZCIsCi0g
ICAgICAgICAgICAicmVhZC13cml0ZSBnYm9vbGVhbiBIVE1MRmllbGRTZXRFbGVtZW50OmRpc2Fi
bGVkIiwKLSAgICAgICAgICAgIEZBTFNFLAotICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURX
UklURSkpOwotCi0gICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAg
Z29iamVjdENsYXNzLAogICAgICAgICBQUk9QX0ZPUk0sCiAgICAgICAgIGdfcGFyYW1fc3BlY19v
YmplY3QoCiAgICAgICAgICAgICAiZm9ybSIsCkBAIC0xODgsNjcgKzEzMCw2IEBAIHN0YXRpYyB2
b2lkIHdlYmtpdF9kb21faHRtbF9maWVsZF9zZXRfZWxlbWVudF9jbGFzc19pbml0KFdlYktpdERP
TUhUTUxGaWVsZFNldEVsCiAgICAgICAgICAgICAicmVhZC1vbmx5IFdlYktpdERPTUhUTUxGb3Jt
RWxlbWVudCogSFRNTEZpZWxkU2V0RWxlbWVudDpmb3JtIiwKICAgICAgICAgICAgIFdFQktJVF9E
T01fVFlQRV9IVE1MX0ZPUk1fRUxFTUVOVCwKICAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFE
QUJMRSkpOwotCi0gICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAg
Z29iamVjdENsYXNzLAotICAgICAgICBQUk9QX05BTUUsCi0gICAgICAgIGdfcGFyYW1fc3BlY19z
dHJpbmcoCi0gICAgICAgICAgICAibmFtZSIsCi0gICAgICAgICAgICAiSFRNTEZpZWxkU2V0RWxl
bWVudDpuYW1lIiwKLSAgICAgICAgICAgICJyZWFkLXdyaXRlIGdjaGFyKiBIVE1MRmllbGRTZXRF
bGVtZW50Om5hbWUiLAotICAgICAgICAgICAgIiIsCi0gICAgICAgICAgICBXRUJLSVRfUEFSQU1f
UkVBRFdSSVRFKSk7Ci0KLSAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAotICAg
ICAgICBnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBST1BfVFlQRSwKLSAgICAgICAgZ19wYXJhbV9z
cGVjX3N0cmluZygKLSAgICAgICAgICAgICJ0eXBlIiwKLSAgICAgICAgICAgICJIVE1MRmllbGRT
ZXRFbGVtZW50OnR5cGUiLAotICAgICAgICAgICAgInJlYWQtb25seSBnY2hhciogSFRNTEZpZWxk
U2V0RWxlbWVudDp0eXBlIiwKLSAgICAgICAgICAgICIiLAotICAgICAgICAgICAgV0VCS0lUX1BB
UkFNX1JFQURBQkxFKSk7Ci0KLSAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAot
ICAgICAgICBnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBST1BfRUxFTUVOVFMsCi0gICAgICAgIGdf
cGFyYW1fc3BlY19vYmplY3QoCi0gICAgICAgICAgICAiZWxlbWVudHMiLAotICAgICAgICAgICAg
IkhUTUxGaWVsZFNldEVsZW1lbnQ6ZWxlbWVudHMiLAotICAgICAgICAgICAgInJlYWQtb25seSBX
ZWJLaXRET01IVE1MQ29sbGVjdGlvbiogSFRNTEZpZWxkU2V0RWxlbWVudDplbGVtZW50cyIsCi0g
ICAgICAgICAgICBXRUJLSVRfRE9NX1RZUEVfSFRNTF9DT0xMRUNUSU9OLAotICAgICAgICAgICAg
V0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7Ci0KLSAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3By
b3BlcnR5KAotICAgICAgICBnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBST1BfV0lMTF9WQUxJREFU
RSwKLSAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oCi0gICAgICAgICAgICAid2lsbC12YWxp
ZGF0ZSIsCi0gICAgICAgICAgICAiSFRNTEZpZWxkU2V0RWxlbWVudDp3aWxsLXZhbGlkYXRlIiwK
LSAgICAgICAgICAgICJyZWFkLW9ubHkgZ2Jvb2xlYW4gSFRNTEZpZWxkU2V0RWxlbWVudDp3aWxs
LXZhbGlkYXRlIiwKLSAgICAgICAgICAgIEZBTFNFLAotICAgICAgICAgICAgV0VCS0lUX1BBUkFN
X1JFQURBQkxFKSk7Ci0KLSAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAotICAg
ICAgICBnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBST1BfVkFMSURJVFksCi0gICAgICAgIGdfcGFy
YW1fc3BlY19vYmplY3QoCi0gICAgICAgICAgICAidmFsaWRpdHkiLAotICAgICAgICAgICAgIkhU
TUxGaWVsZFNldEVsZW1lbnQ6dmFsaWRpdHkiLAotICAgICAgICAgICAgInJlYWQtb25seSBXZWJL
aXRET01WYWxpZGl0eVN0YXRlKiBIVE1MRmllbGRTZXRFbGVtZW50OnZhbGlkaXR5IiwKLSAgICAg
ICAgICAgIFdFQktJVF9ET01fVFlQRV9WQUxJRElUWV9TVEFURSwKLSAgICAgICAgICAgIFdFQktJ
VF9QQVJBTV9SRUFEQUJMRSkpOwotCi0gICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0
eSgKLSAgICAgICAgZ29iamVjdENsYXNzLAotICAgICAgICBQUk9QX1ZBTElEQVRJT05fTUVTU0FH
RSwKLSAgICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZygKLSAgICAgICAgICAgICJ2YWxpZGF0aW9u
LW1lc3NhZ2UiLAotICAgICAgICAgICAgIkhUTUxGaWVsZFNldEVsZW1lbnQ6dmFsaWRhdGlvbi1t
ZXNzYWdlIiwKLSAgICAgICAgICAgICJyZWFkLW9ubHkgZ2NoYXIqIEhUTUxGaWVsZFNldEVsZW1l
bnQ6dmFsaWRhdGlvbi1tZXNzYWdlIiwKLSAgICAgICAgICAgICIiLAotICAgICAgICAgICAgV0VC
S0lUX1BBUkFNX1JFQURBQkxFKSk7Ci0KIH0KIAogc3RhdGljIHZvaWQgd2Via2l0X2RvbV9odG1s
X2ZpZWxkX3NldF9lbGVtZW50X2luaXQoV2ViS2l0RE9NSFRNTEZpZWxkU2V0RWxlbWVudCogcmVx
dWVzdCkKQEAgLTI1Niw0MiArMTM3LDYgQEAgc3RhdGljIHZvaWQgd2Via2l0X2RvbV9odG1sX2Zp
ZWxkX3NldF9lbGVtZW50X2luaXQoV2ViS2l0RE9NSFRNTEZpZWxkU2V0RWxlbWVudCoKICAgICBV
TlVTRURfUEFSQU0ocmVxdWVzdCk7CiB9CiAKLWdib29sZWFuIHdlYmtpdF9kb21faHRtbF9maWVs
ZF9zZXRfZWxlbWVudF9jaGVja192YWxpZGl0eShXZWJLaXRET01IVE1MRmllbGRTZXRFbGVtZW50
KiBzZWxmKQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxfRklFTERfU0VUX0VMRU1F
TlQoc2VsZiksIEZBTFNFKTsKLSAgICBXZWJDb3JlOjpIVE1MRmllbGRTZXRFbGVtZW50KiBpdGVt
ID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdib29sZWFuIHJlc3VsdCA9IGl0ZW0tPmNoZWNr
VmFsaWRpdHkoKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi12b2lkIHdlYmtpdF9kb21faHRt
bF9maWVsZF9zZXRfZWxlbWVudF9zZXRfY3VzdG9tX3ZhbGlkaXR5KFdlYktpdERPTUhUTUxGaWVs
ZFNldEVsZW1lbnQqIHNlbGYsIGNvbnN0IGdjaGFyKiBlcnJvcikKLXsKLSAgICBXZWJDb3JlOjpK
U01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRf
RE9NX0lTX0hUTUxfRklFTERfU0VUX0VMRU1FTlQoc2VsZikpOwotICAgIGdfcmV0dXJuX2lmX2Zh
aWwoZXJyb3IpOwotICAgIFdlYkNvcmU6OkhUTUxGaWVsZFNldEVsZW1lbnQqIGl0ZW0gPSBXZWJL
aXQ6OmNvcmUoc2VsZik7Ci0gICAgV1RGOjpTdHJpbmcgY29udmVydGVkRXJyb3IgPSBXVEY6OlN0
cmluZzo6ZnJvbVVURjgoZXJyb3IpOwotICAgIGl0ZW0tPnNldEN1c3RvbVZhbGlkaXR5KGNvbnZl
cnRlZEVycm9yKTsKLX0KLQotZ2Jvb2xlYW4gd2Via2l0X2RvbV9odG1sX2ZpZWxkX3NldF9lbGVt
ZW50X2dldF9kaXNhYmxlZChXZWJLaXRET01IVE1MRmllbGRTZXRFbGVtZW50KiBzZWxmKQotewot
ICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92
YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxfRklFTERfU0VUX0VMRU1FTlQoc2VsZiksIEZB
TFNFKTsKLSAgICBXZWJDb3JlOjpIVE1MRmllbGRTZXRFbGVtZW50KiBpdGVtID0gV2ViS2l0Ojpj
b3JlKHNlbGYpOwotICAgIGdib29sZWFuIHJlc3VsdCA9IGl0ZW0tPmhhc0F0dHJpYnV0ZVdpdGhv
dXRTeW5jaHJvbml6YXRpb24oV2ViQ29yZTo6SFRNTE5hbWVzOjpkaXNhYmxlZEF0dHIpOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci0KLXZvaWQgd2Via2l0X2RvbV9odG1sX2ZpZWxkX3NldF9lbGVt
ZW50X3NldF9kaXNhYmxlZChXZWJLaXRET01IVE1MRmllbGRTZXRFbGVtZW50KiBzZWxmLCBnYm9v
bGVhbiB2YWx1ZSkKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7
Ci0gICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxfRklFTERfU0VUX0VMRU1F
TlQoc2VsZikpOwotICAgIFdlYkNvcmU6OkhUTUxGaWVsZFNldEVsZW1lbnQqIGl0ZW0gPSBXZWJL
aXQ6OmNvcmUoc2VsZik7Ci0gICAgaXRlbS0+c2V0Qm9vbGVhbkF0dHJpYnV0ZShXZWJDb3JlOjpI
VE1MTmFtZXM6OmRpc2FibGVkQXR0ciwgdmFsdWUpOwotfQotCiBXZWJLaXRET01IVE1MRm9ybUVs
ZW1lbnQqIHdlYmtpdF9kb21faHRtbF9maWVsZF9zZXRfZWxlbWVudF9nZXRfZm9ybShXZWJLaXRE
T01IVE1MRmllbGRTZXRFbGVtZW50KiBzZWxmKQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVh
ZE51bGxTdGF0ZSBzdGF0ZTsKQEAgLTMwMCw2OCArMTQ1LDMgQEAgV2ViS2l0RE9NSFRNTEZvcm1F
bGVtZW50KiB3ZWJraXRfZG9tX2h0bWxfZmllbGRfc2V0X2VsZW1lbnRfZ2V0X2Zvcm0oV2ViS2l0
RE9NSFQKICAgICBSZWZQdHI8V2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50PiBnb2JqZWN0UmVzdWx0
ID0gV1RGOjpnZXRQdHIoaXRlbS0+Zm9ybSgpKTsKICAgICByZXR1cm4gV2ViS2l0OjpraXQoZ29i
amVjdFJlc3VsdC5nZXQoKSk7CiB9Ci0KLWdjaGFyKiB3ZWJraXRfZG9tX2h0bWxfZmllbGRfc2V0
X2VsZW1lbnRfZ2V0X25hbWUoV2ViS2l0RE9NSFRNTEZpZWxkU2V0RWxlbWVudCogc2VsZikKLXsK
LSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5f
dmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19IVE1MX0ZJRUxEX1NFVF9FTEVNRU5UKHNlbGYpLCAw
KTsKLSAgICBXZWJDb3JlOjpIVE1MRmllbGRTZXRFbGVtZW50KiBpdGVtID0gV2ViS2l0Ojpjb3Jl
KHNlbGYpOwotICAgIGdjaGFyKiByZXN1bHQgPSBjb252ZXJ0VG9VVEY4U3RyaW5nKGl0ZW0tPmdl
dE5hbWVBdHRyaWJ1dGUoKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotdm9pZCB3ZWJraXRf
ZG9tX2h0bWxfZmllbGRfc2V0X2VsZW1lbnRfc2V0X25hbWUoV2ViS2l0RE9NSFRNTEZpZWxkU2V0
RWxlbWVudCogc2VsZiwgY29uc3QgZ2NoYXIqIHZhbHVlKQotewotICAgIFdlYkNvcmU6OkpTTWFp
blRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01f
SVNfSFRNTF9GSUVMRF9TRVRfRUxFTUVOVChzZWxmKSk7Ci0gICAgZ19yZXR1cm5faWZfZmFpbCh2
YWx1ZSk7Ci0gICAgV2ViQ29yZTo6SFRNTEZpZWxkU2V0RWxlbWVudCogaXRlbSA9IFdlYktpdDo6
Y29yZShzZWxmKTsKLSAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRWYWx1ZSA9IFdURjo6U3RyaW5n
Ojpmcm9tVVRGOCh2YWx1ZSk7Ci0gICAgaXRlbS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9u
aXphdGlvbihXZWJDb3JlOjpIVE1MTmFtZXM6Om5hbWVBdHRyLCBjb252ZXJ0ZWRWYWx1ZSk7Ci19
Ci0KLWdjaGFyKiB3ZWJraXRfZG9tX2h0bWxfZmllbGRfc2V0X2VsZW1lbnRfZ2V0X3NldF90eXBl
KFdlYktpdERPTUhUTUxGaWVsZFNldEVsZW1lbnQqIHNlbGYpCi17Ci0gICAgV2ViQ29yZTo6SlNN
YWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJ
VF9ET01fSVNfSFRNTF9GSUVMRF9TRVRfRUxFTUVOVChzZWxmKSwgMCk7Ci0gICAgV2ViQ29yZTo6
SFRNTEZpZWxkU2V0RWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBnY2hh
ciogcmVzdWx0ID0gY29udmVydFRvVVRGOFN0cmluZyhpdGVtLT50eXBlKCkpOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci0KLVdlYktpdERPTUhUTUxDb2xsZWN0aW9uKiB3ZWJraXRfZG9tX2h0bWxf
ZmllbGRfc2V0X2VsZW1lbnRfZ2V0X2VsZW1lbnRzKFdlYktpdERPTUhUTUxGaWVsZFNldEVsZW1l
bnQqIHNlbGYpCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwot
ICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfSFRNTF9GSUVMRF9TRVRfRUxF
TUVOVChzZWxmKSwgMCk7Ci0gICAgV2ViQ29yZTo6SFRNTEZpZWxkU2V0RWxlbWVudCogaXRlbSA9
IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6SFRNTENvbGxlY3Rpb24+
IGdvYmplY3RSZXN1bHQgPSBXVEY6OmdldFB0cihpdGVtLT5lbGVtZW50c0Zvck5hdGl2ZUJpbmRp
bmdzKCkpOwotICAgIHJldHVybiBXZWJLaXQ6OmtpdChnb2JqZWN0UmVzdWx0LmdldCgpKTsKLX0K
LQotZ2Jvb2xlYW4gd2Via2l0X2RvbV9odG1sX2ZpZWxkX3NldF9lbGVtZW50X2dldF93aWxsX3Zh
bGlkYXRlKFdlYktpdERPTUhUTUxGaWVsZFNldEVsZW1lbnQqIHNlbGYpCi17Ci0gICAgV2ViQ29y
ZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWls
KFdFQktJVF9ET01fSVNfSFRNTF9GSUVMRF9TRVRfRUxFTUVOVChzZWxmKSwgRkFMU0UpOwotICAg
IFdlYkNvcmU6OkhUTUxGaWVsZFNldEVsZW1lbnQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7
Ci0gICAgZ2Jvb2xlYW4gcmVzdWx0ID0gaXRlbS0+d2lsbFZhbGlkYXRlKCk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLQotV2ViS2l0RE9NVmFsaWRpdHlTdGF0ZSogd2Via2l0X2RvbV9odG1sX2Zp
ZWxkX3NldF9lbGVtZW50X2dldF92YWxpZGl0eShXZWJLaXRET01IVE1MRmllbGRTZXRFbGVtZW50
KiBzZWxmKQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxfRklFTERfU0VUX0VMRU1F
TlQoc2VsZiksIDApOwotICAgIFdlYkNvcmU6OkhUTUxGaWVsZFNldEVsZW1lbnQqIGl0ZW0gPSBX
ZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlZhbGlkaXR5U3RhdGU+IGdv
YmplY3RSZXN1bHQgPSBXVEY6OmdldFB0cihpdGVtLT52YWxpZGl0eSgpKTsKLSAgICByZXR1cm4g
V2ViS2l0OjpraXQoZ29iamVjdFJlc3VsdC5nZXQoKSk7Ci19Ci0KLWdjaGFyKiB3ZWJraXRfZG9t
X2h0bWxfZmllbGRfc2V0X2VsZW1lbnRfZ2V0X3ZhbGlkYXRpb25fbWVzc2FnZShXZWJLaXRET01I
VE1MRmllbGRTZXRFbGVtZW50KiBzZWxmKQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51
bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX0hU
TUxfRklFTERfU0VUX0VMRU1FTlQoc2VsZiksIDApOwotICAgIFdlYkNvcmU6OkhUTUxGaWVsZFNl
dEVsZW1lbnQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ2NoYXIqIHJlc3VsdCA9
IGNvbnZlcnRUb1VURjhTdHJpbmcoaXRlbS0+dmFsaWRhdGlvbk1lc3NhZ2UoKSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MRmllbGRTZXRFbGVtZW50VW5z
dGFibGUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0
ay9ET00vV2ViS2l0RE9NSFRNTEZpZWxkU2V0RWxlbWVudFVuc3RhYmxlLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDEzOWYyY2UuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MRmllbGRT
ZXRFbGVtZW50VW5zdGFibGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDE1MiArMCwwIEBACi0vKgot
ICogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4K
LSAqICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBs
LiBETyBOT1QgTU9ESUZZIQotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQotICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaWZuZGVmIFdlYktpdERPTUhUTUxGaWVsZFNl
dEVsZW1lbnRVbnN0YWJsZV9oCi0jZGVmaW5lIFdlYktpdERPTUhUTUxGaWVsZFNldEVsZW1lbnRV
bnN0YWJsZV9oCi0KLSNpZmRlZiBXRUJLSVRfRE9NX1VTRV9VTlNUQUJMRV9BUEkKLQotI2luY2x1
ZGUgPHdlYmtpdGRvbS93ZWJraXRkb21kZWZpbmVzLXVuc3RhYmxlLmg+Ci0KLUdfQkVHSU5fREVD
TFMKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0bWxfZmllbGRfc2V0X2VsZW1lbnRfY2hlY2tfdmFs
aWRpdHk6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTEZpZWxkU2V0RWxlbWVudAotICoKLSAq
IFJldHVybnM6IEEgI2dib29sZWFuCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1X
RUJLSVRfQVBJIGdib29sZWFuCi13ZWJraXRfZG9tX2h0bWxfZmllbGRfc2V0X2VsZW1lbnRfY2hl
Y2tfdmFsaWRpdHkoV2ViS2l0RE9NSFRNTEZpZWxkU2V0RWxlbWVudCogc2VsZik7Ci0KLS8qKgot
ICogd2Via2l0X2RvbV9odG1sX2ZpZWxkX3NldF9lbGVtZW50X3NldF9jdXN0b21fdmFsaWRpdHk6
Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTEZpZWxkU2V0RWxlbWVudAotICogQGVycm9yOiBB
ICNnY2hhcgotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSB2b2lk
Ci13ZWJraXRfZG9tX2h0bWxfZmllbGRfc2V0X2VsZW1lbnRfc2V0X2N1c3RvbV92YWxpZGl0eShX
ZWJLaXRET01IVE1MRmllbGRTZXRFbGVtZW50KiBzZWxmLCBjb25zdCBnY2hhciogZXJyb3IpOwot
Ci0vKioKLSAqIHdlYmtpdF9kb21faHRtbF9maWVsZF9zZXRfZWxlbWVudF9nZXRfZGlzYWJsZWQ6
Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTEZpZWxkU2V0RWxlbWVudAotICoKLSAqIFJldHVy
bnM6IEEgI2dib29sZWFuCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRf
QVBJIGdib29sZWFuCi13ZWJraXRfZG9tX2h0bWxfZmllbGRfc2V0X2VsZW1lbnRfZ2V0X2Rpc2Fi
bGVkKFdlYktpdERPTUhUTUxGaWVsZFNldEVsZW1lbnQqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtp
dF9kb21faHRtbF9maWVsZF9zZXRfZWxlbWVudF9zZXRfZGlzYWJsZWQ6Ci0gKiBAc2VsZjogQSAj
V2ViS2l0RE9NSFRNTEZpZWxkU2V0RWxlbWVudAotICogQHZhbHVlOiBBICNnYm9vbGVhbgotICoK
LSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSB2b2lkCi13ZWJraXRfZG9t
X2h0bWxfZmllbGRfc2V0X2VsZW1lbnRfc2V0X2Rpc2FibGVkKFdlYktpdERPTUhUTUxGaWVsZFNl
dEVsZW1lbnQqIHNlbGYsIGdib29sZWFuIHZhbHVlKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0
bWxfZmllbGRfc2V0X2VsZW1lbnRfZ2V0X25hbWU6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRN
TEZpZWxkU2V0RWxlbWVudAotICoKLSAqIFJldHVybnM6IEEgI2djaGFyCi0gKgotICogU3RhYmls
aXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIGdjaGFyKgotd2Via2l0X2RvbV9odG1sX2Zp
ZWxkX3NldF9lbGVtZW50X2dldF9uYW1lKFdlYktpdERPTUhUTUxGaWVsZFNldEVsZW1lbnQqIHNl
bGYpOwotCi0vKioKLSAqIHdlYmtpdF9kb21faHRtbF9maWVsZF9zZXRfZWxlbWVudF9zZXRfbmFt
ZToKLSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MRmllbGRTZXRFbGVtZW50Ci0gKiBAdmFsdWU6
IEEgI2djaGFyCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIHZv
aWQKLXdlYmtpdF9kb21faHRtbF9maWVsZF9zZXRfZWxlbWVudF9zZXRfbmFtZShXZWJLaXRET01I
VE1MRmllbGRTZXRFbGVtZW50KiBzZWxmLCBjb25zdCBnY2hhciogdmFsdWUpOwotCi0vKioKLSAq
IHdlYmtpdF9kb21faHRtbF9maWVsZF9zZXRfZWxlbWVudF9nZXRfc2V0X3R5cGU6Ci0gKiBAc2Vs
ZjogQSAjV2ViS2l0RE9NSFRNTEZpZWxkU2V0RWxlbWVudAotICoKLSAqIFJldHVybnM6IEEgI2dj
aGFyCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIGdjaGFyKgot
d2Via2l0X2RvbV9odG1sX2ZpZWxkX3NldF9lbGVtZW50X2dldF9zZXRfdHlwZShXZWJLaXRET01I
VE1MRmllbGRTZXRFbGVtZW50KiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0bWxfZmll
bGRfc2V0X2VsZW1lbnRfZ2V0X2VsZW1lbnRzOgotICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxG
aWVsZFNldEVsZW1lbnQKLSAqCi0gKiBSZXR1cm5zOiAodHJhbnNmZXIgZnVsbCk6IEEgI1dlYktp
dERPTUhUTUxDb2xsZWN0aW9uCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJL
SVRfQVBJIFdlYktpdERPTUhUTUxDb2xsZWN0aW9uKgotd2Via2l0X2RvbV9odG1sX2ZpZWxkX3Nl
dF9lbGVtZW50X2dldF9lbGVtZW50cyhXZWJLaXRET01IVE1MRmllbGRTZXRFbGVtZW50KiBzZWxm
KTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0bWxfZmllbGRfc2V0X2VsZW1lbnRfZ2V0X3dpbGxf
dmFsaWRhdGU6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTEZpZWxkU2V0RWxlbWVudAotICoK
LSAqIFJldHVybnM6IEEgI2dib29sZWFuCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiov
Ci1XRUJLSVRfQVBJIGdib29sZWFuCi13ZWJraXRfZG9tX2h0bWxfZmllbGRfc2V0X2VsZW1lbnRf
Z2V0X3dpbGxfdmFsaWRhdGUoV2ViS2l0RE9NSFRNTEZpZWxkU2V0RWxlbWVudCogc2VsZik7Ci0K
LS8qKgotICogd2Via2l0X2RvbV9odG1sX2ZpZWxkX3NldF9lbGVtZW50X2dldF92YWxpZGl0eToK
LSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MRmllbGRTZXRFbGVtZW50Ci0gKgotICogUmV0dXJu
czogKHRyYW5zZmVyIGZ1bGwpOiBBICNXZWJLaXRET01WYWxpZGl0eVN0YXRlCi0gKgotICogU3Rh
YmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIFdlYktpdERPTVZhbGlkaXR5U3RhdGUq
Ci13ZWJraXRfZG9tX2h0bWxfZmllbGRfc2V0X2VsZW1lbnRfZ2V0X3ZhbGlkaXR5KFdlYktpdERP
TUhUTUxGaWVsZFNldEVsZW1lbnQqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9kb21faHRtbF9m
aWVsZF9zZXRfZWxlbWVudF9nZXRfdmFsaWRhdGlvbl9tZXNzYWdlOgotICogQHNlbGY6IEEgI1dl
YktpdERPTUhUTUxGaWVsZFNldEVsZW1lbnQKLSAqCi0gKiBSZXR1cm5zOiBBICNnY2hhcgotICoK
LSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSBnY2hhcioKLXdlYmtpdF9k
b21faHRtbF9maWVsZF9zZXRfZWxlbWVudF9nZXRfdmFsaWRhdGlvbl9tZXNzYWdlKFdlYktpdERP
TUhUTUxGaWVsZFNldEVsZW1lbnQqIHNlbGYpOwotCi0KLUdfRU5EX0RFQ0xTCi0KLSNlbmRpZiAv
KiBXRUJLSVRfRE9NX1VTRV9VTlNUQUJMRV9BUEkgKi8KLSNlbmRpZiAvKiBXZWJLaXRET01IVE1M
RmllbGRTZXRFbGVtZW50VW5zdGFibGVfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MRm9ybUVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z3RrL0RPTS9XZWJLaXRET01IVE1MRm9ybUVsZW1lbnQuY3BwCmluZGV4IDAyNDJjMDQuLjVkNmFi
MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTEZvcm1FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxG
b3JtRWxlbWVudC5jcHAKQEAgLTM2LDcgKzM2LDYgQEAKICNpbmNsdWRlICJXZWJLaXRET01Ob2Rl
UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdERPTVByaXZhdGUuaCIKICNpbmNsdWRlICJDb252
ZXJ0VG9VVEY4U3RyaW5nLmgiCi0jaW5jbHVkZSAiV2ViS2l0RE9NSFRNTEZvcm1FbGVtZW50VW5z
dGFibGUuaCIKICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgogCkBAIC0xMDEsMTcgKzEwMCwxMyBAQCBlbnVtIHsKICAgICBQUk9QXzAsCiAgICAgUFJPUF9B
Q0NFUFRfQ0hBUlNFVCwKICAgICBQUk9QX0FDVElPTiwKLSAgICBQUk9QX0FVVE9DT01QTEVURSwK
ICAgICBQUk9QX0VOQ1RZUEUsCiAgICAgUFJPUF9FTkNPRElORywKICAgICBQUk9QX01FVEhPRCwK
ICAgICBQUk9QX05BTUUsCi0gICAgUFJPUF9OT19WQUxJREFURSwKICAgICBQUk9QX1RBUkdFVCwK
ICAgICBQUk9QX0VMRU1FTlRTLAogICAgIFBST1BfTEVOR1RILAotICAgIFBST1BfQVVUT0NPUlJF
Q1QsCi0gICAgUFJPUF9BVVRPQ0FQSVRBTElaRSwKIH07CiAKIHN0YXRpYyB2b2lkIHdlYmtpdF9k
b21faHRtbF9mb3JtX2VsZW1lbnRfc2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQg
cHJvcGVydHlJZCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpCkBAIC0x
MjUsOSArMTIwLDYgQEAgc3RhdGljIHZvaWQgd2Via2l0X2RvbV9odG1sX2Zvcm1fZWxlbWVudF9z
ZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm8KICAgICBjYXNlIFBST1BfQUNU
SU9OOgogICAgICAgICB3ZWJraXRfZG9tX2h0bWxfZm9ybV9lbGVtZW50X3NldF9hY3Rpb24oc2Vs
ZiwgZ192YWx1ZV9nZXRfc3RyaW5nKHZhbHVlKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
UFJPUF9BVVRPQ09NUExFVEU6Ci0gICAgICAgIHdlYmtpdF9kb21faHRtbF9mb3JtX2VsZW1lbnRf
c2V0X2F1dG9jb21wbGV0ZShzZWxmLCBnX3ZhbHVlX2dldF9zdHJpbmcodmFsdWUpKTsKLSAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBQUk9QX0VOQ1RZUEU6CiAgICAgICAgIHdlYmtpdF9kb21faHRt
bF9mb3JtX2VsZW1lbnRfc2V0X2VuY3R5cGUoc2VsZiwgZ192YWx1ZV9nZXRfc3RyaW5nKHZhbHVl
KSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTQwLDE4ICsxMzIsOSBAQCBzdGF0aWMgdm9pZCB3ZWJr
aXRfZG9tX2h0bWxfZm9ybV9lbGVtZW50X3NldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1
aW50IHBybwogICAgIGNhc2UgUFJPUF9OQU1FOgogICAgICAgICB3ZWJraXRfZG9tX2h0bWxfZm9y
bV9lbGVtZW50X3NldF9uYW1lKHNlbGYsIGdfdmFsdWVfZ2V0X3N0cmluZyh2YWx1ZSkpOwogICAg
ICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfTk9fVkFMSURBVEU6Ci0gICAgICAgIHdlYmtpdF9k
b21faHRtbF9mb3JtX2VsZW1lbnRfc2V0X25vX3ZhbGlkYXRlKHNlbGYsIGdfdmFsdWVfZ2V0X2Jv
b2xlYW4odmFsdWUpKTsKLSAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9QX1RBUkdFVDoKICAg
ICAgICAgd2Via2l0X2RvbV9odG1sX2Zvcm1fZWxlbWVudF9zZXRfdGFyZ2V0KHNlbGYsIGdfdmFs
dWVfZ2V0X3N0cmluZyh2YWx1ZSkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfQVVU
T0NPUlJFQ1Q6Ci0gICAgICAgIHdlYmtpdF9kb21faHRtbF9mb3JtX2VsZW1lbnRfc2V0X2F1dG9j
b3JyZWN0KHNlbGYsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBQUk9QX0FVVE9DQVBJVEFMSVpFOgotICAgICAgICB3ZWJraXRfZG9tX2h0bWxf
Zm9ybV9lbGVtZW50X3NldF9hdXRvY2FwaXRhbGl6ZShzZWxmLCBnX3ZhbHVlX2dldF9zdHJpbmco
dmFsdWUpKTsKLSAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgR19PQkpFQ1Rf
V0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcGVydHlJZCwgcHNwZWMpOwogICAg
ICAgICBicmVhazsKQEAgLTE2OSw5ICsxNTIsNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX2h0
bWxfZm9ybV9lbGVtZW50X2dldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHBybwog
ICAgIGNhc2UgUFJPUF9BQ1RJT046CiAgICAgICAgIGdfdmFsdWVfdGFrZV9zdHJpbmcodmFsdWUs
IHdlYmtpdF9kb21faHRtbF9mb3JtX2VsZW1lbnRfZ2V0X2FjdGlvbihzZWxmKSk7CiAgICAgICAg
IGJyZWFrOwotICAgIGNhc2UgUFJPUF9BVVRPQ09NUExFVEU6Ci0gICAgICAgIGdfdmFsdWVfdGFr
ZV9zdHJpbmcodmFsdWUsIHdlYmtpdF9kb21faHRtbF9mb3JtX2VsZW1lbnRfZ2V0X2F1dG9jb21w
bGV0ZShzZWxmKSk7Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJPUF9FTkNUWVBFOgogICAg
ICAgICBnX3ZhbHVlX3Rha2Vfc3RyaW5nKHZhbHVlLCB3ZWJraXRfZG9tX2h0bWxfZm9ybV9lbGVt
ZW50X2dldF9lbmN0eXBlKHNlbGYpKTsKICAgICAgICAgYnJlYWs7CkBAIC0xODQsOSArMTY0LDYg
QEAgc3RhdGljIHZvaWQgd2Via2l0X2RvbV9odG1sX2Zvcm1fZWxlbWVudF9nZXRfcHJvcGVydHko
R09iamVjdCogb2JqZWN0LCBndWludCBwcm8KICAgICBjYXNlIFBST1BfTkFNRToKICAgICAgICAg
Z192YWx1ZV90YWtlX3N0cmluZyh2YWx1ZSwgd2Via2l0X2RvbV9odG1sX2Zvcm1fZWxlbWVudF9n
ZXRfbmFtZShzZWxmKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9OT19WQUxJREFU
RToKLSAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X2RvbV9odG1sX2Zv
cm1fZWxlbWVudF9nZXRfbm9fdmFsaWRhdGUoc2VsZikpOwotICAgICAgICBicmVhazsKICAgICBj
YXNlIFBST1BfVEFSR0VUOgogICAgICAgICBnX3ZhbHVlX3Rha2Vfc3RyaW5nKHZhbHVlLCB3ZWJr
aXRfZG9tX2h0bWxfZm9ybV9lbGVtZW50X2dldF90YXJnZXQoc2VsZikpOwogICAgICAgICBicmVh
azsKQEAgLTE5NiwxMiArMTczLDYgQEAgc3RhdGljIHZvaWQgd2Via2l0X2RvbV9odG1sX2Zvcm1f
ZWxlbWVudF9nZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm8KICAgICBjYXNl
IFBST1BfTEVOR1RIOgogICAgICAgICBnX3ZhbHVlX3NldF9sb25nKHZhbHVlLCB3ZWJraXRfZG9t
X2h0bWxfZm9ybV9lbGVtZW50X2dldF9sZW5ndGgoc2VsZikpOwogICAgICAgICBicmVhazsKLSAg
ICBjYXNlIFBST1BfQVVUT0NPUlJFQ1Q6Ci0gICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFs
dWUsIHdlYmtpdF9kb21faHRtbF9mb3JtX2VsZW1lbnRfZ2V0X2F1dG9jb3JyZWN0KHNlbGYpKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX0FVVE9DQVBJVEFMSVpFOgotICAgICAgICBn
X3ZhbHVlX3Rha2Vfc3RyaW5nKHZhbHVlLCB3ZWJraXRfZG9tX2h0bWxfZm9ybV9lbGVtZW50X2dl
dF9hdXRvY2FwaXRhbGl6ZShzZWxmKSk7Ci0gICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAg
ICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BlcnR5
SWQsIHBzcGVjKTsKICAgICAgICAgYnJlYWs7CkBAIC0yMzYsMTYgKzIwNyw2IEBAIHN0YXRpYyB2
b2lkIHdlYmtpdF9kb21faHRtbF9mb3JtX2VsZW1lbnRfY2xhc3NfaW5pdChXZWJLaXRET01IVE1M
Rm9ybUVsZW1lbnRDbGFzCiAKICAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAog
ICAgICAgICBnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBST1BfQVVUT0NPTVBMRVRFLAotICAgICAg
ICBnX3BhcmFtX3NwZWNfc3RyaW5nKAotICAgICAgICAgICAgImF1dG9jb21wbGV0ZSIsCi0gICAg
ICAgICAgICAiSFRNTEZvcm1FbGVtZW50OmF1dG9jb21wbGV0ZSIsCi0gICAgICAgICAgICAicmVh
ZC13cml0ZSBnY2hhciogSFRNTEZvcm1FbGVtZW50OmF1dG9jb21wbGV0ZSIsCi0gICAgICAgICAg
ICAiIiwKLSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEV1JJVEUpKTsKLQotICAgIGdfb2Jq
ZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKICAgICAg
ICAgUFJPUF9FTkNUWVBFLAogICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nKAogICAgICAgICAg
ICAgImVuY3R5cGUiLApAQCAtMjg2LDE2ICsyNDcsNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfZG9t
X2h0bWxfZm9ybV9lbGVtZW50X2NsYXNzX2luaXQoV2ViS2l0RE9NSFRNTEZvcm1FbGVtZW50Q2xh
cwogCiAgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKICAgICAgICAgZ29iamVj
dENsYXNzLAotICAgICAgICBQUk9QX05PX1ZBTElEQVRFLAotICAgICAgICBnX3BhcmFtX3NwZWNf
Ym9vbGVhbigKLSAgICAgICAgICAgICJuby12YWxpZGF0ZSIsCi0gICAgICAgICAgICAiSFRNTEZv
cm1FbGVtZW50Om5vLXZhbGlkYXRlIiwKLSAgICAgICAgICAgICJyZWFkLXdyaXRlIGdib29sZWFu
IEhUTUxGb3JtRWxlbWVudDpuby12YWxpZGF0ZSIsCi0gICAgICAgICAgICBGQUxTRSwKLSAgICAg
ICAgICAgIFdFQktJVF9QQVJBTV9SRUFEV1JJVEUpKTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2lu
c3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKICAgICAgICAgUFJPUF9UQVJH
RVQsCiAgICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcoCiAgICAgICAgICAgICAidGFyZ2V0IiwK
QEAgLTMyMywyNyArMjc0LDYgQEAgc3RhdGljIHZvaWQgd2Via2l0X2RvbV9odG1sX2Zvcm1fZWxl
bWVudF9jbGFzc19pbml0KFdlYktpdERPTUhUTUxGb3JtRWxlbWVudENsYXMKICAgICAgICAgICAg
ICJyZWFkLW9ubHkgZ2xvbmcgSFRNTEZvcm1FbGVtZW50Omxlbmd0aCIsCiAgICAgICAgICAgICBH
X01JTkxPTkcsIEdfTUFYTE9ORywgMCwKICAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJM
RSkpOwotCi0gICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAgZ29i
amVjdENsYXNzLAotICAgICAgICBQUk9QX0FVVE9DT1JSRUNULAotICAgICAgICBnX3BhcmFtX3Nw
ZWNfYm9vbGVhbigKLSAgICAgICAgICAgICJhdXRvY29ycmVjdCIsCi0gICAgICAgICAgICAiSFRN
TEZvcm1FbGVtZW50OmF1dG9jb3JyZWN0IiwKLSAgICAgICAgICAgICJyZWFkLXdyaXRlIGdib29s
ZWFuIEhUTUxGb3JtRWxlbWVudDphdXRvY29ycmVjdCIsCi0gICAgICAgICAgICBGQUxTRSwKLSAg
ICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEV1JJVEUpKTsKLQotICAgIGdfb2JqZWN0X2NsYXNz
X2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9B
VVRPQ0FQSVRBTElaRSwKLSAgICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZygKLSAgICAgICAgICAg
ICJhdXRvY2FwaXRhbGl6ZSIsCi0gICAgICAgICAgICAiSFRNTEZvcm1FbGVtZW50OmF1dG9jYXBp
dGFsaXplIiwKLSAgICAgICAgICAgICJyZWFkLXdyaXRlIGdjaGFyKiBIVE1MRm9ybUVsZW1lbnQ6
YXV0b2NhcGl0YWxpemUiLAotICAgICAgICAgICAgIiIsCi0gICAgICAgICAgICBXRUJLSVRfUEFS
QU1fUkVBRFdSSVRFKSk7Ci0KIH0KIAogc3RhdGljIHZvaWQgd2Via2l0X2RvbV9odG1sX2Zvcm1f
ZWxlbWVudF9pbml0KFdlYktpdERPTUhUTUxGb3JtRWxlbWVudCogcmVxdWVzdCkKQEAgLTM2Nywy
OCArMjk3LDYgQEAgdm9pZCB3ZWJraXRfZG9tX2h0bWxfZm9ybV9lbGVtZW50X3Jlc2V0KFdlYktp
dERPTUhUTUxGb3JtRWxlbWVudCogc2VsZikKICAgICBpdGVtLT5yZXNldCgpOwogfQogCi1nYm9v
bGVhbiB3ZWJraXRfZG9tX2h0bWxfZm9ybV9lbGVtZW50X2NoZWNrX3ZhbGlkaXR5KFdlYktpdERP
TUhUTUxGb3JtRWxlbWVudCogc2VsZikKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxs
U3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19IVE1M
X0ZPUk1fRUxFTUVOVChzZWxmKSwgRkFMU0UpOwotICAgIFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVu
dCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBnYm9vbGVhbiByZXN1bHQgPSBpdGVt
LT5jaGVja1ZhbGlkaXR5KCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotdm9pZCB3ZWJraXRf
ZG9tX2h0bWxfZm9ybV9lbGVtZW50X3JlcXVlc3RfYXV0b2NvbXBsZXRlKFdlYktpdERPTUhUTUxG
b3JtRWxlbWVudCogc2VsZikKLXsKLSNpZiBFTkFCTEUoUkVRVUVTVF9BVVRPQ09NUExFVEUpCi0g
ICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX2lm
X2ZhaWwoV0VCS0lUX0RPTV9JU19IVE1MX0ZPUk1fRUxFTUVOVChzZWxmKSk7Ci0gICAgV2ViQ29y
ZTo6SFRNTEZvcm1FbGVtZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGl0ZW0t
PnJlcXVlc3RBdXRvY29tcGxldGUoKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHNlbGYpOwot
ICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIlJlcXVlc3QgQXV0b2NvbXBsZXRl
IikKLSNlbmRpZiAvKiBFTkFCTEUoUkVRVUVTVF9BVVRPQ09NUExFVEUpICovCi19Ci0KIGdjaGFy
KiB3ZWJraXRfZG9tX2h0bWxfZm9ybV9lbGVtZW50X2dldF9hY2NlcHRfY2hhcnNldChXZWJLaXRE
T01IVE1MRm9ybUVsZW1lbnQqIHNlbGYpCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVs
bFN0YXRlIHN0YXRlOwpAQCAtNDI3LDI1ICszMzUsNiBAQCB2b2lkIHdlYmtpdF9kb21faHRtbF9m
b3JtX2VsZW1lbnRfc2V0X2FjdGlvbihXZWJLaXRET01IVE1MRm9ybUVsZW1lbnQqIHNlbGYsIGNv
bgogICAgIGl0ZW0tPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oV2ViQ29yZTo6
SFRNTE5hbWVzOjphY3Rpb25BdHRyLCBjb252ZXJ0ZWRWYWx1ZSk7CiB9CiAKLWdjaGFyKiB3ZWJr
aXRfZG9tX2h0bWxfZm9ybV9lbGVtZW50X2dldF9hdXRvY29tcGxldGUoV2ViS2l0RE9NSFRNTEZv
cm1FbGVtZW50KiBzZWxmKQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBz
dGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxfRk9STV9F
TEVNRU5UKHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQqIGl0ZW0gPSBX
ZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ2NoYXIqIHJlc3VsdCA9IGNvbnZlcnRUb1VURjhTdHJp
bmcoaXRlbS0+YXV0b2NvbXBsZXRlKCkpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXZvaWQg
d2Via2l0X2RvbV9odG1sX2Zvcm1fZWxlbWVudF9zZXRfYXV0b2NvbXBsZXRlKFdlYktpdERPTUhU
TUxGb3JtRWxlbWVudCogc2VsZiwgY29uc3QgZ2NoYXIqIHZhbHVlKQotewotICAgIFdlYkNvcmU6
OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJ
VF9ET01fSVNfSFRNTF9GT1JNX0VMRU1FTlQoc2VsZikpOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwo
dmFsdWUpOwotICAgIFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29y
ZShzZWxmKTsKLSAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRWYWx1ZSA9IFdURjo6U3RyaW5nOjpm
cm9tVVRGOCh2YWx1ZSk7Ci0gICAgaXRlbS0+c2V0QXV0b2NvbXBsZXRlKGNvbnZlcnRlZFZhbHVl
KTsKLX0KLQogZ2NoYXIqIHdlYmtpdF9kb21faHRtbF9mb3JtX2VsZW1lbnRfZ2V0X2VuY3R5cGUo
V2ViS2l0RE9NSFRNTEZvcm1FbGVtZW50KiBzZWxmKQogewogICAgIFdlYkNvcmU6OkpTTWFpblRo
cmVhZE51bGxTdGF0ZSBzdGF0ZTsKQEAgLTUyMiwyMyArNDExLDYgQEAgdm9pZCB3ZWJraXRfZG9t
X2h0bWxfZm9ybV9lbGVtZW50X3NldF9uYW1lKFdlYktpdERPTUhUTUxGb3JtRWxlbWVudCogc2Vs
ZiwgY29uc3QKICAgICBpdGVtLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFdl
YkNvcmU6OkhUTUxOYW1lczo6bmFtZUF0dHIsIGNvbnZlcnRlZFZhbHVlKTsKIH0KIAotZ2Jvb2xl
YW4gd2Via2l0X2RvbV9odG1sX2Zvcm1fZWxlbWVudF9nZXRfbm9fdmFsaWRhdGUoV2ViS2l0RE9N
SFRNTEZvcm1FbGVtZW50KiBzZWxmKQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxT
dGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxf
Rk9STV9FTEVNRU5UKHNlbGYpLCBGQUxTRSk7Ci0gICAgV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50
KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdib29sZWFuIHJlc3VsdCA9IGl0ZW0t
Pmhhc0F0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oV2ViQ29yZTo6SFRNTE5hbWVzOjpu
b3ZhbGlkYXRlQXR0cik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotdm9pZCB3ZWJraXRfZG9t
X2h0bWxfZm9ybV9lbGVtZW50X3NldF9ub192YWxpZGF0ZShXZWJLaXRET01IVE1MRm9ybUVsZW1l
bnQqIHNlbGYsIGdib29sZWFuIHZhbHVlKQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51
bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfSFRNTF9G
T1JNX0VMRU1FTlQoc2VsZikpOwotICAgIFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVudCogaXRlbSA9
IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBpdGVtLT5zZXRCb29sZWFuQXR0cmlidXRlKFdlYkNv
cmU6OkhUTUxOYW1lczo6bm92YWxpZGF0ZUF0dHIsIHZhbHVlKTsKLX0KLQogZ2NoYXIqIHdlYmtp
dF9kb21faHRtbF9mb3JtX2VsZW1lbnRfZ2V0X3RhcmdldChXZWJLaXRET01IVE1MRm9ybUVsZW1l
bnQqIHNlbGYpCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwpA
QCAtNTc1LDY0ICs0NDcsMyBAQCBnbG9uZyB3ZWJraXRfZG9tX2h0bWxfZm9ybV9lbGVtZW50X2dl
dF9sZW5ndGgoV2ViS2l0RE9NSFRNTEZvcm1FbGVtZW50KiBzZWxmKQogICAgIGdsb25nIHJlc3Vs
dCA9IGl0ZW0tPmxlbmd0aCgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9Ci0KLWdib29sZWFuIHdl
YmtpdF9kb21faHRtbF9mb3JtX2VsZW1lbnRfZ2V0X2F1dG9jb3JyZWN0KFdlYktpdERPTUhUTUxG
b3JtRWxlbWVudCogc2VsZikKLXsKLSNpZiBFTkFCTEUoSU9TX0FVVE9DT1JSRUNUX0FORF9BVVRP
Q0FQSVRBTElaRSkKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0g
ICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19IVE1MX0ZPUk1fRUxFTUVOVChz
ZWxmKSwgRkFMU0UpOwotICAgIFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVudCogaXRlbSA9IFdlYktp
dDo6Y29yZShzZWxmKTsKLSAgICBnYm9vbGVhbiByZXN1bHQgPSBpdGVtLT5hdXRvY29ycmVjdCgp
OwotICAgIHJldHVybiByZXN1bHQ7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKLSAg
ICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJJb3MgQXV0b2NvcnJlY3QgQW5kIEF1
dG9jYXBpdGFsaXplIikKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Z2Jvb2xlYW4+KDApOwotI2Vu
ZGlmIC8qIEVOQUJMRShJT1NfQVVUT0NPUlJFQ1RfQU5EX0FVVE9DQVBJVEFMSVpFKSAqLwotfQot
Ci12b2lkIHdlYmtpdF9kb21faHRtbF9mb3JtX2VsZW1lbnRfc2V0X2F1dG9jb3JyZWN0KFdlYktp
dERPTUhUTUxGb3JtRWxlbWVudCogc2VsZiwgZ2Jvb2xlYW4gdmFsdWUpCi17Ci0jaWYgRU5BQkxF
KElPU19BVVRPQ09SUkVDVF9BTkRfQVVUT0NBUElUQUxJWkUpCi0gICAgV2ViQ29yZTo6SlNNYWlu
VGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9J
U19IVE1MX0ZPUk1fRUxFTUVOVChzZWxmKSk7Ci0gICAgV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50
KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGl0ZW0tPnNldEF1dG9jb3JyZWN0KHZh
bHVlKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHNlbGYpOwotICAgIFVOVVNFRF9QQVJBTSh2
YWx1ZSk7Ci0gICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiSW9zIEF1dG9jb3Jy
ZWN0IEFuZCBBdXRvY2FwaXRhbGl6ZSIpCi0jZW5kaWYgLyogRU5BQkxFKElPU19BVVRPQ09SUkVD
VF9BTkRfQVVUT0NBUElUQUxJWkUpICovCi19Ci0KLWdjaGFyKiB3ZWJraXRfZG9tX2h0bWxfZm9y
bV9lbGVtZW50X2dldF9hdXRvY2FwaXRhbGl6ZShXZWJLaXRET01IVE1MRm9ybUVsZW1lbnQqIHNl
bGYpCi17Ci0jaWYgRU5BQkxFKElPU19BVVRPQ09SUkVDVF9BTkRfQVVUT0NBUElUQUxJWkUpCi0g
ICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKFdFQktJVF9ET01fSVNfSFRNTF9GT1JNX0VMRU1FTlQoc2VsZiksIDApOwotICAg
IFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAg
ICBnY2hhciogcmVzdWx0ID0gY29udmVydFRvVVRGOFN0cmluZyhpdGVtLT5hdXRvY2FwaXRhbGl6
ZSgpKTsKLSAgICByZXR1cm4gcmVzdWx0OwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc2VsZik7
Ci0gICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiSW9zIEF1dG9jb3JyZWN0IEFu
ZCBBdXRvY2FwaXRhbGl6ZSIpCi0gICAgcmV0dXJuIDA7Ci0jZW5kaWYgLyogRU5BQkxFKElPU19B
VVRPQ09SUkVDVF9BTkRfQVVUT0NBUElUQUxJWkUpICovCi19Ci0KLXZvaWQgd2Via2l0X2RvbV9o
dG1sX2Zvcm1fZWxlbWVudF9zZXRfYXV0b2NhcGl0YWxpemUoV2ViS2l0RE9NSFRNTEZvcm1FbGVt
ZW50KiBzZWxmLCBjb25zdCBnY2hhciogdmFsdWUpCi17Ci0jaWYgRU5BQkxFKElPU19BVVRPQ09S
UkVDVF9BTkRfQVVUT0NBUElUQUxJWkUpCi0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0
YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19IVE1MX0ZPUk1f
RUxFTUVOVChzZWxmKSk7Ci0gICAgZ19yZXR1cm5faWZfZmFpbCh2YWx1ZSk7Ci0gICAgV2ViQ29y
ZTo6SFRNTEZvcm1FbGVtZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIFdURjo6
U3RyaW5nIGNvbnZlcnRlZFZhbHVlID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KHZhbHVlKTsKLSAg
ICBpdGVtLT5zZXRBdXRvY2FwaXRhbGl6ZShjb252ZXJ0ZWRWYWx1ZSk7Ci0jZWxzZQotICAgIFVO
VVNFRF9QQVJBTShzZWxmKTsKLSAgICBVTlVTRURfUEFSQU0odmFsdWUpOwotICAgIFdFQktJVF9X
QVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIklvcyBBdXRvY29ycmVjdCBBbmQgQXV0b2NhcGl0YWxp
emUiKQotI2VuZGlmIC8qIEVOQUJMRShJT1NfQVVUT0NPUlJFQ1RfQU5EX0FVVE9DQVBJVEFMSVpF
KSAqLwotfQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxGb3JtRWxlbWVudFVuc3RhYmxlLmggYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktp
dERPTUhUTUxGb3JtRWxlbWVudFVuc3RhYmxlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDQ3ZDYyNGUuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MRm9ybUVsZW1lbnRVbnN0YWJsZS5o
CisrKyAvZGV2L251bGwKQEAgLTEsMTM4ICswLDAgQEAKLS8qCi0gKiAgVGhpcyBmaWxlIGlzIHBh
cnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICogIFRoaXMgZmlsZSBoYXMg
YmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0g
KgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
Ci0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgotICovCi0KLSNpZm5kZWYgV2ViS2l0RE9NSFRNTEZvcm1FbGVtZW50VW5zdGFibGVfaAotI2Rl
ZmluZSBXZWJLaXRET01IVE1MRm9ybUVsZW1lbnRVbnN0YWJsZV9oCi0KLSNpZmRlZiBXRUJLSVRf
RE9NX1VTRV9VTlNUQUJMRV9BUEkKLQotI2luY2x1ZGUgPHdlYmtpdGRvbS93ZWJraXRkb21kZWZp
bmVzLXVuc3RhYmxlLmg+Ci0KLUdfQkVHSU5fREVDTFMKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0
bWxfZm9ybV9lbGVtZW50X2NoZWNrX3ZhbGlkaXR5OgotICogQHNlbGY6IEEgI1dlYktpdERPTUhU
TUxGb3JtRWxlbWVudAotICoKLSAqIFJldHVybnM6IEEgI2dib29sZWFuCi0gKgotICogU3RhYmls
aXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIGdib29sZWFuCi13ZWJraXRfZG9tX2h0bWxf
Zm9ybV9lbGVtZW50X2NoZWNrX3ZhbGlkaXR5KFdlYktpdERPTUhUTUxGb3JtRWxlbWVudCogc2Vs
Zik7Ci0KLS8qKgotICogd2Via2l0X2RvbV9odG1sX2Zvcm1fZWxlbWVudF9yZXF1ZXN0X2F1dG9j
b21wbGV0ZToKLSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MRm9ybUVsZW1lbnQKLSAqCi0gKiBT
dGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgdm9pZAotd2Via2l0X2RvbV9odG1s
X2Zvcm1fZWxlbWVudF9yZXF1ZXN0X2F1dG9jb21wbGV0ZShXZWJLaXRET01IVE1MRm9ybUVsZW1l
bnQqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9kb21faHRtbF9mb3JtX2VsZW1lbnRfZ2V0X2F1
dG9jb21wbGV0ZToKLSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MRm9ybUVsZW1lbnQKLSAqCi0g
KiBSZXR1cm5zOiBBICNnY2hhcgotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VC
S0lUX0FQSSBnY2hhcioKLXdlYmtpdF9kb21faHRtbF9mb3JtX2VsZW1lbnRfZ2V0X2F1dG9jb21w
bGV0ZShXZWJLaXRET01IVE1MRm9ybUVsZW1lbnQqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9k
b21faHRtbF9mb3JtX2VsZW1lbnRfc2V0X2F1dG9jb21wbGV0ZToKLSAqIEBzZWxmOiBBICNXZWJL
aXRET01IVE1MRm9ybUVsZW1lbnQKLSAqIEB2YWx1ZTogQSAjZ2NoYXIKLSAqCi0gKiBTdGFiaWxp
dHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgdm9pZAotd2Via2l0X2RvbV9odG1sX2Zvcm1f
ZWxlbWVudF9zZXRfYXV0b2NvbXBsZXRlKFdlYktpdERPTUhUTUxGb3JtRWxlbWVudCogc2VsZiwg
Y29uc3QgZ2NoYXIqIHZhbHVlKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0bWxfZm9ybV9lbGVt
ZW50X2dldF9ub192YWxpZGF0ZToKLSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MRm9ybUVsZW1l
bnQKLSAqCi0gKiBSZXR1cm5zOiBBICNnYm9vbGVhbgotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFi
bGUKLSoqLwotV0VCS0lUX0FQSSBnYm9vbGVhbgotd2Via2l0X2RvbV9odG1sX2Zvcm1fZWxlbWVu
dF9nZXRfbm9fdmFsaWRhdGUoV2ViS2l0RE9NSFRNTEZvcm1FbGVtZW50KiBzZWxmKTsKLQotLyoq
Ci0gKiB3ZWJraXRfZG9tX2h0bWxfZm9ybV9lbGVtZW50X3NldF9ub192YWxpZGF0ZToKLSAqIEBz
ZWxmOiBBICNXZWJLaXRET01IVE1MRm9ybUVsZW1lbnQKLSAqIEB2YWx1ZTogQSAjZ2Jvb2xlYW4K
LSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgdm9pZAotd2Via2l0
X2RvbV9odG1sX2Zvcm1fZWxlbWVudF9zZXRfbm9fdmFsaWRhdGUoV2ViS2l0RE9NSFRNTEZvcm1F
bGVtZW50KiBzZWxmLCBnYm9vbGVhbiB2YWx1ZSk7Ci0KLS8qKgotICogd2Via2l0X2RvbV9odG1s
X2Zvcm1fZWxlbWVudF9nZXRfYXV0b2NvcnJlY3Q6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRN
TEZvcm1FbGVtZW50Ci0gKgotICogUmV0dXJuczogQSAjZ2Jvb2xlYW4KLSAqCi0gKiBTdGFiaWxp
dHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgZ2Jvb2xlYW4KLXdlYmtpdF9kb21faHRtbF9m
b3JtX2VsZW1lbnRfZ2V0X2F1dG9jb3JyZWN0KFdlYktpdERPTUhUTUxGb3JtRWxlbWVudCogc2Vs
Zik7Ci0KLS8qKgotICogd2Via2l0X2RvbV9odG1sX2Zvcm1fZWxlbWVudF9zZXRfYXV0b2NvcnJl
Y3Q6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTEZvcm1FbGVtZW50Ci0gKiBAdmFsdWU6IEEg
I2dib29sZWFuCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIHZv
aWQKLXdlYmtpdF9kb21faHRtbF9mb3JtX2VsZW1lbnRfc2V0X2F1dG9jb3JyZWN0KFdlYktpdERP
TUhUTUxGb3JtRWxlbWVudCogc2VsZiwgZ2Jvb2xlYW4gdmFsdWUpOwotCi0vKioKLSAqIHdlYmtp
dF9kb21faHRtbF9mb3JtX2VsZW1lbnRfZ2V0X2F1dG9jYXBpdGFsaXplOgotICogQHNlbGY6IEEg
I1dlYktpdERPTUhUTUxGb3JtRWxlbWVudAotICoKLSAqIFJldHVybnM6IEEgI2djaGFyCi0gKgot
ICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIGdjaGFyKgotd2Via2l0X2Rv
bV9odG1sX2Zvcm1fZWxlbWVudF9nZXRfYXV0b2NhcGl0YWxpemUoV2ViS2l0RE9NSFRNTEZvcm1F
bGVtZW50KiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0bWxfZm9ybV9lbGVtZW50X3Nl
dF9hdXRvY2FwaXRhbGl6ZToKLSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MRm9ybUVsZW1lbnQK
LSAqIEB2YWx1ZTogQSAjZ2NoYXIKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdF
QktJVF9BUEkgdm9pZAotd2Via2l0X2RvbV9odG1sX2Zvcm1fZWxlbWVudF9zZXRfYXV0b2NhcGl0
YWxpemUoV2ViS2l0RE9NSFRNTEZvcm1FbGVtZW50KiBzZWxmLCBjb25zdCBnY2hhciogdmFsdWUp
OwotCi0KLUdfRU5EX0RFQ0xTCi0KLSNlbmRpZiAvKiBXRUJLSVRfRE9NX1VTRV9VTlNUQUJMRV9B
UEkgKi8KLSNlbmRpZiAvKiBXZWJLaXRET01IVE1MRm9ybUVsZW1lbnRVbnN0YWJsZV9oICovCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
dGsvRE9NL1dlYktpdERPTUhUTUxIdG1sRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxIdG1sRWxlbWVu
dC5jcHAKaW5kZXggYzY5Yjg3Mi4uM2VlNzZlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MSHRtbEVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTEh0bWxFbGVtZW50LmNwcApAQCAtMzUsNyArMzUsNiBA
QAogI2luY2x1ZGUgIldlYktpdERPTU5vZGVQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0RE9N
UHJpdmF0ZS5oIgogI2luY2x1ZGUgIkNvbnZlcnRUb1VURjhTdHJpbmcuaCIKLSNpbmNsdWRlICJX
ZWJLaXRET01IVE1MSHRtbEVsZW1lbnRVbnN0YWJsZS5oIgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIu
aD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKQEAgLTk5LDcgKzk4LDYgQEAgR19ERUZJTkVf
VFlQRV9XSVRIX0NPREUoV2ViS2l0RE9NSFRNTEh0bWxFbGVtZW50LCB3ZWJraXRfZG9tX2h0bWxf
aHRtbF9lbGVtZW50LAogZW51bSB7CiAgICAgUFJPUF8wLAogICAgIFBST1BfVkVSU0lPTiwKLSAg
ICBQUk9QX01BTklGRVNULAogfTsKIAogc3RhdGljIHZvaWQgd2Via2l0X2RvbV9odG1sX2h0bWxf
ZWxlbWVudF9zZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wZXJ0eUlkLCBj
b25zdCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3BlYykKQEAgLTExMCw5ICsxMDgsNiBA
QCBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX2h0bWxfaHRtbF9lbGVtZW50X3NldF9wcm9wZXJ0eShH
T2JqZWN0KiBvYmplY3QsIGd1aW50IHBybwogICAgIGNhc2UgUFJPUF9WRVJTSU9OOgogICAgICAg
ICB3ZWJraXRfZG9tX2h0bWxfaHRtbF9lbGVtZW50X3NldF92ZXJzaW9uKHNlbGYsIGdfdmFsdWVf
Z2V0X3N0cmluZyh2YWx1ZSkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfTUFOSUZF
U1Q6Ci0gICAgICAgIHdlYmtpdF9kb21faHRtbF9odG1sX2VsZW1lbnRfc2V0X21hbmlmZXN0KHNl
bGYsIGdfdmFsdWVfZ2V0X3N0cmluZyh2YWx1ZSkpOwotICAgICAgICBicmVhazsKICAgICBkZWZh
dWx0OgogICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBw
cm9wZXJ0eUlkLCBwc3BlYyk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTI3LDkgKzEyMiw2IEBAIHN0
YXRpYyB2b2lkIHdlYmtpdF9kb21faHRtbF9odG1sX2VsZW1lbnRfZ2V0X3Byb3BlcnR5KEdPYmpl
Y3QqIG9iamVjdCwgZ3VpbnQgcHJvCiAgICAgY2FzZSBQUk9QX1ZFUlNJT046CiAgICAgICAgIGdf
dmFsdWVfdGFrZV9zdHJpbmcodmFsdWUsIHdlYmtpdF9kb21faHRtbF9odG1sX2VsZW1lbnRfZ2V0
X3ZlcnNpb24oc2VsZikpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfTUFOSUZFU1Q6
Ci0gICAgICAgIGdfdmFsdWVfdGFrZV9zdHJpbmcodmFsdWUsIHdlYmtpdF9kb21faHRtbF9odG1s
X2VsZW1lbnRfZ2V0X21hbmlmZXN0KHNlbGYpKTsKLSAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVs
dDoKICAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJv
cGVydHlJZCwgcHNwZWMpOwogICAgICAgICBicmVhazsKQEAgLTE1MSwxNyArMTQzLDYgQEAgc3Rh
dGljIHZvaWQgd2Via2l0X2RvbV9odG1sX2h0bWxfZWxlbWVudF9jbGFzc19pbml0KFdlYktpdERP
TUhUTUxIdG1sRWxlbWVudENsYXMKICAgICAgICAgICAgICJyZWFkLXdyaXRlIGdjaGFyKiBIVE1M
SHRtbEVsZW1lbnQ6dmVyc2lvbiIsCiAgICAgICAgICAgICAiIiwKICAgICAgICAgICAgIFdFQktJ
VF9QQVJBTV9SRUFEV1JJVEUpKTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVy
dHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9NQU5JRkVTVCwKLSAgICAg
ICAgZ19wYXJhbV9zcGVjX3N0cmluZygKLSAgICAgICAgICAgICJtYW5pZmVzdCIsCi0gICAgICAg
ICAgICAiSFRNTEh0bWxFbGVtZW50Om1hbmlmZXN0IiwKLSAgICAgICAgICAgICJyZWFkLXdyaXRl
IGdjaGFyKiBIVE1MSHRtbEVsZW1lbnQ6bWFuaWZlc3QiLAotICAgICAgICAgICAgIiIsCi0gICAg
ICAgICAgICBXRUJLSVRfUEFSQU1fUkVBRFdSSVRFKSk7Ci0KIH0KIAogc3RhdGljIHZvaWQgd2Vi
a2l0X2RvbV9odG1sX2h0bWxfZWxlbWVudF9pbml0KFdlYktpdERPTUhUTUxIdG1sRWxlbWVudCog
cmVxdWVzdCkKQEAgLTE4NywyMyArMTY4LDMgQEAgdm9pZCB3ZWJraXRfZG9tX2h0bWxfaHRtbF9l
bGVtZW50X3NldF92ZXJzaW9uKFdlYktpdERPTUhUTUxIdG1sRWxlbWVudCogc2VsZiwgY28KICAg
ICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRWYWx1ZSA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOCh2YWx1
ZSk7CiAgICAgaXRlbS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihXZWJDb3Jl
OjpIVE1MTmFtZXM6OnZlcnNpb25BdHRyLCBjb252ZXJ0ZWRWYWx1ZSk7CiB9Ci0KLWdjaGFyKiB3
ZWJraXRfZG9tX2h0bWxfaHRtbF9lbGVtZW50X2dldF9tYW5pZmVzdChXZWJLaXRET01IVE1MSHRt
bEVsZW1lbnQqIHNlbGYpCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0
YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfSFRNTF9IVE1MX0VM
RU1FTlQoc2VsZiksIDApOwotICAgIFdlYkNvcmU6OkhUTUxIdG1sRWxlbWVudCogaXRlbSA9IFdl
YktpdDo6Y29yZShzZWxmKTsKLSAgICBnY2hhciogcmVzdWx0ID0gY29udmVydFRvVVRGOFN0cmlu
ZyhpdGVtLT5nZXRVUkxBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjptYW5pZmVzdEF0dHIp
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi12b2lkIHdlYmtpdF9kb21faHRtbF9odG1sX2Vs
ZW1lbnRfc2V0X21hbmlmZXN0KFdlYktpdERPTUhUTUxIdG1sRWxlbWVudCogc2VsZiwgY29uc3Qg
Z2NoYXIqIHZhbHVlKQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0
ZTsKLSAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfSFRNTF9IVE1MX0VMRU1FTlQo
c2VsZikpOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwodmFsdWUpOwotICAgIFdlYkNvcmU6OkhUTUxI
dG1sRWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBXVEY6OlN0cmluZyBj
b252ZXJ0ZWRWYWx1ZSA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOCh2YWx1ZSk7Ci0gICAgaXRlbS0+
c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihXZWJDb3JlOjpIVE1MTmFtZXM6Om1h
bmlmZXN0QXR0ciwgY29udmVydGVkVmFsdWUpOwotfQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxI
dG1sRWxlbWVudFVuc3RhYmxlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxIdG1sRWxlbWVudFVuc3RhYmxlLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3OTg3ODcuLjAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01I
VE1MSHRtbEVsZW1lbnRVbnN0YWJsZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAot
LyoKLSAqICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2pl
Y3QuCi0gKiAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5n
cy5wbC4gRE8gTk9UIE1PRElGWSEKLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAg
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiAgQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBXZWJLaXRET01IVE1MSHRt
bEVsZW1lbnRVbnN0YWJsZV9oCi0jZGVmaW5lIFdlYktpdERPTUhUTUxIdG1sRWxlbWVudFVuc3Rh
YmxlX2gKLQotI2lmZGVmIFdFQktJVF9ET01fVVNFX1VOU1RBQkxFX0FQSQotCi0jaW5jbHVkZSA8
d2Via2l0ZG9tL3dlYmtpdGRvbWRlZmluZXMtdW5zdGFibGUuaD4KLQotR19CRUdJTl9ERUNMUwot
Ci0vKioKLSAqIHdlYmtpdF9kb21faHRtbF9odG1sX2VsZW1lbnRfZ2V0X21hbmlmZXN0OgotICog
QHNlbGY6IEEgI1dlYktpdERPTUhUTUxIdG1sRWxlbWVudAotICoKLSAqIFJldHVybnM6IEEgI2dj
aGFyCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIGdjaGFyKgot
d2Via2l0X2RvbV9odG1sX2h0bWxfZWxlbWVudF9nZXRfbWFuaWZlc3QoV2ViS2l0RE9NSFRNTEh0
bWxFbGVtZW50KiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0bWxfaHRtbF9lbGVtZW50
X3NldF9tYW5pZmVzdDoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MSHRtbEVsZW1lbnQKLSAq
IEB2YWx1ZTogQSAjZ2NoYXIKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJ
VF9BUEkgdm9pZAotd2Via2l0X2RvbV9odG1sX2h0bWxfZWxlbWVudF9zZXRfbWFuaWZlc3QoV2Vi
S2l0RE9NSFRNTEh0bWxFbGVtZW50KiBzZWxmLCBjb25zdCBnY2hhciogdmFsdWUpOwotCi0KLUdf
RU5EX0RFQ0xTCi0KLSNlbmRpZiAvKiBXRUJLSVRfRE9NX1VTRV9VTlNUQUJMRV9BUEkgKi8KLSNl
bmRpZiAvKiBXZWJLaXRET01IVE1MSHRtbEVsZW1lbnRVbnN0YWJsZV9oICovCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dl
YktpdERPTUhUTUxJRnJhbWVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTElGcmFtZUVsZW1lbnQuY3Bw
CmluZGV4IDFjZDFlYzkuLjlhNDRiOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTElGcmFtZUVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2d0ay9ET00vV2ViS2l0RE9NSFRNTElGcmFtZUVsZW1lbnQuY3BwCkBAIC0zNyw3ICszNyw2IEBA
CiAjaW5jbHVkZSAiV2ViS2l0RE9NTm9kZVByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRET01Q
cml2YXRlLmgiCiAjaW5jbHVkZSAiQ29udmVydFRvVVRGOFN0cmluZy5oIgotI2luY2x1ZGUgIldl
YktpdERPTUhUTUxJRnJhbWVFbGVtZW50VW5zdGFibGUuaCIKICNpbmNsdWRlIDx3dGYvR2V0UHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCkBAIC0xMDcsMTAgKzEwNiw4IEBAIGVudW0g
ewogICAgIFBST1BfTUFSR0lOX0hFSUdIVCwKICAgICBQUk9QX01BUkdJTl9XSURUSCwKICAgICBQ
Uk9QX05BTUUsCi0gICAgUFJPUF9TQU5EQk9YLAogICAgIFBST1BfU0NST0xMSU5HLAogICAgIFBS
T1BfU1JDLAotICAgIFBST1BfU1JDRE9DLAogICAgIFBST1BfV0lEVEgsCiAgICAgUFJPUF9DT05U
RU5UX0RPQ1VNRU5ULAogICAgIFBST1BfQ09OVEVOVF9XSU5ET1csCkBAIC0xNDIsMTggKzEzOSwx
MiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX2h0bWxfaWZyYW1lX2VsZW1lbnRfc2V0X3Byb3Bl
cnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcAogICAgIGNhc2UgUFJPUF9OQU1FOgogICAgICAg
ICB3ZWJraXRfZG9tX2h0bWxfaWZyYW1lX2VsZW1lbnRfc2V0X25hbWUoc2VsZiwgZ192YWx1ZV9n
ZXRfc3RyaW5nKHZhbHVlKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9TQU5EQk9Y
OgotICAgICAgICB3ZWJraXRfZG9tX2h0bWxfaWZyYW1lX2VsZW1lbnRfc2V0X3NhbmRib3goc2Vs
ZiwgZ192YWx1ZV9nZXRfc3RyaW5nKHZhbHVlKSk7Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
UFJPUF9TQ1JPTExJTkc6CiAgICAgICAgIHdlYmtpdF9kb21faHRtbF9pZnJhbWVfZWxlbWVudF9z
ZXRfc2Nyb2xsaW5nKHNlbGYsIGdfdmFsdWVfZ2V0X3N0cmluZyh2YWx1ZSkpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIFBST1BfU1JDOgogICAgICAgICB3ZWJraXRfZG9tX2h0bWxfaWZyYW1l
X2VsZW1lbnRfc2V0X3NyYyhzZWxmLCBnX3ZhbHVlX2dldF9zdHJpbmcodmFsdWUpKTsKICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX1NSQ0RPQzoKLSAgICAgICAgd2Via2l0X2RvbV9odG1s
X2lmcmFtZV9lbGVtZW50X3NldF9zcmNkb2Moc2VsZiwgZ192YWx1ZV9nZXRfc3RyaW5nKHZhbHVl
KSk7Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJPUF9XSURUSDoKICAgICAgICAgd2Via2l0
X2RvbV9odG1sX2lmcmFtZV9lbGVtZW50X3NldF93aWR0aChzZWxmLCBnX3ZhbHVlX2dldF9zdHJp
bmcodmFsdWUpKTsKICAgICAgICAgYnJlYWs7CkBAIC0xODksMTggKzE4MCwxMiBAQCBzdGF0aWMg
dm9pZCB3ZWJraXRfZG9tX2h0bWxfaWZyYW1lX2VsZW1lbnRfZ2V0X3Byb3BlcnR5KEdPYmplY3Qq
IG9iamVjdCwgZ3VpbnQgcAogICAgIGNhc2UgUFJPUF9OQU1FOgogICAgICAgICBnX3ZhbHVlX3Rh
a2Vfc3RyaW5nKHZhbHVlLCB3ZWJraXRfZG9tX2h0bWxfaWZyYW1lX2VsZW1lbnRfZ2V0X25hbWUo
c2VsZikpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfU0FOREJPWDoKLSAgICAgICAg
Z192YWx1ZV90YWtlX3N0cmluZyh2YWx1ZSwgd2Via2l0X2RvbV9odG1sX2lmcmFtZV9lbGVtZW50
X2dldF9zYW5kYm94KHNlbGYpKTsKLSAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9QX1NDUk9M
TElORzoKICAgICAgICAgZ192YWx1ZV90YWtlX3N0cmluZyh2YWx1ZSwgd2Via2l0X2RvbV9odG1s
X2lmcmFtZV9lbGVtZW50X2dldF9zY3JvbGxpbmcoc2VsZikpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIFBST1BfU1JDOgogICAgICAgICBnX3ZhbHVlX3Rha2Vfc3RyaW5nKHZhbHVlLCB3ZWJr
aXRfZG9tX2h0bWxfaWZyYW1lX2VsZW1lbnRfZ2V0X3NyYyhzZWxmKSk7CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgUFJPUF9TUkNET0M6Ci0gICAgICAgIGdfdmFsdWVfdGFrZV9zdHJpbmcodmFs
dWUsIHdlYmtpdF9kb21faHRtbF9pZnJhbWVfZWxlbWVudF9nZXRfc3JjZG9jKHNlbGYpKTsKLSAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9QX1dJRFRIOgogICAgICAgICBnX3ZhbHVlX3Rha2Vf
c3RyaW5nKHZhbHVlLCB3ZWJraXRfZG9tX2h0bWxfaWZyYW1lX2VsZW1lbnRfZ2V0X3dpZHRoKHNl
bGYpKTsKICAgICAgICAgYnJlYWs7CkBAIC0yOTQsMTYgKzI3OSw2IEBAIHN0YXRpYyB2b2lkIHdl
YmtpdF9kb21faHRtbF9pZnJhbWVfZWxlbWVudF9jbGFzc19pbml0KFdlYktpdERPTUhUTUxJRnJh
bWVFbGVtZW50CiAKICAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAogICAgICAg
ICBnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBST1BfU0FOREJPWCwKLSAgICAgICAgZ19wYXJhbV9z
cGVjX3N0cmluZygKLSAgICAgICAgICAgICJzYW5kYm94IiwKLSAgICAgICAgICAgICJIVE1MSUZy
YW1lRWxlbWVudDpzYW5kYm94IiwKLSAgICAgICAgICAgICJyZWFkLXdyaXRlIGdjaGFyKiBIVE1M
SUZyYW1lRWxlbWVudDpzYW5kYm94IiwKLSAgICAgICAgICAgICIiLAotICAgICAgICAgICAgV0VC
S0lUX1BBUkFNX1JFQURXUklURSkpOwotCi0gICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9w
ZXJ0eSgKLSAgICAgICAgZ29iamVjdENsYXNzLAogICAgICAgICBQUk9QX1NDUk9MTElORywKICAg
ICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZygKICAgICAgICAgICAgICJzY3JvbGxpbmciLApAQCAt
MzI0LDE2ICsyOTksNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX2h0bWxfaWZyYW1lX2VsZW1l
bnRfY2xhc3NfaW5pdChXZWJLaXRET01IVE1MSUZyYW1lRWxlbWVudAogCiAgICAgZ19vYmplY3Rf
Y2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKICAgICAgICAgZ29iamVjdENsYXNzLAotICAgICAgICBQ
Uk9QX1NSQ0RPQywKLSAgICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZygKLSAgICAgICAgICAgICJz
cmNkb2MiLAotICAgICAgICAgICAgIkhUTUxJRnJhbWVFbGVtZW50OnNyY2RvYyIsCi0gICAgICAg
ICAgICAicmVhZC13cml0ZSBnY2hhciogSFRNTElGcmFtZUVsZW1lbnQ6c3JjZG9jIiwKLSAgICAg
ICAgICAgICIiLAotICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURXUklURSkpOwotCi0gICAg
Z19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAgZ29iamVjdENsYXNzLAog
ICAgICAgICBQUk9QX1dJRFRILAogICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nKAogICAgICAg
ICAgICAgIndpZHRoIiwKQEAgLTUwMiwyNSArNDY3LDYgQEAgdm9pZCB3ZWJraXRfZG9tX2h0bWxf
aWZyYW1lX2VsZW1lbnRfc2V0X25hbWUoV2ViS2l0RE9NSFRNTElGcmFtZUVsZW1lbnQqIHNlbGYs
IGMKICAgICBpdGVtLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFdlYkNvcmU6
OkhUTUxOYW1lczo6bmFtZUF0dHIsIGNvbnZlcnRlZFZhbHVlKTsKIH0KIAotZ2NoYXIqIHdlYmtp
dF9kb21faHRtbF9pZnJhbWVfZWxlbWVudF9nZXRfc2FuZGJveChXZWJLaXRET01IVE1MSUZyYW1l
RWxlbWVudCogc2VsZikKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3Rh
dGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19IVE1MX0lGUkFNRV9F
TEVNRU5UKHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpIVE1MSUZyYW1lRWxlbWVudCogaXRlbSA9
IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBnY2hhciogcmVzdWx0ID0gY29udmVydFRvVVRGOFN0
cmluZyhpdGVtLT5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFdlYkNvcmU6OkhUTUxO
YW1lczo6c2FuZGJveEF0dHIpKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi12b2lkIHdlYmtp
dF9kb21faHRtbF9pZnJhbWVfZWxlbWVudF9zZXRfc2FuZGJveChXZWJLaXRET01IVE1MSUZyYW1l
RWxlbWVudCogc2VsZiwgY29uc3QgZ2NoYXIqIHZhbHVlKQotewotICAgIFdlYkNvcmU6OkpTTWFp
blRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01f
SVNfSFRNTF9JRlJBTUVfRUxFTUVOVChzZWxmKSk7Ci0gICAgZ19yZXR1cm5faWZfZmFpbCh2YWx1
ZSk7Ci0gICAgV2ViQ29yZTo6SFRNTElGcmFtZUVsZW1lbnQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUo
c2VsZik7Ci0gICAgV1RGOjpTdHJpbmcgY29udmVydGVkVmFsdWUgPSBXVEY6OlN0cmluZzo6ZnJv
bVVURjgodmFsdWUpOwotICAgIGl0ZW0tPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRp
b24oV2ViQ29yZTo6SFRNTE5hbWVzOjpzYW5kYm94QXR0ciwgY29udmVydGVkVmFsdWUpOwotfQot
CiBnY2hhciogd2Via2l0X2RvbV9odG1sX2lmcmFtZV9lbGVtZW50X2dldF9zY3JvbGxpbmcoV2Vi
S2l0RE9NSFRNTElGcmFtZUVsZW1lbnQqIHNlbGYpCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhy
ZWFkTnVsbFN0YXRlIHN0YXRlOwpAQCAtNTU5LDI1ICs1MDUsNiBAQCB2b2lkIHdlYmtpdF9kb21f
aHRtbF9pZnJhbWVfZWxlbWVudF9zZXRfc3JjKFdlYktpdERPTUhUTUxJRnJhbWVFbGVtZW50KiBz
ZWxmLCBjbwogICAgIGl0ZW0tPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oV2Vi
Q29yZTo6SFRNTE5hbWVzOjpzcmNBdHRyLCBjb252ZXJ0ZWRWYWx1ZSk7CiB9CiAKLWdjaGFyKiB3
ZWJraXRfZG9tX2h0bWxfaWZyYW1lX2VsZW1lbnRfZ2V0X3NyY2RvYyhXZWJLaXRET01IVE1MSUZy
YW1lRWxlbWVudCogc2VsZikKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUg
c3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19IVE1MX0lGUkFN
RV9FTEVNRU5UKHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpIVE1MSUZyYW1lRWxlbWVudCogaXRl
bSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBnY2hhciogcmVzdWx0ID0gY29udmVydFRvVVRG
OFN0cmluZyhpdGVtLT5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFdlYkNvcmU6OkhU
TUxOYW1lczo6c3JjZG9jQXR0cikpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXZvaWQgd2Vi
a2l0X2RvbV9odG1sX2lmcmFtZV9lbGVtZW50X3NldF9zcmNkb2MoV2ViS2l0RE9NSFRNTElGcmFt
ZUVsZW1lbnQqIHNlbGYsIGNvbnN0IGdjaGFyKiB2YWx1ZSkKLXsKLSAgICBXZWJDb3JlOjpKU01h
aW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9N
X0lTX0hUTUxfSUZSQU1FX0VMRU1FTlQoc2VsZikpOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwodmFs
dWUpOwotICAgIFdlYkNvcmU6OkhUTUxJRnJhbWVFbGVtZW50KiBpdGVtID0gV2ViS2l0Ojpjb3Jl
KHNlbGYpOwotICAgIFdURjo6U3RyaW5nIGNvbnZlcnRlZFZhbHVlID0gV1RGOjpTdHJpbmc6OmZy
b21VVEY4KHZhbHVlKTsKLSAgICBpdGVtLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKFdlYkNvcmU6OkhUTUxOYW1lczo6c3JjZG9jQXR0ciwgY29udmVydGVkVmFsdWUpOwotfQot
CiBnY2hhciogd2Via2l0X2RvbV9odG1sX2lmcmFtZV9lbGVtZW50X2dldF93aWR0aChXZWJLaXRE
T01IVE1MSUZyYW1lRWxlbWVudCogc2VsZikKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWRO
dWxsU3RhdGUgc3RhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxJRnJhbWVFbGVtZW50VW5zdGFi
bGUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9E
T00vV2ViS2l0RE9NSFRNTElGcmFtZUVsZW1lbnRVbnN0YWJsZS5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBlZGNhOTQyLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTElGcmFtZUVsZW1l
bnRVbnN0YWJsZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNzYgKzAsMCBAQAotLyoKLSAqICBUaGlz
IGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCi0gKiAgVGhp
cyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9U
IE1PRElGWSEKLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoK
LSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiAgQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBXZWJLaXRET01IVE1MSUZyYW1lRWxlbWVudFVu
c3RhYmxlX2gKLSNkZWZpbmUgV2ViS2l0RE9NSFRNTElGcmFtZUVsZW1lbnRVbnN0YWJsZV9oCi0K
LSNpZmRlZiBXRUJLSVRfRE9NX1VTRV9VTlNUQUJMRV9BUEkKLQotI2luY2x1ZGUgPHdlYmtpdGRv
bS93ZWJraXRkb21kZWZpbmVzLXVuc3RhYmxlLmg+Ci0KLUdfQkVHSU5fREVDTFMKLQotLyoqCi0g
KiB3ZWJraXRfZG9tX2h0bWxfaWZyYW1lX2VsZW1lbnRfZ2V0X3NhbmRib3g6Ci0gKiBAc2VsZjog
QSAjV2ViS2l0RE9NSFRNTElGcmFtZUVsZW1lbnQKLSAqCi0gKiBSZXR1cm5zOiBBICNnY2hhcgot
ICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSBnY2hhcioKLXdlYmtp
dF9kb21faHRtbF9pZnJhbWVfZWxlbWVudF9nZXRfc2FuZGJveChXZWJLaXRET01IVE1MSUZyYW1l
RWxlbWVudCogc2VsZik7Ci0KLS8qKgotICogd2Via2l0X2RvbV9odG1sX2lmcmFtZV9lbGVtZW50
X3NldF9zYW5kYm94OgotICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxJRnJhbWVFbGVtZW50Ci0g
KiBAdmFsdWU6IEEgI2djaGFyCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJL
SVRfQVBJIHZvaWQKLXdlYmtpdF9kb21faHRtbF9pZnJhbWVfZWxlbWVudF9zZXRfc2FuZGJveChX
ZWJLaXRET01IVE1MSUZyYW1lRWxlbWVudCogc2VsZiwgY29uc3QgZ2NoYXIqIHZhbHVlKTsKLQot
LyoqCi0gKiB3ZWJraXRfZG9tX2h0bWxfaWZyYW1lX2VsZW1lbnRfZ2V0X3NyY2RvYzoKLSAqIEBz
ZWxmOiBBICNXZWJLaXRET01IVE1MSUZyYW1lRWxlbWVudAotICoKLSAqIFJldHVybnM6IEEgI2dj
aGFyCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIGdjaGFyKgot
d2Via2l0X2RvbV9odG1sX2lmcmFtZV9lbGVtZW50X2dldF9zcmNkb2MoV2ViS2l0RE9NSFRNTElG
cmFtZUVsZW1lbnQqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9kb21faHRtbF9pZnJhbWVfZWxl
bWVudF9zZXRfc3JjZG9jOgotICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxJRnJhbWVFbGVtZW50
Ci0gKiBAdmFsdWU6IEEgI2djaGFyCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1X
RUJLSVRfQVBJIHZvaWQKLXdlYmtpdF9kb21faHRtbF9pZnJhbWVfZWxlbWVudF9zZXRfc3JjZG9j
KFdlYktpdERPTUhUTUxJRnJhbWVFbGVtZW50KiBzZWxmLCBjb25zdCBnY2hhciogdmFsdWUpOwot
Ci0KLUdfRU5EX0RFQ0xTCi0KLSNlbmRpZiAvKiBXRUJLSVRfRE9NX1VTRV9VTlNUQUJMRV9BUEkg
Ki8KLSNlbmRpZiAvKiBXZWJLaXRET01IVE1MSUZyYW1lRWxlbWVudFVuc3RhYmxlX2ggKi8KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0
ay9ET00vV2ViS2l0RE9NSFRNTEltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxJbWFnZUVsZW1l
bnQuY3BwCmluZGV4IGRmOWQ4MmEuLmQ5ZjIzOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTEltYWdl
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MSW1hZ2VFbGVtZW50LmNwcApAQCAtMzUsNyArMzUs
NiBAQAogI2luY2x1ZGUgIldlYktpdERPTU5vZGVQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0
RE9NUHJpdmF0ZS5oIgogI2luY2x1ZGUgIkNvbnZlcnRUb1VURjhTdHJpbmcuaCIKLSNpbmNsdWRl
ICJXZWJLaXRET01IVE1MSW1hZ2VFbGVtZW50VW5zdGFibGUuaCIKICNpbmNsdWRlIDx3dGYvR2V0
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCkBAIC0xMDIsMTUgKzEwMSwxMSBAQCBl
bnVtIHsKICAgICBQUk9QX0FMSUdOLAogICAgIFBST1BfQUxULAogICAgIFBST1BfQk9SREVSLAot
ICAgIFBST1BfQ1JPU1NfT1JJR0lOLAogICAgIFBST1BfSEVJR0hULAogICAgIFBST1BfSFNQQUNF
LAogICAgIFBST1BfSVNfTUFQLAogICAgIFBST1BfTE9OR19ERVNDLAogICAgIFBST1BfU1JDLAot
ICAgIFBST1BfU1JDU0VULAotICAgIFBST1BfU0laRVMsCi0gICAgUFJPUF9DVVJSRU5UX1NSQywK
ICAgICBQUk9QX1VTRV9NQVAsCiAgICAgUFJPUF9WU1BBQ0UsCiAgICAgUFJPUF9XSURUSCwKQEAg
LTEzOSw5ICsxMzQsNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX2h0bWxfaW1hZ2VfZWxlbWVu
dF9zZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcgogICAgIGNhc2UgUFJPUF9C
T1JERVI6CiAgICAgICAgIHdlYmtpdF9kb21faHRtbF9pbWFnZV9lbGVtZW50X3NldF9ib3JkZXIo
c2VsZiwgZ192YWx1ZV9nZXRfc3RyaW5nKHZhbHVlKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNh
c2UgUFJPUF9DUk9TU19PUklHSU46Ci0gICAgICAgIHdlYmtpdF9kb21faHRtbF9pbWFnZV9lbGVt
ZW50X3NldF9jcm9zc19vcmlnaW4oc2VsZiwgZ192YWx1ZV9nZXRfc3RyaW5nKHZhbHVlKSk7Ci0g
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJPUF9IRUlHSFQ6CiAgICAgICAgIHdlYmtpdF9kb21f
aHRtbF9pbWFnZV9lbGVtZW50X3NldF9oZWlnaHQoc2VsZiwgZ192YWx1ZV9nZXRfbG9uZyh2YWx1
ZSkpOwogICAgICAgICBicmVhazsKQEAgLTE1NywxMiArMTQ5LDYgQEAgc3RhdGljIHZvaWQgd2Vi
a2l0X2RvbV9odG1sX2ltYWdlX2VsZW1lbnRfc2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwg
Z3VpbnQgcHIKICAgICBjYXNlIFBST1BfU1JDOgogICAgICAgICB3ZWJraXRfZG9tX2h0bWxfaW1h
Z2VfZWxlbWVudF9zZXRfc3JjKHNlbGYsIGdfdmFsdWVfZ2V0X3N0cmluZyh2YWx1ZSkpOwogICAg
ICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfU1JDU0VUOgotICAgICAgICB3ZWJraXRfZG9tX2h0
bWxfaW1hZ2VfZWxlbWVudF9zZXRfc3Jjc2V0KHNlbGYsIGdfdmFsdWVfZ2V0X3N0cmluZyh2YWx1
ZSkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfU0laRVM6Ci0gICAgICAgIHdlYmtp
dF9kb21faHRtbF9pbWFnZV9lbGVtZW50X3NldF9zaXplcyhzZWxmLCBnX3ZhbHVlX2dldF9zdHJp
bmcodmFsdWUpKTsKLSAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9QX1VTRV9NQVA6CiAgICAg
ICAgIHdlYmtpdF9kb21faHRtbF9pbWFnZV9lbGVtZW50X3NldF91c2VfbWFwKHNlbGYsIGdfdmFs
dWVfZ2V0X3N0cmluZyh2YWx1ZSkpOwogICAgICAgICBicmVhazsKQEAgLTE5OCw5ICsxODQsNiBA
QCBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX2h0bWxfaW1hZ2VfZWxlbWVudF9nZXRfcHJvcGVydHko
R09iamVjdCogb2JqZWN0LCBndWludCBwcgogICAgIGNhc2UgUFJPUF9CT1JERVI6CiAgICAgICAg
IGdfdmFsdWVfdGFrZV9zdHJpbmcodmFsdWUsIHdlYmtpdF9kb21faHRtbF9pbWFnZV9lbGVtZW50
X2dldF9ib3JkZXIoc2VsZikpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfQ1JPU1Nf
T1JJR0lOOgotICAgICAgICBnX3ZhbHVlX3Rha2Vfc3RyaW5nKHZhbHVlLCB3ZWJraXRfZG9tX2h0
bWxfaW1hZ2VfZWxlbWVudF9nZXRfY3Jvc3Nfb3JpZ2luKHNlbGYpKTsKLSAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBQUk9QX0hFSUdIVDoKICAgICAgICAgZ192YWx1ZV9zZXRfbG9uZyh2YWx1ZSwg
d2Via2l0X2RvbV9odG1sX2ltYWdlX2VsZW1lbnRfZ2V0X2hlaWdodChzZWxmKSk7CiAgICAgICAg
IGJyZWFrOwpAQCAtMjE2LDE1ICsxOTksNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX2h0bWxf
aW1hZ2VfZWxlbWVudF9nZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcgogICAg
IGNhc2UgUFJPUF9TUkM6CiAgICAgICAgIGdfdmFsdWVfdGFrZV9zdHJpbmcodmFsdWUsIHdlYmtp
dF9kb21faHRtbF9pbWFnZV9lbGVtZW50X2dldF9zcmMoc2VsZikpOwogICAgICAgICBicmVhazsK
LSAgICBjYXNlIFBST1BfU1JDU0VUOgotICAgICAgICBnX3ZhbHVlX3Rha2Vfc3RyaW5nKHZhbHVl
LCB3ZWJraXRfZG9tX2h0bWxfaW1hZ2VfZWxlbWVudF9nZXRfc3Jjc2V0KHNlbGYpKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX1NJWkVTOgotICAgICAgICBnX3ZhbHVlX3Rha2Vfc3Ry
aW5nKHZhbHVlLCB3ZWJraXRfZG9tX2h0bWxfaW1hZ2VfZWxlbWVudF9nZXRfc2l6ZXMoc2VsZikp
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfQ1VSUkVOVF9TUkM6Ci0gICAgICAgIGdf
dmFsdWVfdGFrZV9zdHJpbmcodmFsdWUsIHdlYmtpdF9kb21faHRtbF9pbWFnZV9lbGVtZW50X2dl
dF9jdXJyZW50X3NyYyhzZWxmKSk7Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJPUF9VU0Vf
TUFQOgogICAgICAgICBnX3ZhbHVlX3Rha2Vfc3RyaW5nKHZhbHVlLCB3ZWJraXRfZG9tX2h0bWxf
aW1hZ2VfZWxlbWVudF9nZXRfdXNlX21hcChzZWxmKSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMzA2
LDE2ICsyODAsNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX2h0bWxfaW1hZ2VfZWxlbWVudF9j
bGFzc19pbml0KFdlYktpdERPTUhUTUxJbWFnZUVsZW1lbnRDbAogCiAgICAgZ19vYmplY3RfY2xh
c3NfaW5zdGFsbF9wcm9wZXJ0eSgKICAgICAgICAgZ29iamVjdENsYXNzLAotICAgICAgICBQUk9Q
X0NST1NTX09SSUdJTiwKLSAgICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZygKLSAgICAgICAgICAg
ICJjcm9zcy1vcmlnaW4iLAotICAgICAgICAgICAgIkhUTUxJbWFnZUVsZW1lbnQ6Y3Jvc3Mtb3Jp
Z2luIiwKLSAgICAgICAgICAgICJyZWFkLXdyaXRlIGdjaGFyKiBIVE1MSW1hZ2VFbGVtZW50OmNy
b3NzLW9yaWdpbiIsCi0gICAgICAgICAgICAiIiwKLSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9S
RUFEV1JJVEUpKTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAg
ICAgIGdvYmplY3RDbGFzcywKICAgICAgICAgUFJPUF9IRUlHSFQsCiAgICAgICAgIGdfcGFyYW1f
c3BlY19sb25nKAogICAgICAgICAgICAgImhlaWdodCIsCkBAIC0zNjYsMzYgKzMzMCw2IEBAIHN0
YXRpYyB2b2lkIHdlYmtpdF9kb21faHRtbF9pbWFnZV9lbGVtZW50X2NsYXNzX2luaXQoV2ViS2l0
RE9NSFRNTEltYWdlRWxlbWVudENsCiAKICAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3Bl
cnR5KAogICAgICAgICBnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBST1BfU1JDU0VULAotICAgICAg
ICBnX3BhcmFtX3NwZWNfc3RyaW5nKAotICAgICAgICAgICAgInNyY3NldCIsCi0gICAgICAgICAg
ICAiSFRNTEltYWdlRWxlbWVudDpzcmNzZXQiLAotICAgICAgICAgICAgInJlYWQtd3JpdGUgZ2No
YXIqIEhUTUxJbWFnZUVsZW1lbnQ6c3Jjc2V0IiwKLSAgICAgICAgICAgICIiLAotICAgICAgICAg
ICAgV0VCS0lUX1BBUkFNX1JFQURXUklURSkpOwotCi0gICAgZ19vYmplY3RfY2xhc3NfaW5zdGFs
bF9wcm9wZXJ0eSgKLSAgICAgICAgZ29iamVjdENsYXNzLAotICAgICAgICBQUk9QX1NJWkVTLAot
ICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nKAotICAgICAgICAgICAgInNpemVzIiwKLSAgICAg
ICAgICAgICJIVE1MSW1hZ2VFbGVtZW50OnNpemVzIiwKLSAgICAgICAgICAgICJyZWFkLXdyaXRl
IGdjaGFyKiBIVE1MSW1hZ2VFbGVtZW50OnNpemVzIiwKLSAgICAgICAgICAgICIiLAotICAgICAg
ICAgICAgV0VCS0lUX1BBUkFNX1JFQURXUklURSkpOwotCi0gICAgZ19vYmplY3RfY2xhc3NfaW5z
dGFsbF9wcm9wZXJ0eSgKLSAgICAgICAgZ29iamVjdENsYXNzLAotICAgICAgICBQUk9QX0NVUlJF
TlRfU1JDLAotICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nKAotICAgICAgICAgICAgImN1cnJl
bnQtc3JjIiwKLSAgICAgICAgICAgICJIVE1MSW1hZ2VFbGVtZW50OmN1cnJlbnQtc3JjIiwKLSAg
ICAgICAgICAgICJyZWFkLW9ubHkgZ2NoYXIqIEhUTUxJbWFnZUVsZW1lbnQ6Y3VycmVudC1zcmMi
LAotICAgICAgICAgICAgIiIsCi0gICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsK
LQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RD
bGFzcywKICAgICAgICAgUFJPUF9VU0VfTUFQLAogICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5n
KAogICAgICAgICAgICAgInVzZS1tYXAiLApAQCAtNTY3LDI1ICs1MDEsNiBAQCB2b2lkIHdlYmtp
dF9kb21faHRtbF9pbWFnZV9lbGVtZW50X3NldF9ib3JkZXIoV2ViS2l0RE9NSFRNTEltYWdlRWxl
bWVudCogc2VsZiwgYwogICAgIGl0ZW0tPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRp
b24oV2ViQ29yZTo6SFRNTE5hbWVzOjpib3JkZXJBdHRyLCBjb252ZXJ0ZWRWYWx1ZSk7CiB9CiAK
LWdjaGFyKiB3ZWJraXRfZG9tX2h0bWxfaW1hZ2VfZWxlbWVudF9nZXRfY3Jvc3Nfb3JpZ2luKFdl
YktpdERPTUhUTUxJbWFnZUVsZW1lbnQqIHNlbGYpCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhy
ZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01f
SVNfSFRNTF9JTUFHRV9FTEVNRU5UKHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpIVE1MSW1hZ2VF
bGVtZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdjaGFyKiByZXN1bHQgPSBj
b252ZXJ0VG9VVEY4U3RyaW5nKGl0ZW0tPmNyb3NzT3JpZ2luKCkpOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci0KLXZvaWQgd2Via2l0X2RvbV9odG1sX2ltYWdlX2VsZW1lbnRfc2V0X2Nyb3NzX29y
aWdpbihXZWJLaXRET01IVE1MSW1hZ2VFbGVtZW50KiBzZWxmLCBjb25zdCBnY2hhciogdmFsdWUp
Ci17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0
dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19IVE1MX0lNQUdFX0VMRU1FTlQoc2VsZikpOwotICAg
IGdfcmV0dXJuX2lmX2ZhaWwodmFsdWUpOwotICAgIFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQq
IGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgV1RGOjpTdHJpbmcgY29udmVydGVkVmFs
dWUgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgodmFsdWUpOwotICAgIGl0ZW0tPnNldENyb3NzT3Jp
Z2luKGNvbnZlcnRlZFZhbHVlKTsKLX0KLQogZ2xvbmcgd2Via2l0X2RvbV9odG1sX2ltYWdlX2Vs
ZW1lbnRfZ2V0X2hlaWdodChXZWJLaXRET01IVE1MSW1hZ2VFbGVtZW50KiBzZWxmKQogewogICAg
IFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKQEAgLTY3NSw1MyArNTkwLDYg
QEAgdm9pZCB3ZWJraXRfZG9tX2h0bWxfaW1hZ2VfZWxlbWVudF9zZXRfc3JjKFdlYktpdERPTUhU
TUxJbWFnZUVsZW1lbnQqIHNlbGYsIGNvbnMKICAgICBpdGVtLT5zZXRBdHRyaWJ1dGVXaXRob3V0
U3luY2hyb25pemF0aW9uKFdlYkNvcmU6OkhUTUxOYW1lczo6c3JjQXR0ciwgY29udmVydGVkVmFs
dWUpOwogfQogCi1nY2hhciogd2Via2l0X2RvbV9odG1sX2ltYWdlX2VsZW1lbnRfZ2V0X3NyY3Nl
dChXZWJLaXRET01IVE1MSW1hZ2VFbGVtZW50KiBzZWxmKQotewotICAgIFdlYkNvcmU6OkpTTWFp
blRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRf
RE9NX0lTX0hUTUxfSU1BR0VfRUxFTUVOVChzZWxmKSwgMCk7Ci0gICAgV2ViQ29yZTo6SFRNTElt
YWdlRWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBnY2hhciogcmVzdWx0
ID0gY29udmVydFRvVVRGOFN0cmluZyhpdGVtLT5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKFdlYkNvcmU6OkhUTUxOYW1lczo6c3Jjc2V0QXR0cikpOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci0KLXZvaWQgd2Via2l0X2RvbV9odG1sX2ltYWdlX2VsZW1lbnRfc2V0X3NyY3NldChXZWJL
aXRET01IVE1MSW1hZ2VFbGVtZW50KiBzZWxmLCBjb25zdCBnY2hhciogdmFsdWUpCi17Ci0gICAg
V2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX2lmX2Zh
aWwoV0VCS0lUX0RPTV9JU19IVE1MX0lNQUdFX0VMRU1FTlQoc2VsZikpOwotICAgIGdfcmV0dXJu
X2lmX2ZhaWwodmFsdWUpOwotICAgIFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQqIGl0ZW0gPSBX
ZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgV1RGOjpTdHJpbmcgY29udmVydGVkVmFsdWUgPSBXVEY6
OlN0cmluZzo6ZnJvbVVURjgodmFsdWUpOwotICAgIGl0ZW0tPnNldEF0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24oV2ViQ29yZTo6SFRNTE5hbWVzOjpzcmNzZXRBdHRyLCBjb252ZXJ0ZWRW
YWx1ZSk7Ci19Ci0KLWdjaGFyKiB3ZWJraXRfZG9tX2h0bWxfaW1hZ2VfZWxlbWVudF9nZXRfc2l6
ZXMoV2ViS2l0RE9NSFRNTEltYWdlRWxlbWVudCogc2VsZikKLXsKLSAgICBXZWJDb3JlOjpKU01h
aW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lU
X0RPTV9JU19IVE1MX0lNQUdFX0VMRU1FTlQoc2VsZiksIDApOwotICAgIFdlYkNvcmU6OkhUTUxJ
bWFnZUVsZW1lbnQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ2NoYXIqIHJlc3Vs
dCA9IGNvbnZlcnRUb1VURjhTdHJpbmcoaXRlbS0+YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXph
dGlvbihXZWJDb3JlOjpIVE1MTmFtZXM6OnNpemVzQXR0cikpOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci0KLXZvaWQgd2Via2l0X2RvbV9odG1sX2ltYWdlX2VsZW1lbnRfc2V0X3NpemVzKFdlYktp
dERPTUhUTUxJbWFnZUVsZW1lbnQqIHNlbGYsIGNvbnN0IGdjaGFyKiB2YWx1ZSkKLXsKLSAgICBX
ZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5faWZfZmFp
bChXRUJLSVRfRE9NX0lTX0hUTUxfSU1BR0VfRUxFTUVOVChzZWxmKSk7Ci0gICAgZ19yZXR1cm5f
aWZfZmFpbCh2YWx1ZSk7Ci0gICAgV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudCogaXRlbSA9IFdl
YktpdDo6Y29yZShzZWxmKTsKLSAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRWYWx1ZSA9IFdURjo6
U3RyaW5nOjpmcm9tVVRGOCh2YWx1ZSk7Ci0gICAgaXRlbS0+c2V0QXR0cmlidXRlV2l0aG91dFN5
bmNocm9uaXphdGlvbihXZWJDb3JlOjpIVE1MTmFtZXM6OnNpemVzQXR0ciwgY29udmVydGVkVmFs
dWUpOwotfQotCi1nY2hhciogd2Via2l0X2RvbV9odG1sX2ltYWdlX2VsZW1lbnRfZ2V0X2N1cnJl
bnRfc3JjKFdlYktpdERPTUhUTUxJbWFnZUVsZW1lbnQqIHNlbGYpCi17Ci0gICAgV2ViQ29yZTo6
SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdF
QktJVF9ET01fSVNfSFRNTF9JTUFHRV9FTEVNRU5UKHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpI
VE1MSW1hZ2VFbGVtZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdjaGFyKiBy
ZXN1bHQgPSBjb252ZXJ0VG9VVEY4U3RyaW5nKGl0ZW0tPmN1cnJlbnRTcmMoKSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLQogZ2NoYXIqIHdlYmtpdF9kb21faHRtbF9pbWFnZV9lbGVtZW50X2dl
dF91c2VfbWFwKFdlYktpdERPTUhUTUxJbWFnZUVsZW1lbnQqIHNlbGYpCiB7CiAgICAgV2ViQ29y
ZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MSW1h
Z2VFbGVtZW50VW5zdGFibGUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTEltYWdlRWxlbWVudFVuc3RhYmxlLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVjZjVhMTUuLjAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01I
VE1MSW1hZ2VFbGVtZW50VW5zdGFibGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDEwOCArMCwwIEBA
Ci0vKgotICogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJv
amVjdC4KLSAqICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRp
bmdzLnBsLiBETyBOT1QgTU9ESUZZIQotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAq
ICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAg
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQotICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaWZuZGVmIFdlYktpdERPTUhUTUxJ
bWFnZUVsZW1lbnRVbnN0YWJsZV9oCi0jZGVmaW5lIFdlYktpdERPTUhUTUxJbWFnZUVsZW1lbnRV
bnN0YWJsZV9oCi0KLSNpZmRlZiBXRUJLSVRfRE9NX1VTRV9VTlNUQUJMRV9BUEkKLQotI2luY2x1
ZGUgPHdlYmtpdGRvbS93ZWJraXRkb21kZWZpbmVzLXVuc3RhYmxlLmg+Ci0KLUdfQkVHSU5fREVD
TFMKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0bWxfaW1hZ2VfZWxlbWVudF9nZXRfY3Jvc3Nfb3Jp
Z2luOgotICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxJbWFnZUVsZW1lbnQKLSAqCi0gKiBSZXR1
cm5zOiBBICNnY2hhcgotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQ
SSBnY2hhcioKLXdlYmtpdF9kb21faHRtbF9pbWFnZV9lbGVtZW50X2dldF9jcm9zc19vcmlnaW4o
V2ViS2l0RE9NSFRNTEltYWdlRWxlbWVudCogc2VsZik7Ci0KLS8qKgotICogd2Via2l0X2RvbV9o
dG1sX2ltYWdlX2VsZW1lbnRfc2V0X2Nyb3NzX29yaWdpbjoKLSAqIEBzZWxmOiBBICNXZWJLaXRE
T01IVE1MSW1hZ2VFbGVtZW50Ci0gKiBAdmFsdWU6IEEgI2djaGFyCi0gKgotICogU3RhYmlsaXR5
OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIHZvaWQKLXdlYmtpdF9kb21faHRtbF9pbWFnZV9l
bGVtZW50X3NldF9jcm9zc19vcmlnaW4oV2ViS2l0RE9NSFRNTEltYWdlRWxlbWVudCogc2VsZiwg
Y29uc3QgZ2NoYXIqIHZhbHVlKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0bWxfaW1hZ2VfZWxl
bWVudF9nZXRfc3Jjc2V0OgotICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxJbWFnZUVsZW1lbnQK
LSAqCi0gKiBSZXR1cm5zOiBBICNnY2hhcgotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoq
LwotV0VCS0lUX0FQSSBnY2hhcioKLXdlYmtpdF9kb21faHRtbF9pbWFnZV9lbGVtZW50X2dldF9z
cmNzZXQoV2ViS2l0RE9NSFRNTEltYWdlRWxlbWVudCogc2VsZik7Ci0KLS8qKgotICogd2Via2l0
X2RvbV9odG1sX2ltYWdlX2VsZW1lbnRfc2V0X3NyY3NldDoKLSAqIEBzZWxmOiBBICNXZWJLaXRE
T01IVE1MSW1hZ2VFbGVtZW50Ci0gKiBAdmFsdWU6IEEgI2djaGFyCi0gKgotICogU3RhYmlsaXR5
OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIHZvaWQKLXdlYmtpdF9kb21faHRtbF9pbWFnZV9l
bGVtZW50X3NldF9zcmNzZXQoV2ViS2l0RE9NSFRNTEltYWdlRWxlbWVudCogc2VsZiwgY29uc3Qg
Z2NoYXIqIHZhbHVlKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0bWxfaW1hZ2VfZWxlbWVudF9n
ZXRfc2l6ZXM6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTEltYWdlRWxlbWVudAotICoKLSAq
IFJldHVybnM6IEEgI2djaGFyCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJL
SVRfQVBJIGdjaGFyKgotd2Via2l0X2RvbV9odG1sX2ltYWdlX2VsZW1lbnRfZ2V0X3NpemVzKFdl
YktpdERPTUhUTUxJbWFnZUVsZW1lbnQqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9kb21faHRt
bF9pbWFnZV9lbGVtZW50X3NldF9zaXplczoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MSW1h
Z2VFbGVtZW50Ci0gKiBAdmFsdWU6IEEgI2djaGFyCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJs
ZQotKiovCi1XRUJLSVRfQVBJIHZvaWQKLXdlYmtpdF9kb21faHRtbF9pbWFnZV9lbGVtZW50X3Nl
dF9zaXplcyhXZWJLaXRET01IVE1MSW1hZ2VFbGVtZW50KiBzZWxmLCBjb25zdCBnY2hhciogdmFs
dWUpOwotCi0vKioKLSAqIHdlYmtpdF9kb21faHRtbF9pbWFnZV9lbGVtZW50X2dldF9jdXJyZW50
X3NyYzoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MSW1hZ2VFbGVtZW50Ci0gKgotICogUmV0
dXJuczogQSAjZ2NoYXIKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9B
UEkgZ2NoYXIqCi13ZWJraXRfZG9tX2h0bWxfaW1hZ2VfZWxlbWVudF9nZXRfY3VycmVudF9zcmMo
V2ViS2l0RE9NSFRNTEltYWdlRWxlbWVudCogc2VsZik7Ci0KLQotR19FTkRfREVDTFMKLQotI2Vu
ZGlmIC8qIFdFQktJVF9ET01fVVNFX1VOU1RBQkxFX0FQSSAqLwotI2VuZGlmIC8qIFdlYktpdERP
TUhUTUxJbWFnZUVsZW1lbnRVbnN0YWJsZV9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxJbnB1
dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCBhMGNmYTU1Li4z
ZDZkYzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9N
SFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTM4LDkgKzM4LDcgQEAKICNpbmNsdWRlICJXZWJLaXRE
T01Ob2RlTGlzdFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRET01Ob2RlUHJpdmF0ZS5oIgog
I2luY2x1ZGUgIldlYktpdERPTVByaXZhdGUuaCIKLSNpbmNsdWRlICJXZWJLaXRET01WYWxpZGl0
eVN0YXRlUHJpdmF0ZS5oIgogI2luY2x1ZGUgIkNvbnZlcnRUb1VURjhTdHJpbmcuaCIKLSNpbmNs
dWRlICJXZWJLaXRET01IVE1MSW5wdXRFbGVtZW50VW5zdGFibGUuaCIKICNpbmNsdWRlIDx3dGYv
R2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCkBAIC0xMDUsNDggKzEwMywyNyBA
QCBlbnVtIHsKICAgICBQUk9QXzAsCiAgICAgUFJPUF9BQ0NFUFQsCiAgICAgUFJPUF9BTFQsCi0g
ICAgUFJPUF9BVVRPQ09NUExFVEUsCiAgICAgUFJPUF9BVVRPRk9DVVMsCiAgICAgUFJPUF9ERUZB
VUxUX0NIRUNLRUQsCiAgICAgUFJPUF9DSEVDS0VELAotICAgIFBST1BfRElSX05BTUUsCiAgICAg
UFJPUF9ESVNBQkxFRCwKICAgICBQUk9QX0ZPUk0sCiAgICAgUFJPUF9GSUxFUywKLSAgICBQUk9Q
X0ZPUk1fQUNUSU9OLAotICAgIFBST1BfRk9STV9FTkNUWVBFLAotICAgIFBST1BfRk9STV9NRVRI
T0QsCi0gICAgUFJPUF9GT1JNX05PX1ZBTElEQVRFLAotICAgIFBST1BfRk9STV9UQVJHRVQsCiAg
ICAgUFJPUF9IRUlHSFQsCiAgICAgUFJPUF9JTkRFVEVSTUlOQVRFLAotICAgIFBST1BfTElTVCwK
LSAgICBQUk9QX01BWCwKICAgICBQUk9QX01BWF9MRU5HVEgsCi0gICAgUFJPUF9NSU4sCiAgICAg
UFJPUF9NVUxUSVBMRSwKICAgICBQUk9QX05BTUUsCi0gICAgUFJPUF9QQVRURVJOLAotICAgIFBS
T1BfUExBQ0VIT0xERVIsCiAgICAgUFJPUF9SRUFEX09OTFksCi0gICAgUFJPUF9SRVFVSVJFRCwK
ICAgICBQUk9QX1NJWkUsCiAgICAgUFJPUF9TUkMsCi0gICAgUFJPUF9TVEVQLAogICAgIFBST1Bf
VFlQRSwKICAgICBQUk9QX0RFRkFVTFRfVkFMVUUsCiAgICAgUFJPUF9WQUxVRSwKLSAgICBQUk9Q
X1ZBTFVFX0FTX05VTUJFUiwKICAgICBQUk9QX1dJRFRILAogICAgIFBST1BfV0lMTF9WQUxJREFU
RSwKLSAgICBQUk9QX1ZBTElESVRZLAotICAgIFBST1BfVkFMSURBVElPTl9NRVNTQUdFLAotICAg
IFBST1BfTEFCRUxTLAogICAgIFBST1BfQUxJR04sCiAgICAgUFJPUF9VU0VfTUFQLAotICAgIFBS
T1BfSU5DUkVNRU5UQUwsCi0gICAgUFJPUF9BVVRPQ09SUkVDVCwKLSAgICBQUk9QX0FVVE9DQVBJ
VEFMSVpFLAogICAgIFBST1BfQ0FQVFVSRSwKIH07CiAKQEAgLTE2MSw5ICsxMzgsNiBAQCBzdGF0
aWMgdm9pZCB3ZWJraXRfZG9tX2h0bWxfaW5wdXRfZWxlbWVudF9zZXRfcHJvcGVydHkoR09iamVj
dCogb2JqZWN0LCBndWludCBwcgogICAgIGNhc2UgUFJPUF9BTFQ6CiAgICAgICAgIHdlYmtpdF9k
b21faHRtbF9pbnB1dF9lbGVtZW50X3NldF9hbHQoc2VsZiwgZ192YWx1ZV9nZXRfc3RyaW5nKHZh
bHVlKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9BVVRPQ09NUExFVEU6Ci0gICAg
ICAgIHdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50X3NldF9hdXRvY29tcGxldGUoc2VsZiwg
Z192YWx1ZV9nZXRfc3RyaW5nKHZhbHVlKSk7Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJP
UF9BVVRPRk9DVVM6CiAgICAgICAgIHdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50X3NldF9h
dXRvZm9jdXMoc2VsZiwgZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOwogICAgICAgICBicmVh
azsKQEAgLTE3Myw2OSArMTQ3LDMzIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21faHRtbF9pbnB1
dF9lbGVtZW50X3NldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByCiAgICAgY2Fz
ZSBQUk9QX0NIRUNLRUQ6CiAgICAgICAgIHdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50X3Nl
dF9jaGVja2VkKHNlbGYsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKICAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBQUk9QX0RJUl9OQU1FOgotICAgICAgICB3ZWJraXRfZG9tX2h0bWxfaW5w
dXRfZWxlbWVudF9zZXRfZGlyX25hbWUoc2VsZiwgZ192YWx1ZV9nZXRfc3RyaW5nKHZhbHVlKSk7
Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJPUF9ESVNBQkxFRDoKICAgICAgICAgd2Via2l0
X2RvbV9odG1sX2lucHV0X2VsZW1lbnRfc2V0X2Rpc2FibGVkKHNlbGYsIGdfdmFsdWVfZ2V0X2Jv
b2xlYW4odmFsdWUpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX0ZPUk1fQUNUSU9O
OgotICAgICAgICB3ZWJraXRfZG9tX2h0bWxfaW5wdXRfZWxlbWVudF9zZXRfZm9ybV9hY3Rpb24o
c2VsZiwgZ192YWx1ZV9nZXRfc3RyaW5nKHZhbHVlKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgUFJPUF9GT1JNX0VOQ1RZUEU6Ci0gICAgICAgIHdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVt
ZW50X3NldF9mb3JtX2VuY3R5cGUoc2VsZiwgZ192YWx1ZV9nZXRfc3RyaW5nKHZhbHVlKSk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9GT1JNX01FVEhPRDoKLSAgICAgICAgd2Via2l0
X2RvbV9odG1sX2lucHV0X2VsZW1lbnRfc2V0X2Zvcm1fbWV0aG9kKHNlbGYsIGdfdmFsdWVfZ2V0
X3N0cmluZyh2YWx1ZSkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfRk9STV9OT19W
QUxJREFURToKLSAgICAgICAgd2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1lbnRfc2V0X2Zvcm1f
bm9fdmFsaWRhdGUoc2VsZiwgZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIFBST1BfRk9STV9UQVJHRVQ6Ci0gICAgICAgIHdlYmtpdF9kb21faHRt
bF9pbnB1dF9lbGVtZW50X3NldF9mb3JtX3RhcmdldChzZWxmLCBnX3ZhbHVlX2dldF9zdHJpbmco
dmFsdWUpKTsKLSAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9QX0hFSUdIVDoKICAgICAgICAg
d2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1lbnRfc2V0X2hlaWdodChzZWxmLCBnX3ZhbHVlX2dl
dF91bG9uZyh2YWx1ZSkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFBST1BfSU5ERVRFUk1J
TkFURToKICAgICAgICAgd2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1lbnRfc2V0X2luZGV0ZXJt
aW5hdGUoc2VsZiwgZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOwogICAgICAgICBicmVhazsK
LSAgICBjYXNlIFBST1BfTUFYOgotICAgICAgICB3ZWJraXRfZG9tX2h0bWxfaW5wdXRfZWxlbWVu
dF9zZXRfbWF4KHNlbGYsIGdfdmFsdWVfZ2V0X3N0cmluZyh2YWx1ZSkpOwotICAgICAgICBicmVh
azsKICAgICBjYXNlIFBST1BfTUFYX0xFTkdUSDoKICAgICAgICAgd2Via2l0X2RvbV9odG1sX2lu
cHV0X2VsZW1lbnRfc2V0X21heF9sZW5ndGgoc2VsZiwgZ192YWx1ZV9nZXRfbG9uZyh2YWx1ZSks
IG51bGxwdHIpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfTUlOOgotICAgICAgICB3
ZWJraXRfZG9tX2h0bWxfaW5wdXRfZWxlbWVudF9zZXRfbWluKHNlbGYsIGdfdmFsdWVfZ2V0X3N0
cmluZyh2YWx1ZSkpOwotICAgICAgICBicmVhazsKICAgICBjYXNlIFBST1BfTVVMVElQTEU6CiAg
ICAgICAgIHdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50X3NldF9tdWx0aXBsZShzZWxmLCBn
X3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJP
UF9OQU1FOgogICAgICAgICB3ZWJraXRfZG9tX2h0bWxfaW5wdXRfZWxlbWVudF9zZXRfbmFtZShz
ZWxmLCBnX3ZhbHVlX2dldF9zdHJpbmcodmFsdWUpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBQUk9QX1BBVFRFUk46Ci0gICAgICAgIHdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50X3Nl
dF9wYXR0ZXJuKHNlbGYsIGdfdmFsdWVfZ2V0X3N0cmluZyh2YWx1ZSkpOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIFBST1BfUExBQ0VIT0xERVI6Ci0gICAgICAgIHdlYmtpdF9kb21faHRtbF9p
bnB1dF9lbGVtZW50X3NldF9wbGFjZWhvbGRlcihzZWxmLCBnX3ZhbHVlX2dldF9zdHJpbmcodmFs
dWUpKTsKLSAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9QX1JFQURfT05MWToKICAgICAgICAg
d2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1lbnRfc2V0X3JlYWRfb25seShzZWxmLCBnX3ZhbHVl
X2dldF9ib29sZWFuKHZhbHVlKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9SRVFV
SVJFRDoKLSAgICAgICAgd2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1lbnRfc2V0X3JlcXVpcmVk
KHNlbGYsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKLSAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBQUk9QX1NJWkU6CiAgICAgICAgIHdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50X3Nl
dF9zaXplKHNlbGYsIGdfdmFsdWVfZ2V0X3Vsb25nKHZhbHVlKSwgbnVsbHB0cik7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgUFJPUF9TUkM6CiAgICAgICAgIHdlYmtpdF9kb21faHRtbF9pbnB1
dF9lbGVtZW50X3NldF9zcmMoc2VsZiwgZ192YWx1ZV9nZXRfc3RyaW5nKHZhbHVlKSk7CiAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9TVEVQOgotICAgICAgICB3ZWJraXRfZG9tX2h0bWxf
aW5wdXRfZWxlbWVudF9zZXRfc3RlcChzZWxmLCBnX3ZhbHVlX2dldF9zdHJpbmcodmFsdWUpKTsK
LSAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9QX1RZUEU6CiAgICAgICAgIHdlYmtpdF9kb21f
aHRtbF9pbnB1dF9lbGVtZW50X3NldF9pbnB1dF90eXBlKHNlbGYsIGdfdmFsdWVfZ2V0X3N0cmlu
Zyh2YWx1ZSkpOwogICAgICAgICBicmVhazsKQEAgLTI0NSw5ICsxODMsNiBAQCBzdGF0aWMgdm9p
ZCB3ZWJraXRfZG9tX2h0bWxfaW5wdXRfZWxlbWVudF9zZXRfcHJvcGVydHkoR09iamVjdCogb2Jq
ZWN0LCBndWludCBwcgogICAgIGNhc2UgUFJPUF9WQUxVRToKICAgICAgICAgd2Via2l0X2RvbV9o
dG1sX2lucHV0X2VsZW1lbnRfc2V0X3ZhbHVlKHNlbGYsIGdfdmFsdWVfZ2V0X3N0cmluZyh2YWx1
ZSkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfVkFMVUVfQVNfTlVNQkVSOgotICAg
ICAgICB3ZWJraXRfZG9tX2h0bWxfaW5wdXRfZWxlbWVudF9zZXRfdmFsdWVfYXNfbnVtYmVyKHNl
bGYsIGdfdmFsdWVfZ2V0X2RvdWJsZSh2YWx1ZSksIG51bGxwdHIpOwotICAgICAgICBicmVhazsK
ICAgICBjYXNlIFBST1BfV0lEVEg6CiAgICAgICAgIHdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVt
ZW50X3NldF93aWR0aChzZWxmLCBnX3ZhbHVlX2dldF91bG9uZyh2YWx1ZSkpOwogICAgICAgICBi
cmVhazsKQEAgLTI1NywxNyArMTkyLDggQEAgc3RhdGljIHZvaWQgd2Via2l0X2RvbV9odG1sX2lu
cHV0X2VsZW1lbnRfc2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHIKICAgICBj
YXNlIFBST1BfVVNFX01BUDoKICAgICAgICAgd2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1lbnRf
c2V0X3VzZV9tYXAoc2VsZiwgZ192YWx1ZV9nZXRfc3RyaW5nKHZhbHVlKSk7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgUFJPUF9JTkNSRU1FTlRBTDoKLSAgICAgICAgd2Via2l0X2RvbV9odG1s
X2lucHV0X2VsZW1lbnRfc2V0X2luY3JlbWVudGFsKHNlbGYsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4o
dmFsdWUpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX0FVVE9DT1JSRUNUOgotICAg
ICAgICB3ZWJraXRfZG9tX2h0bWxfaW5wdXRfZWxlbWVudF9zZXRfYXV0b2NvcnJlY3Qoc2VsZiwg
Z192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBS
T1BfQVVUT0NBUElUQUxJWkU6Ci0gICAgICAgIHdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50
X3NldF9hdXRvY2FwaXRhbGl6ZShzZWxmLCBnX3ZhbHVlX2dldF9zdHJpbmcodmFsdWUpKTsKLSAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9QX0NBUFRVUkU6Ci0gICAgICAgIHdlYmtpdF9kb21f
aHRtbF9pbnB1dF9lbGVtZW50X3NldF9jYXB0dXJlKHNlbGYsIGdfdmFsdWVfZ2V0X3N0cmluZyh2
YWx1ZSkpOworICAgICAgICB3ZWJraXRfZG9tX2h0bWxfaW5wdXRfZWxlbWVudF9zZXRfY2FwdHVy
ZV90eXBlKHNlbGYsIGdfdmFsdWVfZ2V0X3N0cmluZyh2YWx1ZSkpOwogICAgICAgICBicmVhazsK
ICAgICBkZWZhdWx0OgogICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQo
b2JqZWN0LCBwcm9wZXJ0eUlkLCBwc3BlYyk7CkBAIC0yODYsOSArMjEyLDYgQEAgc3RhdGljIHZv
aWQgd2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1lbnRfZ2V0X3Byb3BlcnR5KEdPYmplY3QqIG9i
amVjdCwgZ3VpbnQgcHIKICAgICBjYXNlIFBST1BfQUxUOgogICAgICAgICBnX3ZhbHVlX3Rha2Vf
c3RyaW5nKHZhbHVlLCB3ZWJraXRfZG9tX2h0bWxfaW5wdXRfZWxlbWVudF9nZXRfYWx0KHNlbGYp
KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX0FVVE9DT01QTEVURToKLSAgICAgICAg
Z192YWx1ZV90YWtlX3N0cmluZyh2YWx1ZSwgd2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1lbnRf
Z2V0X2F1dG9jb21wbGV0ZShzZWxmKSk7Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJPUF9B
VVRPRk9DVVM6CiAgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF9kb21f
aHRtbF9pbnB1dF9lbGVtZW50X2dldF9hdXRvZm9jdXMoc2VsZikpOwogICAgICAgICBicmVhazsK
QEAgLTI5OCw5ICsyMjEsNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX2h0bWxfaW5wdXRfZWxl
bWVudF9nZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcgogICAgIGNhc2UgUFJP
UF9DSEVDS0VEOgogICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfZG9t
X2h0bWxfaW5wdXRfZWxlbWVudF9nZXRfY2hlY2tlZChzZWxmKSk7CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgUFJPUF9ESVJfTkFNRToKLSAgICAgICAgZ192YWx1ZV90YWtlX3N0cmluZyh2YWx1
ZSwgd2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1lbnRfZ2V0X2Rpcl9uYW1lKHNlbGYpKTsKLSAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9QX0RJU0FCTEVEOgogICAgICAgICBnX3ZhbHVlX3Nl
dF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfZG9tX2h0bWxfaW5wdXRfZWxlbWVudF9nZXRfZGlzYWJs
ZWQoc2VsZikpOwogICAgICAgICBicmVhazsKQEAgLTMxMCw2NiArMjMwLDMwIEBAIHN0YXRpYyB2
b2lkIHdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50X2dldF9wcm9wZXJ0eShHT2JqZWN0KiBv
YmplY3QsIGd1aW50IHByCiAgICAgY2FzZSBQUk9QX0ZJTEVTOgogICAgICAgICBnX3ZhbHVlX3Nl
dF9vYmplY3QodmFsdWUsIHdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50X2dldF9maWxlcyhz
ZWxmKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9GT1JNX0FDVElPTjoKLSAgICAg
ICAgZ192YWx1ZV90YWtlX3N0cmluZyh2YWx1ZSwgd2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1l
bnRfZ2V0X2Zvcm1fYWN0aW9uKHNlbGYpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9Q
X0ZPUk1fRU5DVFlQRToKLSAgICAgICAgZ192YWx1ZV90YWtlX3N0cmluZyh2YWx1ZSwgd2Via2l0
X2RvbV9odG1sX2lucHV0X2VsZW1lbnRfZ2V0X2Zvcm1fZW5jdHlwZShzZWxmKSk7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgUFJPUF9GT1JNX01FVEhPRDoKLSAgICAgICAgZ192YWx1ZV90YWtl
X3N0cmluZyh2YWx1ZSwgd2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1lbnRfZ2V0X2Zvcm1fbWV0
aG9kKHNlbGYpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX0ZPUk1fTk9fVkFMSURB
VEU6Ci0gICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF9kb21faHRtbF9p
bnB1dF9lbGVtZW50X2dldF9mb3JtX25vX3ZhbGlkYXRlKHNlbGYpKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBQUk9QX0ZPUk1fVEFSR0VUOgotICAgICAgICBnX3ZhbHVlX3Rha2Vfc3RyaW5n
KHZhbHVlLCB3ZWJraXRfZG9tX2h0bWxfaW5wdXRfZWxlbWVudF9nZXRfZm9ybV90YXJnZXQoc2Vs
ZikpOwotICAgICAgICBicmVhazsKICAgICBjYXNlIFBST1BfSEVJR0hUOgogICAgICAgICBnX3Zh
bHVlX3NldF91bG9uZyh2YWx1ZSwgd2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1lbnRfZ2V0X2hl
aWdodChzZWxmKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJPUF9JTkRFVEVSTUlOQVRF
OgogICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfZG9tX2h0bWxfaW5w
dXRfZWxlbWVudF9nZXRfaW5kZXRlcm1pbmF0ZShzZWxmKSk7CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgUFJPUF9MSVNUOgotICAgICAgICBnX3ZhbHVlX3NldF9vYmplY3QodmFsdWUsIHdlYmtp
dF9kb21faHRtbF9pbnB1dF9lbGVtZW50X2dldF9saXN0KHNlbGYpKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBQUk9QX01BWDoKLSAgICAgICAgZ192YWx1ZV90YWtlX3N0cmluZyh2YWx1ZSwg
d2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1lbnRfZ2V0X21heChzZWxmKSk7Ci0gICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgUFJPUF9NQVhfTEVOR1RIOgogICAgICAgICBnX3ZhbHVlX3NldF9sb25n
KHZhbHVlLCB3ZWJraXRfZG9tX2h0bWxfaW5wdXRfZWxlbWVudF9nZXRfbWF4X2xlbmd0aChzZWxm
KSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9NSU46Ci0gICAgICAgIGdfdmFsdWVf
dGFrZV9zdHJpbmcodmFsdWUsIHdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50X2dldF9taW4o
c2VsZikpOwotICAgICAgICBicmVhazsKICAgICBjYXNlIFBST1BfTVVMVElQTEU6CiAgICAgICAg
IGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50
X2dldF9tdWx0aXBsZShzZWxmKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJPUF9OQU1F
OgogICAgICAgICBnX3ZhbHVlX3Rha2Vfc3RyaW5nKHZhbHVlLCB3ZWJraXRfZG9tX2h0bWxfaW5w
dXRfZWxlbWVudF9nZXRfbmFtZShzZWxmKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJP
UF9QQVRURVJOOgotICAgICAgICBnX3ZhbHVlX3Rha2Vfc3RyaW5nKHZhbHVlLCB3ZWJraXRfZG9t
X2h0bWxfaW5wdXRfZWxlbWVudF9nZXRfcGF0dGVybihzZWxmKSk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgUFJPUF9QTEFDRUhPTERFUjoKLSAgICAgICAgZ192YWx1ZV90YWtlX3N0cmluZyh2
YWx1ZSwgd2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1lbnRfZ2V0X3BsYWNlaG9sZGVyKHNlbGYp
KTsKLSAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9QX1JFQURfT05MWToKICAgICAgICAgZ192
YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1lbnRfZ2V0
X3JlYWRfb25seShzZWxmKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9SRVFVSVJF
RDoKLSAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X2RvbV9odG1sX2lu
cHV0X2VsZW1lbnRfZ2V0X3JlcXVpcmVkKHNlbGYpKTsKLSAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBQUk9QX1NJWkU6CiAgICAgICAgIGdfdmFsdWVfc2V0X3Vsb25nKHZhbHVlLCB3ZWJraXRfZG9t
X2h0bWxfaW5wdXRfZWxlbWVudF9nZXRfc2l6ZShzZWxmKSk7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgUFJPUF9TUkM6CiAgICAgICAgIGdfdmFsdWVfdGFrZV9zdHJpbmcodmFsdWUsIHdlYmtp
dF9kb21faHRtbF9pbnB1dF9lbGVtZW50X2dldF9zcmMoc2VsZikpOwogICAgICAgICBicmVhazsK
LSAgICBjYXNlIFBST1BfU1RFUDoKLSAgICAgICAgZ192YWx1ZV90YWtlX3N0cmluZyh2YWx1ZSwg
d2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1lbnRfZ2V0X3N0ZXAoc2VsZikpOwotICAgICAgICBi
cmVhazsKICAgICBjYXNlIFBST1BfVFlQRToKICAgICAgICAgZ192YWx1ZV90YWtlX3N0cmluZyh2
YWx1ZSwgd2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1lbnRfZ2V0X2lucHV0X3R5cGUoc2VsZikp
OwogICAgICAgICBicmVhazsKQEAgLTM3OSwzOSArMjYzLDE4IEBAIHN0YXRpYyB2b2lkIHdlYmtp
dF9kb21faHRtbF9pbnB1dF9lbGVtZW50X2dldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1
aW50IHByCiAgICAgY2FzZSBQUk9QX1ZBTFVFOgogICAgICAgICBnX3ZhbHVlX3Rha2Vfc3RyaW5n
KHZhbHVlLCB3ZWJraXRfZG9tX2h0bWxfaW5wdXRfZWxlbWVudF9nZXRfdmFsdWUoc2VsZikpOwog
ICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfVkFMVUVfQVNfTlVNQkVSOgotICAgICAgICBn
X3ZhbHVlX3NldF9kb3VibGUodmFsdWUsIHdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50X2dl
dF92YWx1ZV9hc19udW1iZXIoc2VsZikpOwotICAgICAgICBicmVhazsKICAgICBjYXNlIFBST1Bf
V0lEVEg6CiAgICAgICAgIGdfdmFsdWVfc2V0X3Vsb25nKHZhbHVlLCB3ZWJraXRfZG9tX2h0bWxf
aW5wdXRfZWxlbWVudF9nZXRfd2lkdGgoc2VsZikpOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IFBST1BfV0lMTF9WQUxJREFURToKICAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwg
d2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1lbnRfZ2V0X3dpbGxfdmFsaWRhdGUoc2VsZikpOwog
ICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfVkFMSURJVFk6Ci0gICAgICAgIGdfdmFsdWVf
c2V0X29iamVjdCh2YWx1ZSwgd2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1lbnRfZ2V0X3ZhbGlk
aXR5KHNlbGYpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX1ZBTElEQVRJT05fTUVT
U0FHRToKLSAgICAgICAgZ192YWx1ZV90YWtlX3N0cmluZyh2YWx1ZSwgd2Via2l0X2RvbV9odG1s
X2lucHV0X2VsZW1lbnRfZ2V0X3ZhbGlkYXRpb25fbWVzc2FnZShzZWxmKSk7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgUFJPUF9MQUJFTFM6Ci0gICAgICAgIGdfdmFsdWVfc2V0X29iamVjdCh2
YWx1ZSwgd2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1lbnRfZ2V0X2xhYmVscyhzZWxmKSk7Ci0g
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJPUF9BTElHTjoKICAgICAgICAgZ192YWx1ZV90YWtl
X3N0cmluZyh2YWx1ZSwgd2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1lbnRfZ2V0X2FsaWduKHNl
bGYpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9QX1VTRV9NQVA6CiAgICAgICAgIGdf
dmFsdWVfdGFrZV9zdHJpbmcodmFsdWUsIHdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50X2dl
dF91c2VfbWFwKHNlbGYpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX0lOQ1JFTUVO
VEFMOgotICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfZG9tX2h0bWxf
aW5wdXRfZWxlbWVudF9nZXRfaW5jcmVtZW50YWwoc2VsZikpOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIFBST1BfQVVUT0NPUlJFQ1Q6Ci0gICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFs
dWUsIHdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50X2dldF9hdXRvY29ycmVjdChzZWxmKSk7
Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9BVVRPQ0FQSVRBTElaRToKLSAgICAgICAg
Z192YWx1ZV90YWtlX3N0cmluZyh2YWx1ZSwgd2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1lbnRf
Z2V0X2F1dG9jYXBpdGFsaXplKHNlbGYpKTsKLSAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9Q
X0NBUFRVUkU6CiAgICAgICAgIGdfdmFsdWVfdGFrZV9zdHJpbmcodmFsdWUsIHdlYmtpdF9kb21f
aHRtbF9pbnB1dF9lbGVtZW50X2dldF9jYXB0dXJlX3R5cGUoc2VsZikpOwogICAgICAgICBicmVh
azsKQEAgLTQ0OSwxNiArMzEyLDYgQEAgc3RhdGljIHZvaWQgd2Via2l0X2RvbV9odG1sX2lucHV0
X2VsZW1lbnRfY2xhc3NfaW5pdChXZWJLaXRET01IVE1MSW5wdXRFbGVtZW50Q2wKIAogICAgIGdf
b2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCiAgICAgICAgIGdvYmplY3RDbGFzcywKLSAg
ICAgICAgUFJPUF9BVVRPQ09NUExFVEUsCi0gICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcoCi0g
ICAgICAgICAgICAiYXV0b2NvbXBsZXRlIiwKLSAgICAgICAgICAgICJIVE1MSW5wdXRFbGVtZW50
OmF1dG9jb21wbGV0ZSIsCi0gICAgICAgICAgICAicmVhZC13cml0ZSBnY2hhciogSFRNTElucHV0
RWxlbWVudDphdXRvY29tcGxldGUiLAotICAgICAgICAgICAgIiIsCi0gICAgICAgICAgICBXRUJL
SVRfUEFSQU1fUkVBRFdSSVRFKSk7Ci0KLSAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3Bl
cnR5KAotICAgICAgICBnb2JqZWN0Q2xhc3MsCiAgICAgICAgIFBST1BfQVVUT0ZPQ1VTLAogICAg
ICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigKICAgICAgICAgICAgICJhdXRvZm9jdXMiLApAQCAt
NDg5LDE2ICszNDIsNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX2h0bWxfaW5wdXRfZWxlbWVu
dF9jbGFzc19pbml0KFdlYktpdERPTUhUTUxJbnB1dEVsZW1lbnRDbAogCiAgICAgZ19vYmplY3Rf
Y2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKICAgICAgICAgZ29iamVjdENsYXNzLAotICAgICAgICBQ
Uk9QX0RJUl9OQU1FLAotICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nKAotICAgICAgICAgICAg
ImRpci1uYW1lIiwKLSAgICAgICAgICAgICJIVE1MSW5wdXRFbGVtZW50OmRpci1uYW1lIiwKLSAg
ICAgICAgICAgICJyZWFkLXdyaXRlIGdjaGFyKiBIVE1MSW5wdXRFbGVtZW50OmRpci1uYW1lIiwK
LSAgICAgICAgICAgICIiLAotICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURXUklURSkpOwot
Ci0gICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAgZ29iamVjdENs
YXNzLAogICAgICAgICBQUk9QX0RJU0FCTEVELAogICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVh
bigKICAgICAgICAgICAgICJkaXNhYmxlZCIsCkBAIC01MjksNTYgKzM3Miw2IEBAIHN0YXRpYyB2
b2lkIHdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50X2NsYXNzX2luaXQoV2ViS2l0RE9NSFRN
TElucHV0RWxlbWVudENsCiAKICAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAog
ICAgICAgICBnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBST1BfRk9STV9BQ1RJT04sCi0gICAgICAg
IGdfcGFyYW1fc3BlY19zdHJpbmcoCi0gICAgICAgICAgICAiZm9ybS1hY3Rpb24iLAotICAgICAg
ICAgICAgIkhUTUxJbnB1dEVsZW1lbnQ6Zm9ybS1hY3Rpb24iLAotICAgICAgICAgICAgInJlYWQt
d3JpdGUgZ2NoYXIqIEhUTUxJbnB1dEVsZW1lbnQ6Zm9ybS1hY3Rpb24iLAotICAgICAgICAgICAg
IiIsCi0gICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBRFdSSVRFKSk7Ci0KLSAgICBnX29iamVj
dF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAotICAgICAgICBnb2JqZWN0Q2xhc3MsCi0gICAgICAg
IFBST1BfRk9STV9FTkNUWVBFLAotICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nKAotICAgICAg
ICAgICAgImZvcm0tZW5jdHlwZSIsCi0gICAgICAgICAgICAiSFRNTElucHV0RWxlbWVudDpmb3Jt
LWVuY3R5cGUiLAotICAgICAgICAgICAgInJlYWQtd3JpdGUgZ2NoYXIqIEhUTUxJbnB1dEVsZW1l
bnQ6Zm9ybS1lbmN0eXBlIiwKLSAgICAgICAgICAgICIiLAotICAgICAgICAgICAgV0VCS0lUX1BB
UkFNX1JFQURXUklURSkpOwotCi0gICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgK
LSAgICAgICAgZ29iamVjdENsYXNzLAotICAgICAgICBQUk9QX0ZPUk1fTUVUSE9ELAotICAgICAg
ICBnX3BhcmFtX3NwZWNfc3RyaW5nKAotICAgICAgICAgICAgImZvcm0tbWV0aG9kIiwKLSAgICAg
ICAgICAgICJIVE1MSW5wdXRFbGVtZW50OmZvcm0tbWV0aG9kIiwKLSAgICAgICAgICAgICJyZWFk
LXdyaXRlIGdjaGFyKiBIVE1MSW5wdXRFbGVtZW50OmZvcm0tbWV0aG9kIiwKLSAgICAgICAgICAg
ICIiLAotICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURXUklURSkpOwotCi0gICAgZ19vYmpl
Y3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAgZ29iamVjdENsYXNzLAotICAgICAg
ICBQUk9QX0ZPUk1fTk9fVkFMSURBVEUsCi0gICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKAot
ICAgICAgICAgICAgImZvcm0tbm8tdmFsaWRhdGUiLAotICAgICAgICAgICAgIkhUTUxJbnB1dEVs
ZW1lbnQ6Zm9ybS1uby12YWxpZGF0ZSIsCi0gICAgICAgICAgICAicmVhZC13cml0ZSBnYm9vbGVh
biBIVE1MSW5wdXRFbGVtZW50OmZvcm0tbm8tdmFsaWRhdGUiLAotICAgICAgICAgICAgRkFMU0Us
Ci0gICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBRFdSSVRFKSk7Ci0KLSAgICBnX29iamVjdF9j
bGFzc19pbnN0YWxsX3Byb3BlcnR5KAotICAgICAgICBnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBS
T1BfRk9STV9UQVJHRVQsCi0gICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcoCi0gICAgICAgICAg
ICAiZm9ybS10YXJnZXQiLAotICAgICAgICAgICAgIkhUTUxJbnB1dEVsZW1lbnQ6Zm9ybS10YXJn
ZXQiLAotICAgICAgICAgICAgInJlYWQtd3JpdGUgZ2NoYXIqIEhUTUxJbnB1dEVsZW1lbnQ6Zm9y
bS10YXJnZXQiLAotICAgICAgICAgICAgIiIsCi0gICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVB
RFdSSVRFKSk7Ci0KLSAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAotICAgICAg
ICBnb2JqZWN0Q2xhc3MsCiAgICAgICAgIFBST1BfSEVJR0hULAogICAgICAgICBnX3BhcmFtX3Nw
ZWNfdWxvbmcoCiAgICAgICAgICAgICAiaGVpZ2h0IiwKQEAgLTU5OSwyNiArMzkyLDYgQEAgc3Rh
dGljIHZvaWQgd2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1lbnRfY2xhc3NfaW5pdChXZWJLaXRE
T01IVE1MSW5wdXRFbGVtZW50Q2wKIAogICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVy
dHkoCiAgICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9MSVNULAotICAgICAgICBn
X3BhcmFtX3NwZWNfb2JqZWN0KAotICAgICAgICAgICAgImxpc3QiLAotICAgICAgICAgICAgIkhU
TUxJbnB1dEVsZW1lbnQ6bGlzdCIsCi0gICAgICAgICAgICAicmVhZC1vbmx5IFdlYktpdERPTUhU
TUxFbGVtZW50KiBIVE1MSW5wdXRFbGVtZW50Omxpc3QiLAotICAgICAgICAgICAgV0VCS0lUX0RP
TV9UWVBFX0hUTUxfRUxFTUVOVCwKLSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSkp
OwotCi0gICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAgZ29iamVj
dENsYXNzLAotICAgICAgICBQUk9QX01BWCwKLSAgICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZygK
LSAgICAgICAgICAgICJtYXgiLAotICAgICAgICAgICAgIkhUTUxJbnB1dEVsZW1lbnQ6bWF4IiwK
LSAgICAgICAgICAgICJyZWFkLXdyaXRlIGdjaGFyKiBIVE1MSW5wdXRFbGVtZW50Om1heCIsCi0g
ICAgICAgICAgICAiIiwKLSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEV1JJVEUpKTsKLQot
ICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFz
cywKICAgICAgICAgUFJPUF9NQVhfTEVOR1RILAogICAgICAgICBnX3BhcmFtX3NwZWNfbG9uZygK
ICAgICAgICAgICAgICJtYXgtbGVuZ3RoIiwKQEAgLTYyOSwxNiArNDAyLDYgQEAgc3RhdGljIHZv
aWQgd2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1lbnRfY2xhc3NfaW5pdChXZWJLaXRET01IVE1M
SW5wdXRFbGVtZW50Q2wKIAogICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCiAg
ICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9NSU4sCi0gICAgICAgIGdfcGFyYW1f
c3BlY19zdHJpbmcoCi0gICAgICAgICAgICAibWluIiwKLSAgICAgICAgICAgICJIVE1MSW5wdXRF
bGVtZW50Om1pbiIsCi0gICAgICAgICAgICAicmVhZC13cml0ZSBnY2hhciogSFRNTElucHV0RWxl
bWVudDptaW4iLAotICAgICAgICAgICAgIiIsCi0gICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVB
RFdSSVRFKSk7Ci0KLSAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAotICAgICAg
ICBnb2JqZWN0Q2xhc3MsCiAgICAgICAgIFBST1BfTVVMVElQTEUsCiAgICAgICAgIGdfcGFyYW1f
c3BlY19ib29sZWFuKAogICAgICAgICAgICAgIm11bHRpcGxlIiwKQEAgLTY1OSwyNiArNDIyLDYg
QEAgc3RhdGljIHZvaWQgd2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1lbnRfY2xhc3NfaW5pdChX
ZWJLaXRET01IVE1MSW5wdXRFbGVtZW50Q2wKIAogICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxf
cHJvcGVydHkoCiAgICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9QQVRURVJOLAot
ICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nKAotICAgICAgICAgICAgInBhdHRlcm4iLAotICAg
ICAgICAgICAgIkhUTUxJbnB1dEVsZW1lbnQ6cGF0dGVybiIsCi0gICAgICAgICAgICAicmVhZC13
cml0ZSBnY2hhciogSFRNTElucHV0RWxlbWVudDpwYXR0ZXJuIiwKLSAgICAgICAgICAgICIiLAot
ICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURXUklURSkpOwotCi0gICAgZ19vYmplY3RfY2xh
c3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAgZ29iamVjdENsYXNzLAotICAgICAgICBQUk9Q
X1BMQUNFSE9MREVSLAotICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nKAotICAgICAgICAgICAg
InBsYWNlaG9sZGVyIiwKLSAgICAgICAgICAgICJIVE1MSW5wdXRFbGVtZW50OnBsYWNlaG9sZGVy
IiwKLSAgICAgICAgICAgICJyZWFkLXdyaXRlIGdjaGFyKiBIVE1MSW5wdXRFbGVtZW50OnBsYWNl
aG9sZGVyIiwKLSAgICAgICAgICAgICIiLAotICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURX
UklURSkpOwotCi0gICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAg
Z29iamVjdENsYXNzLAogICAgICAgICBQUk9QX1JFQURfT05MWSwKICAgICAgICAgZ19wYXJhbV9z
cGVjX2Jvb2xlYW4oCiAgICAgICAgICAgICAicmVhZC1vbmx5IiwKQEAgLTY4OSwxNiArNDMyLDYg
QEAgc3RhdGljIHZvaWQgd2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1lbnRfY2xhc3NfaW5pdChX
ZWJLaXRET01IVE1MSW5wdXRFbGVtZW50Q2wKIAogICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxf
cHJvcGVydHkoCiAgICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9SRVFVSVJFRCwK
LSAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oCi0gICAgICAgICAgICAicmVxdWlyZWQiLAot
ICAgICAgICAgICAgIkhUTUxJbnB1dEVsZW1lbnQ6cmVxdWlyZWQiLAotICAgICAgICAgICAgInJl
YWQtd3JpdGUgZ2Jvb2xlYW4gSFRNTElucHV0RWxlbWVudDpyZXF1aXJlZCIsCi0gICAgICAgICAg
ICBGQUxTRSwKLSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEV1JJVEUpKTsKLQotICAgIGdf
b2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKICAg
ICAgICAgUFJPUF9TSVpFLAogICAgICAgICBnX3BhcmFtX3NwZWNfdWxvbmcoCiAgICAgICAgICAg
ICAic2l6ZSIsCkBAIC03MTksMTYgKzQ1Miw2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21faHRt
bF9pbnB1dF9lbGVtZW50X2NsYXNzX2luaXQoV2ViS2l0RE9NSFRNTElucHV0RWxlbWVudENsCiAK
ICAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAogICAgICAgICBnb2JqZWN0Q2xh
c3MsCi0gICAgICAgIFBST1BfU1RFUCwKLSAgICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZygKLSAg
ICAgICAgICAgICJzdGVwIiwKLSAgICAgICAgICAgICJIVE1MSW5wdXRFbGVtZW50OnN0ZXAiLAot
ICAgICAgICAgICAgInJlYWQtd3JpdGUgZ2NoYXIqIEhUTUxJbnB1dEVsZW1lbnQ6c3RlcCIsCi0g
ICAgICAgICAgICAiIiwKLSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEV1JJVEUpKTsKLQot
ICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFz
cywKICAgICAgICAgUFJPUF9UWVBFLAogICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nKAogICAg
ICAgICAgICAgInR5cGUiLApAQCAtNzU5LDE2ICs0ODIsNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRf
ZG9tX2h0bWxfaW5wdXRfZWxlbWVudF9jbGFzc19pbml0KFdlYktpdERPTUhUTUxJbnB1dEVsZW1l
bnRDbAogCiAgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKICAgICAgICAgZ29i
amVjdENsYXNzLAotICAgICAgICBQUk9QX1ZBTFVFX0FTX05VTUJFUiwKLSAgICAgICAgZ19wYXJh
bV9zcGVjX2RvdWJsZSgKLSAgICAgICAgICAgICJ2YWx1ZS1hcy1udW1iZXIiLAotICAgICAgICAg
ICAgIkhUTUxJbnB1dEVsZW1lbnQ6dmFsdWUtYXMtbnVtYmVyIiwKLSAgICAgICAgICAgICJyZWFk
LXdyaXRlIGdkb3VibGUgSFRNTElucHV0RWxlbWVudDp2YWx1ZS1hcy1udW1iZXIiLAotICAgICAg
ICAgICAgLUdfTUFYRE9VQkxFLCBHX01BWERPVUJMRSwgMCwKLSAgICAgICAgICAgIFdFQktJVF9Q
QVJBTV9SRUFEV1JJVEUpKTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHko
Ci0gICAgICAgIGdvYmplY3RDbGFzcywKICAgICAgICAgUFJPUF9XSURUSCwKICAgICAgICAgZ19w
YXJhbV9zcGVjX3Vsb25nKAogICAgICAgICAgICAgIndpZHRoIiwKQEAgLTc4OSwzNiArNTAyLDYg
QEAgc3RhdGljIHZvaWQgd2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1lbnRfY2xhc3NfaW5pdChX
ZWJLaXRET01IVE1MSW5wdXRFbGVtZW50Q2wKIAogICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxf
cHJvcGVydHkoCiAgICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9WQUxJRElUWSwK
LSAgICAgICAgZ19wYXJhbV9zcGVjX29iamVjdCgKLSAgICAgICAgICAgICJ2YWxpZGl0eSIsCi0g
ICAgICAgICAgICAiSFRNTElucHV0RWxlbWVudDp2YWxpZGl0eSIsCi0gICAgICAgICAgICAicmVh
ZC1vbmx5IFdlYktpdERPTVZhbGlkaXR5U3RhdGUqIEhUTUxJbnB1dEVsZW1lbnQ6dmFsaWRpdHki
LAotICAgICAgICAgICAgV0VCS0lUX0RPTV9UWVBFX1ZBTElESVRZX1NUQVRFLAotICAgICAgICAg
ICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7Ci0KLSAgICBnX29iamVjdF9jbGFzc19pbnN0YWxs
X3Byb3BlcnR5KAotICAgICAgICBnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBST1BfVkFMSURBVElP
Tl9NRVNTQUdFLAotICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nKAotICAgICAgICAgICAgInZh
bGlkYXRpb24tbWVzc2FnZSIsCi0gICAgICAgICAgICAiSFRNTElucHV0RWxlbWVudDp2YWxpZGF0
aW9uLW1lc3NhZ2UiLAotICAgICAgICAgICAgInJlYWQtb25seSBnY2hhciogSFRNTElucHV0RWxl
bWVudDp2YWxpZGF0aW9uLW1lc3NhZ2UiLAotICAgICAgICAgICAgIiIsCi0gICAgICAgICAgICBX
RUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJv
cGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9MQUJFTFMsCi0gICAg
ICAgIGdfcGFyYW1fc3BlY19vYmplY3QoCi0gICAgICAgICAgICAibGFiZWxzIiwKLSAgICAgICAg
ICAgICJIVE1MSW5wdXRFbGVtZW50OmxhYmVscyIsCi0gICAgICAgICAgICAicmVhZC1vbmx5IFdl
YktpdERPTU5vZGVMaXN0KiBIVE1MSW5wdXRFbGVtZW50OmxhYmVscyIsCi0gICAgICAgICAgICBX
RUJLSVRfRE9NX1RZUEVfTk9ERV9MSVNULAotICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURB
QkxFKSk7Ci0KLSAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAotICAgICAgICBn
b2JqZWN0Q2xhc3MsCiAgICAgICAgIFBST1BfQUxJR04sCiAgICAgICAgIGdfcGFyYW1fc3BlY19z
dHJpbmcoCiAgICAgICAgICAgICAiYWxpZ24iLApAQCAtODM5LDM2ICs1MjIsNiBAQCBzdGF0aWMg
dm9pZCB3ZWJraXRfZG9tX2h0bWxfaW5wdXRfZWxlbWVudF9jbGFzc19pbml0KFdlYktpdERPTUhU
TUxJbnB1dEVsZW1lbnRDbAogCiAgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgK
ICAgICAgICAgZ29iamVjdENsYXNzLAotICAgICAgICBQUk9QX0lOQ1JFTUVOVEFMLAotICAgICAg
ICBnX3BhcmFtX3NwZWNfYm9vbGVhbigKLSAgICAgICAgICAgICJpbmNyZW1lbnRhbCIsCi0gICAg
ICAgICAgICAiSFRNTElucHV0RWxlbWVudDppbmNyZW1lbnRhbCIsCi0gICAgICAgICAgICAicmVh
ZC13cml0ZSBnYm9vbGVhbiBIVE1MSW5wdXRFbGVtZW50OmluY3JlbWVudGFsIiwKLSAgICAgICAg
ICAgIEZBTFNFLAotICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURXUklURSkpOwotCi0gICAg
Z19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAgZ29iamVjdENsYXNzLAot
ICAgICAgICBQUk9QX0FVVE9DT1JSRUNULAotICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigK
LSAgICAgICAgICAgICJhdXRvY29ycmVjdCIsCi0gICAgICAgICAgICAiSFRNTElucHV0RWxlbWVu
dDphdXRvY29ycmVjdCIsCi0gICAgICAgICAgICAicmVhZC13cml0ZSBnYm9vbGVhbiBIVE1MSW5w
dXRFbGVtZW50OmF1dG9jb3JyZWN0IiwKLSAgICAgICAgICAgIEZBTFNFLAotICAgICAgICAgICAg
V0VCS0lUX1BBUkFNX1JFQURXUklURSkpOwotCi0gICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9w
cm9wZXJ0eSgKLSAgICAgICAgZ29iamVjdENsYXNzLAotICAgICAgICBQUk9QX0FVVE9DQVBJVEFM
SVpFLAotICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nKAotICAgICAgICAgICAgImF1dG9jYXBp
dGFsaXplIiwKLSAgICAgICAgICAgICJIVE1MSW5wdXRFbGVtZW50OmF1dG9jYXBpdGFsaXplIiwK
LSAgICAgICAgICAgICJyZWFkLXdyaXRlIGdjaGFyKiBIVE1MSW5wdXRFbGVtZW50OmF1dG9jYXBp
dGFsaXplIiwKLSAgICAgICAgICAgICIiLAotICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURX
UklURSkpOwotCi0gICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAg
Z29iamVjdENsYXNzLAogICAgICAgICBQUk9QX0NBUFRVUkUsCiAgICAgICAgIGdfcGFyYW1fc3Bl
Y19zdHJpbmcoCiAgICAgICAgICAgICAiY2FwdHVyZSIsCkBAIC04ODQsNTMgKzUzNyw2IEBAIHN0
YXRpYyB2b2lkIHdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50X2luaXQoV2ViS2l0RE9NSFRN
TElucHV0RWxlbWVudCogcmVxdWVzCiAgICAgVU5VU0VEX1BBUkFNKHJlcXVlc3QpOwogfQogCi12
b2lkIHdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50X3N0ZXBfdXAoV2ViS2l0RE9NSFRNTElu
cHV0RWxlbWVudCogc2VsZiwgZ2xvbmcgbiwgR0Vycm9yKiogZXJyb3IpCi17Ci0gICAgV2ViQ29y
ZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VC
S0lUX0RPTV9JU19IVE1MX0lOUFVUX0VMRU1FTlQoc2VsZikpOwotICAgIGdfcmV0dXJuX2lmX2Zh
aWwoIWVycm9yIHx8ICEqZXJyb3IpOwotICAgIFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQqIGl0
ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9
IDA7Ci0gICAgaXRlbS0+c3RlcFVwKG4sIGVjKTsKLSAgICBpZiAoZWMpIHsKLSAgICAgICAgV2Vi
Q29yZTo6RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uIGVjZGVzYyhlYyk7Ci0gICAgICAgIGdfc2V0
X2Vycm9yX2xpdGVyYWwoZXJyb3IsIGdfcXVhcmtfZnJvbV9zdHJpbmcoIldFQktJVF9ET00iKSwg
ZWNkZXNjLmNvZGUsIGVjZGVzYy5uYW1lKTsKLSAgICB9Ci19Ci0KLXZvaWQgd2Via2l0X2RvbV9o
dG1sX2lucHV0X2VsZW1lbnRfc3RlcF9kb3duKFdlYktpdERPTUhUTUxJbnB1dEVsZW1lbnQqIHNl
bGYsIGdsb25nIG4sIEdFcnJvcioqIGVycm9yKQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVh
ZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfSFRN
TF9JTlBVVF9FTEVNRU5UKHNlbGYpKTsKLSAgICBnX3JldHVybl9pZl9mYWlsKCFlcnJvciB8fCAh
KmVycm9yKTsKLSAgICBXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50KiBpdGVtID0gV2ViS2l0Ojpj
b3JlKHNlbGYpOwotICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGl0ZW0t
PnN0ZXBEb3duKG4sIGVjKTsKLSAgICBpZiAoZWMpIHsKLSAgICAgICAgV2ViQ29yZTo6RXhjZXB0
aW9uQ29kZURlc2NyaXB0aW9uIGVjZGVzYyhlYyk7Ci0gICAgICAgIGdfc2V0X2Vycm9yX2xpdGVy
YWwoZXJyb3IsIGdfcXVhcmtfZnJvbV9zdHJpbmcoIldFQktJVF9ET00iKSwgZWNkZXNjLmNvZGUs
IGVjZGVzYy5uYW1lKTsKLSAgICB9Ci19Ci0KLWdib29sZWFuIHdlYmtpdF9kb21faHRtbF9pbnB1
dF9lbGVtZW50X2NoZWNrX3ZhbGlkaXR5KFdlYktpdERPTUhUTUxJbnB1dEVsZW1lbnQqIHNlbGYp
Ci17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0
dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfSFRNTF9JTlBVVF9FTEVNRU5UKHNlbGYpLCBG
QUxTRSk7Ci0gICAgV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29y
ZShzZWxmKTsKLSAgICBnYm9vbGVhbiByZXN1bHQgPSBpdGVtLT5jaGVja1ZhbGlkaXR5KCk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfaW5wdXRfZWxlbWVu
dF9zZXRfY3VzdG9tX3ZhbGlkaXR5KFdlYktpdERPTUhUTUxJbnB1dEVsZW1lbnQqIHNlbGYsIGNv
bnN0IGdjaGFyKiBlcnJvcikKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUg
c3RhdGU7Ci0gICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxfSU5QVVRfRUxF
TUVOVChzZWxmKSk7Ci0gICAgZ19yZXR1cm5faWZfZmFpbChlcnJvcik7Ci0gICAgV2ViQ29yZTo6
SFRNTElucHV0RWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBXVEY6OlN0
cmluZyBjb252ZXJ0ZWRFcnJvciA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOChlcnJvcik7Ci0gICAg
aXRlbS0+c2V0Q3VzdG9tVmFsaWRpdHkoY29udmVydGVkRXJyb3IpOwotfQotCiB2b2lkIHdlYmtp
dF9kb21faHRtbF9pbnB1dF9lbGVtZW50X3NlbGVjdChXZWJLaXRET01IVE1MSW5wdXRFbGVtZW50
KiBzZWxmKQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKQEAg
LTkzOSwzNCArNTQ1LDYgQEAgdm9pZCB3ZWJraXRfZG9tX2h0bWxfaW5wdXRfZWxlbWVudF9zZWxl
Y3QoV2ViS2l0RE9NSFRNTElucHV0RWxlbWVudCogc2VsZikKICAgICBpdGVtLT5zZWxlY3QoKTsK
IH0KIAotdm9pZCB3ZWJraXRfZG9tX2h0bWxfaW5wdXRfZWxlbWVudF9zZXRfcmFuZ2VfdGV4dChX
ZWJLaXRET01IVE1MSW5wdXRFbGVtZW50KiBzZWxmLCBjb25zdCBnY2hhciogcmVwbGFjZW1lbnQs
IGd1bG9uZyBzdGFydCwgZ3Vsb25nIGVuZCwgY29uc3QgZ2NoYXIqIHNlbGVjdGlvbk1vZGUsIEdF
cnJvcioqIGVycm9yKQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0
ZTsKLSAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfSFRNTF9JTlBVVF9FTEVNRU5U
KHNlbGYpKTsKLSAgICBnX3JldHVybl9pZl9mYWlsKHJlcGxhY2VtZW50KTsKLSAgICBnX3JldHVy
bl9pZl9mYWlsKHNlbGVjdGlvbk1vZGUpOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwoIWVycm9yIHx8
ICEqZXJyb3IpOwotICAgIFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQqIGl0ZW0gPSBXZWJLaXQ6
OmNvcmUoc2VsZik7Ci0gICAgV1RGOjpTdHJpbmcgY29udmVydGVkUmVwbGFjZW1lbnQgPSBXVEY6
OlN0cmluZzo6ZnJvbVVURjgocmVwbGFjZW1lbnQpOwotICAgIFdURjo6U3RyaW5nIGNvbnZlcnRl
ZFNlbGVjdGlvbk1vZGUgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgoc2VsZWN0aW9uTW9kZSk7Ci0g
ICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaXRlbS0+c2V0UmFuZ2VUZXh0
KGNvbnZlcnRlZFJlcGxhY2VtZW50LCBzdGFydCwgZW5kLCBjb252ZXJ0ZWRTZWxlY3Rpb25Nb2Rl
LCBlYyk7Ci0gICAgaWYgKGVjKSB7Ci0gICAgICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGVEZXNj
cmlwdGlvbiBlY2Rlc2MoZWMpOwotICAgICAgICBnX3NldF9lcnJvcl9saXRlcmFsKGVycm9yLCBn
X3F1YXJrX2Zyb21fc3RyaW5nKCJXRUJLSVRfRE9NIiksIGVjZGVzYy5jb2RlLCBlY2Rlc2MubmFt
ZSk7Ci0gICAgfQotfQotCi12b2lkIHdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50X3NldF92
YWx1ZV9mb3JfdXNlcihXZWJLaXRET01IVE1MSW5wdXRFbGVtZW50KiBzZWxmLCBjb25zdCBnY2hh
ciogdmFsdWUpCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwot
ICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19IVE1MX0lOUFVUX0VMRU1FTlQoc2Vs
ZikpOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwodmFsdWUpOwotICAgIFdlYkNvcmU6OkhUTUxJbnB1
dEVsZW1lbnQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgV1RGOjpTdHJpbmcgY29u
dmVydGVkVmFsdWUgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgodmFsdWUpOwotICAgIGl0ZW0tPnNl
dFZhbHVlRm9yVXNlcihjb252ZXJ0ZWRWYWx1ZSk7Ci19Ci0KIGdjaGFyKiB3ZWJraXRfZG9tX2h0
bWxfaW5wdXRfZWxlbWVudF9nZXRfYWNjZXB0KFdlYktpdERPTUhUTUxJbnB1dEVsZW1lbnQqIHNl
bGYpCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwpAQCAtMTAw
NSwyNSArNTgzLDYgQEAgdm9pZCB3ZWJraXRfZG9tX2h0bWxfaW5wdXRfZWxlbWVudF9zZXRfYWx0
KFdlYktpdERPTUhUTUxJbnB1dEVsZW1lbnQqIHNlbGYsIGNvbnMKICAgICBpdGVtLT5zZXRBdHRy
aWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFdlYkNvcmU6OkhUTUxOYW1lczo6YWx0QXR0ciwg
Y29udmVydGVkVmFsdWUpOwogfQogCi1nY2hhciogd2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1l
bnRfZ2V0X2F1dG9jb21wbGV0ZShXZWJLaXRET01IVE1MSW5wdXRFbGVtZW50KiBzZWxmKQotewot
ICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92
YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxfSU5QVVRfRUxFTUVOVChzZWxmKSwgMCk7Ci0g
ICAgV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsK
LSAgICBnY2hhciogcmVzdWx0ID0gY29udmVydFRvVVRGOFN0cmluZyhpdGVtLT5hdXRvY29tcGxl
dGUoKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfaW5w
dXRfZWxlbWVudF9zZXRfYXV0b2NvbXBsZXRlKFdlYktpdERPTUhUTUxJbnB1dEVsZW1lbnQqIHNl
bGYsIGNvbnN0IGdjaGFyKiB2YWx1ZSkKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxs
U3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxfSU5Q
VVRfRUxFTUVOVChzZWxmKSk7Ci0gICAgZ19yZXR1cm5faWZfZmFpbCh2YWx1ZSk7Ci0gICAgV2Vi
Q29yZTo6SFRNTElucHV0RWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBX
VEY6OlN0cmluZyBjb252ZXJ0ZWRWYWx1ZSA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOCh2YWx1ZSk7
Ci0gICAgaXRlbS0+c2V0QXV0b2NvbXBsZXRlKGNvbnZlcnRlZFZhbHVlKTsKLX0KLQogZ2Jvb2xl
YW4gd2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1lbnRfZ2V0X2F1dG9mb2N1cyhXZWJLaXRET01I
VE1MSW5wdXRFbGVtZW50KiBzZWxmKQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxT
dGF0ZSBzdGF0ZTsKQEAgLTEwNzUsMjUgKzYzNCw2IEBAIHZvaWQgd2Via2l0X2RvbV9odG1sX2lu
cHV0X2VsZW1lbnRfc2V0X2NoZWNrZWQoV2ViS2l0RE9NSFRNTElucHV0RWxlbWVudCogc2VsZiwK
ICAgICBpdGVtLT5zZXRDaGVja2VkKHZhbHVlKTsKIH0KIAotZ2NoYXIqIHdlYmtpdF9kb21faHRt
bF9pbnB1dF9lbGVtZW50X2dldF9kaXJfbmFtZShXZWJLaXRET01IVE1MSW5wdXRFbGVtZW50KiBz
ZWxmKQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBn
X3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxfSU5QVVRfRUxFTUVOVChzZWxm
KSwgMCk7Ci0gICAgV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29y
ZShzZWxmKTsKLSAgICBnY2hhciogcmVzdWx0ID0gY29udmVydFRvVVRGOFN0cmluZyhpdGVtLT5h
dHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFdlYkNvcmU6OkhUTUxOYW1lczo6ZGlybmFt
ZUF0dHIpKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi12b2lkIHdlYmtpdF9kb21faHRtbF9p
bnB1dF9lbGVtZW50X3NldF9kaXJfbmFtZShXZWJLaXRET01IVE1MSW5wdXRFbGVtZW50KiBzZWxm
LCBjb25zdCBnY2hhciogdmFsdWUpCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0
YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19IVE1MX0lOUFVU
X0VMRU1FTlQoc2VsZikpOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwodmFsdWUpOwotICAgIFdlYkNv
cmU6OkhUTUxJbnB1dEVsZW1lbnQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgV1RG
OjpTdHJpbmcgY29udmVydGVkVmFsdWUgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgodmFsdWUpOwot
ICAgIGl0ZW0tPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oV2ViQ29yZTo6SFRN
TE5hbWVzOjpkaXJuYW1lQXR0ciwgY29udmVydGVkVmFsdWUpOwotfQotCiBnYm9vbGVhbiB3ZWJr
aXRfZG9tX2h0bWxfaW5wdXRfZWxlbWVudF9nZXRfZGlzYWJsZWQoV2ViS2l0RE9NSFRNTElucHV0
RWxlbWVudCogc2VsZikKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3Rh
dGU7CkBAIC0xMTM5LDk5ICs2NzksNiBAQCB2b2lkIHdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVt
ZW50X3NldF9maWxlcyhXZWJLaXRET01IVE1MSW5wdXRFbGVtZW50KiBzZWxmLCBXZQogICAgIGl0
ZW0tPnNldEZpbGVzKGNvbnZlcnRlZFZhbHVlKTsKIH0KIAotZ2NoYXIqIHdlYmtpdF9kb21faHRt
bF9pbnB1dF9lbGVtZW50X2dldF9mb3JtX2FjdGlvbihXZWJLaXRET01IVE1MSW5wdXRFbGVtZW50
KiBzZWxmKQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxfSU5QVVRfRUxFTUVOVChz
ZWxmKSwgMCk7Ci0gICAgV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudCogaXRlbSA9IFdlYktpdDo6
Y29yZShzZWxmKTsKLSAgICBnY2hhciogcmVzdWx0ID0gY29udmVydFRvVVRGOFN0cmluZyhpdGVt
LT5mb3JtQWN0aW9uKCkpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXZvaWQgd2Via2l0X2Rv
bV9odG1sX2lucHV0X2VsZW1lbnRfc2V0X2Zvcm1fYWN0aW9uKFdlYktpdERPTUhUTUxJbnB1dEVs
ZW1lbnQqIHNlbGYsIGNvbnN0IGdjaGFyKiB2YWx1ZSkKLXsKLSAgICBXZWJDb3JlOjpKU01haW5U
aHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lT
X0hUTUxfSU5QVVRfRUxFTUVOVChzZWxmKSk7Ci0gICAgZ19yZXR1cm5faWZfZmFpbCh2YWx1ZSk7
Ci0gICAgV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxm
KTsKLSAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRWYWx1ZSA9IFdURjo6U3RyaW5nOjpmcm9tVVRG
OCh2YWx1ZSk7Ci0gICAgaXRlbS0+c2V0Rm9ybUFjdGlvbihjb252ZXJ0ZWRWYWx1ZSk7Ci19Ci0K
LWdjaGFyKiB3ZWJraXRfZG9tX2h0bWxfaW5wdXRfZWxlbWVudF9nZXRfZm9ybV9lbmN0eXBlKFdl
YktpdERPTUhUTUxJbnB1dEVsZW1lbnQqIHNlbGYpCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhy
ZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01f
SVNfSFRNTF9JTlBVVF9FTEVNRU5UKHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpIVE1MSW5wdXRF
bGVtZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdjaGFyKiByZXN1bHQgPSBj
b252ZXJ0VG9VVEY4U3RyaW5nKGl0ZW0tPmZvcm1FbmN0eXBlKCkpOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci0KLXZvaWQgd2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1lbnRfc2V0X2Zvcm1fZW5j
dHlwZShXZWJLaXRET01IVE1MSW5wdXRFbGVtZW50KiBzZWxmLCBjb25zdCBnY2hhciogdmFsdWUp
Ci17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0
dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19IVE1MX0lOUFVUX0VMRU1FTlQoc2VsZikpOwotICAg
IGdfcmV0dXJuX2lmX2ZhaWwodmFsdWUpOwotICAgIFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQq
IGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgV1RGOjpTdHJpbmcgY29udmVydGVkVmFs
dWUgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgodmFsdWUpOwotICAgIGl0ZW0tPnNldEZvcm1FbmN0
eXBlKGNvbnZlcnRlZFZhbHVlKTsKLX0KLQotZ2NoYXIqIHdlYmtpdF9kb21faHRtbF9pbnB1dF9l
bGVtZW50X2dldF9mb3JtX21ldGhvZChXZWJLaXRET01IVE1MSW5wdXRFbGVtZW50KiBzZWxmKQot
ewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVy
bl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxfSU5QVVRfRUxFTUVOVChzZWxmKSwgMCk7
Ci0gICAgV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxm
KTsKLSAgICBnY2hhciogcmVzdWx0ID0gY29udmVydFRvVVRGOFN0cmluZyhpdGVtLT5mb3JtTWV0
aG9kKCkpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXZvaWQgd2Via2l0X2RvbV9odG1sX2lu
cHV0X2VsZW1lbnRfc2V0X2Zvcm1fbWV0aG9kKFdlYktpdERPTUhUTUxJbnB1dEVsZW1lbnQqIHNl
bGYsIGNvbnN0IGdjaGFyKiB2YWx1ZSkKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxs
U3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxfSU5Q
VVRfRUxFTUVOVChzZWxmKSk7Ci0gICAgZ19yZXR1cm5faWZfZmFpbCh2YWx1ZSk7Ci0gICAgV2Vi
Q29yZTo6SFRNTElucHV0RWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBX
VEY6OlN0cmluZyBjb252ZXJ0ZWRWYWx1ZSA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOCh2YWx1ZSk7
Ci0gICAgaXRlbS0+c2V0Rm9ybU1ldGhvZChjb252ZXJ0ZWRWYWx1ZSk7Ci19Ci0KLWdib29sZWFu
IHdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50X2dldF9mb3JtX25vX3ZhbGlkYXRlKFdlYktp
dERPTUhUTUxJbnB1dEVsZW1lbnQqIHNlbGYpCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFk
TnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNf
SFRNTF9JTlBVVF9FTEVNRU5UKHNlbGYpLCBGQUxTRSk7Ci0gICAgV2ViQ29yZTo6SFRNTElucHV0
RWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBnYm9vbGVhbiByZXN1bHQg
PSBpdGVtLT5oYXNBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFdlYkNvcmU6OkhUTUxO
YW1lczo6Zm9ybW5vdmFsaWRhdGVBdHRyKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi12b2lk
IHdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50X3NldF9mb3JtX25vX3ZhbGlkYXRlKFdlYktp
dERPTUhUTUxJbnB1dEVsZW1lbnQqIHNlbGYsIGdib29sZWFuIHZhbHVlKQotewotICAgIFdlYkNv
cmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl9pZl9mYWlsKFdF
QktJVF9ET01fSVNfSFRNTF9JTlBVVF9FTEVNRU5UKHNlbGYpKTsKLSAgICBXZWJDb3JlOjpIVE1M
SW5wdXRFbGVtZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGl0ZW0tPnNldEJv
b2xlYW5BdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpmb3Jtbm92YWxpZGF0ZUF0dHIsIHZh
bHVlKTsKLX0KLQotZ2NoYXIqIHdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50X2dldF9mb3Jt
X3RhcmdldChXZWJLaXRET01IVE1MSW5wdXRFbGVtZW50KiBzZWxmKQotewotICAgIFdlYkNvcmU6
OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChX
RUJLSVRfRE9NX0lTX0hUTUxfSU5QVVRfRUxFTUVOVChzZWxmKSwgMCk7Ci0gICAgV2ViQ29yZTo6
SFRNTElucHV0RWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBnY2hhciog
cmVzdWx0ID0gY29udmVydFRvVVRGOFN0cmluZyhpdGVtLT5hdHRyaWJ1dGVXaXRob3V0U3luY2hy
b25pemF0aW9uKFdlYkNvcmU6OkhUTUxOYW1lczo6Zm9ybXRhcmdldEF0dHIpKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotCi12b2lkIHdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50X3NldF9m
b3JtX3RhcmdldChXZWJLaXRET01IVE1MSW5wdXRFbGVtZW50KiBzZWxmLCBjb25zdCBnY2hhciog
dmFsdWUpCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAg
IGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19IVE1MX0lOUFVUX0VMRU1FTlQoc2VsZikp
OwotICAgIGdfcmV0dXJuX2lmX2ZhaWwodmFsdWUpOwotICAgIFdlYkNvcmU6OkhUTUxJbnB1dEVs
ZW1lbnQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgV1RGOjpTdHJpbmcgY29udmVy
dGVkVmFsdWUgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgodmFsdWUpOwotICAgIGl0ZW0tPnNldEF0
dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oV2ViQ29yZTo6SFRNTE5hbWVzOjpmb3JtdGFy
Z2V0QXR0ciwgY29udmVydGVkVmFsdWUpOwotfQotCiBndWxvbmcgd2Via2l0X2RvbV9odG1sX2lu
cHV0X2VsZW1lbnRfZ2V0X2hlaWdodChXZWJLaXRET01IVE1MSW5wdXRFbGVtZW50KiBzZWxmKQog
ewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKQEAgLTEyNjYsNDAg
KzcxMyw2IEBAIHZvaWQgd2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1lbnRfc2V0X2luZGV0ZXJt
aW5hdGUoV2ViS2l0RE9NSFRNTElucHV0RWxlbWVudCoKICAgICBpdGVtLT5zZXRJbmRldGVybWlu
YXRlKHZhbHVlKTsKIH0KIAotV2ViS2l0RE9NSFRNTEVsZW1lbnQqIHdlYmtpdF9kb21faHRtbF9p
bnB1dF9lbGVtZW50X2dldF9saXN0KFdlYktpdERPTUhUTUxJbnB1dEVsZW1lbnQqIHNlbGYpCi17
Ci0jaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCi0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFk
TnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNf
SFRNTF9JTlBVVF9FTEVNRU5UKHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpIVE1MSW5wdXRFbGVt
ZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpIVE1M
RWxlbWVudD4gZ29iamVjdFJlc3VsdCA9IFdURjo6Z2V0UHRyKGl0ZW0tPmxpc3QoKSk7Ci0gICAg
cmV0dXJuIFdlYktpdDo6a2l0KGdvYmplY3RSZXN1bHQuZ2V0KCkpOwotI2Vsc2UKLSAgICBVTlVT
RURfUEFSQU0oc2VsZik7Ci0gICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiRGF0
YWxpc3QgRWxlbWVudCIpCi0gICAgcmV0dXJuIDA7Ci0jZW5kaWYgLyogRU5BQkxFKERBVEFMSVNU
X0VMRU1FTlQpICovCi19Ci0KLWdjaGFyKiB3ZWJraXRfZG9tX2h0bWxfaW5wdXRfZWxlbWVudF9n
ZXRfbWF4KFdlYktpdERPTUhUTUxJbnB1dEVsZW1lbnQqIHNlbGYpCi17Ci0gICAgV2ViQ29yZTo6
SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdF
QktJVF9ET01fSVNfSFRNTF9JTlBVVF9FTEVNRU5UKHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpI
VE1MSW5wdXRFbGVtZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdjaGFyKiBy
ZXN1bHQgPSBjb252ZXJ0VG9VVEY4U3RyaW5nKGl0ZW0tPmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24oV2ViQ29yZTo6SFRNTE5hbWVzOjptYXhBdHRyKSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfaW5wdXRfZWxlbWVudF9zZXRfbWF4KFdlYktp
dERPTUhUTUxJbnB1dEVsZW1lbnQqIHNlbGYsIGNvbnN0IGdjaGFyKiB2YWx1ZSkKLXsKLSAgICBX
ZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5faWZfZmFp
bChXRUJLSVRfRE9NX0lTX0hUTUxfSU5QVVRfRUxFTUVOVChzZWxmKSk7Ci0gICAgZ19yZXR1cm5f
aWZfZmFpbCh2YWx1ZSk7Ci0gICAgV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudCogaXRlbSA9IFdl
YktpdDo6Y29yZShzZWxmKTsKLSAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRWYWx1ZSA9IFdURjo6
U3RyaW5nOjpmcm9tVVRGOCh2YWx1ZSk7Ci0gICAgaXRlbS0+c2V0QXR0cmlidXRlV2l0aG91dFN5
bmNocm9uaXphdGlvbihXZWJDb3JlOjpIVE1MTmFtZXM6Om1heEF0dHIsIGNvbnZlcnRlZFZhbHVl
KTsKLX0KLQogZ2xvbmcgd2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1lbnRfZ2V0X21heF9sZW5n
dGgoV2ViS2l0RE9NSFRNTElucHV0RWxlbWVudCogc2VsZikKIHsKICAgICBXZWJDb3JlOjpKU01h
aW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CkBAIC0xMzIzLDI1ICs3MzYsNiBAQCB2b2lkIHdlYmtp
dF9kb21faHRtbF9pbnB1dF9lbGVtZW50X3NldF9tYXhfbGVuZ3RoKFdlYktpdERPTUhUTUxJbnB1
dEVsZW1lbnQqIHNlbAogICAgIH0KIH0KIAotZ2NoYXIqIHdlYmtpdF9kb21faHRtbF9pbnB1dF9l
bGVtZW50X2dldF9taW4oV2ViS2l0RE9NSFRNTElucHV0RWxlbWVudCogc2VsZikKLXsKLSAgICBX
ZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoV0VCS0lUX0RPTV9JU19IVE1MX0lOUFVUX0VMRU1FTlQoc2VsZiksIDApOwotICAgIFdl
YkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAg
Z2NoYXIqIHJlc3VsdCA9IGNvbnZlcnRUb1VURjhTdHJpbmcoaXRlbS0+YXR0cmlidXRlV2l0aG91
dFN5bmNocm9uaXphdGlvbihXZWJDb3JlOjpIVE1MTmFtZXM6Om1pbkF0dHIpKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotCi12b2lkIHdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50X3NldF9t
aW4oV2ViS2l0RE9NSFRNTElucHV0RWxlbWVudCogc2VsZiwgY29uc3QgZ2NoYXIqIHZhbHVlKQot
ewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVy
bl9pZl9mYWlsKFdFQktJVF9ET01fSVNfSFRNTF9JTlBVVF9FTEVNRU5UKHNlbGYpKTsKLSAgICBn
X3JldHVybl9pZl9mYWlsKHZhbHVlKTsKLSAgICBXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50KiBp
dGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIFdURjo6U3RyaW5nIGNvbnZlcnRlZFZhbHVl
ID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KHZhbHVlKTsKLSAgICBpdGVtLT5zZXRBdHRyaWJ1dGVX
aXRob3V0U3luY2hyb25pemF0aW9uKFdlYkNvcmU6OkhUTUxOYW1lczo6bWluQXR0ciwgY29udmVy
dGVkVmFsdWUpOwotfQotCiBnYm9vbGVhbiB3ZWJraXRfZG9tX2h0bWxfaW5wdXRfZWxlbWVudF9n
ZXRfbXVsdGlwbGUoV2ViS2l0RE9NSFRNTElucHV0RWxlbWVudCogc2VsZikKIHsKICAgICBXZWJD
b3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CkBAIC0xMzc4LDQ0ICs3NzIsNiBAQCB2
b2lkIHdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50X3NldF9uYW1lKFdlYktpdERPTUhUTUxJ
bnB1dEVsZW1lbnQqIHNlbGYsIGNvbgogICAgIGl0ZW0tPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5j
aHJvbml6YXRpb24oV2ViQ29yZTo6SFRNTE5hbWVzOjpuYW1lQXR0ciwgY29udmVydGVkVmFsdWUp
OwogfQogCi1nY2hhciogd2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1lbnRfZ2V0X3BhdHRlcm4o
V2ViS2l0RE9NSFRNTElucHV0RWxlbWVudCogc2VsZikKLXsKLSAgICBXZWJDb3JlOjpKU01haW5U
aHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RP
TV9JU19IVE1MX0lOUFVUX0VMRU1FTlQoc2VsZiksIDApOwotICAgIFdlYkNvcmU6OkhUTUxJbnB1
dEVsZW1lbnQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ2NoYXIqIHJlc3VsdCA9
IGNvbnZlcnRUb1VURjhTdHJpbmcoaXRlbS0+YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlv
bihXZWJDb3JlOjpIVE1MTmFtZXM6OnBhdHRlcm5BdHRyKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfaW5wdXRfZWxlbWVudF9zZXRfcGF0dGVybihXZWJL
aXRET01IVE1MSW5wdXRFbGVtZW50KiBzZWxmLCBjb25zdCBnY2hhciogdmFsdWUpCi17Ci0gICAg
V2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX2lmX2Zh
aWwoV0VCS0lUX0RPTV9JU19IVE1MX0lOUFVUX0VMRU1FTlQoc2VsZikpOwotICAgIGdfcmV0dXJu
X2lmX2ZhaWwodmFsdWUpOwotICAgIFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQqIGl0ZW0gPSBX
ZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgV1RGOjpTdHJpbmcgY29udmVydGVkVmFsdWUgPSBXVEY6
OlN0cmluZzo6ZnJvbVVURjgodmFsdWUpOwotICAgIGl0ZW0tPnNldEF0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24oV2ViQ29yZTo6SFRNTE5hbWVzOjpwYXR0ZXJuQXR0ciwgY29udmVydGVk
VmFsdWUpOwotfQotCi1nY2hhciogd2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1lbnRfZ2V0X3Bs
YWNlaG9sZGVyKFdlYktpdERPTUhUTUxJbnB1dEVsZW1lbnQqIHNlbGYpCi17Ci0gICAgV2ViQ29y
ZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWls
KFdFQktJVF9ET01fSVNfSFRNTF9JTlBVVF9FTEVNRU5UKHNlbGYpLCAwKTsKLSAgICBXZWJDb3Jl
OjpIVE1MSW5wdXRFbGVtZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdjaGFy
KiByZXN1bHQgPSBjb252ZXJ0VG9VVEY4U3RyaW5nKGl0ZW0tPmF0dHJpYnV0ZVdpdGhvdXRTeW5j
aHJvbml6YXRpb24oV2ViQ29yZTo6SFRNTE5hbWVzOjpwbGFjZWhvbGRlckF0dHIpKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotCi12b2lkIHdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50X3Nl
dF9wbGFjZWhvbGRlcihXZWJLaXRET01IVE1MSW5wdXRFbGVtZW50KiBzZWxmLCBjb25zdCBnY2hh
ciogdmFsdWUpCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwot
ICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19IVE1MX0lOUFVUX0VMRU1FTlQoc2Vs
ZikpOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwodmFsdWUpOwotICAgIFdlYkNvcmU6OkhUTUxJbnB1
dEVsZW1lbnQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgV1RGOjpTdHJpbmcgY29u
dmVydGVkVmFsdWUgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgodmFsdWUpOwotICAgIGl0ZW0tPnNl
dEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oV2ViQ29yZTo6SFRNTE5hbWVzOjpwbGFj
ZWhvbGRlckF0dHIsIGNvbnZlcnRlZFZhbHVlKTsKLX0KLQogZ2Jvb2xlYW4gd2Via2l0X2RvbV9o
dG1sX2lucHV0X2VsZW1lbnRfZ2V0X3JlYWRfb25seShXZWJLaXRET01IVE1MSW5wdXRFbGVtZW50
KiBzZWxmKQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKQEAg
LTE0MzMsMjMgKzc4OSw2IEBAIHZvaWQgd2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1lbnRfc2V0
X3JlYWRfb25seShXZWJLaXRET01IVE1MSW5wdXRFbGVtZW50KiBzZWxmCiAgICAgaXRlbS0+c2V0
Qm9vbGVhbkF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJlYWRvbmx5QXR0ciwgdmFsdWUp
OwogfQogCi1nYm9vbGVhbiB3ZWJraXRfZG9tX2h0bWxfaW5wdXRfZWxlbWVudF9nZXRfcmVxdWly
ZWQoV2ViS2l0RE9NSFRNTElucHV0RWxlbWVudCogc2VsZikKLXsKLSAgICBXZWJDb3JlOjpKU01h
aW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lU
X0RPTV9JU19IVE1MX0lOUFVUX0VMRU1FTlQoc2VsZiksIEZBTFNFKTsKLSAgICBXZWJDb3JlOjpI
VE1MSW5wdXRFbGVtZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdib29sZWFu
IHJlc3VsdCA9IGl0ZW0tPmhhc0F0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oV2ViQ29y
ZTo6SFRNTE5hbWVzOjpyZXF1aXJlZEF0dHIpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXZv
aWQgd2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1lbnRfc2V0X3JlcXVpcmVkKFdlYktpdERPTUhU
TUxJbnB1dEVsZW1lbnQqIHNlbGYsIGdib29sZWFuIHZhbHVlKQotewotICAgIFdlYkNvcmU6OkpT
TWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9E
T01fSVNfSFRNTF9JTlBVVF9FTEVNRU5UKHNlbGYpKTsKLSAgICBXZWJDb3JlOjpIVE1MSW5wdXRF
bGVtZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGl0ZW0tPnNldEJvb2xlYW5B
dHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpyZXF1aXJlZEF0dHIsIHZhbHVlKTsKLX0KLQog
Z3Vsb25nIHdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50X2dldF9zaXplKFdlYktpdERPTUhU
TUxJbnB1dEVsZW1lbnQqIHNlbGYpCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0
YXRlIHN0YXRlOwpAQCAtMTQ5MiwyNSArODMxLDYgQEAgdm9pZCB3ZWJraXRfZG9tX2h0bWxfaW5w
dXRfZWxlbWVudF9zZXRfc3JjKFdlYktpdERPTUhUTUxJbnB1dEVsZW1lbnQqIHNlbGYsIGNvbnMK
ICAgICBpdGVtLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFdlYkNvcmU6OkhU
TUxOYW1lczo6c3JjQXR0ciwgY29udmVydGVkVmFsdWUpOwogfQogCi1nY2hhciogd2Via2l0X2Rv
bV9odG1sX2lucHV0X2VsZW1lbnRfZ2V0X3N0ZXAoV2ViS2l0RE9NSFRNTElucHV0RWxlbWVudCog
c2VsZikKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAg
Z19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19IVE1MX0lOUFVUX0VMRU1FTlQoc2Vs
ZiksIDApOwotICAgIFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQqIGl0ZW0gPSBXZWJLaXQ6OmNv
cmUoc2VsZik7Ci0gICAgZ2NoYXIqIHJlc3VsdCA9IGNvbnZlcnRUb1VURjhTdHJpbmcoaXRlbS0+
YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihXZWJDb3JlOjpIVE1MTmFtZXM6OnN0ZXBB
dHRyKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfaW5w
dXRfZWxlbWVudF9zZXRfc3RlcChXZWJLaXRET01IVE1MSW5wdXRFbGVtZW50KiBzZWxmLCBjb25z
dCBnY2hhciogdmFsdWUpCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0
YXRlOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19IVE1MX0lOUFVUX0VMRU1F
TlQoc2VsZikpOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwodmFsdWUpOwotICAgIFdlYkNvcmU6OkhU
TUxJbnB1dEVsZW1lbnQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgV1RGOjpTdHJp
bmcgY29udmVydGVkVmFsdWUgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgodmFsdWUpOwotICAgIGl0
ZW0tPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oV2ViQ29yZTo6SFRNTE5hbWVz
OjpzdGVwQXR0ciwgY29udmVydGVkVmFsdWUpOwotfQotCiBnY2hhciogd2Via2l0X2RvbV9odG1s
X2lucHV0X2VsZW1lbnRfZ2V0X2lucHV0X3R5cGUoV2ViS2l0RE9NSFRNTElucHV0RWxlbWVudCog
c2VsZikKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CkBAIC0x
NTY4LDI5ICs4ODgsNiBAQCB2b2lkIHdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50X3NldF92
YWx1ZShXZWJLaXRET01IVE1MSW5wdXRFbGVtZW50KiBzZWxmLCBjbwogICAgIGl0ZW0tPnNldFZh
bHVlKGNvbnZlcnRlZFZhbHVlKTsKIH0KIAotZ2RvdWJsZSB3ZWJraXRfZG9tX2h0bWxfaW5wdXRf
ZWxlbWVudF9nZXRfdmFsdWVfYXNfbnVtYmVyKFdlYktpdERPTUhUTUxJbnB1dEVsZW1lbnQqIHNl
bGYpCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdf
cmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfSFRNTF9JTlBVVF9FTEVNRU5UKHNlbGYp
LCAwKTsKLSAgICBXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50KiBpdGVtID0gV2ViS2l0Ojpjb3Jl
KHNlbGYpOwotICAgIGdkb3VibGUgcmVzdWx0ID0gaXRlbS0+dmFsdWVBc051bWJlcigpOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci0KLXZvaWQgd2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1lbnRf
c2V0X3ZhbHVlX2FzX251bWJlcihXZWJLaXRET01IVE1MSW5wdXRFbGVtZW50KiBzZWxmLCBnZG91
YmxlIHZhbHVlLCBHRXJyb3IqKiBlcnJvcikKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWRO
dWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxf
SU5QVVRfRUxFTUVOVChzZWxmKSk7Ci0gICAgZ19yZXR1cm5faWZfZmFpbCghZXJyb3IgfHwgISpl
cnJvcik7Ci0gICAgV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29y
ZShzZWxmKTsKLSAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBpdGVtLT5z
ZXRWYWx1ZUFzTnVtYmVyKHZhbHVlLCBlYyk7Ci0gICAgaWYgKGVjKSB7Ci0gICAgICAgIFdlYkNv
cmU6OkV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiBlY2Rlc2MoZWMpOwotICAgICAgICBnX3NldF9l
cnJvcl9saXRlcmFsKGVycm9yLCBnX3F1YXJrX2Zyb21fc3RyaW5nKCJXRUJLSVRfRE9NIiksIGVj
ZGVzYy5jb2RlLCBlY2Rlc2MubmFtZSk7Ci0gICAgfQotfQotCiBndWxvbmcgd2Via2l0X2RvbV9o
dG1sX2lucHV0X2VsZW1lbnRfZ2V0X3dpZHRoKFdlYktpdERPTUhUTUxJbnB1dEVsZW1lbnQqIHNl
bGYpCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwpAQCAtMTYx
NywzMyArOTE0LDYgQEAgZ2Jvb2xlYW4gd2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1lbnRfZ2V0
X3dpbGxfdmFsaWRhdGUoV2ViS2l0RE9NSFRNTElucHV0RWxlbWUKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCi1XZWJLaXRET01WYWxpZGl0eVN0YXRlKiB3ZWJraXRfZG9tX2h0bWxfaW5wdXRfZWxl
bWVudF9nZXRfdmFsaWRpdHkoV2ViS2l0RE9NSFRNTElucHV0RWxlbWVudCogc2VsZikKLXsKLSAg
ICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFs
X2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19IVE1MX0lOUFVUX0VMRU1FTlQoc2VsZiksIDApOwotICAg
IFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0g
ICAgUmVmUHRyPFdlYkNvcmU6OlZhbGlkaXR5U3RhdGU+IGdvYmplY3RSZXN1bHQgPSBXVEY6Omdl
dFB0cihpdGVtLT52YWxpZGl0eSgpKTsKLSAgICByZXR1cm4gV2ViS2l0OjpraXQoZ29iamVjdFJl
c3VsdC5nZXQoKSk7Ci19Ci0KLWdjaGFyKiB3ZWJraXRfZG9tX2h0bWxfaW5wdXRfZWxlbWVudF9n
ZXRfdmFsaWRhdGlvbl9tZXNzYWdlKFdlYktpdERPTUhUTUxJbnB1dEVsZW1lbnQqIHNlbGYpCi17
Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfSFRNTF9JTlBVVF9FTEVNRU5UKHNlbGYpLCAwKTsK
LSAgICBXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYp
OwotICAgIGdjaGFyKiByZXN1bHQgPSBjb252ZXJ0VG9VVEY4U3RyaW5nKGl0ZW0tPnZhbGlkYXRp
b25NZXNzYWdlKCkpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLVdlYktpdERPTU5vZGVMaXN0
KiB3ZWJraXRfZG9tX2h0bWxfaW5wdXRfZWxlbWVudF9nZXRfbGFiZWxzKFdlYktpdERPTUhUTUxJ
bnB1dEVsZW1lbnQqIHNlbGYpCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRl
IHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfSFRNTF9JTlBV
VF9FTEVNRU5UKHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50KiBpdGVt
ID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpOb2RlTGlzdD4gZ29i
amVjdFJlc3VsdCA9IFdURjo6Z2V0UHRyKGl0ZW0tPmxhYmVscygpKTsKLSAgICByZXR1cm4gV2Vi
S2l0OjpraXQoZ29iamVjdFJlc3VsdC5nZXQoKSk7Ci19Ci0KIGdjaGFyKiB3ZWJraXRfZG9tX2h0
bWxfaW5wdXRfZWxlbWVudF9nZXRfYWxpZ24oV2ViS2l0RE9NSFRNTElucHV0RWxlbWVudCogc2Vs
ZikKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CkBAIC0xNjgy
LDgzICs5NTIsNiBAQCB2b2lkIHdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50X3NldF91c2Vf
bWFwKFdlYktpdERPTUhUTUxJbnB1dEVsZW1lbnQqIHNlbGYsCiAgICAgaXRlbS0+c2V0QXR0cmli
dXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihXZWJDb3JlOjpIVE1MTmFtZXM6OnVzZW1hcEF0dHIs
IGNvbnZlcnRlZFZhbHVlKTsKIH0KIAotZ2Jvb2xlYW4gd2Via2l0X2RvbV9odG1sX2lucHV0X2Vs
ZW1lbnRfZ2V0X2luY3JlbWVudGFsKFdlYktpdERPTUhUTUxJbnB1dEVsZW1lbnQqIHNlbGYpCi17
Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfSFRNTF9JTlBVVF9FTEVNRU5UKHNlbGYpLCBGQUxT
RSk7Ci0gICAgV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShz
ZWxmKTsKLSAgICBnYm9vbGVhbiByZXN1bHQgPSBpdGVtLT5oYXNBdHRyaWJ1dGVXaXRob3V0U3lu
Y2hyb25pemF0aW9uKFdlYkNvcmU6OkhUTUxOYW1lczo6aW5jcmVtZW50YWxBdHRyKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotCi12b2lkIHdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50X3Nl
dF9pbmNyZW1lbnRhbChXZWJLaXRET01IVE1MSW5wdXRFbGVtZW50KiBzZWxmLCBnYm9vbGVhbiB2
YWx1ZSkKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAg
Z19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxfSU5QVVRfRUxFTUVOVChzZWxmKSk7
Ci0gICAgV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxm
KTsKLSAgICBpdGVtLT5zZXRCb29sZWFuQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6aW5j
cmVtZW50YWxBdHRyLCB2YWx1ZSk7Ci19Ci0KLWdib29sZWFuIHdlYmtpdF9kb21faHRtbF9pbnB1
dF9lbGVtZW50X2dldF9hdXRvY29ycmVjdChXZWJLaXRET01IVE1MSW5wdXRFbGVtZW50KiBzZWxm
KQotewotI2lmIEVOQUJMRShJT1NfQVVUT0NPUlJFQ1RfQU5EX0FVVE9DQVBJVEFMSVpFKQotICAg
IFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxf
aWZfZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxfSU5QVVRfRUxFTUVOVChzZWxmKSwgRkFMU0UpOwot
ICAgIFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7
Ci0gICAgZ2Jvb2xlYW4gcmVzdWx0ID0gaXRlbS0+YXV0b2NvcnJlY3QoKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc2VsZik7Ci0gICAgV0VCS0lUX1dBUk5f
RkVBVFVSRV9OT1RfUFJFU0VOVCgiSW9zIEF1dG9jb3JyZWN0IEFuZCBBdXRvY2FwaXRhbGl6ZSIp
Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGdib29sZWFuPigwKTsKLSNlbmRpZiAvKiBFTkFCTEUo
SU9TX0FVVE9DT1JSRUNUX0FORF9BVVRPQ0FQSVRBTElaRSkgKi8KLX0KLQotdm9pZCB3ZWJraXRf
ZG9tX2h0bWxfaW5wdXRfZWxlbWVudF9zZXRfYXV0b2NvcnJlY3QoV2ViS2l0RE9NSFRNTElucHV0
RWxlbWVudCogc2VsZiwgZ2Jvb2xlYW4gdmFsdWUpCi17Ci0jaWYgRU5BQkxFKElPU19BVVRPQ09S
UkVDVF9BTkRfQVVUT0NBUElUQUxJWkUpCi0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0
YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19IVE1MX0lOUFVU
X0VMRU1FTlQoc2VsZikpOwotICAgIFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQqIGl0ZW0gPSBX
ZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgaXRlbS0+c2V0QXV0b2NvcnJlY3QodmFsdWUpOwotI2Vs
c2UKLSAgICBVTlVTRURfUEFSQU0oc2VsZik7Ci0gICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKLSAg
ICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJJb3MgQXV0b2NvcnJlY3QgQW5kIEF1
dG9jYXBpdGFsaXplIikKLSNlbmRpZiAvKiBFTkFCTEUoSU9TX0FVVE9DT1JSRUNUX0FORF9BVVRP
Q0FQSVRBTElaRSkgKi8KLX0KLQotZ2NoYXIqIHdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50
X2dldF9hdXRvY2FwaXRhbGl6ZShXZWJLaXRET01IVE1MSW5wdXRFbGVtZW50KiBzZWxmKQotewot
I2lmIEVOQUJMRShJT1NfQVVUT0NPUlJFQ1RfQU5EX0FVVE9DQVBJVEFMSVpFKQotICAgIFdlYkNv
cmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFp
bChXRUJLSVRfRE9NX0lTX0hUTUxfSU5QVVRfRUxFTUVOVChzZWxmKSwgMCk7Ci0gICAgV2ViQ29y
ZTo6SFRNTElucHV0RWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBnY2hh
ciogcmVzdWx0ID0gY29udmVydFRvVVRGOFN0cmluZyhpdGVtLT5hdXRvY2FwaXRhbGl6ZSgpKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc2VsZik7Ci0gICAg
V0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiSW9zIEF1dG9jb3JyZWN0IEFuZCBBdXRv
Y2FwaXRhbGl6ZSIpCi0gICAgcmV0dXJuIDA7Ci0jZW5kaWYgLyogRU5BQkxFKElPU19BVVRPQ09S
UkVDVF9BTkRfQVVUT0NBUElUQUxJWkUpICovCi19Ci0KLXZvaWQgd2Via2l0X2RvbV9odG1sX2lu
cHV0X2VsZW1lbnRfc2V0X2F1dG9jYXBpdGFsaXplKFdlYktpdERPTUhUTUxJbnB1dEVsZW1lbnQq
IHNlbGYsIGNvbnN0IGdjaGFyKiB2YWx1ZSkKLXsKLSNpZiBFTkFCTEUoSU9TX0FVVE9DT1JSRUNU
X0FORF9BVVRPQ0FQSVRBTElaRSkKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUg
c3RhdGU7Ci0gICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxfSU5QVVRfRUxF
TUVOVChzZWxmKSk7Ci0gICAgZ19yZXR1cm5faWZfZmFpbCh2YWx1ZSk7Ci0gICAgV2ViQ29yZTo6
SFRNTElucHV0RWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBXVEY6OlN0
cmluZyBjb252ZXJ0ZWRWYWx1ZSA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOCh2YWx1ZSk7Ci0gICAg
aXRlbS0+c2V0QXV0b2NhcGl0YWxpemUoY29udmVydGVkVmFsdWUpOwotI2Vsc2UKLSAgICBVTlVT
RURfUEFSQU0oc2VsZik7Ci0gICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKLSAgICBXRUJLSVRfV0FS
Tl9GRUFUVVJFX05PVF9QUkVTRU5UKCJJb3MgQXV0b2NvcnJlY3QgQW5kIEF1dG9jYXBpdGFsaXpl
IikKLSNlbmRpZiAvKiBFTkFCTEUoSU9TX0FVVE9DT1JSRUNUX0FORF9BVVRPQ0FQSVRBTElaRSkg
Ki8KLX0KLQogZ2NoYXIqIHdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50X2dldF9jYXB0dXJl
X3R5cGUoV2ViS2l0RE9NSFRNTElucHV0RWxlbWVudCogc2VsZikKIHsKICNpZiBFTkFCTEUoTUVE
SUFfQ0FQVFVSRSkKQEAgLTE3NzQsNyArOTY3LDcgQEAgZ2NoYXIqIHdlYmtpdF9kb21faHRtbF9p
bnB1dF9lbGVtZW50X2dldF9jYXB0dXJlX3R5cGUoV2ViS2l0RE9NSFRNTElucHV0RWxlbWVudCoK
ICNlbmRpZiAvKiBFTkFCTEUoTUVESUFfQ0FQVFVSRSkgKi8KIH0KIAotdm9pZCB3ZWJraXRfZG9t
X2h0bWxfaW5wdXRfZWxlbWVudF9zZXRfY2FwdHVyZShXZWJLaXRET01IVE1MSW5wdXRFbGVtZW50
KiBzZWxmLCBjb25zdCBnY2hhciogdmFsdWUpCit2b2lkIHdlYmtpdF9kb21faHRtbF9pbnB1dF9l
bGVtZW50X3NldF9jYXB0dXJlX3R5cGUoV2ViS2l0RE9NSFRNTElucHV0RWxlbWVudCogc2VsZiwg
Y29uc3QgZ2NoYXIqIHZhbHVlKQogewogI2lmIEVOQUJMRShNRURJQV9DQVBUVVJFKQogICAgIFdl
YkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRN
TElucHV0RWxlbWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MSW5wdXRFbGVtZW50LmgKaW5kZXggM2NlZTBiOS4u
NTQxZjZiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MSW5wdXRFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01I
VE1MSW5wdXRFbGVtZW50LmgKQEAgLTEyMSw2ICsxMjEsMTYgQEAgV0VCS0lUX0FQSSBnYm9vbGVh
bgogd2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1lbnRfZ2V0X2RlZmF1bHRfY2hlY2tlZChXZWJL
aXRET01IVE1MSW5wdXRFbGVtZW50KiBzZWxmKTsKIAogLyoqCisgKiB3ZWJraXRfZG9tX2h0bWxf
aW5wdXRfZWxlbWVudF9zZXRfZGVmYXVsdF9jaGVja2VkOgorICogQHNlbGY6IEEgI1dlYktpdERP
TUhUTUxJbnB1dEVsZW1lbnQKKyAqIEB2YWx1ZTogQSAjZ2Jvb2xlYW4KKyAqCisgKiBTaW5jZTog
Mi4xNgorKiovCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50
X3NldF9kZWZhdWx0X2NoZWNrZWQoV2ViS2l0RE9NSFRNTElucHV0RWxlbWVudCogc2VsZiwgZ2Jv
b2xlYW4gdmFsdWUpOworCisvKioKICAqIHdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50X2dl
dF9jaGVja2VkOgogICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxJbnB1dEVsZW1lbnQKICAqCkBA
IC0yNzUsNiArMjg1LDE3IEBAIFdFQktJVF9BUEkgdm9pZAogd2Via2l0X2RvbV9odG1sX2lucHV0
X2VsZW1lbnRfc2V0X25hbWUoV2ViS2l0RE9NSFRNTElucHV0RWxlbWVudCogc2VsZiwgY29uc3Qg
Z2NoYXIqIHZhbHVlKTsKIAogLyoqCisgKiB3ZWJraXRfZG9tX2h0bWxfaW5wdXRfZWxlbWVudF9n
ZXRfcmVhZF9vbmx5OgorICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxJbnB1dEVsZW1lbnQKKyAq
CisgKiBSZXR1cm5zOiBBICNnYm9vbGVhbgorICoKKyAqIFNpbmNlOiAyLjE2CisqKi8KK1dFQktJ
VF9BUEkgZ2Jvb2xlYW4KK3dlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50X2dldF9yZWFkX29u
bHkoV2ViS2l0RE9NSFRNTElucHV0RWxlbWVudCogc2VsZik7CisKKy8qKgogICogd2Via2l0X2Rv
bV9odG1sX2lucHV0X2VsZW1lbnRfc2V0X3JlYWRfb25seToKICAqIEBzZWxmOiBBICNXZWJLaXRE
T01IVE1MSW5wdXRFbGVtZW50CiAgKiBAdmFsdWU6IEEgI2dib29sZWFuCkBAIC00NDksNiArNDcw
LDE2IEBAIFdFQktJVF9BUEkgZ2NoYXIqCiB3ZWJraXRfZG9tX2h0bWxfaW5wdXRfZWxlbWVudF9n
ZXRfY2FwdHVyZV90eXBlKFdlYktpdERPTUhUTUxJbnB1dEVsZW1lbnQqIHNlbGYpOwogCiAvKioK
KyAqIHdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50X3NldF9jYXB0dXJlX3R5cGU6CisgKiBA
c2VsZjogQSAjV2ViS2l0RE9NSFRNTElucHV0RWxlbWVudAorICogQHZhbHVlOiBBICNnY2hhcgor
ICoKKyAqIFNpbmNlOiAyLjE2CisqKi8KK1dFQktJVF9BUEkgdm9pZAord2Via2l0X2RvbV9odG1s
X2lucHV0X2VsZW1lbnRfc2V0X2NhcHR1cmVfdHlwZShXZWJLaXRET01IVE1MSW5wdXRFbGVtZW50
KiBzZWxmLCBjb25zdCBnY2hhciogdmFsdWUpOworCisvKioKICAqIHdlYmtpdF9kb21faHRtbF9p
bnB1dF9lbGVtZW50X2lzX2VkaXRlZDoKICAqIEBpbnB1dDogQSAjV2ViS2l0RE9NSFRNTElucHV0
RWxlbWVudAogICoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTElucHV0RWxlbWVudFVuc3RhYmxlLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dl
YktpdERPTUhUTUxJbnB1dEVsZW1lbnRVbnN0YWJsZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA0NGY2NjA0Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTElucHV0RWxlbWVudFVuc3Rh
YmxlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MzQgKzAsMCBAQAotLyoKLSAqICBUaGlzIGZpbGUg
aXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCi0gKiAgVGhpcyBmaWxl
IGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElG
WSEKLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAq
ICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCi0gKi8KLQotI2lmbmRlZiBXZWJLaXRET01IVE1MSW5wdXRFbGVtZW50VW5zdGFibGVf
aAotI2RlZmluZSBXZWJLaXRET01IVE1MSW5wdXRFbGVtZW50VW5zdGFibGVfaAotCi0jaWZkZWYg
V0VCS0lUX0RPTV9VU0VfVU5TVEFCTEVfQVBJCi0KLSNpbmNsdWRlIDx3ZWJraXRkb20vd2Via2l0
ZG9tZGVmaW5lcy11bnN0YWJsZS5oPgotCi1HX0JFR0lOX0RFQ0xTCi0KLS8qKgotICogd2Via2l0
X2RvbV9odG1sX2lucHV0X2VsZW1lbnRfc3RlcF91cDoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01I
VE1MSW5wdXRFbGVtZW50Ci0gKiBAbjogQSAjZ2xvbmcKLSAqIEBlcnJvcjogI0dFcnJvcgotICoK
LSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSB2b2lkCi13ZWJraXRfZG9t
X2h0bWxfaW5wdXRfZWxlbWVudF9zdGVwX3VwKFdlYktpdERPTUhUTUxJbnB1dEVsZW1lbnQqIHNl
bGYsIGdsb25nIG4sIEdFcnJvcioqIGVycm9yKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0bWxf
aW5wdXRfZWxlbWVudF9zdGVwX2Rvd246Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTElucHV0
RWxlbWVudAotICogQG46IEEgI2dsb25nCi0gKiBAZXJyb3I6ICNHRXJyb3IKLSAqCi0gKiBTdGFi
aWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgdm9pZAotd2Via2l0X2RvbV9odG1sX2lu
cHV0X2VsZW1lbnRfc3RlcF9kb3duKFdlYktpdERPTUhUTUxJbnB1dEVsZW1lbnQqIHNlbGYsIGds
b25nIG4sIEdFcnJvcioqIGVycm9yKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0bWxfaW5wdXRf
ZWxlbWVudF9jaGVja192YWxpZGl0eToKLSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MSW5wdXRF
bGVtZW50Ci0gKgotICogUmV0dXJuczogQSAjZ2Jvb2xlYW4KLSAqCi0gKiBTdGFiaWxpdHk6IFVu
c3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgZ2Jvb2xlYW4KLXdlYmtpdF9kb21faHRtbF9pbnB1dF9l
bGVtZW50X2NoZWNrX3ZhbGlkaXR5KFdlYktpdERPTUhUTUxJbnB1dEVsZW1lbnQqIHNlbGYpOwot
Ci0vKioKLSAqIHdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50X3NldF9jdXN0b21fdmFsaWRp
dHk6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTElucHV0RWxlbWVudAotICogQGVycm9yOiBB
ICNnY2hhcgotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSB2b2lk
Ci13ZWJraXRfZG9tX2h0bWxfaW5wdXRfZWxlbWVudF9zZXRfY3VzdG9tX3ZhbGlkaXR5KFdlYktp
dERPTUhUTUxJbnB1dEVsZW1lbnQqIHNlbGYsIGNvbnN0IGdjaGFyKiBlcnJvcik7Ci0KLS8qKgot
ICogd2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1lbnRfc2V0X3JhbmdlX3RleHQ6Ci0gKiBAc2Vs
ZjogQSAjV2ViS2l0RE9NSFRNTElucHV0RWxlbWVudAotICogQHJlcGxhY2VtZW50OiBBICNnY2hh
cgotICogQHN0YXJ0OiBBICNndWxvbmcKLSAqIEBlbmQ6IEEgI2d1bG9uZwotICogQHNlbGVjdGlv
bk1vZGU6IEEgI2djaGFyCi0gKiBAZXJyb3I6ICNHRXJyb3IKLSAqCi0gKiBTdGFiaWxpdHk6IFVu
c3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgdm9pZAotd2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1l
bnRfc2V0X3JhbmdlX3RleHQoV2ViS2l0RE9NSFRNTElucHV0RWxlbWVudCogc2VsZiwgY29uc3Qg
Z2NoYXIqIHJlcGxhY2VtZW50LCBndWxvbmcgc3RhcnQsIGd1bG9uZyBlbmQsIGNvbnN0IGdjaGFy
KiBzZWxlY3Rpb25Nb2RlLCBHRXJyb3IqKiBlcnJvcik7Ci0KLS8qKgotICogd2Via2l0X2RvbV9o
dG1sX2lucHV0X2VsZW1lbnRfc2V0X3ZhbHVlX2Zvcl91c2VyOgotICogQHNlbGY6IEEgI1dlYktp
dERPTUhUTUxJbnB1dEVsZW1lbnQKLSAqIEB2YWx1ZTogQSAjZ2NoYXIKLSAqCi0gKiBTdGFiaWxp
dHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgdm9pZAotd2Via2l0X2RvbV9odG1sX2lucHV0
X2VsZW1lbnRfc2V0X3ZhbHVlX2Zvcl91c2VyKFdlYktpdERPTUhUTUxJbnB1dEVsZW1lbnQqIHNl
bGYsIGNvbnN0IGdjaGFyKiB2YWx1ZSk7Ci0KLS8qKgotICogd2Via2l0X2RvbV9odG1sX2lucHV0
X2VsZW1lbnRfZ2V0X2F1dG9jb21wbGV0ZToKLSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MSW5w
dXRFbGVtZW50Ci0gKgotICogUmV0dXJuczogQSAjZ2NoYXIKLSAqCi0gKiBTdGFiaWxpdHk6IFVu
c3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgZ2NoYXIqCi13ZWJraXRfZG9tX2h0bWxfaW5wdXRfZWxl
bWVudF9nZXRfYXV0b2NvbXBsZXRlKFdlYktpdERPTUhUTUxJbnB1dEVsZW1lbnQqIHNlbGYpOwot
Ci0vKioKLSAqIHdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50X3NldF9hdXRvY29tcGxldGU6
Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTElucHV0RWxlbWVudAotICogQHZhbHVlOiBBICNn
Y2hhcgotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSB2b2lkCi13
ZWJraXRfZG9tX2h0bWxfaW5wdXRfZWxlbWVudF9zZXRfYXV0b2NvbXBsZXRlKFdlYktpdERPTUhU
TUxJbnB1dEVsZW1lbnQqIHNlbGYsIGNvbnN0IGdjaGFyKiB2YWx1ZSk7Ci0KLS8qKgotICogd2Vi
a2l0X2RvbV9odG1sX2lucHV0X2VsZW1lbnRfc2V0X2RlZmF1bHRfY2hlY2tlZDoKLSAqIEBzZWxm
OiBBICNXZWJLaXRET01IVE1MSW5wdXRFbGVtZW50Ci0gKiBAdmFsdWU6IEEgI2dib29sZWFuCi0g
KgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIHZvaWQKLXdlYmtpdF9k
b21faHRtbF9pbnB1dF9lbGVtZW50X3NldF9kZWZhdWx0X2NoZWNrZWQoV2ViS2l0RE9NSFRNTElu
cHV0RWxlbWVudCogc2VsZiwgZ2Jvb2xlYW4gdmFsdWUpOwotCi0vKioKLSAqIHdlYmtpdF9kb21f
aHRtbF9pbnB1dF9lbGVtZW50X2dldF9kaXJfbmFtZToKLSAqIEBzZWxmOiBBICNXZWJLaXRET01I
VE1MSW5wdXRFbGVtZW50Ci0gKgotICogUmV0dXJuczogQSAjZ2NoYXIKLSAqCi0gKiBTdGFiaWxp
dHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgZ2NoYXIqCi13ZWJraXRfZG9tX2h0bWxfaW5w
dXRfZWxlbWVudF9nZXRfZGlyX25hbWUoV2ViS2l0RE9NSFRNTElucHV0RWxlbWVudCogc2VsZik7
Ci0KLS8qKgotICogd2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1lbnRfc2V0X2Rpcl9uYW1lOgot
ICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxJbnB1dEVsZW1lbnQKLSAqIEB2YWx1ZTogQSAjZ2No
YXIKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgdm9pZAotd2Vi
a2l0X2RvbV9odG1sX2lucHV0X2VsZW1lbnRfc2V0X2Rpcl9uYW1lKFdlYktpdERPTUhUTUxJbnB1
dEVsZW1lbnQqIHNlbGYsIGNvbnN0IGdjaGFyKiB2YWx1ZSk7Ci0KLS8qKgotICogd2Via2l0X2Rv
bV9odG1sX2lucHV0X2VsZW1lbnRfZ2V0X2Zvcm1fYWN0aW9uOgotICogQHNlbGY6IEEgI1dlYktp
dERPTUhUTUxJbnB1dEVsZW1lbnQKLSAqCi0gKiBSZXR1cm5zOiBBICNnY2hhcgotICoKLSAqIFN0
YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSBnY2hhcioKLXdlYmtpdF9kb21faHRt
bF9pbnB1dF9lbGVtZW50X2dldF9mb3JtX2FjdGlvbihXZWJLaXRET01IVE1MSW5wdXRFbGVtZW50
KiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0bWxfaW5wdXRfZWxlbWVudF9zZXRfZm9y
bV9hY3Rpb246Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTElucHV0RWxlbWVudAotICogQHZh
bHVlOiBBICNnY2hhcgotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQ
SSB2b2lkCi13ZWJraXRfZG9tX2h0bWxfaW5wdXRfZWxlbWVudF9zZXRfZm9ybV9hY3Rpb24oV2Vi
S2l0RE9NSFRNTElucHV0RWxlbWVudCogc2VsZiwgY29uc3QgZ2NoYXIqIHZhbHVlKTsKLQotLyoq
Ci0gKiB3ZWJraXRfZG9tX2h0bWxfaW5wdXRfZWxlbWVudF9nZXRfZm9ybV9lbmN0eXBlOgotICog
QHNlbGY6IEEgI1dlYktpdERPTUhUTUxJbnB1dEVsZW1lbnQKLSAqCi0gKiBSZXR1cm5zOiBBICNn
Y2hhcgotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSBnY2hhcioK
LXdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50X2dldF9mb3JtX2VuY3R5cGUoV2ViS2l0RE9N
SFRNTElucHV0RWxlbWVudCogc2VsZik7Ci0KLS8qKgotICogd2Via2l0X2RvbV9odG1sX2lucHV0
X2VsZW1lbnRfc2V0X2Zvcm1fZW5jdHlwZToKLSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MSW5w
dXRFbGVtZW50Ci0gKiBAdmFsdWU6IEEgI2djaGFyCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJs
ZQotKiovCi1XRUJLSVRfQVBJIHZvaWQKLXdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50X3Nl
dF9mb3JtX2VuY3R5cGUoV2ViS2l0RE9NSFRNTElucHV0RWxlbWVudCogc2VsZiwgY29uc3QgZ2No
YXIqIHZhbHVlKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0bWxfaW5wdXRfZWxlbWVudF9nZXRf
Zm9ybV9tZXRob2Q6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTElucHV0RWxlbWVudAotICoK
LSAqIFJldHVybnM6IEEgI2djaGFyCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1X
RUJLSVRfQVBJIGdjaGFyKgotd2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1lbnRfZ2V0X2Zvcm1f
bWV0aG9kKFdlYktpdERPTUhUTUxJbnB1dEVsZW1lbnQqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtp
dF9kb21faHRtbF9pbnB1dF9lbGVtZW50X3NldF9mb3JtX21ldGhvZDoKLSAqIEBzZWxmOiBBICNX
ZWJLaXRET01IVE1MSW5wdXRFbGVtZW50Ci0gKiBAdmFsdWU6IEEgI2djaGFyCi0gKgotICogU3Rh
YmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIHZvaWQKLXdlYmtpdF9kb21faHRtbF9p
bnB1dF9lbGVtZW50X3NldF9mb3JtX21ldGhvZChXZWJLaXRET01IVE1MSW5wdXRFbGVtZW50KiBz
ZWxmLCBjb25zdCBnY2hhciogdmFsdWUpOwotCi0vKioKLSAqIHdlYmtpdF9kb21faHRtbF9pbnB1
dF9lbGVtZW50X2dldF9mb3JtX25vX3ZhbGlkYXRlOgotICogQHNlbGY6IEEgI1dlYktpdERPTUhU
TUxJbnB1dEVsZW1lbnQKLSAqCi0gKiBSZXR1cm5zOiBBICNnYm9vbGVhbgotICoKLSAqIFN0YWJp
bGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSBnYm9vbGVhbgotd2Via2l0X2RvbV9odG1s
X2lucHV0X2VsZW1lbnRfZ2V0X2Zvcm1fbm9fdmFsaWRhdGUoV2ViS2l0RE9NSFRNTElucHV0RWxl
bWVudCogc2VsZik7Ci0KLS8qKgotICogd2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1lbnRfc2V0
X2Zvcm1fbm9fdmFsaWRhdGU6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTElucHV0RWxlbWVu
dAotICogQHZhbHVlOiBBICNnYm9vbGVhbgotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoq
LwotV0VCS0lUX0FQSSB2b2lkCi13ZWJraXRfZG9tX2h0bWxfaW5wdXRfZWxlbWVudF9zZXRfZm9y
bV9ub192YWxpZGF0ZShXZWJLaXRET01IVE1MSW5wdXRFbGVtZW50KiBzZWxmLCBnYm9vbGVhbiB2
YWx1ZSk7Ci0KLS8qKgotICogd2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1lbnRfZ2V0X2Zvcm1f
dGFyZ2V0OgotICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxJbnB1dEVsZW1lbnQKLSAqCi0gKiBS
ZXR1cm5zOiBBICNnY2hhcgotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lU
X0FQSSBnY2hhcioKLXdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50X2dldF9mb3JtX3Rhcmdl
dChXZWJLaXRET01IVE1MSW5wdXRFbGVtZW50KiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9t
X2h0bWxfaW5wdXRfZWxlbWVudF9zZXRfZm9ybV90YXJnZXQ6Ci0gKiBAc2VsZjogQSAjV2ViS2l0
RE9NSFRNTElucHV0RWxlbWVudAotICogQHZhbHVlOiBBICNnY2hhcgotICoKLSAqIFN0YWJpbGl0
eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSB2b2lkCi13ZWJraXRfZG9tX2h0bWxfaW5wdXRf
ZWxlbWVudF9zZXRfZm9ybV90YXJnZXQoV2ViS2l0RE9NSFRNTElucHV0RWxlbWVudCogc2VsZiwg
Y29uc3QgZ2NoYXIqIHZhbHVlKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0bWxfaW5wdXRfZWxl
bWVudF9nZXRfbGlzdDoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MSW5wdXRFbGVtZW50Ci0g
KgotICogUmV0dXJuczogKHRyYW5zZmVyIG5vbmUpOiBBICNXZWJLaXRET01IVE1MRWxlbWVudAot
ICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSBXZWJLaXRET01IVE1M
RWxlbWVudCoKLXdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50X2dldF9saXN0KFdlYktpdERP
TUhUTUxJbnB1dEVsZW1lbnQqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9kb21faHRtbF9pbnB1
dF9lbGVtZW50X2dldF9tYXg6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTElucHV0RWxlbWVu
dAotICoKLSAqIFJldHVybnM6IEEgI2djaGFyCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQot
KiovCi1XRUJLSVRfQVBJIGdjaGFyKgotd2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1lbnRfZ2V0
X21heChXZWJLaXRET01IVE1MSW5wdXRFbGVtZW50KiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRf
ZG9tX2h0bWxfaW5wdXRfZWxlbWVudF9zZXRfbWF4OgotICogQHNlbGY6IEEgI1dlYktpdERPTUhU
TUxJbnB1dEVsZW1lbnQKLSAqIEB2YWx1ZTogQSAjZ2NoYXIKLSAqCi0gKiBTdGFiaWxpdHk6IFVu
c3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgdm9pZAotd2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1l
bnRfc2V0X21heChXZWJLaXRET01IVE1MSW5wdXRFbGVtZW50KiBzZWxmLCBjb25zdCBnY2hhciog
dmFsdWUpOwotCi0vKioKLSAqIHdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50X2dldF9taW46
Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTElucHV0RWxlbWVudAotICoKLSAqIFJldHVybnM6
IEEgI2djaGFyCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIGdj
aGFyKgotd2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1lbnRfZ2V0X21pbihXZWJLaXRET01IVE1M
SW5wdXRFbGVtZW50KiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0bWxfaW5wdXRfZWxl
bWVudF9zZXRfbWluOgotICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxJbnB1dEVsZW1lbnQKLSAq
IEB2YWx1ZTogQSAjZ2NoYXIKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJ
VF9BUEkgdm9pZAotd2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1lbnRfc2V0X21pbihXZWJLaXRE
T01IVE1MSW5wdXRFbGVtZW50KiBzZWxmLCBjb25zdCBnY2hhciogdmFsdWUpOwotCi0vKioKLSAq
IHdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50X2dldF9wYXR0ZXJuOgotICogQHNlbGY6IEEg
I1dlYktpdERPTUhUTUxJbnB1dEVsZW1lbnQKLSAqCi0gKiBSZXR1cm5zOiBBICNnY2hhcgotICoK
LSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSBnY2hhcioKLXdlYmtpdF9k
b21faHRtbF9pbnB1dF9lbGVtZW50X2dldF9wYXR0ZXJuKFdlYktpdERPTUhUTUxJbnB1dEVsZW1l
bnQqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50X3NldF9w
YXR0ZXJuOgotICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxJbnB1dEVsZW1lbnQKLSAqIEB2YWx1
ZTogQSAjZ2NoYXIKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkg
dm9pZAotd2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1lbnRfc2V0X3BhdHRlcm4oV2ViS2l0RE9N
SFRNTElucHV0RWxlbWVudCogc2VsZiwgY29uc3QgZ2NoYXIqIHZhbHVlKTsKLQotLyoqCi0gKiB3
ZWJraXRfZG9tX2h0bWxfaW5wdXRfZWxlbWVudF9nZXRfcGxhY2Vob2xkZXI6Ci0gKiBAc2VsZjog
QSAjV2ViS2l0RE9NSFRNTElucHV0RWxlbWVudAotICoKLSAqIFJldHVybnM6IEEgI2djaGFyCi0g
KgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIGdjaGFyKgotd2Via2l0
X2RvbV9odG1sX2lucHV0X2VsZW1lbnRfZ2V0X3BsYWNlaG9sZGVyKFdlYktpdERPTUhUTUxJbnB1
dEVsZW1lbnQqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50
X3NldF9wbGFjZWhvbGRlcjoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MSW5wdXRFbGVtZW50
Ci0gKiBAdmFsdWU6IEEgI2djaGFyCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1X
RUJLSVRfQVBJIHZvaWQKLXdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50X3NldF9wbGFjZWhv
bGRlcihXZWJLaXRET01IVE1MSW5wdXRFbGVtZW50KiBzZWxmLCBjb25zdCBnY2hhciogdmFsdWUp
OwotCi0vKioKLSAqIHdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50X2dldF9yZWFkX29ubHk6
Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTElucHV0RWxlbWVudAotICoKLSAqIFJldHVybnM6
IEEgI2dib29sZWFuCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJ
IGdib29sZWFuCi13ZWJraXRfZG9tX2h0bWxfaW5wdXRfZWxlbWVudF9nZXRfcmVhZF9vbmx5KFdl
YktpdERPTUhUTUxJbnB1dEVsZW1lbnQqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9kb21faHRt
bF9pbnB1dF9lbGVtZW50X2dldF9yZXF1aXJlZDoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1M
SW5wdXRFbGVtZW50Ci0gKgotICogUmV0dXJuczogQSAjZ2Jvb2xlYW4KLSAqCi0gKiBTdGFiaWxp
dHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgZ2Jvb2xlYW4KLXdlYmtpdF9kb21faHRtbF9p
bnB1dF9lbGVtZW50X2dldF9yZXF1aXJlZChXZWJLaXRET01IVE1MSW5wdXRFbGVtZW50KiBzZWxm
KTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0bWxfaW5wdXRfZWxlbWVudF9zZXRfcmVxdWlyZWQ6
Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTElucHV0RWxlbWVudAotICogQHZhbHVlOiBBICNn
Ym9vbGVhbgotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSB2b2lk
Ci13ZWJraXRfZG9tX2h0bWxfaW5wdXRfZWxlbWVudF9zZXRfcmVxdWlyZWQoV2ViS2l0RE9NSFRN
TElucHV0RWxlbWVudCogc2VsZiwgZ2Jvb2xlYW4gdmFsdWUpOwotCi0vKioKLSAqIHdlYmtpdF9k
b21faHRtbF9pbnB1dF9lbGVtZW50X2dldF9zdGVwOgotICogQHNlbGY6IEEgI1dlYktpdERPTUhU
TUxJbnB1dEVsZW1lbnQKLSAqCi0gKiBSZXR1cm5zOiBBICNnY2hhcgotICoKLSAqIFN0YWJpbGl0
eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSBnY2hhcioKLXdlYmtpdF9kb21faHRtbF9pbnB1
dF9lbGVtZW50X2dldF9zdGVwKFdlYktpdERPTUhUTUxJbnB1dEVsZW1lbnQqIHNlbGYpOwotCi0v
KioKLSAqIHdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50X3NldF9zdGVwOgotICogQHNlbGY6
IEEgI1dlYktpdERPTUhUTUxJbnB1dEVsZW1lbnQKLSAqIEB2YWx1ZTogQSAjZ2NoYXIKLSAqCi0g
KiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgdm9pZAotd2Via2l0X2RvbV9o
dG1sX2lucHV0X2VsZW1lbnRfc2V0X3N0ZXAoV2ViS2l0RE9NSFRNTElucHV0RWxlbWVudCogc2Vs
ZiwgY29uc3QgZ2NoYXIqIHZhbHVlKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0bWxfaW5wdXRf
ZWxlbWVudF9nZXRfdmFsdWVfYXNfbnVtYmVyOgotICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxJ
bnB1dEVsZW1lbnQKLSAqCi0gKiBSZXR1cm5zOiBBICNnZG91YmxlCi0gKgotICogU3RhYmlsaXR5
OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIGdkb3VibGUKLXdlYmtpdF9kb21faHRtbF9pbnB1
dF9lbGVtZW50X2dldF92YWx1ZV9hc19udW1iZXIoV2ViS2l0RE9NSFRNTElucHV0RWxlbWVudCog
c2VsZik7Ci0KLS8qKgotICogd2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1lbnRfc2V0X3ZhbHVl
X2FzX251bWJlcjoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MSW5wdXRFbGVtZW50Ci0gKiBA
dmFsdWU6IEEgI2dkb3VibGUKLSAqIEBlcnJvcjogI0dFcnJvcgotICoKLSAqIFN0YWJpbGl0eTog
VW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSB2b2lkCi13ZWJraXRfZG9tX2h0bWxfaW5wdXRfZWxl
bWVudF9zZXRfdmFsdWVfYXNfbnVtYmVyKFdlYktpdERPTUhUTUxJbnB1dEVsZW1lbnQqIHNlbGYs
IGdkb3VibGUgdmFsdWUsIEdFcnJvcioqIGVycm9yKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0
bWxfaW5wdXRfZWxlbWVudF9nZXRfdmFsaWRpdHk6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRN
TElucHV0RWxlbWVudAotICoKLSAqIFJldHVybnM6ICh0cmFuc2ZlciBmdWxsKTogQSAjV2ViS2l0
RE9NVmFsaWRpdHlTdGF0ZQotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lU
X0FQSSBXZWJLaXRET01WYWxpZGl0eVN0YXRlKgotd2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1l
bnRfZ2V0X3ZhbGlkaXR5KFdlYktpdERPTUhUTUxJbnB1dEVsZW1lbnQqIHNlbGYpOwotCi0vKioK
LSAqIHdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50X2dldF92YWxpZGF0aW9uX21lc3NhZ2U6
Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTElucHV0RWxlbWVudAotICoKLSAqIFJldHVybnM6
IEEgI2djaGFyCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIGdj
aGFyKgotd2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1lbnRfZ2V0X3ZhbGlkYXRpb25fbWVzc2Fn
ZShXZWJLaXRET01IVE1MSW5wdXRFbGVtZW50KiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9t
X2h0bWxfaW5wdXRfZWxlbWVudF9nZXRfbGFiZWxzOgotICogQHNlbGY6IEEgI1dlYktpdERPTUhU
TUxJbnB1dEVsZW1lbnQKLSAqCi0gKiBSZXR1cm5zOiAodHJhbnNmZXIgZnVsbCk6IEEgI1dlYktp
dERPTU5vZGVMaXN0Ci0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJ
IFdlYktpdERPTU5vZGVMaXN0Kgotd2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1lbnRfZ2V0X2xh
YmVscyhXZWJLaXRET01IVE1MSW5wdXRFbGVtZW50KiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRf
ZG9tX2h0bWxfaW5wdXRfZWxlbWVudF9nZXRfaW5jcmVtZW50YWw6Ci0gKiBAc2VsZjogQSAjV2Vi
S2l0RE9NSFRNTElucHV0RWxlbWVudAotICoKLSAqIFJldHVybnM6IEEgI2dib29sZWFuCi0gKgot
ICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIGdib29sZWFuCi13ZWJraXRf
ZG9tX2h0bWxfaW5wdXRfZWxlbWVudF9nZXRfaW5jcmVtZW50YWwoV2ViS2l0RE9NSFRNTElucHV0
RWxlbWVudCogc2VsZik7Ci0KLS8qKgotICogd2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1lbnRf
c2V0X2luY3JlbWVudGFsOgotICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxJbnB1dEVsZW1lbnQK
LSAqIEB2YWx1ZTogQSAjZ2Jvb2xlYW4KLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8K
LVdFQktJVF9BUEkgdm9pZAotd2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1lbnRfc2V0X2luY3Jl
bWVudGFsKFdlYktpdERPTUhUTUxJbnB1dEVsZW1lbnQqIHNlbGYsIGdib29sZWFuIHZhbHVlKTsK
LQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0bWxfaW5wdXRfZWxlbWVudF9nZXRfYXV0b2NvcnJlY3Q6
Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTElucHV0RWxlbWVudAotICoKLSAqIFJldHVybnM6
IEEgI2dib29sZWFuCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJ
IGdib29sZWFuCi13ZWJraXRfZG9tX2h0bWxfaW5wdXRfZWxlbWVudF9nZXRfYXV0b2NvcnJlY3Qo
V2ViS2l0RE9NSFRNTElucHV0RWxlbWVudCogc2VsZik7Ci0KLS8qKgotICogd2Via2l0X2RvbV9o
dG1sX2lucHV0X2VsZW1lbnRfc2V0X2F1dG9jb3JyZWN0OgotICogQHNlbGY6IEEgI1dlYktpdERP
TUhUTUxJbnB1dEVsZW1lbnQKLSAqIEB2YWx1ZTogQSAjZ2Jvb2xlYW4KLSAqCi0gKiBTdGFiaWxp
dHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgdm9pZAotd2Via2l0X2RvbV9odG1sX2lucHV0
X2VsZW1lbnRfc2V0X2F1dG9jb3JyZWN0KFdlYktpdERPTUhUTUxJbnB1dEVsZW1lbnQqIHNlbGYs
IGdib29sZWFuIHZhbHVlKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0bWxfaW5wdXRfZWxlbWVu
dF9nZXRfYXV0b2NhcGl0YWxpemU6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTElucHV0RWxl
bWVudAotICoKLSAqIFJldHVybnM6IEEgI2djaGFyCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJs
ZQotKiovCi1XRUJLSVRfQVBJIGdjaGFyKgotd2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1lbnRf
Z2V0X2F1dG9jYXBpdGFsaXplKFdlYktpdERPTUhUTUxJbnB1dEVsZW1lbnQqIHNlbGYpOwotCi0v
KioKLSAqIHdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50X3NldF9hdXRvY2FwaXRhbGl6ZToK
LSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MSW5wdXRFbGVtZW50Ci0gKiBAdmFsdWU6IEEgI2dj
aGFyCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIHZvaWQKLXdl
YmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50X3NldF9hdXRvY2FwaXRhbGl6ZShXZWJLaXRET01I
VE1MSW5wdXRFbGVtZW50KiBzZWxmLCBjb25zdCBnY2hhciogdmFsdWUpOwotCi0vKioKLSAqIHdl
YmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50X3NldF9jYXB0dXJlOgotICogQHNlbGY6IEEgI1dl
YktpdERPTUhUTUxJbnB1dEVsZW1lbnQKLSAqIEB2YWx1ZTogQSAjZ2NoYXIKLSAqCi0gKiBTdGFi
aWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgdm9pZAotd2Via2l0X2RvbV9odG1sX2lu
cHV0X2VsZW1lbnRfc2V0X2NhcHR1cmUoV2ViS2l0RE9NSFRNTElucHV0RWxlbWVudCogc2VsZiwg
Y29uc3QgZ2NoYXIqIHZhbHVlKTsKLQotCi1HX0VORF9ERUNMUwotCi0jZW5kaWYgLyogV0VCS0lU
X0RPTV9VU0VfVU5TVEFCTEVfQVBJICovCi0jZW5kaWYgLyogV2ViS2l0RE9NSFRNTElucHV0RWxl
bWVudFVuc3RhYmxlX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTEtleWdlbkVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9X
ZWJLaXRET01IVE1MS2V5Z2VuRWxlbWVudC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGM5OTc5MTAuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MS2V5Z2VuRWxlbWVudC5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSw0NzIgKzAsMCBAQAotLyoKLSAqICBUaGlzIGZpbGUgaXMgcGFydCBv
ZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCi0gKiAgVGhpcyBmaWxlIGhhcyBiZWVu
IGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKLSAqCi0g
KiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAq
ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqICBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYktpdERPTUhUTUxLZXlnZW5F
bGVtZW50LmgiCi0KLSNpbmNsdWRlIDxXZWJDb3JlL0NTU0ltcG9ydFJ1bGUuaD4KLSNpbmNsdWRl
ICJET01PYmplY3RDYWNoZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnQuaD4KLSNpbmNs
dWRlIDxXZWJDb3JlL0V4Y2VwdGlvbkNvZGUuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0V4Y2VwdGlv
bkNvZGVEZXNjcmlwdGlvbi5oPgotI2luY2x1ZGUgIkdPYmplY3RFdmVudExpc3RlbmVyLmgiCi0j
aW5jbHVkZSA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0pTTWFpblRo
cmVhZEV4ZWNTdGF0ZS5oPgotI2luY2x1ZGUgIldlYktpdERPTUV2ZW50UHJpdmF0ZS5oIgotI2lu
Y2x1ZGUgIldlYktpdERPTUV2ZW50VGFyZ2V0LmgiCi0jaW5jbHVkZSAiV2ViS2l0RE9NSFRNTEZv
cm1FbGVtZW50UHJpdmF0ZS5oIgotI2luY2x1ZGUgIldlYktpdERPTUhUTUxLZXlnZW5FbGVtZW50
UHJpdmF0ZS5oIgotI2luY2x1ZGUgIldlYktpdERPTU5vZGVMaXN0UHJpdmF0ZS5oIgotI2luY2x1
ZGUgIldlYktpdERPTU5vZGVQcml2YXRlLmgiCi0jaW5jbHVkZSAiV2ViS2l0RE9NUHJpdmF0ZS5o
IgotI2luY2x1ZGUgIldlYktpdERPTVZhbGlkaXR5U3RhdGVQcml2YXRlLmgiCi0jaW5jbHVkZSAi
Q29udmVydFRvVVRGOFN0cmluZy5oIgotI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KLSNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1XZWJLaXRET01IVE1MS2V5
Z2VuRWxlbWVudCoga2l0KFdlYkNvcmU6OkhUTUxLZXlnZW5FbGVtZW50KiBvYmopCi17Ci0gICAg
cmV0dXJuIFdFQktJVF9ET01fSFRNTF9LRVlHRU5fRUxFTUVOVChraXQoc3RhdGljX2Nhc3Q8V2Vi
Q29yZTo6Tm9kZSo+KG9iaikpKTsKLX0KLQotV2ViQ29yZTo6SFRNTEtleWdlbkVsZW1lbnQqIGNv
cmUoV2ViS2l0RE9NSFRNTEtleWdlbkVsZW1lbnQqIHJlcXVlc3QpCi17Ci0gICAgcmV0dXJuIHJl
cXVlc3QgPyBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MS2V5Z2VuRWxlbWVudCo+KFdFQktJVF9E
T01fT0JKRUNUKHJlcXVlc3QpLT5jb3JlT2JqZWN0KSA6IDA7Ci19Ci0KLVdlYktpdERPTUhUTUxL
ZXlnZW5FbGVtZW50KiB3cmFwSFRNTEtleWdlbkVsZW1lbnQoV2ViQ29yZTo6SFRNTEtleWdlbkVs
ZW1lbnQqIGNvcmVPYmplY3QpCi17Ci0gICAgQVNTRVJUKGNvcmVPYmplY3QpOwotICAgIHJldHVy
biBXRUJLSVRfRE9NX0hUTUxfS0VZR0VOX0VMRU1FTlQoZ19vYmplY3RfbmV3KFdFQktJVF9ET01f
VFlQRV9IVE1MX0tFWUdFTl9FTEVNRU5ULCAiY29yZS1vYmplY3QiLCBjb3JlT2JqZWN0LCBudWxs
cHRyKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi1zdGF0aWMgZ2Jvb2xlYW4gd2Vi
a2l0X2RvbV9odG1sX2tleWdlbl9lbGVtZW50X2Rpc3BhdGNoX2V2ZW50KFdlYktpdERPTUV2ZW50
VGFyZ2V0KiB0YXJnZXQsIFdlYktpdERPTUV2ZW50KiBldmVudCwgR0Vycm9yKiogZXJyb3IpCi17
Ci0gICAgV2ViQ29yZTo6RXZlbnQqIGNvcmVFdmVudCA9IFdlYktpdDo6Y29yZShldmVudCk7Ci0g
ICAgaWYgKCFjb3JlRXZlbnQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBXZWJDb3JlOjpI
VE1MS2V5Z2VuRWxlbWVudCogY29yZVRhcmdldCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxL
ZXlnZW5FbGVtZW50Kj4oV0VCS0lUX0RPTV9PQkpFQ1QodGFyZ2V0KS0+Y29yZU9iamVjdCk7Ci0K
LSAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBnYm9vbGVhbiByZXN1bHQg
PSBjb3JlVGFyZ2V0LT5kaXNwYXRjaEV2ZW50Rm9yQmluZGluZ3MoKmNvcmVFdmVudCwgZWMpOwot
ICAgIGlmIChlYykgewotICAgICAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24g
ZGVzY3JpcHRpb24oZWMpOwotICAgICAgICBnX3NldF9lcnJvcl9saXRlcmFsKGVycm9yLCBnX3F1
YXJrX2Zyb21fc3RyaW5nKCJXRUJLSVRfRE9NIiksIGRlc2NyaXB0aW9uLmNvZGUsIGRlc2NyaXB0
aW9uLm5hbWUpOwotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1zdGF0aWMgZ2Jvb2xl
YW4gd2Via2l0X2RvbV9odG1sX2tleWdlbl9lbGVtZW50X2FkZF9ldmVudF9saXN0ZW5lcihXZWJL
aXRET01FdmVudFRhcmdldCogdGFyZ2V0LCBjb25zdCBjaGFyKiBldmVudE5hbWUsIEdDbG9zdXJl
KiBoYW5kbGVyLCBnYm9vbGVhbiB1c2VDYXB0dXJlKQotewotICAgIFdlYkNvcmU6OkhUTUxLZXln
ZW5FbGVtZW50KiBjb3JlVGFyZ2V0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEtleWdlbkVs
ZW1lbnQqPihXRUJLSVRfRE9NX09CSkVDVCh0YXJnZXQpLT5jb3JlT2JqZWN0KTsKLSAgICByZXR1
cm4gV2ViS2l0OjpHT2JqZWN0RXZlbnRMaXN0ZW5lcjo6YWRkRXZlbnRMaXN0ZW5lcihHX09CSkVD
VCh0YXJnZXQpLCBjb3JlVGFyZ2V0LCBldmVudE5hbWUsIGhhbmRsZXIsIHVzZUNhcHR1cmUpOwot
fQotCi1zdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X2RvbV9odG1sX2tleWdlbl9lbGVtZW50X3JlbW92
ZV9ldmVudF9saXN0ZW5lcihXZWJLaXRET01FdmVudFRhcmdldCogdGFyZ2V0LCBjb25zdCBjaGFy
KiBldmVudE5hbWUsIEdDbG9zdXJlKiBoYW5kbGVyLCBnYm9vbGVhbiB1c2VDYXB0dXJlKQotewot
ICAgIFdlYkNvcmU6OkhUTUxLZXlnZW5FbGVtZW50KiBjb3JlVGFyZ2V0ID0gc3RhdGljX2Nhc3Q8
V2ViQ29yZTo6SFRNTEtleWdlbkVsZW1lbnQqPihXRUJLSVRfRE9NX09CSkVDVCh0YXJnZXQpLT5j
b3JlT2JqZWN0KTsKLSAgICByZXR1cm4gV2ViS2l0OjpHT2JqZWN0RXZlbnRMaXN0ZW5lcjo6cmVt
b3ZlRXZlbnRMaXN0ZW5lcihHX09CSkVDVCh0YXJnZXQpLCBjb3JlVGFyZ2V0LCBldmVudE5hbWUs
IGhhbmRsZXIsIHVzZUNhcHR1cmUpOwotfQotCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX2V2ZW50
X3RhcmdldF9pbml0KFdlYktpdERPTUV2ZW50VGFyZ2V0SWZhY2UqIGlmYWNlKQotewotICAgIGlm
YWNlLT5kaXNwYXRjaF9ldmVudCA9IHdlYmtpdF9kb21faHRtbF9rZXlnZW5fZWxlbWVudF9kaXNw
YXRjaF9ldmVudDsKLSAgICBpZmFjZS0+YWRkX2V2ZW50X2xpc3RlbmVyID0gd2Via2l0X2RvbV9o
dG1sX2tleWdlbl9lbGVtZW50X2FkZF9ldmVudF9saXN0ZW5lcjsKLSAgICBpZmFjZS0+cmVtb3Zl
X2V2ZW50X2xpc3RlbmVyID0gd2Via2l0X2RvbV9odG1sX2tleWdlbl9lbGVtZW50X3JlbW92ZV9l
dmVudF9saXN0ZW5lcjsKLX0KLQotR19ERUZJTkVfVFlQRV9XSVRIX0NPREUoV2ViS2l0RE9NSFRN
TEtleWdlbkVsZW1lbnQsIHdlYmtpdF9kb21faHRtbF9rZXlnZW5fZWxlbWVudCwgV0VCS0lUX0RP
TV9UWVBFX0hUTUxfRUxFTUVOVCwgR19JTVBMRU1FTlRfSU5URVJGQUNFKFdFQktJVF9ET01fVFlQ
RV9FVkVOVF9UQVJHRVQsIHdlYmtpdF9kb21fZXZlbnRfdGFyZ2V0X2luaXQpKQotCi1lbnVtIHsK
LSAgICBQUk9QXzAsCi0gICAgUFJPUF9BVVRPRk9DVVMsCi0gICAgUFJPUF9DSEFMTEVOR0UsCi0g
ICAgUFJPUF9ESVNBQkxFRCwKLSAgICBQUk9QX0ZPUk0sCi0gICAgUFJPUF9LRVlUWVBFLAotICAg
IFBST1BfTkFNRSwKLSAgICBQUk9QX1RZUEUsCi0gICAgUFJPUF9XSUxMX1ZBTElEQVRFLAotICAg
IFBST1BfVkFMSURJVFksCi0gICAgUFJPUF9WQUxJREFUSU9OX01FU1NBR0UsCi0gICAgUFJPUF9M
QUJFTFMsCi19OwotCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX2h0bWxfa2V5Z2VuX2VsZW1lbnRf
c2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcGVydHlJZCwgY29uc3QgR1Zh
bHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpCi17Ci0gICAgV2ViS2l0RE9NSFRNTEtleWdl
bkVsZW1lbnQqIHNlbGYgPSBXRUJLSVRfRE9NX0hUTUxfS0VZR0VOX0VMRU1FTlQob2JqZWN0KTsK
LQotICAgIHN3aXRjaCAocHJvcGVydHlJZCkgewotICAgIGNhc2UgUFJPUF9BVVRPRk9DVVM6Ci0g
ICAgICAgIHdlYmtpdF9kb21faHRtbF9rZXlnZW5fZWxlbWVudF9zZXRfYXV0b2ZvY3VzKHNlbGYs
IGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQ
Uk9QX0NIQUxMRU5HRToKLSAgICAgICAgd2Via2l0X2RvbV9odG1sX2tleWdlbl9lbGVtZW50X3Nl
dF9jaGFsbGVuZ2Uoc2VsZiwgZ192YWx1ZV9nZXRfc3RyaW5nKHZhbHVlKSk7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgUFJPUF9ESVNBQkxFRDoKLSAgICAgICAgd2Via2l0X2RvbV9odG1sX2tl
eWdlbl9lbGVtZW50X3NldF9kaXNhYmxlZChzZWxmLCBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVl
KSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9LRVlUWVBFOgotICAgICAgICB3ZWJr
aXRfZG9tX2h0bWxfa2V5Z2VuX2VsZW1lbnRfc2V0X2tleXR5cGUoc2VsZiwgZ192YWx1ZV9nZXRf
c3RyaW5nKHZhbHVlKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9OQU1FOgotICAg
ICAgICB3ZWJraXRfZG9tX2h0bWxfa2V5Z2VuX2VsZW1lbnRfc2V0X25hbWUoc2VsZiwgZ192YWx1
ZV9nZXRfc3RyaW5nKHZhbHVlKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAg
ICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BlcnR5SWQs
IHBzcGVjKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotfQotCi1zdGF0aWMgdm9pZCB3ZWJraXRf
ZG9tX2h0bWxfa2V5Z2VuX2VsZW1lbnRfZ2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3Vp
bnQgcHJvcGVydHlJZCwgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpCi17Ci0gICAg
V2ViS2l0RE9NSFRNTEtleWdlbkVsZW1lbnQqIHNlbGYgPSBXRUJLSVRfRE9NX0hUTUxfS0VZR0VO
X0VMRU1FTlQob2JqZWN0KTsKLQotICAgIHN3aXRjaCAocHJvcGVydHlJZCkgewotICAgIGNhc2Ug
UFJPUF9BVVRPRk9DVVM6Ci0gICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtp
dF9kb21faHRtbF9rZXlnZW5fZWxlbWVudF9nZXRfYXV0b2ZvY3VzKHNlbGYpKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBQUk9QX0NIQUxMRU5HRToKLSAgICAgICAgZ192YWx1ZV90YWtlX3N0
cmluZyh2YWx1ZSwgd2Via2l0X2RvbV9odG1sX2tleWdlbl9lbGVtZW50X2dldF9jaGFsbGVuZ2Uo
c2VsZikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfRElTQUJMRUQ6Ci0gICAgICAg
IGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF9kb21faHRtbF9rZXlnZW5fZWxlbWVu
dF9nZXRfZGlzYWJsZWQoc2VsZikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfRk9S
TToKLSAgICAgICAgZ192YWx1ZV9zZXRfb2JqZWN0KHZhbHVlLCB3ZWJraXRfZG9tX2h0bWxfa2V5
Z2VuX2VsZW1lbnRfZ2V0X2Zvcm0oc2VsZikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBS
T1BfS0VZVFlQRToKLSAgICAgICAgZ192YWx1ZV90YWtlX3N0cmluZyh2YWx1ZSwgd2Via2l0X2Rv
bV9odG1sX2tleWdlbl9lbGVtZW50X2dldF9rZXl0eXBlKHNlbGYpKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBQUk9QX05BTUU6Ci0gICAgICAgIGdfdmFsdWVfdGFrZV9zdHJpbmcodmFsdWUs
IHdlYmtpdF9kb21faHRtbF9rZXlnZW5fZWxlbWVudF9nZXRfbmFtZShzZWxmKSk7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgUFJPUF9UWVBFOgotICAgICAgICBnX3ZhbHVlX3Rha2Vfc3RyaW5n
KHZhbHVlLCB3ZWJraXRfZG9tX2h0bWxfa2V5Z2VuX2VsZW1lbnRfZ2V0X2tleWdlbl90eXBlKHNl
bGYpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX1dJTExfVkFMSURBVEU6Ci0gICAg
ICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF9kb21faHRtbF9rZXlnZW5fZWxl
bWVudF9nZXRfd2lsbF92YWxpZGF0ZShzZWxmKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
UFJPUF9WQUxJRElUWToKLSAgICAgICAgZ192YWx1ZV9zZXRfb2JqZWN0KHZhbHVlLCB3ZWJraXRf
ZG9tX2h0bWxfa2V5Z2VuX2VsZW1lbnRfZ2V0X3ZhbGlkaXR5KHNlbGYpKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBQUk9QX1ZBTElEQVRJT05fTUVTU0FHRToKLSAgICAgICAgZ192YWx1ZV90
YWtlX3N0cmluZyh2YWx1ZSwgd2Via2l0X2RvbV9odG1sX2tleWdlbl9lbGVtZW50X2dldF92YWxp
ZGF0aW9uX21lc3NhZ2Uoc2VsZikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfTEFC
RUxTOgotICAgICAgICBnX3ZhbHVlX3NldF9vYmplY3QodmFsdWUsIHdlYmtpdF9kb21faHRtbF9r
ZXlnZW5fZWxlbWVudF9nZXRfbGFiZWxzKHNlbGYpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVm
YXVsdDoKLSAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwg
cHJvcGVydHlJZCwgcHNwZWMpOwotICAgICAgICBicmVhazsKLSAgICB9Ci19Ci0KLXN0YXRpYyB2
b2lkIHdlYmtpdF9kb21faHRtbF9rZXlnZW5fZWxlbWVudF9jbGFzc19pbml0KFdlYktpdERPTUhU
TUxLZXlnZW5FbGVtZW50Q2xhc3MqIHJlcXVlc3RDbGFzcykKLXsKLSAgICBHT2JqZWN0Q2xhc3Mq
IGdvYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKHJlcXVlc3RDbGFzcyk7Ci0gICAgZ29iamVj
dENsYXNzLT5zZXRfcHJvcGVydHkgPSB3ZWJraXRfZG9tX2h0bWxfa2V5Z2VuX2VsZW1lbnRfc2V0
X3Byb3BlcnR5OwotICAgIGdvYmplY3RDbGFzcy0+Z2V0X3Byb3BlcnR5ID0gd2Via2l0X2RvbV9o
dG1sX2tleWdlbl9lbGVtZW50X2dldF9wcm9wZXJ0eTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2lu
c3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9BVVRP
Rk9DVVMsCi0gICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKAotICAgICAgICAgICAgImF1dG9m
b2N1cyIsCi0gICAgICAgICAgICAiSFRNTEtleWdlbkVsZW1lbnQ6YXV0b2ZvY3VzIiwKLSAgICAg
ICAgICAgICJyZWFkLXdyaXRlIGdib29sZWFuIEhUTUxLZXlnZW5FbGVtZW50OmF1dG9mb2N1cyIs
Ci0gICAgICAgICAgICBGQUxTRSwKLSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEV1JJVEUp
KTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmpl
Y3RDbGFzcywKLSAgICAgICAgUFJPUF9DSEFMTEVOR0UsCi0gICAgICAgIGdfcGFyYW1fc3BlY19z
dHJpbmcoCi0gICAgICAgICAgICAiY2hhbGxlbmdlIiwKLSAgICAgICAgICAgICJIVE1MS2V5Z2Vu
RWxlbWVudDpjaGFsbGVuZ2UiLAotICAgICAgICAgICAgInJlYWQtd3JpdGUgZ2NoYXIqIEhUTUxL
ZXlnZW5FbGVtZW50OmNoYWxsZW5nZSIsCi0gICAgICAgICAgICAiIiwKLSAgICAgICAgICAgIFdF
QktJVF9QQVJBTV9SRUFEV1JJVEUpKTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJv
cGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9ESVNBQkxFRCwKLSAg
ICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oCi0gICAgICAgICAgICAiZGlzYWJsZWQiLAotICAg
ICAgICAgICAgIkhUTUxLZXlnZW5FbGVtZW50OmRpc2FibGVkIiwKLSAgICAgICAgICAgICJyZWFk
LXdyaXRlIGdib29sZWFuIEhUTUxLZXlnZW5FbGVtZW50OmRpc2FibGVkIiwKLSAgICAgICAgICAg
IEZBTFNFLAotICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURXUklURSkpOwotCi0gICAgZ19v
YmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAgZ29iamVjdENsYXNzLAotICAg
ICAgICBQUk9QX0ZPUk0sCi0gICAgICAgIGdfcGFyYW1fc3BlY19vYmplY3QoCi0gICAgICAgICAg
ICAiZm9ybSIsCi0gICAgICAgICAgICAiSFRNTEtleWdlbkVsZW1lbnQ6Zm9ybSIsCi0gICAgICAg
ICAgICAicmVhZC1vbmx5IFdlYktpdERPTUhUTUxGb3JtRWxlbWVudCogSFRNTEtleWdlbkVsZW1l
bnQ6Zm9ybSIsCi0gICAgICAgICAgICBXRUJLSVRfRE9NX1RZUEVfSFRNTF9GT1JNX0VMRU1FTlQs
Ci0gICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKLQotICAgIGdfb2JqZWN0X2Ns
YXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJP
UF9LRVlUWVBFLAotICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nKAotICAgICAgICAgICAgImtl
eXR5cGUiLAotICAgICAgICAgICAgIkhUTUxLZXlnZW5FbGVtZW50OmtleXR5cGUiLAotICAgICAg
ICAgICAgInJlYWQtd3JpdGUgZ2NoYXIqIEhUTUxLZXlnZW5FbGVtZW50OmtleXR5cGUiLAotICAg
ICAgICAgICAgIiIsCi0gICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBRFdSSVRFKSk7Ci0KLSAg
ICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAotICAgICAgICBnb2JqZWN0Q2xhc3Ms
Ci0gICAgICAgIFBST1BfTkFNRSwKLSAgICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZygKLSAgICAg
ICAgICAgICJuYW1lIiwKLSAgICAgICAgICAgICJIVE1MS2V5Z2VuRWxlbWVudDpuYW1lIiwKLSAg
ICAgICAgICAgICJyZWFkLXdyaXRlIGdjaGFyKiBIVE1MS2V5Z2VuRWxlbWVudDpuYW1lIiwKLSAg
ICAgICAgICAgICIiLAotICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURXUklURSkpOwotCi0g
ICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAgZ29iamVjdENsYXNz
LAotICAgICAgICBQUk9QX1RZUEUsCi0gICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcoCi0gICAg
ICAgICAgICAidHlwZSIsCi0gICAgICAgICAgICAiSFRNTEtleWdlbkVsZW1lbnQ6dHlwZSIsCi0g
ICAgICAgICAgICAicmVhZC1vbmx5IGdjaGFyKiBIVE1MS2V5Z2VuRWxlbWVudDp0eXBlIiwKLSAg
ICAgICAgICAgICIiLAotICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7Ci0KLSAg
ICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAotICAgICAgICBnb2JqZWN0Q2xhc3Ms
Ci0gICAgICAgIFBST1BfV0lMTF9WQUxJREFURSwKLSAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xl
YW4oCi0gICAgICAgICAgICAid2lsbC12YWxpZGF0ZSIsCi0gICAgICAgICAgICAiSFRNTEtleWdl
bkVsZW1lbnQ6d2lsbC12YWxpZGF0ZSIsCi0gICAgICAgICAgICAicmVhZC1vbmx5IGdib29sZWFu
IEhUTUxLZXlnZW5FbGVtZW50OndpbGwtdmFsaWRhdGUiLAotICAgICAgICAgICAgRkFMU0UsCi0g
ICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKLQotICAgIGdfb2JqZWN0X2NsYXNz
X2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9W
QUxJRElUWSwKLSAgICAgICAgZ19wYXJhbV9zcGVjX29iamVjdCgKLSAgICAgICAgICAgICJ2YWxp
ZGl0eSIsCi0gICAgICAgICAgICAiSFRNTEtleWdlbkVsZW1lbnQ6dmFsaWRpdHkiLAotICAgICAg
ICAgICAgInJlYWQtb25seSBXZWJLaXRET01WYWxpZGl0eVN0YXRlKiBIVE1MS2V5Z2VuRWxlbWVu
dDp2YWxpZGl0eSIsCi0gICAgICAgICAgICBXRUJLSVRfRE9NX1RZUEVfVkFMSURJVFlfU1RBVEUs
Ci0gICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKLQotICAgIGdfb2JqZWN0X2Ns
YXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJP
UF9WQUxJREFUSU9OX01FU1NBR0UsCi0gICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcoCi0gICAg
ICAgICAgICAidmFsaWRhdGlvbi1tZXNzYWdlIiwKLSAgICAgICAgICAgICJIVE1MS2V5Z2VuRWxl
bWVudDp2YWxpZGF0aW9uLW1lc3NhZ2UiLAotICAgICAgICAgICAgInJlYWQtb25seSBnY2hhciog
SFRNTEtleWdlbkVsZW1lbnQ6dmFsaWRhdGlvbi1tZXNzYWdlIiwKLSAgICAgICAgICAgICIiLAot
ICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7Ci0KLSAgICBnX29iamVjdF9jbGFz
c19pbnN0YWxsX3Byb3BlcnR5KAotICAgICAgICBnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBST1Bf
TEFCRUxTLAotICAgICAgICBnX3BhcmFtX3NwZWNfb2JqZWN0KAotICAgICAgICAgICAgImxhYmVs
cyIsCi0gICAgICAgICAgICAiSFRNTEtleWdlbkVsZW1lbnQ6bGFiZWxzIiwKLSAgICAgICAgICAg
ICJyZWFkLW9ubHkgV2ViS2l0RE9NTm9kZUxpc3QqIEhUTUxLZXlnZW5FbGVtZW50OmxhYmVscyIs
Ci0gICAgICAgICAgICBXRUJLSVRfRE9NX1RZUEVfTk9ERV9MSVNULAotICAgICAgICAgICAgV0VC
S0lUX1BBUkFNX1JFQURBQkxFKSk7Ci0KLX0KLQotc3RhdGljIHZvaWQgd2Via2l0X2RvbV9odG1s
X2tleWdlbl9lbGVtZW50X2luaXQoV2ViS2l0RE9NSFRNTEtleWdlbkVsZW1lbnQqIHJlcXVlc3Qp
Ci17Ci0gICAgVU5VU0VEX1BBUkFNKHJlcXVlc3QpOwotfQotCi1nYm9vbGVhbiB3ZWJraXRfZG9t
X2h0bWxfa2V5Z2VuX2VsZW1lbnRfY2hlY2tfdmFsaWRpdHkoV2ViS2l0RE9NSFRNTEtleWdlbkVs
ZW1lbnQqIHNlbGYpCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRl
OwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfSFRNTF9LRVlHRU5fRUxF
TUVOVChzZWxmKSwgRkFMU0UpOwotICAgIFdlYkNvcmU6OkhUTUxLZXlnZW5FbGVtZW50KiBpdGVt
ID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdib29sZWFuIHJlc3VsdCA9IGl0ZW0tPmNoZWNr
VmFsaWRpdHkoKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi12b2lkIHdlYmtpdF9kb21faHRt
bF9rZXlnZW5fZWxlbWVudF9zZXRfY3VzdG9tX3ZhbGlkaXR5KFdlYktpdERPTUhUTUxLZXlnZW5F
bGVtZW50KiBzZWxmLCBjb25zdCBnY2hhciogZXJyb3IpCi17Ci0gICAgV2ViQ29yZTo6SlNNYWlu
VGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9J
U19IVE1MX0tFWUdFTl9FTEVNRU5UKHNlbGYpKTsKLSAgICBnX3JldHVybl9pZl9mYWlsKGVycm9y
KTsKLSAgICBXZWJDb3JlOjpIVE1MS2V5Z2VuRWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShz
ZWxmKTsKLSAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRFcnJvciA9IFdURjo6U3RyaW5nOjpmcm9t
VVRGOChlcnJvcik7Ci0gICAgaXRlbS0+c2V0Q3VzdG9tVmFsaWRpdHkoY29udmVydGVkRXJyb3Ip
OwotfQotCi1nYm9vbGVhbiB3ZWJraXRfZG9tX2h0bWxfa2V5Z2VuX2VsZW1lbnRfZ2V0X2F1dG9m
b2N1cyhXZWJLaXRET01IVE1MS2V5Z2VuRWxlbWVudCogc2VsZikKLXsKLSAgICBXZWJDb3JlOjpK
U01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VC
S0lUX0RPTV9JU19IVE1MX0tFWUdFTl9FTEVNRU5UKHNlbGYpLCBGQUxTRSk7Ci0gICAgV2ViQ29y
ZTo6SFRNTEtleWdlbkVsZW1lbnQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ2Jv
b2xlYW4gcmVzdWx0ID0gaXRlbS0+aGFzQXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihX
ZWJDb3JlOjpIVE1MTmFtZXM6OmF1dG9mb2N1c0F0dHIpOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci0KLXZvaWQgd2Via2l0X2RvbV9odG1sX2tleWdlbl9lbGVtZW50X3NldF9hdXRvZm9jdXMoV2Vi
S2l0RE9NSFRNTEtleWdlbkVsZW1lbnQqIHNlbGYsIGdib29sZWFuIHZhbHVlKQotewotICAgIFdl
YkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl9pZl9mYWls
KFdFQktJVF9ET01fSVNfSFRNTF9LRVlHRU5fRUxFTUVOVChzZWxmKSk7Ci0gICAgV2ViQ29yZTo6
SFRNTEtleWdlbkVsZW1lbnQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgaXRlbS0+
c2V0Qm9vbGVhbkF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OmF1dG9mb2N1c0F0dHIsIHZh
bHVlKTsKLX0KLQotZ2NoYXIqIHdlYmtpdF9kb21faHRtbF9rZXlnZW5fZWxlbWVudF9nZXRfY2hh
bGxlbmdlKFdlYktpdERPTUhUTUxLZXlnZW5FbGVtZW50KiBzZWxmKQotewotICAgIFdlYkNvcmU6
OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChX
RUJLSVRfRE9NX0lTX0hUTUxfS0VZR0VOX0VMRU1FTlQoc2VsZiksIDApOwotICAgIFdlYkNvcmU6
OkhUTUxLZXlnZW5FbGVtZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdjaGFy
KiByZXN1bHQgPSBjb252ZXJ0VG9VVEY4U3RyaW5nKGl0ZW0tPmF0dHJpYnV0ZVdpdGhvdXRTeW5j
aHJvbml6YXRpb24oV2ViQ29yZTo6SFRNTE5hbWVzOjpjaGFsbGVuZ2VBdHRyKSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfa2V5Z2VuX2VsZW1lbnRfc2V0
X2NoYWxsZW5nZShXZWJLaXRET01IVE1MS2V5Z2VuRWxlbWVudCogc2VsZiwgY29uc3QgZ2NoYXIq
IHZhbHVlKQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAg
ICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfSFRNTF9LRVlHRU5fRUxFTUVOVChzZWxm
KSk7Ci0gICAgZ19yZXR1cm5faWZfZmFpbCh2YWx1ZSk7Ci0gICAgV2ViQ29yZTo6SFRNTEtleWdl
bkVsZW1lbnQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgV1RGOjpTdHJpbmcgY29u
dmVydGVkVmFsdWUgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgodmFsdWUpOwotICAgIGl0ZW0tPnNl
dEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oV2ViQ29yZTo6SFRNTE5hbWVzOjpjaGFs
bGVuZ2VBdHRyLCBjb252ZXJ0ZWRWYWx1ZSk7Ci19Ci0KLWdib29sZWFuIHdlYmtpdF9kb21faHRt
bF9rZXlnZW5fZWxlbWVudF9nZXRfZGlzYWJsZWQoV2ViS2l0RE9NSFRNTEtleWdlbkVsZW1lbnQq
IHNlbGYpCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAg
IGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfSFRNTF9LRVlHRU5fRUxFTUVOVChz
ZWxmKSwgRkFMU0UpOwotICAgIFdlYkNvcmU6OkhUTUxLZXlnZW5FbGVtZW50KiBpdGVtID0gV2Vi
S2l0Ojpjb3JlKHNlbGYpOwotICAgIGdib29sZWFuIHJlc3VsdCA9IGl0ZW0tPmhhc0F0dHJpYnV0
ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oV2ViQ29yZTo6SFRNTE5hbWVzOjpkaXNhYmxlZEF0dHIp
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXZvaWQgd2Via2l0X2RvbV9odG1sX2tleWdlbl9l
bGVtZW50X3NldF9kaXNhYmxlZChXZWJLaXRET01IVE1MS2V5Z2VuRWxlbWVudCogc2VsZiwgZ2Jv
b2xlYW4gdmFsdWUpCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRl
OwotICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19IVE1MX0tFWUdFTl9FTEVNRU5U
KHNlbGYpKTsKLSAgICBXZWJDb3JlOjpIVE1MS2V5Z2VuRWxlbWVudCogaXRlbSA9IFdlYktpdDo6
Y29yZShzZWxmKTsKLSAgICBpdGVtLT5zZXRCb29sZWFuQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxO
YW1lczo6ZGlzYWJsZWRBdHRyLCB2YWx1ZSk7Ci19Ci0KLVdlYktpdERPTUhUTUxGb3JtRWxlbWVu
dCogd2Via2l0X2RvbV9odG1sX2tleWdlbl9lbGVtZW50X2dldF9mb3JtKFdlYktpdERPTUhUTUxL
ZXlnZW5FbGVtZW50KiBzZWxmKQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0
ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxfS0VZ
R0VOX0VMRU1FTlQoc2VsZiksIDApOwotICAgIFdlYkNvcmU6OkhUTUxLZXlnZW5FbGVtZW50KiBp
dGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpIVE1MRm9ybUVs
ZW1lbnQ+IGdvYmplY3RSZXN1bHQgPSBXVEY6OmdldFB0cihpdGVtLT5mb3JtKCkpOwotICAgIHJl
dHVybiBXZWJLaXQ6OmtpdChnb2JqZWN0UmVzdWx0LmdldCgpKTsKLX0KLQotZ2NoYXIqIHdlYmtp
dF9kb21faHRtbF9rZXlnZW5fZWxlbWVudF9nZXRfa2V5dHlwZShXZWJLaXRET01IVE1MS2V5Z2Vu
RWxlbWVudCogc2VsZikKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3Rh
dGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19IVE1MX0tFWUdFTl9F
TEVNRU5UKHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpIVE1MS2V5Z2VuRWxlbWVudCogaXRlbSA9
IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBnY2hhciogcmVzdWx0ID0gY29udmVydFRvVVRGOFN0
cmluZyhpdGVtLT5rZXl0eXBlKCkpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXZvaWQgd2Vi
a2l0X2RvbV9odG1sX2tleWdlbl9lbGVtZW50X3NldF9rZXl0eXBlKFdlYktpdERPTUhUTUxLZXln
ZW5FbGVtZW50KiBzZWxmLCBjb25zdCBnY2hhciogdmFsdWUpCi17Ci0gICAgV2ViQ29yZTo6SlNN
YWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RP
TV9JU19IVE1MX0tFWUdFTl9FTEVNRU5UKHNlbGYpKTsKLSAgICBnX3JldHVybl9pZl9mYWlsKHZh
bHVlKTsKLSAgICBXZWJDb3JlOjpIVE1MS2V5Z2VuRWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29y
ZShzZWxmKTsKLSAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRWYWx1ZSA9IFdURjo6U3RyaW5nOjpm
cm9tVVRGOCh2YWx1ZSk7Ci0gICAgaXRlbS0+c2V0S2V5dHlwZShjb252ZXJ0ZWRWYWx1ZSk7Ci19
Ci0KLWdjaGFyKiB3ZWJraXRfZG9tX2h0bWxfa2V5Z2VuX2VsZW1lbnRfZ2V0X25hbWUoV2ViS2l0
RE9NSFRNTEtleWdlbkVsZW1lbnQqIHNlbGYpCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFk
TnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNf
SFRNTF9LRVlHRU5fRUxFTUVOVChzZWxmKSwgMCk7Ci0gICAgV2ViQ29yZTo6SFRNTEtleWdlbkVs
ZW1lbnQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ2NoYXIqIHJlc3VsdCA9IGNv
bnZlcnRUb1VURjhTdHJpbmcoaXRlbS0+Z2V0TmFtZUF0dHJpYnV0ZSgpKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotCi12b2lkIHdlYmtpdF9kb21faHRtbF9rZXlnZW5fZWxlbWVudF9zZXRfbmFt
ZShXZWJLaXRET01IVE1MS2V5Z2VuRWxlbWVudCogc2VsZiwgY29uc3QgZ2NoYXIqIHZhbHVlKQot
ewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVy
bl9pZl9mYWlsKFdFQktJVF9ET01fSVNfSFRNTF9LRVlHRU5fRUxFTUVOVChzZWxmKSk7Ci0gICAg
Z19yZXR1cm5faWZfZmFpbCh2YWx1ZSk7Ci0gICAgV2ViQ29yZTo6SFRNTEtleWdlbkVsZW1lbnQq
IGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgV1RGOjpTdHJpbmcgY29udmVydGVkVmFs
dWUgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgodmFsdWUpOwotICAgIGl0ZW0tPnNldEF0dHJpYnV0
ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oV2ViQ29yZTo6SFRNTE5hbWVzOjpuYW1lQXR0ciwgY29u
dmVydGVkVmFsdWUpOwotfQotCi1nY2hhciogd2Via2l0X2RvbV9odG1sX2tleWdlbl9lbGVtZW50
X2dldF9rZXlnZW5fdHlwZShXZWJLaXRET01IVE1MS2V5Z2VuRWxlbWVudCogc2VsZikKLXsKLSAg
ICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFs
X2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19IVE1MX0tFWUdFTl9FTEVNRU5UKHNlbGYpLCAwKTsKLSAg
ICBXZWJDb3JlOjpIVE1MS2V5Z2VuRWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsK
LSAgICBnY2hhciogcmVzdWx0ID0gY29udmVydFRvVVRGOFN0cmluZyhpdGVtLT50eXBlKCkpOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLWdib29sZWFuIHdlYmtpdF9kb21faHRtbF9rZXlnZW5f
ZWxlbWVudF9nZXRfd2lsbF92YWxpZGF0ZShXZWJLaXRET01IVE1MS2V5Z2VuRWxlbWVudCogc2Vs
ZikKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19IVE1MX0tFWUdFTl9FTEVNRU5UKHNlbGYp
LCBGQUxTRSk7Ci0gICAgV2ViQ29yZTo6SFRNTEtleWdlbkVsZW1lbnQqIGl0ZW0gPSBXZWJLaXQ6
OmNvcmUoc2VsZik7Ci0gICAgZ2Jvb2xlYW4gcmVzdWx0ID0gaXRlbS0+d2lsbFZhbGlkYXRlKCk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotV2ViS2l0RE9NVmFsaWRpdHlTdGF0ZSogd2Via2l0
X2RvbV9odG1sX2tleWdlbl9lbGVtZW50X2dldF92YWxpZGl0eShXZWJLaXRET01IVE1MS2V5Z2Vu
RWxlbWVudCogc2VsZikKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3Rh
dGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19IVE1MX0tFWUdFTl9F
TEVNRU5UKHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpIVE1MS2V5Z2VuRWxlbWVudCogaXRlbSA9
IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6VmFsaWRpdHlTdGF0ZT4g
Z29iamVjdFJlc3VsdCA9IFdURjo6Z2V0UHRyKGl0ZW0tPnZhbGlkaXR5KCkpOwotICAgIHJldHVy
biBXZWJLaXQ6OmtpdChnb2JqZWN0UmVzdWx0LmdldCgpKTsKLX0KLQotZ2NoYXIqIHdlYmtpdF9k
b21faHRtbF9rZXlnZW5fZWxlbWVudF9nZXRfdmFsaWRhdGlvbl9tZXNzYWdlKFdlYktpdERPTUhU
TUxLZXlnZW5FbGVtZW50KiBzZWxmKQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxT
dGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxf
S0VZR0VOX0VMRU1FTlQoc2VsZiksIDApOwotICAgIFdlYkNvcmU6OkhUTUxLZXlnZW5FbGVtZW50
KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdjaGFyKiByZXN1bHQgPSBjb252ZXJ0
VG9VVEY4U3RyaW5nKGl0ZW0tPnZhbGlkYXRpb25NZXNzYWdlKCkpOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci0KLVdlYktpdERPTU5vZGVMaXN0KiB3ZWJraXRfZG9tX2h0bWxfa2V5Z2VuX2VsZW1l
bnRfZ2V0X2xhYmVscyhXZWJLaXRET01IVE1MS2V5Z2VuRWxlbWVudCogc2VsZikKLXsKLSAgICBX
ZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoV0VCS0lUX0RPTV9JU19IVE1MX0tFWUdFTl9FTEVNRU5UKHNlbGYpLCAwKTsKLSAgICBX
ZWJDb3JlOjpIVE1MS2V5Z2VuRWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAg
ICBSZWZQdHI8V2ViQ29yZTo6Tm9kZUxpc3Q+IGdvYmplY3RSZXN1bHQgPSBXVEY6OmdldFB0cihp
dGVtLT5sYWJlbHMoKSk7Ci0gICAgcmV0dXJuIFdlYktpdDo6a2l0KGdvYmplY3RSZXN1bHQuZ2V0
KCkpOwotfQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxLZXlnZW5FbGVtZW50LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhU
TUxLZXlnZW5FbGVtZW50LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE0MmExM2Uu
LjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MS2V5Z2VuRWxlbWVudC5oCisrKyAvZGV2L251bGwKQEAg
LTEsMjQ1ICswLDAgQEAKLS8qCi0gKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBv
cGVuIHNvdXJjZSBwcm9qZWN0LgotICogIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkg
Z2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICogIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYg
V2ViS2l0RE9NSFRNTEtleWdlbkVsZW1lbnRfaAotI2RlZmluZSBXZWJLaXRET01IVE1MS2V5Z2Vu
RWxlbWVudF9oCi0KLSNpZmRlZiBXRUJLSVRfRE9NX1VTRV9VTlNUQUJMRV9BUEkKLQotI2luY2x1
ZGUgPGdsaWItb2JqZWN0Lmg+Ci0jaW5jbHVkZSA8d2Via2l0ZG9tL1dlYktpdERPTUhUTUxFbGVt
ZW50Lmg+Ci0jaW5jbHVkZSA8d2Via2l0ZG9tL3dlYmtpdGRvbWRlZmluZXMtdW5zdGFibGUuaD4K
LQotR19CRUdJTl9ERUNMUwotCi0jZGVmaW5lIFdFQktJVF9ET01fVFlQRV9IVE1MX0tFWUdFTl9F
TEVNRU5UICAgICAgICAgICAgKHdlYmtpdF9kb21faHRtbF9rZXlnZW5fZWxlbWVudF9nZXRfdHlw
ZSgpKQotI2RlZmluZSBXRUJLSVRfRE9NX0hUTUxfS0VZR0VOX0VMRU1FTlQob2JqKSAgICAgICAg
ICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwgV0VCS0lUX0RPTV9UWVBFX0hU
TUxfS0VZR0VOX0VMRU1FTlQsIFdlYktpdERPTUhUTUxLZXlnZW5FbGVtZW50KSkKLSNkZWZpbmUg
V0VCS0lUX0RPTV9IVE1MX0tFWUdFTl9FTEVNRU5UX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NI
RUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJVF9ET01fVFlQRV9IVE1MX0tFWUdFTl9FTEVN
RU5ULCBXZWJLaXRET01IVE1MS2V5Z2VuRWxlbWVudENsYXNzKQotI2RlZmluZSBXRUJLSVRfRE9N
X0lTX0hUTUxfS0VZR0VOX0VMRU1FTlQob2JqKSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFO
Q0VfVFlQRSgob2JqKSwgV0VCS0lUX0RPTV9UWVBFX0hUTUxfS0VZR0VOX0VMRU1FTlQpKQotI2Rl
ZmluZSBXRUJLSVRfRE9NX0lTX0hUTUxfS0VZR0VOX0VMRU1FTlRfQ0xBU1Moa2xhc3MpIChHX1RZ
UEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX0RPTV9UWVBFX0hUTUxfS0VZR0VO
X0VMRU1FTlQpKQotI2RlZmluZSBXRUJLSVRfRE9NX0hUTUxfS0VZR0VOX0VMRU1FTlRfR0VUX0NM
QVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgV0VCS0lUX0RPTV9U
WVBFX0hUTUxfS0VZR0VOX0VMRU1FTlQsIFdlYktpdERPTUhUTUxLZXlnZW5FbGVtZW50Q2xhc3Mp
KQotCi1zdHJ1Y3QgX1dlYktpdERPTUhUTUxLZXlnZW5FbGVtZW50IHsKLSAgICBXZWJLaXRET01I
VE1MRWxlbWVudCBwYXJlbnRfaW5zdGFuY2U7Ci19OwotCi1zdHJ1Y3QgX1dlYktpdERPTUhUTUxL
ZXlnZW5FbGVtZW50Q2xhc3MgewotICAgIFdlYktpdERPTUhUTUxFbGVtZW50Q2xhc3MgcGFyZW50
X2NsYXNzOwotfTsKLQotV0VCS0lUX0FQSSBHVHlwZQotd2Via2l0X2RvbV9odG1sX2tleWdlbl9l
bGVtZW50X2dldF90eXBlKHZvaWQpOwotCi0vKioKLSAqIHdlYmtpdF9kb21faHRtbF9rZXlnZW5f
ZWxlbWVudF9jaGVja192YWxpZGl0eToKLSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MS2V5Z2Vu
RWxlbWVudAotICoKLSAqIFJldHVybnM6IEEgI2dib29sZWFuCi0gKgotICogU3RhYmlsaXR5OiBV
bnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIGdib29sZWFuCi13ZWJraXRfZG9tX2h0bWxfa2V5Z2Vu
X2VsZW1lbnRfY2hlY2tfdmFsaWRpdHkoV2ViS2l0RE9NSFRNTEtleWdlbkVsZW1lbnQqIHNlbGYp
OwotCi0vKioKLSAqIHdlYmtpdF9kb21faHRtbF9rZXlnZW5fZWxlbWVudF9zZXRfY3VzdG9tX3Zh
bGlkaXR5OgotICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxLZXlnZW5FbGVtZW50Ci0gKiBAZXJy
b3I6IEEgI2djaGFyCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJ
IHZvaWQKLXdlYmtpdF9kb21faHRtbF9rZXlnZW5fZWxlbWVudF9zZXRfY3VzdG9tX3ZhbGlkaXR5
KFdlYktpdERPTUhUTUxLZXlnZW5FbGVtZW50KiBzZWxmLCBjb25zdCBnY2hhciogZXJyb3IpOwot
Ci0vKioKLSAqIHdlYmtpdF9kb21faHRtbF9rZXlnZW5fZWxlbWVudF9nZXRfYXV0b2ZvY3VzOgot
ICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxLZXlnZW5FbGVtZW50Ci0gKgotICogUmV0dXJuczog
QSAjZ2Jvb2xlYW4KLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkg
Z2Jvb2xlYW4KLXdlYmtpdF9kb21faHRtbF9rZXlnZW5fZWxlbWVudF9nZXRfYXV0b2ZvY3VzKFdl
YktpdERPTUhUTUxLZXlnZW5FbGVtZW50KiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0
bWxfa2V5Z2VuX2VsZW1lbnRfc2V0X2F1dG9mb2N1czoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01I
VE1MS2V5Z2VuRWxlbWVudAotICogQHZhbHVlOiBBICNnYm9vbGVhbgotICoKLSAqIFN0YWJpbGl0
eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSB2b2lkCi13ZWJraXRfZG9tX2h0bWxfa2V5Z2Vu
X2VsZW1lbnRfc2V0X2F1dG9mb2N1cyhXZWJLaXRET01IVE1MS2V5Z2VuRWxlbWVudCogc2VsZiwg
Z2Jvb2xlYW4gdmFsdWUpOwotCi0vKioKLSAqIHdlYmtpdF9kb21faHRtbF9rZXlnZW5fZWxlbWVu
dF9nZXRfY2hhbGxlbmdlOgotICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxLZXlnZW5FbGVtZW50
Ci0gKgotICogUmV0dXJuczogQSAjZ2NoYXIKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0q
Ki8KLVdFQktJVF9BUEkgZ2NoYXIqCi13ZWJraXRfZG9tX2h0bWxfa2V5Z2VuX2VsZW1lbnRfZ2V0
X2NoYWxsZW5nZShXZWJLaXRET01IVE1MS2V5Z2VuRWxlbWVudCogc2VsZik7Ci0KLS8qKgotICog
d2Via2l0X2RvbV9odG1sX2tleWdlbl9lbGVtZW50X3NldF9jaGFsbGVuZ2U6Ci0gKiBAc2VsZjog
QSAjV2ViS2l0RE9NSFRNTEtleWdlbkVsZW1lbnQKLSAqIEB2YWx1ZTogQSAjZ2NoYXIKLSAqCi0g
KiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgdm9pZAotd2Via2l0X2RvbV9o
dG1sX2tleWdlbl9lbGVtZW50X3NldF9jaGFsbGVuZ2UoV2ViS2l0RE9NSFRNTEtleWdlbkVsZW1l
bnQqIHNlbGYsIGNvbnN0IGdjaGFyKiB2YWx1ZSk7Ci0KLS8qKgotICogd2Via2l0X2RvbV9odG1s
X2tleWdlbl9lbGVtZW50X2dldF9kaXNhYmxlZDoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1M
S2V5Z2VuRWxlbWVudAotICoKLSAqIFJldHVybnM6IEEgI2dib29sZWFuCi0gKgotICogU3RhYmls
aXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIGdib29sZWFuCi13ZWJraXRfZG9tX2h0bWxf
a2V5Z2VuX2VsZW1lbnRfZ2V0X2Rpc2FibGVkKFdlYktpdERPTUhUTUxLZXlnZW5FbGVtZW50KiBz
ZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0bWxfa2V5Z2VuX2VsZW1lbnRfc2V0X2Rpc2Fi
bGVkOgotICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxLZXlnZW5FbGVtZW50Ci0gKiBAdmFsdWU6
IEEgI2dib29sZWFuCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJ
IHZvaWQKLXdlYmtpdF9kb21faHRtbF9rZXlnZW5fZWxlbWVudF9zZXRfZGlzYWJsZWQoV2ViS2l0
RE9NSFRNTEtleWdlbkVsZW1lbnQqIHNlbGYsIGdib29sZWFuIHZhbHVlKTsKLQotLyoqCi0gKiB3
ZWJraXRfZG9tX2h0bWxfa2V5Z2VuX2VsZW1lbnRfZ2V0X2Zvcm06Ci0gKiBAc2VsZjogQSAjV2Vi
S2l0RE9NSFRNTEtleWdlbkVsZW1lbnQKLSAqCi0gKiBSZXR1cm5zOiAodHJhbnNmZXIgbm9uZSk6
IEEgI1dlYktpdERPTUhUTUxGb3JtRWxlbWVudAotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUK
LSoqLwotV0VCS0lUX0FQSSBXZWJLaXRET01IVE1MRm9ybUVsZW1lbnQqCi13ZWJraXRfZG9tX2h0
bWxfa2V5Z2VuX2VsZW1lbnRfZ2V0X2Zvcm0oV2ViS2l0RE9NSFRNTEtleWdlbkVsZW1lbnQqIHNl
bGYpOwotCi0vKioKLSAqIHdlYmtpdF9kb21faHRtbF9rZXlnZW5fZWxlbWVudF9nZXRfa2V5dHlw
ZToKLSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MS2V5Z2VuRWxlbWVudAotICoKLSAqIFJldHVy
bnM6IEEgI2djaGFyCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJ
IGdjaGFyKgotd2Via2l0X2RvbV9odG1sX2tleWdlbl9lbGVtZW50X2dldF9rZXl0eXBlKFdlYktp
dERPTUhUTUxLZXlnZW5FbGVtZW50KiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0bWxf
a2V5Z2VuX2VsZW1lbnRfc2V0X2tleXR5cGU6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTEtl
eWdlbkVsZW1lbnQKLSAqIEB2YWx1ZTogQSAjZ2NoYXIKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3Rh
YmxlCi0qKi8KLVdFQktJVF9BUEkgdm9pZAotd2Via2l0X2RvbV9odG1sX2tleWdlbl9lbGVtZW50
X3NldF9rZXl0eXBlKFdlYktpdERPTUhUTUxLZXlnZW5FbGVtZW50KiBzZWxmLCBjb25zdCBnY2hh
ciogdmFsdWUpOwotCi0vKioKLSAqIHdlYmtpdF9kb21faHRtbF9rZXlnZW5fZWxlbWVudF9nZXRf
bmFtZToKLSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MS2V5Z2VuRWxlbWVudAotICoKLSAqIFJl
dHVybnM6IEEgI2djaGFyCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRf
QVBJIGdjaGFyKgotd2Via2l0X2RvbV9odG1sX2tleWdlbl9lbGVtZW50X2dldF9uYW1lKFdlYktp
dERPTUhUTUxLZXlnZW5FbGVtZW50KiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0bWxf
a2V5Z2VuX2VsZW1lbnRfc2V0X25hbWU6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTEtleWdl
bkVsZW1lbnQKLSAqIEB2YWx1ZTogQSAjZ2NoYXIKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxl
Ci0qKi8KLVdFQktJVF9BUEkgdm9pZAotd2Via2l0X2RvbV9odG1sX2tleWdlbl9lbGVtZW50X3Nl
dF9uYW1lKFdlYktpdERPTUhUTUxLZXlnZW5FbGVtZW50KiBzZWxmLCBjb25zdCBnY2hhciogdmFs
dWUpOwotCi0vKioKLSAqIHdlYmtpdF9kb21faHRtbF9rZXlnZW5fZWxlbWVudF9nZXRfa2V5Z2Vu
X3R5cGU6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTEtleWdlbkVsZW1lbnQKLSAqCi0gKiBS
ZXR1cm5zOiBBICNnY2hhcgotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lU
X0FQSSBnY2hhcioKLXdlYmtpdF9kb21faHRtbF9rZXlnZW5fZWxlbWVudF9nZXRfa2V5Z2VuX3R5
cGUoV2ViS2l0RE9NSFRNTEtleWdlbkVsZW1lbnQqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9k
b21faHRtbF9rZXlnZW5fZWxlbWVudF9nZXRfd2lsbF92YWxpZGF0ZToKLSAqIEBzZWxmOiBBICNX
ZWJLaXRET01IVE1MS2V5Z2VuRWxlbWVudAotICoKLSAqIFJldHVybnM6IEEgI2dib29sZWFuCi0g
KgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIGdib29sZWFuCi13ZWJr
aXRfZG9tX2h0bWxfa2V5Z2VuX2VsZW1lbnRfZ2V0X3dpbGxfdmFsaWRhdGUoV2ViS2l0RE9NSFRN
TEtleWdlbkVsZW1lbnQqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9kb21faHRtbF9rZXlnZW5f
ZWxlbWVudF9nZXRfdmFsaWRpdHk6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTEtleWdlbkVs
ZW1lbnQKLSAqCi0gKiBSZXR1cm5zOiAodHJhbnNmZXIgZnVsbCk6IEEgI1dlYktpdERPTVZhbGlk
aXR5U3RhdGUKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgV2Vi
S2l0RE9NVmFsaWRpdHlTdGF0ZSoKLXdlYmtpdF9kb21faHRtbF9rZXlnZW5fZWxlbWVudF9nZXRf
dmFsaWRpdHkoV2ViS2l0RE9NSFRNTEtleWdlbkVsZW1lbnQqIHNlbGYpOwotCi0vKioKLSAqIHdl
YmtpdF9kb21faHRtbF9rZXlnZW5fZWxlbWVudF9nZXRfdmFsaWRhdGlvbl9tZXNzYWdlOgotICog
QHNlbGY6IEEgI1dlYktpdERPTUhUTUxLZXlnZW5FbGVtZW50Ci0gKgotICogUmV0dXJuczogQSAj
Z2NoYXIKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgZ2NoYXIq
Ci13ZWJraXRfZG9tX2h0bWxfa2V5Z2VuX2VsZW1lbnRfZ2V0X3ZhbGlkYXRpb25fbWVzc2FnZShX
ZWJLaXRET01IVE1MS2V5Z2VuRWxlbWVudCogc2VsZik7Ci0KLS8qKgotICogd2Via2l0X2RvbV9o
dG1sX2tleWdlbl9lbGVtZW50X2dldF9sYWJlbHM6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRN
TEtleWdlbkVsZW1lbnQKLSAqCi0gKiBSZXR1cm5zOiAodHJhbnNmZXIgZnVsbCk6IEEgI1dlYktp
dERPTU5vZGVMaXN0Ci0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJ
IFdlYktpdERPTU5vZGVMaXN0Kgotd2Via2l0X2RvbV9odG1sX2tleWdlbl9lbGVtZW50X2dldF9s
YWJlbHMoV2ViS2l0RE9NSFRNTEtleWdlbkVsZW1lbnQqIHNlbGYpOwotCi1HX0VORF9ERUNMUwot
Ci0jZW5kaWYgLyogV0VCS0lUX0RPTV9VU0VfVU5TVEFCTEVfQVBJICovCi0jZW5kaWYgLyogV2Vi
S2l0RE9NSFRNTEtleWdlbkVsZW1lbnRfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MS2V5Z2Vu
RWxlbWVudFByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTEtleWdlbkVsZW1lbnRQcml2YXRlLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNlOWRkNDkuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1M
S2V5Z2VuRWxlbWVudFByaXZhdGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLS8q
Ci0gKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0
LgotICogIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3Mu
cGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgV2ViS2l0RE9NSFRNTEtleWdl
bkVsZW1lbnRQcml2YXRlX2gKLSNkZWZpbmUgV2ViS2l0RE9NSFRNTEtleWdlbkVsZW1lbnRQcml2
YXRlX2gKLQotI2luY2x1ZGUgPFdlYkNvcmUvSFRNTEtleWdlbkVsZW1lbnQuaD4KLSNpbmNsdWRl
IDx3ZWJraXRkb20vV2ViS2l0RE9NSFRNTEtleWdlbkVsZW1lbnQuaD4KLQotbmFtZXNwYWNlIFdl
YktpdCB7Ci1XZWJLaXRET01IVE1MS2V5Z2VuRWxlbWVudCogd3JhcEhUTUxLZXlnZW5FbGVtZW50
KFdlYkNvcmU6OkhUTUxLZXlnZW5FbGVtZW50Kik7Ci1XZWJLaXRET01IVE1MS2V5Z2VuRWxlbWVu
dCoga2l0KFdlYkNvcmU6OkhUTUxLZXlnZW5FbGVtZW50Kik7Ci1XZWJDb3JlOjpIVE1MS2V5Z2Vu
RWxlbWVudCogY29yZShXZWJLaXRET01IVE1MS2V5Z2VuRWxlbWVudCopOwotfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0Ci0KLSNlbmRpZiAvKiBXZWJLaXRET01IVE1MS2V5Z2VuRWxlbWVudFByaXZhdGVf
aCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MTGFiZWxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTExh
YmVsRWxlbWVudC5jcHAKaW5kZXggMzA3ZTRiZi4uMzA0MGZkOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01I
VE1MTGFiZWxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxMYWJlbEVsZW1lbnQuY3BwCkBAIC0z
Nyw3ICszNyw2IEBACiAjaW5jbHVkZSAiV2ViS2l0RE9NTm9kZVByaXZhdGUuaCIKICNpbmNsdWRl
ICJXZWJLaXRET01Qcml2YXRlLmgiCiAjaW5jbHVkZSAiQ29udmVydFRvVVRGOFN0cmluZy5oIgot
I2luY2x1ZGUgIldlYktpdERPTUhUTUxMYWJlbEVsZW1lbnRVbnN0YWJsZS5oIgogI2luY2x1ZGUg
PHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKQEAgLTEwMiw3ICsxMDEs
NiBAQCBlbnVtIHsKICAgICBQUk9QXzAsCiAgICAgUFJPUF9GT1JNLAogICAgIFBST1BfSFRNTF9G
T1IsCi0gICAgUFJPUF9DT05UUk9MLAogfTsKIAogc3RhdGljIHZvaWQgd2Via2l0X2RvbV9odG1s
X2xhYmVsX2VsZW1lbnRfc2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcGVy
dHlJZCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpCkBAIC0xMzAsOSAr
MTI4LDYgQEAgc3RhdGljIHZvaWQgd2Via2l0X2RvbV9odG1sX2xhYmVsX2VsZW1lbnRfZ2V0X3By
b3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHIKICAgICBjYXNlIFBST1BfSFRNTF9GT1I6
CiAgICAgICAgIGdfdmFsdWVfdGFrZV9zdHJpbmcodmFsdWUsIHdlYmtpdF9kb21faHRtbF9sYWJl
bF9lbGVtZW50X2dldF9odG1sX2ZvcihzZWxmKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
UFJPUF9DT05UUk9MOgotICAgICAgICBnX3ZhbHVlX3NldF9vYmplY3QodmFsdWUsIHdlYmtpdF9k
b21faHRtbF9sYWJlbF9lbGVtZW50X2dldF9jb250cm9sKHNlbGYpKTsKLSAgICAgICAgYnJlYWs7
CiAgICAgZGVmYXVsdDoKICAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lE
KG9iamVjdCwgcHJvcGVydHlJZCwgcHNwZWMpOwogICAgICAgICBicmVhazsKQEAgLTE2NCwxNyAr
MTU5LDYgQEAgc3RhdGljIHZvaWQgd2Via2l0X2RvbV9odG1sX2xhYmVsX2VsZW1lbnRfY2xhc3Nf
aW5pdChXZWJLaXRET01IVE1MTGFiZWxFbGVtZW50Q2wKICAgICAgICAgICAgICJyZWFkLXdyaXRl
IGdjaGFyKiBIVE1MTGFiZWxFbGVtZW50Omh0bWwtZm9yIiwKICAgICAgICAgICAgICIiLAogICAg
ICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURXUklURSkpOwotCi0gICAgZ19vYmplY3RfY2xhc3Nf
aW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAgZ29iamVjdENsYXNzLAotICAgICAgICBQUk9QX0NP
TlRST0wsCi0gICAgICAgIGdfcGFyYW1fc3BlY19vYmplY3QoCi0gICAgICAgICAgICAiY29udHJv
bCIsCi0gICAgICAgICAgICAiSFRNTExhYmVsRWxlbWVudDpjb250cm9sIiwKLSAgICAgICAgICAg
ICJyZWFkLW9ubHkgV2ViS2l0RE9NSFRNTEVsZW1lbnQqIEhUTUxMYWJlbEVsZW1lbnQ6Y29udHJv
bCIsCi0gICAgICAgICAgICBXRUJLSVRfRE9NX1RZUEVfSFRNTF9FTEVNRU5ULAotICAgICAgICAg
ICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7Ci0KIH0KIAogc3RhdGljIHZvaWQgd2Via2l0X2Rv
bV9odG1sX2xhYmVsX2VsZW1lbnRfaW5pdChXZWJLaXRET01IVE1MTGFiZWxFbGVtZW50KiByZXF1
ZXN0KQpAQCAtMjEwLDEyICsxOTQsMyBAQCB2b2lkIHdlYmtpdF9kb21faHRtbF9sYWJlbF9lbGVt
ZW50X3NldF9odG1sX2ZvcihXZWJLaXRET01IVE1MTGFiZWxFbGVtZW50KiBzZWxmLAogICAgIGl0
ZW0tPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oV2ViQ29yZTo6SFRNTE5hbWVz
Ojpmb3JBdHRyLCBjb252ZXJ0ZWRWYWx1ZSk7CiB9CiAKLVdlYktpdERPTUhUTUxFbGVtZW50KiB3
ZWJraXRfZG9tX2h0bWxfbGFiZWxfZWxlbWVudF9nZXRfY29udHJvbChXZWJLaXRET01IVE1MTGFi
ZWxFbGVtZW50KiBzZWxmKQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBz
dGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxfTEFCRUxf
RUxFTUVOVChzZWxmKSwgMCk7Ci0gICAgV2ViQ29yZTo6SFRNTExhYmVsRWxlbWVudCogaXRlbSA9
IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6SFRNTEVsZW1lbnQ+IGdv
YmplY3RSZXN1bHQgPSBXVEY6OmdldFB0cihpdGVtLT5jb250cm9sKCkpOwotICAgIHJldHVybiBX
ZWJLaXQ6OmtpdChnb2JqZWN0UmVzdWx0LmdldCgpKTsKLX0KLQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01I
VE1MTGFiZWxFbGVtZW50VW5zdGFibGUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTExhYmVsRWxlbWVudFVuc3RhYmxl
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmMjZlM2EuLjAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJL
aXRET01IVE1MTGFiZWxFbGVtZW50VW5zdGFibGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICsw
LDAgQEAKLS8qCi0gKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJj
ZSBwcm9qZWN0LgotICogIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUt
YmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQot
ICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoK
LSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAot
ICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgV2ViS2l0RE9N
SFRNTExhYmVsRWxlbWVudFVuc3RhYmxlX2gKLSNkZWZpbmUgV2ViS2l0RE9NSFRNTExhYmVsRWxl
bWVudFVuc3RhYmxlX2gKLQotI2lmZGVmIFdFQktJVF9ET01fVVNFX1VOU1RBQkxFX0FQSQotCi0j
aW5jbHVkZSA8d2Via2l0ZG9tL3dlYmtpdGRvbWRlZmluZXMtdW5zdGFibGUuaD4KLQotR19CRUdJ
Tl9ERUNMUwotCi0vKioKLSAqIHdlYmtpdF9kb21faHRtbF9sYWJlbF9lbGVtZW50X2dldF9jb250
cm9sOgotICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxMYWJlbEVsZW1lbnQKLSAqCi0gKiBSZXR1
cm5zOiAodHJhbnNmZXIgbm9uZSk6IEEgI1dlYktpdERPTUhUTUxFbGVtZW50Ci0gKgotICogU3Rh
YmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIFdlYktpdERPTUhUTUxFbGVtZW50Kgot
d2Via2l0X2RvbV9odG1sX2xhYmVsX2VsZW1lbnRfZ2V0X2NvbnRyb2woV2ViS2l0RE9NSFRNTExh
YmVsRWxlbWVudCogc2VsZik7Ci0KLQotR19FTkRfREVDTFMKLQotI2VuZGlmIC8qIFdFQktJVF9E
T01fVVNFX1VOU1RBQkxFX0FQSSAqLwotI2VuZGlmIC8qIFdlYktpdERPTUhUTUxMYWJlbEVsZW1l
bnRVbnN0YWJsZV9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxMaW5rRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktp
dERPTUhUTUxMaW5rRWxlbWVudC5jcHAKaW5kZXggYTllNzAwYy4uOWE0MTUyZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9X
ZWJLaXRET01IVE1MTGlua0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTExpbmtFbGVtZW50LmNw
cApAQCAtMzcsNyArMzcsNiBAQAogI2luY2x1ZGUgIldlYktpdERPTVByaXZhdGUuaCIKICNpbmNs
dWRlICJXZWJLaXRET01TdHlsZVNoZWV0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIkNvbnZlcnRUb1VU
RjhTdHJpbmcuaCIKLSNpbmNsdWRlICJXZWJLaXRET01IVE1MTGlua0VsZW1lbnRVbnN0YWJsZS5o
IgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKQEAg
LTExMCwxMCArMTA5LDcgQEAgZW51bSB7CiAgICAgUFJPUF9TSVpFUywKICAgICBQUk9QX1RBUkdF
VCwKICAgICBQUk9QX1RZUEUsCi0gICAgUFJPUF9BUywKLSAgICBQUk9QX0NST1NTX09SSUdJTiwK
ICAgICBQUk9QX1NIRUVULAotICAgIFBST1BfUkVMX0xJU1QsCiB9OwogCiBzdGF0aWMgdm9pZCB3
ZWJraXRfZG9tX2h0bWxfbGlua19lbGVtZW50X3NldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3Qs
IGd1aW50IHByb3BlcnR5SWQsIGNvbnN0IEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVj
KQpAQCAtMTQ4LDEyICsxNDQsNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX2h0bWxfbGlua19l
bGVtZW50X3NldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHBybwogICAgIGNhc2Ug
UFJPUF9UWVBFOgogICAgICAgICB3ZWJraXRfZG9tX2h0bWxfbGlua19lbGVtZW50X3NldF90eXBl
X2F0dHIoc2VsZiwgZ192YWx1ZV9nZXRfc3RyaW5nKHZhbHVlKSk7CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgUFJPUF9BUzoKLSAgICAgICAgd2Via2l0X2RvbV9odG1sX2xpbmtfZWxlbWVudF9z
ZXRfYXMoc2VsZiwgZ192YWx1ZV9nZXRfc3RyaW5nKHZhbHVlKSk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgUFJPUF9DUk9TU19PUklHSU46Ci0gICAgICAgIHdlYmtpdF9kb21faHRtbF9saW5r
X2VsZW1lbnRfc2V0X2Nyb3NzX29yaWdpbihzZWxmLCBnX3ZhbHVlX2dldF9zdHJpbmcodmFsdWUp
KTsKLSAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgR19PQkpFQ1RfV0FSTl9J
TlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcGVydHlJZCwgcHNwZWMpOwogICAgICAgICBi
cmVhazsKQEAgLTE5NSwxOCArMTg1LDkgQEAgc3RhdGljIHZvaWQgd2Via2l0X2RvbV9odG1sX2xp
bmtfZWxlbWVudF9nZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm8KICAgICBj
YXNlIFBST1BfVFlQRToKICAgICAgICAgZ192YWx1ZV90YWtlX3N0cmluZyh2YWx1ZSwgd2Via2l0
X2RvbV9odG1sX2xpbmtfZWxlbWVudF9nZXRfdHlwZV9hdHRyKHNlbGYpKTsKICAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBQUk9QX0FTOgotICAgICAgICBnX3ZhbHVlX3Rha2Vfc3RyaW5nKHZhbHVl
LCB3ZWJraXRfZG9tX2h0bWxfbGlua19lbGVtZW50X2dldF9hcyhzZWxmKSk7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgUFJPUF9DUk9TU19PUklHSU46Ci0gICAgICAgIGdfdmFsdWVfdGFrZV9z
dHJpbmcodmFsdWUsIHdlYmtpdF9kb21faHRtbF9saW5rX2VsZW1lbnRfZ2V0X2Nyb3NzX29yaWdp
bihzZWxmKSk7Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJPUF9TSEVFVDoKICAgICAgICAg
Z192YWx1ZV9zZXRfb2JqZWN0KHZhbHVlLCB3ZWJraXRfZG9tX2h0bWxfbGlua19lbGVtZW50X2dl
dF9zaGVldChzZWxmKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9SRUxfTElTVDoK
LSAgICAgICAgZ192YWx1ZV9zZXRfb2JqZWN0KHZhbHVlLCB3ZWJraXRfZG9tX2h0bWxfbGlua19l
bGVtZW50X2dldF9yZWxfbGlzdChzZWxmKSk7Ci0gICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6
CiAgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3Bl
cnR5SWQsIHBzcGVjKTsKICAgICAgICAgYnJlYWs7CkBAIC0zMjEsMjYgKzMwMiw2IEBAIHN0YXRp
YyB2b2lkIHdlYmtpdF9kb21faHRtbF9saW5rX2VsZW1lbnRfY2xhc3NfaW5pdChXZWJLaXRET01I
VE1MTGlua0VsZW1lbnRDbGFzCiAKICAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5
KAogICAgICAgICBnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBST1BfQVMsCi0gICAgICAgIGdfcGFy
YW1fc3BlY19zdHJpbmcoCi0gICAgICAgICAgICAiYXMiLAotICAgICAgICAgICAgIkhUTUxMaW5r
RWxlbWVudDphcyIsCi0gICAgICAgICAgICAicmVhZC13cml0ZSBnY2hhciogSFRNTExpbmtFbGVt
ZW50OmFzIiwKLSAgICAgICAgICAgICIiLAotICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURX
UklURSkpOwotCi0gICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAg
Z29iamVjdENsYXNzLAotICAgICAgICBQUk9QX0NST1NTX09SSUdJTiwKLSAgICAgICAgZ19wYXJh
bV9zcGVjX3N0cmluZygKLSAgICAgICAgICAgICJjcm9zcy1vcmlnaW4iLAotICAgICAgICAgICAg
IkhUTUxMaW5rRWxlbWVudDpjcm9zcy1vcmlnaW4iLAotICAgICAgICAgICAgInJlYWQtd3JpdGUg
Z2NoYXIqIEhUTUxMaW5rRWxlbWVudDpjcm9zcy1vcmlnaW4iLAotICAgICAgICAgICAgIiIsCi0g
ICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBRFdSSVRFKSk7Ci0KLSAgICBnX29iamVjdF9jbGFz
c19pbnN0YWxsX3Byb3BlcnR5KAotICAgICAgICBnb2JqZWN0Q2xhc3MsCiAgICAgICAgIFBST1Bf
U0hFRVQsCiAgICAgICAgIGdfcGFyYW1fc3BlY19vYmplY3QoCiAgICAgICAgICAgICAic2hlZXQi
LApAQCAtMzQ4LDE3ICszMDksNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX2h0bWxfbGlua19l
bGVtZW50X2NsYXNzX2luaXQoV2ViS2l0RE9NSFRNTExpbmtFbGVtZW50Q2xhcwogICAgICAgICAg
ICAgInJlYWQtb25seSBXZWJLaXRET01TdHlsZVNoZWV0KiBIVE1MTGlua0VsZW1lbnQ6c2hlZXQi
LAogICAgICAgICAgICAgV0VCS0lUX0RPTV9UWVBFX1NUWUxFX1NIRUVULAogICAgICAgICAgICAg
V0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7Ci0KLSAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3By
b3BlcnR5KAotICAgICAgICBnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBST1BfUkVMX0xJU1QsCi0g
ICAgICAgIGdfcGFyYW1fc3BlY19vYmplY3QoCi0gICAgICAgICAgICAicmVsLWxpc3QiLAotICAg
ICAgICAgICAgIkhUTUxMaW5rRWxlbWVudDpyZWwtbGlzdCIsCi0gICAgICAgICAgICAicmVhZC1v
bmx5IFdlYktpdERPTURPTVRva2VuTGlzdCogSFRNTExpbmtFbGVtZW50OnJlbC1saXN0IiwKLSAg
ICAgICAgICAgIFdFQktJVF9ET01fVFlQRV9ET01fVE9LRU5fTElTVCwKLSAgICAgICAgICAgIFdF
QktJVF9QQVJBTV9SRUFEQUJMRSkpOwotCiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21faHRt
bF9saW5rX2VsZW1lbnRfaW5pdChXZWJLaXRET01IVE1MTGlua0VsZW1lbnQqIHJlcXVlc3QpCkBA
IC01NDQsNDQgKzQ5NCw2IEBAIHZvaWQgd2Via2l0X2RvbV9odG1sX2xpbmtfZWxlbWVudF9zZXRf
dHlwZV9hdHRyKFdlYktpdERPTUhUTUxMaW5rRWxlbWVudCogc2VsZiwKICAgICBpdGVtLT5zZXRB
dHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFdlYkNvcmU6OkhUTUxOYW1lczo6dHlwZUF0
dHIsIGNvbnZlcnRlZFZhbHVlKTsKIH0KIAotZ2NoYXIqIHdlYmtpdF9kb21faHRtbF9saW5rX2Vs
ZW1lbnRfZ2V0X2FzKFdlYktpdERPTUhUTUxMaW5rRWxlbWVudCogc2VsZikKLXsKLSAgICBXZWJD
b3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwoV0VCS0lUX0RPTV9JU19IVE1MX0xJTktfRUxFTUVOVChzZWxmKSwgMCk7Ci0gICAgV2ViQ29y
ZTo6SFRNTExpbmtFbGVtZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdjaGFy
KiByZXN1bHQgPSBjb252ZXJ0VG9VVEY4U3RyaW5nKGl0ZW0tPmF0dHJpYnV0ZVdpdGhvdXRTeW5j
aHJvbml6YXRpb24oV2ViQ29yZTo6SFRNTE5hbWVzOjphc0F0dHIpKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotCi12b2lkIHdlYmtpdF9kb21faHRtbF9saW5rX2VsZW1lbnRfc2V0X2FzKFdlYktp
dERPTUhUTUxMaW5rRWxlbWVudCogc2VsZiwgY29uc3QgZ2NoYXIqIHZhbHVlKQotewotICAgIFdl
YkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl9pZl9mYWls
KFdFQktJVF9ET01fSVNfSFRNTF9MSU5LX0VMRU1FTlQoc2VsZikpOwotICAgIGdfcmV0dXJuX2lm
X2ZhaWwodmFsdWUpOwotICAgIFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudCogaXRlbSA9IFdlYktp
dDo6Y29yZShzZWxmKTsKLSAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRWYWx1ZSA9IFdURjo6U3Ry
aW5nOjpmcm9tVVRGOCh2YWx1ZSk7Ci0gICAgaXRlbS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNo
cm9uaXphdGlvbihXZWJDb3JlOjpIVE1MTmFtZXM6OmFzQXR0ciwgY29udmVydGVkVmFsdWUpOwot
fQotCi1nY2hhciogd2Via2l0X2RvbV9odG1sX2xpbmtfZWxlbWVudF9nZXRfY3Jvc3Nfb3JpZ2lu
KFdlYktpdERPTUhUTUxMaW5rRWxlbWVudCogc2VsZikKLXsKLSAgICBXZWJDb3JlOjpKU01haW5U
aHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RP
TV9JU19IVE1MX0xJTktfRUxFTUVOVChzZWxmKSwgMCk7Ci0gICAgV2ViQ29yZTo6SFRNTExpbmtF
bGVtZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdjaGFyKiByZXN1bHQgPSBj
b252ZXJ0VG9VVEY4U3RyaW5nKGl0ZW0tPmNyb3NzT3JpZ2luKCkpOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci0KLXZvaWQgd2Via2l0X2RvbV9odG1sX2xpbmtfZWxlbWVudF9zZXRfY3Jvc3Nfb3Jp
Z2luKFdlYktpdERPTUhUTUxMaW5rRWxlbWVudCogc2VsZiwgY29uc3QgZ2NoYXIqIHZhbHVlKQot
ewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVy
bl9pZl9mYWlsKFdFQktJVF9ET01fSVNfSFRNTF9MSU5LX0VMRU1FTlQoc2VsZikpOwotICAgIGdf
cmV0dXJuX2lmX2ZhaWwodmFsdWUpOwotICAgIFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudCogaXRl
bSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRWYWx1ZSA9
IFdURjo6U3RyaW5nOjpmcm9tVVRGOCh2YWx1ZSk7Ci0gICAgaXRlbS0+c2V0Q3Jvc3NPcmlnaW4o
Y29udmVydGVkVmFsdWUpOwotfQotCiBXZWJLaXRET01TdHlsZVNoZWV0KiB3ZWJraXRfZG9tX2h0
bWxfbGlua19lbGVtZW50X2dldF9zaGVldChXZWJLaXRET01IVE1MTGlua0VsZW1lbnQqIHNlbGYp
CiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwpAQCAtNTkxLDE1
ICs1MDMsNiBAQCBXZWJLaXRET01TdHlsZVNoZWV0KiB3ZWJraXRfZG9tX2h0bWxfbGlua19lbGVt
ZW50X2dldF9zaGVldChXZWJLaXRET01IVE1MTGlua0VsZQogICAgIHJldHVybiBXZWJLaXQ6Omtp
dChnb2JqZWN0UmVzdWx0LmdldCgpKTsKIH0KIAotV2ViS2l0RE9NRE9NVG9rZW5MaXN0KiB3ZWJr
aXRfZG9tX2h0bWxfbGlua19lbGVtZW50X2dldF9yZWxfbGlzdChXZWJLaXRET01IVE1MTGlua0Vs
ZW1lbnQqIHNlbGYpCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRl
OwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfSFRNTF9MSU5LX0VMRU1F
TlQoc2VsZiksIDApOwotICAgIFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudCogaXRlbSA9IFdlYktp
dDo6Y29yZShzZWxmKTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6RE9NVG9rZW5MaXN0PiBnb2JqZWN0
UmVzdWx0ID0gV1RGOjpnZXRQdHIoaXRlbS0+cmVsTGlzdCgpKTsKLSAgICByZXR1cm4gV2ViS2l0
OjpraXQoZ29iamVjdFJlc3VsdC5nZXQoKSk7Ci19Ci0KIHZvaWQgd2Via2l0X2RvbV9odG1sX2xp
bmtfZWxlbWVudF9zZXRfc2l6ZXMoV2ViS2l0RE9NSFRNTExpbmtFbGVtZW50KiBsaW5rRWxlbWVu
dCwgY29uc3QgZ2NoYXIqIHZhbHVlKQogewogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RP
TV9JU19IVE1MX0xJTktfRUxFTUVOVChsaW5rRWxlbWVudCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01I
VE1MTGlua0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTExpbmtFbGVtZW50LmgKaW5kZXggNDE1OWE1ZC4u
NjdmMDk2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MTGlua0VsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhU
TUxMaW5rRWxlbWVudC5oCkBAIC0yMjEsNiArMjIxLDE3IEBAIFdFQktJVF9BUEkgV2ViS2l0RE9N
U3R5bGVTaGVldCoKIHdlYmtpdF9kb21faHRtbF9saW5rX2VsZW1lbnRfZ2V0X3NoZWV0KFdlYktp
dERPTUhUTUxMaW5rRWxlbWVudCogc2VsZik7CiAKIC8qKgorICogd2Via2l0X2RvbV9odG1sX2xp
bmtfZWxlbWVudF9nZXRfc2l6ZXM6CisgKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTExpbmtFbGVt
ZW50CisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiBBICNXZWJLaXRET01ET01Ub2tl
bkxpc3QKKyAqCisgKiBTaW5jZTogMi4xNgorKiovCitXRUJLSVRfQVBJIFdlYktpdERPTURPTVRv
a2VuTGlzdCoKK3dlYmtpdF9kb21faHRtbF9saW5rX2VsZW1lbnRfZ2V0X3NpemVzKFdlYktpdERP
TUhUTUxMaW5rRWxlbWVudCogc2VsZik7CisKKy8qKgogICogd2Via2l0X2RvbV9odG1sX2xpbmtf
ZWxlbWVudF9zZXRfc2l6ZXM6CiAgKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTExpbmtFbGVtZW50
CiAgKiBAdmFsdWU6IGEgI2djaGFyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxMaW5rRWxlbWVudFVu
c3RhYmxlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
dGsvRE9NL1dlYktpdERPTUhUTUxMaW5rRWxlbWVudFVuc3RhYmxlLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDg4NjcwNjUuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MTGlua0VsZW1l
bnRVbnN0YWJsZS5oCisrKyAvZGV2L251bGwKQEAgLTEsOTkgKzAsMCBAQAotLyoKLSAqICBUaGlz
IGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCi0gKiAgVGhp
cyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9U
IE1PRElGWSEKLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoK
LSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiAgQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBXZWJLaXRET01IVE1MTGlua0VsZW1lbnRVbnN0
YWJsZV9oCi0jZGVmaW5lIFdlYktpdERPTUhUTUxMaW5rRWxlbWVudFVuc3RhYmxlX2gKLQotI2lm
ZGVmIFdFQktJVF9ET01fVVNFX1VOU1RBQkxFX0FQSQotCi0jaW5jbHVkZSA8d2Via2l0ZG9tL1dl
YktpdERPTUN1c3RvbVVuc3RhYmxlLmg+Ci0jaW5jbHVkZSA8d2Via2l0ZG9tL3dlYmtpdGRvbWRl
ZmluZXMtdW5zdGFibGUuaD4KLQotR19CRUdJTl9ERUNMUwotCi0vKioKLSAqIHdlYmtpdF9kb21f
aHRtbF9saW5rX2VsZW1lbnRfZ2V0X3NpemVzOgotICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxM
aW5rRWxlbWVudAotICoKLSAqIFJldHVybnM6ICh0cmFuc2ZlciBmdWxsKTogQSAjV2ViS2l0RE9N
RE9NVG9rZW5MaXN0Ci0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJ
IFdlYktpdERPTURPTVRva2VuTGlzdCoKLXdlYmtpdF9kb21faHRtbF9saW5rX2VsZW1lbnRfZ2V0
X3NpemVzKFdlYktpdERPTUhUTUxMaW5rRWxlbWVudCogc2VsZik7Ci0KLS8qKgotICogd2Via2l0
X2RvbV9odG1sX2xpbmtfZWxlbWVudF9nZXRfYXM6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRN
TExpbmtFbGVtZW50Ci0gKgotICogUmV0dXJuczogQSAjZ2NoYXIKLSAqCi0gKiBTdGFiaWxpdHk6
IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgZ2NoYXIqCi13ZWJraXRfZG9tX2h0bWxfbGlua19l
bGVtZW50X2dldF9hcyhXZWJLaXRET01IVE1MTGlua0VsZW1lbnQqIHNlbGYpOwotCi0vKioKLSAq
IHdlYmtpdF9kb21faHRtbF9saW5rX2VsZW1lbnRfc2V0X2FzOgotICogQHNlbGY6IEEgI1dlYktp
dERPTUhUTUxMaW5rRWxlbWVudAotICogQHZhbHVlOiBBICNnY2hhcgotICoKLSAqIFN0YWJpbGl0
eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSB2b2lkCi13ZWJraXRfZG9tX2h0bWxfbGlua19l
bGVtZW50X3NldF9hcyhXZWJLaXRET01IVE1MTGlua0VsZW1lbnQqIHNlbGYsIGNvbnN0IGdjaGFy
KiB2YWx1ZSk7Ci0KLS8qKgotICogd2Via2l0X2RvbV9odG1sX2xpbmtfZWxlbWVudF9nZXRfY3Jv
c3Nfb3JpZ2luOgotICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxMaW5rRWxlbWVudAotICoKLSAq
IFJldHVybnM6IEEgI2djaGFyCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJL
SVRfQVBJIGdjaGFyKgotd2Via2l0X2RvbV9odG1sX2xpbmtfZWxlbWVudF9nZXRfY3Jvc3Nfb3Jp
Z2luKFdlYktpdERPTUhUTUxMaW5rRWxlbWVudCogc2VsZik7Ci0KLS8qKgotICogd2Via2l0X2Rv
bV9odG1sX2xpbmtfZWxlbWVudF9zZXRfY3Jvc3Nfb3JpZ2luOgotICogQHNlbGY6IEEgI1dlYktp
dERPTUhUTUxMaW5rRWxlbWVudAotICogQHZhbHVlOiBBICNnY2hhcgotICoKLSAqIFN0YWJpbGl0
eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSB2b2lkCi13ZWJraXRfZG9tX2h0bWxfbGlua19l
bGVtZW50X3NldF9jcm9zc19vcmlnaW4oV2ViS2l0RE9NSFRNTExpbmtFbGVtZW50KiBzZWxmLCBj
b25zdCBnY2hhciogdmFsdWUpOwotCi0vKioKLSAqIHdlYmtpdF9kb21faHRtbF9saW5rX2VsZW1l
bnRfZ2V0X3JlbF9saXN0OgotICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxMaW5rRWxlbWVudAot
ICoKLSAqIFJldHVybnM6ICh0cmFuc2ZlciBmdWxsKTogQSAjV2ViS2l0RE9NRE9NVG9rZW5MaXN0
Ci0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIFdlYktpdERPTURP
TVRva2VuTGlzdCoKLXdlYmtpdF9kb21faHRtbF9saW5rX2VsZW1lbnRfZ2V0X3JlbF9saXN0KFdl
YktpdERPTUhUTUxMaW5rRWxlbWVudCogc2VsZik7Ci0KLQotR19FTkRfREVDTFMKLQotI2VuZGlm
IC8qIFdFQktJVF9ET01fVVNFX1VOU1RBQkxFX0FQSSAqLwotI2VuZGlmIC8qIFdlYktpdERPTUhU
TUxMaW5rRWxlbWVudFVuc3RhYmxlX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTE1hcnF1ZWVF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2d0ay9ET00vV2ViS2l0RE9NSFRNTE1hcnF1ZWVFbGVtZW50LmNwcAppbmRleCA5NmYyNDgzLi4w
ZDQ0NzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxNYXJxdWVlRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRE
T01IVE1MTWFycXVlZUVsZW1lbnQuY3BwCkBAIC0zNSw3ICszNSw2IEBACiAjaW5jbHVkZSAiV2Vi
S2l0RE9NTm9kZVByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRET01Qcml2YXRlLmgiCiAjaW5j
bHVkZSAiQ29udmVydFRvVVRGOFN0cmluZy5oIgotI2luY2x1ZGUgIldlYktpdERPTUhUTUxNYXJx
dWVlRWxlbWVudFVuc3RhYmxlLmgiCiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KIApAQCAtOTYsMjI1ICs5NSw4IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9k
b21fZXZlbnRfdGFyZ2V0X2luaXQoV2ViS2l0RE9NRXZlbnRUYXJnZXRJZmFjZSogaWZhY2UpCiAK
IEdfREVGSU5FX1RZUEVfV0lUSF9DT0RFKFdlYktpdERPTUhUTUxNYXJxdWVlRWxlbWVudCwgd2Vi
a2l0X2RvbV9odG1sX21hcnF1ZWVfZWxlbWVudCwgV0VCS0lUX0RPTV9UWVBFX0hUTUxfRUxFTUVO
VCwgR19JTVBMRU1FTlRfSU5URVJGQUNFKFdFQktJVF9ET01fVFlQRV9FVkVOVF9UQVJHRVQsIHdl
YmtpdF9kb21fZXZlbnRfdGFyZ2V0X2luaXQpKQogCi1lbnVtIHsKLSAgICBQUk9QXzAsCi0gICAg
UFJPUF9CRUhBVklPUiwKLSAgICBQUk9QX0JHX0NPTE9SLAotICAgIFBST1BfRElSRUNUSU9OLAot
ICAgIFBST1BfSEVJR0hULAotICAgIFBST1BfSFNQQUNFLAotICAgIFBST1BfTE9PUCwKLSAgICBQ
Uk9QX1NDUk9MTF9BTU9VTlQsCi0gICAgUFJPUF9TQ1JPTExfREVMQVksCi0gICAgUFJPUF9UUlVF
X1NQRUVELAotICAgIFBST1BfVlNQQUNFLAotICAgIFBST1BfV0lEVEgsCi19OwotCi1zdGF0aWMg
dm9pZCB3ZWJraXRfZG9tX2h0bWxfbWFycXVlZV9lbGVtZW50X3NldF9wcm9wZXJ0eShHT2JqZWN0
KiBvYmplY3QsIGd1aW50IHByb3BlcnR5SWQsIGNvbnN0IEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNw
ZWMqIHBzcGVjKQotewotICAgIFdlYktpdERPTUhUTUxNYXJxdWVlRWxlbWVudCogc2VsZiA9IFdF
QktJVF9ET01fSFRNTF9NQVJRVUVFX0VMRU1FTlQob2JqZWN0KTsKLQotICAgIHN3aXRjaCAocHJv
cGVydHlJZCkgewotICAgIGNhc2UgUFJPUF9CRUhBVklPUjoKLSAgICAgICAgd2Via2l0X2RvbV9o
dG1sX21hcnF1ZWVfZWxlbWVudF9zZXRfYmVoYXZpb3Ioc2VsZiwgZ192YWx1ZV9nZXRfc3RyaW5n
KHZhbHVlKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9CR19DT0xPUjoKLSAgICAg
ICAgd2Via2l0X2RvbV9odG1sX21hcnF1ZWVfZWxlbWVudF9zZXRfYmdfY29sb3Ioc2VsZiwgZ192
YWx1ZV9nZXRfc3RyaW5nKHZhbHVlKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9E
SVJFQ1RJT046Ci0gICAgICAgIHdlYmtpdF9kb21faHRtbF9tYXJxdWVlX2VsZW1lbnRfc2V0X2Rp
cmVjdGlvbihzZWxmLCBnX3ZhbHVlX2dldF9zdHJpbmcodmFsdWUpKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBQUk9QX0hFSUdIVDoKLSAgICAgICAgd2Via2l0X2RvbV9odG1sX21hcnF1ZWVf
ZWxlbWVudF9zZXRfaGVpZ2h0KHNlbGYsIGdfdmFsdWVfZ2V0X3N0cmluZyh2YWx1ZSkpOwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfSFNQQUNFOgotICAgICAgICB3ZWJraXRfZG9tX2h0
bWxfbWFycXVlZV9lbGVtZW50X3NldF9oc3BhY2Uoc2VsZiwgZ192YWx1ZV9nZXRfdWxvbmcodmFs
dWUpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX0xPT1A6Ci0gICAgICAgIHdlYmtp
dF9kb21faHRtbF9tYXJxdWVlX2VsZW1lbnRfc2V0X2xvb3Aoc2VsZiwgZ192YWx1ZV9nZXRfbG9u
Zyh2YWx1ZSksIG51bGxwdHIpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfU0NST0xM
X0FNT1VOVDoKLSAgICAgICAgd2Via2l0X2RvbV9odG1sX21hcnF1ZWVfZWxlbWVudF9zZXRfc2Ny
b2xsX2Ftb3VudChzZWxmLCBnX3ZhbHVlX2dldF91bG9uZyh2YWx1ZSkpOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIFBST1BfU0NST0xMX0RFTEFZOgotICAgICAgICB3ZWJraXRfZG9tX2h0bWxf
bWFycXVlZV9lbGVtZW50X3NldF9zY3JvbGxfZGVsYXkoc2VsZiwgZ192YWx1ZV9nZXRfdWxvbmco
dmFsdWUpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX1RSVUVfU1BFRUQ6Ci0gICAg
ICAgIHdlYmtpdF9kb21faHRtbF9tYXJxdWVlX2VsZW1lbnRfc2V0X3RydWVfc3BlZWQoc2VsZiwg
Z192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBS
T1BfVlNQQUNFOgotICAgICAgICB3ZWJraXRfZG9tX2h0bWxfbWFycXVlZV9lbGVtZW50X3NldF92
c3BhY2Uoc2VsZiwgZ192YWx1ZV9nZXRfdWxvbmcodmFsdWUpKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBQUk9QX1dJRFRIOgotICAgICAgICB3ZWJraXRfZG9tX2h0bWxfbWFycXVlZV9lbGVt
ZW50X3NldF93aWR0aChzZWxmLCBnX3ZhbHVlX2dldF9zdHJpbmcodmFsdWUpKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BF
UlRZX0lEKG9iamVjdCwgcHJvcGVydHlJZCwgcHNwZWMpOwotICAgICAgICBicmVhazsKLSAgICB9
Ci19Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdF9kb21faHRtbF9tYXJxdWVlX2VsZW1lbnRfZ2V0X3By
b3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcGVydHlJZCwgR1ZhbHVlKiB2YWx1ZSwg
R1BhcmFtU3BlYyogcHNwZWMpCi17Ci0gICAgV2ViS2l0RE9NSFRNTE1hcnF1ZWVFbGVtZW50KiBz
ZWxmID0gV0VCS0lUX0RPTV9IVE1MX01BUlFVRUVfRUxFTUVOVChvYmplY3QpOwotCi0gICAgc3dp
dGNoIChwcm9wZXJ0eUlkKSB7Ci0gICAgY2FzZSBQUk9QX0JFSEFWSU9SOgotICAgICAgICBnX3Zh
bHVlX3Rha2Vfc3RyaW5nKHZhbHVlLCB3ZWJraXRfZG9tX2h0bWxfbWFycXVlZV9lbGVtZW50X2dl
dF9iZWhhdmlvcihzZWxmKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9CR19DT0xP
UjoKLSAgICAgICAgZ192YWx1ZV90YWtlX3N0cmluZyh2YWx1ZSwgd2Via2l0X2RvbV9odG1sX21h
cnF1ZWVfZWxlbWVudF9nZXRfYmdfY29sb3Ioc2VsZikpOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIFBST1BfRElSRUNUSU9OOgotICAgICAgICBnX3ZhbHVlX3Rha2Vfc3RyaW5nKHZhbHVlLCB3
ZWJraXRfZG9tX2h0bWxfbWFycXVlZV9lbGVtZW50X2dldF9kaXJlY3Rpb24oc2VsZikpOwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfSEVJR0hUOgotICAgICAgICBnX3ZhbHVlX3Rha2Vf
c3RyaW5nKHZhbHVlLCB3ZWJraXRfZG9tX2h0bWxfbWFycXVlZV9lbGVtZW50X2dldF9oZWlnaHQo
c2VsZikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfSFNQQUNFOgotICAgICAgICBn
X3ZhbHVlX3NldF91bG9uZyh2YWx1ZSwgd2Via2l0X2RvbV9odG1sX21hcnF1ZWVfZWxlbWVudF9n
ZXRfaHNwYWNlKHNlbGYpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX0xPT1A6Ci0g
ICAgICAgIGdfdmFsdWVfc2V0X2xvbmcodmFsdWUsIHdlYmtpdF9kb21faHRtbF9tYXJxdWVlX2Vs
ZW1lbnRfZ2V0X2xvb3Aoc2VsZikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfU0NS
T0xMX0FNT1VOVDoKLSAgICAgICAgZ192YWx1ZV9zZXRfdWxvbmcodmFsdWUsIHdlYmtpdF9kb21f
aHRtbF9tYXJxdWVlX2VsZW1lbnRfZ2V0X3Njcm9sbF9hbW91bnQoc2VsZikpOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIFBST1BfU0NST0xMX0RFTEFZOgotICAgICAgICBnX3ZhbHVlX3NldF91
bG9uZyh2YWx1ZSwgd2Via2l0X2RvbV9odG1sX21hcnF1ZWVfZWxlbWVudF9nZXRfc2Nyb2xsX2Rl
bGF5KHNlbGYpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX1RSVUVfU1BFRUQ6Ci0g
ICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF9kb21faHRtbF9tYXJxdWVl
X2VsZW1lbnRfZ2V0X3RydWVfc3BlZWQoc2VsZikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IFBST1BfVlNQQUNFOgotICAgICAgICBnX3ZhbHVlX3NldF91bG9uZyh2YWx1ZSwgd2Via2l0X2Rv
bV9odG1sX21hcnF1ZWVfZWxlbWVudF9nZXRfdnNwYWNlKHNlbGYpKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBQUk9QX1dJRFRIOgotICAgICAgICBnX3ZhbHVlX3Rha2Vfc3RyaW5nKHZhbHVl
LCB3ZWJraXRfZG9tX2h0bWxfbWFycXVlZV9lbGVtZW50X2dldF93aWR0aChzZWxmKSk7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9Q
Uk9QRVJUWV9JRChvYmplY3QsIHByb3BlcnR5SWQsIHBzcGVjKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgfQotfQotCiBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX2h0bWxfbWFycXVlZV9lbGVtZW50X2Ns
YXNzX2luaXQoV2ViS2l0RE9NSFRNTE1hcnF1ZWVFbGVtZW50Q2xhc3MqIHJlcXVlc3RDbGFzcykK
IHsKLSAgICBHT2JqZWN0Q2xhc3MqIGdvYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKHJlcXVl
c3RDbGFzcyk7Ci0gICAgZ29iamVjdENsYXNzLT5zZXRfcHJvcGVydHkgPSB3ZWJraXRfZG9tX2h0
bWxfbWFycXVlZV9lbGVtZW50X3NldF9wcm9wZXJ0eTsKLSAgICBnb2JqZWN0Q2xhc3MtPmdldF9w
cm9wZXJ0eSA9IHdlYmtpdF9kb21faHRtbF9tYXJxdWVlX2VsZW1lbnRfZ2V0X3Byb3BlcnR5Owot
Ci0gICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAgZ29iamVjdENs
YXNzLAotICAgICAgICBQUk9QX0JFSEFWSU9SLAotICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5n
KAotICAgICAgICAgICAgImJlaGF2aW9yIiwKLSAgICAgICAgICAgICJIVE1MTWFycXVlZUVsZW1l
bnQ6YmVoYXZpb3IiLAotICAgICAgICAgICAgInJlYWQtd3JpdGUgZ2NoYXIqIEhUTUxNYXJxdWVl
RWxlbWVudDpiZWhhdmlvciIsCi0gICAgICAgICAgICAiIiwKLSAgICAgICAgICAgIFdFQktJVF9Q
QVJBTV9SRUFEV1JJVEUpKTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHko
Ci0gICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9CR19DT0xPUiwKLSAgICAgICAg
Z19wYXJhbV9zcGVjX3N0cmluZygKLSAgICAgICAgICAgICJiZy1jb2xvciIsCi0gICAgICAgICAg
ICAiSFRNTE1hcnF1ZWVFbGVtZW50OmJnLWNvbG9yIiwKLSAgICAgICAgICAgICJyZWFkLXdyaXRl
IGdjaGFyKiBIVE1MTWFycXVlZUVsZW1lbnQ6YmctY29sb3IiLAotICAgICAgICAgICAgIiIsCi0g
ICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBRFdSSVRFKSk7Ci0KLSAgICBnX29iamVjdF9jbGFz
c19pbnN0YWxsX3Byb3BlcnR5KAotICAgICAgICBnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBST1Bf
RElSRUNUSU9OLAotICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nKAotICAgICAgICAgICAgImRp
cmVjdGlvbiIsCi0gICAgICAgICAgICAiSFRNTE1hcnF1ZWVFbGVtZW50OmRpcmVjdGlvbiIsCi0g
ICAgICAgICAgICAicmVhZC13cml0ZSBnY2hhciogSFRNTE1hcnF1ZWVFbGVtZW50OmRpcmVjdGlv
biIsCi0gICAgICAgICAgICAiIiwKLSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEV1JJVEUp
KTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmpl
Y3RDbGFzcywKLSAgICAgICAgUFJPUF9IRUlHSFQsCi0gICAgICAgIGdfcGFyYW1fc3BlY19zdHJp
bmcoCi0gICAgICAgICAgICAiaGVpZ2h0IiwKLSAgICAgICAgICAgICJIVE1MTWFycXVlZUVsZW1l
bnQ6aGVpZ2h0IiwKLSAgICAgICAgICAgICJyZWFkLXdyaXRlIGdjaGFyKiBIVE1MTWFycXVlZUVs
ZW1lbnQ6aGVpZ2h0IiwKLSAgICAgICAgICAgICIiLAotICAgICAgICAgICAgV0VCS0lUX1BBUkFN
X1JFQURXUklURSkpOwotCi0gICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAg
ICAgICAgZ29iamVjdENsYXNzLAotICAgICAgICBQUk9QX0hTUEFDRSwKLSAgICAgICAgZ19wYXJh
bV9zcGVjX3Vsb25nKAotICAgICAgICAgICAgImhzcGFjZSIsCi0gICAgICAgICAgICAiSFRNTE1h
cnF1ZWVFbGVtZW50OmhzcGFjZSIsCi0gICAgICAgICAgICAicmVhZC13cml0ZSBndWxvbmcgSFRN
TE1hcnF1ZWVFbGVtZW50OmhzcGFjZSIsCi0gICAgICAgICAgICAwLCBHX01BWFVMT05HLCAwLAot
ICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURXUklURSkpOwotCi0gICAgZ19vYmplY3RfY2xh
c3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAgZ29iamVjdENsYXNzLAotICAgICAgICBQUk9Q
X0xPT1AsCi0gICAgICAgIGdfcGFyYW1fc3BlY19sb25nKAotICAgICAgICAgICAgImxvb3AiLAot
ICAgICAgICAgICAgIkhUTUxNYXJxdWVlRWxlbWVudDpsb29wIiwKLSAgICAgICAgICAgICJyZWFk
LXdyaXRlIGdsb25nIEhUTUxNYXJxdWVlRWxlbWVudDpsb29wIiwKLSAgICAgICAgICAgIEdfTUlO
TE9ORywgR19NQVhMT05HLCAwLAotICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURXUklURSkp
OwotCi0gICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAgZ29iamVj
dENsYXNzLAotICAgICAgICBQUk9QX1NDUk9MTF9BTU9VTlQsCi0gICAgICAgIGdfcGFyYW1fc3Bl
Y191bG9uZygKLSAgICAgICAgICAgICJzY3JvbGwtYW1vdW50IiwKLSAgICAgICAgICAgICJIVE1M
TWFycXVlZUVsZW1lbnQ6c2Nyb2xsLWFtb3VudCIsCi0gICAgICAgICAgICAicmVhZC13cml0ZSBn
dWxvbmcgSFRNTE1hcnF1ZWVFbGVtZW50OnNjcm9sbC1hbW91bnQiLAotICAgICAgICAgICAgMCwg
R19NQVhVTE9ORywgMCwKLSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEV1JJVEUpKTsKLQot
ICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFz
cywKLSAgICAgICAgUFJPUF9TQ1JPTExfREVMQVksCi0gICAgICAgIGdfcGFyYW1fc3BlY191bG9u
ZygKLSAgICAgICAgICAgICJzY3JvbGwtZGVsYXkiLAotICAgICAgICAgICAgIkhUTUxNYXJxdWVl
RWxlbWVudDpzY3JvbGwtZGVsYXkiLAotICAgICAgICAgICAgInJlYWQtd3JpdGUgZ3Vsb25nIEhU
TUxNYXJxdWVlRWxlbWVudDpzY3JvbGwtZGVsYXkiLAotICAgICAgICAgICAgMCwgR19NQVhVTE9O
RywgMCwKLSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEV1JJVEUpKTsKLQotICAgIGdfb2Jq
ZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAg
ICAgUFJPUF9UUlVFX1NQRUVELAotICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigKLSAgICAg
ICAgICAgICJ0cnVlLXNwZWVkIiwKLSAgICAgICAgICAgICJIVE1MTWFycXVlZUVsZW1lbnQ6dHJ1
ZS1zcGVlZCIsCi0gICAgICAgICAgICAicmVhZC13cml0ZSBnYm9vbGVhbiBIVE1MTWFycXVlZUVs
ZW1lbnQ6dHJ1ZS1zcGVlZCIsCi0gICAgICAgICAgICBGQUxTRSwKLSAgICAgICAgICAgIFdFQktJ
VF9QQVJBTV9SRUFEV1JJVEUpKTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVy
dHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9WU1BBQ0UsCi0gICAgICAg
IGdfcGFyYW1fc3BlY191bG9uZygKLSAgICAgICAgICAgICJ2c3BhY2UiLAotICAgICAgICAgICAg
IkhUTUxNYXJxdWVlRWxlbWVudDp2c3BhY2UiLAotICAgICAgICAgICAgInJlYWQtd3JpdGUgZ3Vs
b25nIEhUTUxNYXJxdWVlRWxlbWVudDp2c3BhY2UiLAotICAgICAgICAgICAgMCwgR19NQVhVTE9O
RywgMCwKLSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEV1JJVEUpKTsKLQotICAgIGdfb2Jq
ZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAg
ICAgUFJPUF9XSURUSCwKLSAgICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZygKLSAgICAgICAgICAg
ICJ3aWR0aCIsCi0gICAgICAgICAgICAiSFRNTE1hcnF1ZWVFbGVtZW50OndpZHRoIiwKLSAgICAg
ICAgICAgICJyZWFkLXdyaXRlIGdjaGFyKiBIVE1MTWFycXVlZUVsZW1lbnQ6d2lkdGgiLAotICAg
ICAgICAgICAgIiIsCi0gICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBRFdSSVRFKSk7Ci0KIH0K
IAogc3RhdGljIHZvaWQgd2Via2l0X2RvbV9odG1sX21hcnF1ZWVfZWxlbWVudF9pbml0KFdlYktp
dERPTUhUTUxNYXJxdWVlRWxlbWVudCogcmVxdWVzdCkKQEAgLTMzNywyMDcgKzExOSwzIEBAIHZv
aWQgd2Via2l0X2RvbV9odG1sX21hcnF1ZWVfZWxlbWVudF9zdG9wKFdlYktpdERPTUhUTUxNYXJx
dWVlRWxlbWVudCogc2VsZikKICAgICBXZWJDb3JlOjpIVE1MTWFycXVlZUVsZW1lbnQqIGl0ZW0g
PSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgaXRlbS0+c3RvcCgpOwogfQotCi1nY2hhciogd2Vi
a2l0X2RvbV9odG1sX21hcnF1ZWVfZWxlbWVudF9nZXRfYmVoYXZpb3IoV2ViS2l0RE9NSFRNTE1h
cnF1ZWVFbGVtZW50KiBzZWxmKQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0
ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxfTUFS
UVVFRV9FTEVNRU5UKHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpIVE1MTWFycXVlZUVsZW1lbnQq
IGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ2NoYXIqIHJlc3VsdCA9IGNvbnZlcnRU
b1VURjhTdHJpbmcoaXRlbS0+YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihXZWJDb3Jl
OjpIVE1MTmFtZXM6OmJlaGF2aW9yQXR0cikpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXZv
aWQgd2Via2l0X2RvbV9odG1sX21hcnF1ZWVfZWxlbWVudF9zZXRfYmVoYXZpb3IoV2ViS2l0RE9N
SFRNTE1hcnF1ZWVFbGVtZW50KiBzZWxmLCBjb25zdCBnY2hhciogdmFsdWUpCi17Ci0gICAgV2Vi
Q29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwo
V0VCS0lUX0RPTV9JU19IVE1MX01BUlFVRUVfRUxFTUVOVChzZWxmKSk7Ci0gICAgZ19yZXR1cm5f
aWZfZmFpbCh2YWx1ZSk7Ci0gICAgV2ViQ29yZTo6SFRNTE1hcnF1ZWVFbGVtZW50KiBpdGVtID0g
V2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIFdURjo6U3RyaW5nIGNvbnZlcnRlZFZhbHVlID0gV1RG
OjpTdHJpbmc6OmZyb21VVEY4KHZhbHVlKTsKLSAgICBpdGVtLT5zZXRBdHRyaWJ1dGVXaXRob3V0
U3luY2hyb25pemF0aW9uKFdlYkNvcmU6OkhUTUxOYW1lczo6YmVoYXZpb3JBdHRyLCBjb252ZXJ0
ZWRWYWx1ZSk7Ci19Ci0KLWdjaGFyKiB3ZWJraXRfZG9tX2h0bWxfbWFycXVlZV9lbGVtZW50X2dl
dF9iZ19jb2xvcihXZWJLaXRET01IVE1MTWFycXVlZUVsZW1lbnQqIHNlbGYpCi17Ci0gICAgV2Vi
Q29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKFdFQktJVF9ET01fSVNfSFRNTF9NQVJRVUVFX0VMRU1FTlQoc2VsZiksIDApOwotICAgIFdl
YkNvcmU6OkhUTUxNYXJxdWVlRWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAg
ICBnY2hhciogcmVzdWx0ID0gY29udmVydFRvVVRGOFN0cmluZyhpdGVtLT5hdHRyaWJ1dGVXaXRo
b3V0U3luY2hyb25pemF0aW9uKFdlYkNvcmU6OkhUTUxOYW1lczo6Ymdjb2xvckF0dHIpKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotCi12b2lkIHdlYmtpdF9kb21faHRtbF9tYXJxdWVlX2VsZW1l
bnRfc2V0X2JnX2NvbG9yKFdlYktpdERPTUhUTUxNYXJxdWVlRWxlbWVudCogc2VsZiwgY29uc3Qg
Z2NoYXIqIHZhbHVlKQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0
ZTsKLSAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfSFRNTF9NQVJRVUVFX0VMRU1F
TlQoc2VsZikpOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwodmFsdWUpOwotICAgIFdlYkNvcmU6OkhU
TUxNYXJxdWVlRWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBXVEY6OlN0
cmluZyBjb252ZXJ0ZWRWYWx1ZSA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOCh2YWx1ZSk7Ci0gICAg
aXRlbS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihXZWJDb3JlOjpIVE1MTmFt
ZXM6OmJnY29sb3JBdHRyLCBjb252ZXJ0ZWRWYWx1ZSk7Ci19Ci0KLWdjaGFyKiB3ZWJraXRfZG9t
X2h0bWxfbWFycXVlZV9lbGVtZW50X2dldF9kaXJlY3Rpb24oV2ViS2l0RE9NSFRNTE1hcnF1ZWVF
bGVtZW50KiBzZWxmKQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0
ZTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxfTUFSUVVFRV9F
TEVNRU5UKHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpIVE1MTWFycXVlZUVsZW1lbnQqIGl0ZW0g
PSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ2NoYXIqIHJlc3VsdCA9IGNvbnZlcnRUb1VURjhT
dHJpbmcoaXRlbS0+YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihXZWJDb3JlOjpIVE1M
TmFtZXM6OmRpcmVjdGlvbkF0dHIpKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi12b2lkIHdl
YmtpdF9kb21faHRtbF9tYXJxdWVlX2VsZW1lbnRfc2V0X2RpcmVjdGlvbihXZWJLaXRET01IVE1M
TWFycXVlZUVsZW1lbnQqIHNlbGYsIGNvbnN0IGdjaGFyKiB2YWx1ZSkKLXsKLSAgICBXZWJDb3Jl
OjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5faWZfZmFpbChXRUJL
SVRfRE9NX0lTX0hUTUxfTUFSUVVFRV9FTEVNRU5UKHNlbGYpKTsKLSAgICBnX3JldHVybl9pZl9m
YWlsKHZhbHVlKTsKLSAgICBXZWJDb3JlOjpIVE1MTWFycXVlZUVsZW1lbnQqIGl0ZW0gPSBXZWJL
aXQ6OmNvcmUoc2VsZik7Ci0gICAgV1RGOjpTdHJpbmcgY29udmVydGVkVmFsdWUgPSBXVEY6OlN0
cmluZzo6ZnJvbVVURjgodmFsdWUpOwotICAgIGl0ZW0tPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5j
aHJvbml6YXRpb24oV2ViQ29yZTo6SFRNTE5hbWVzOjpkaXJlY3Rpb25BdHRyLCBjb252ZXJ0ZWRW
YWx1ZSk7Ci19Ci0KLWdjaGFyKiB3ZWJraXRfZG9tX2h0bWxfbWFycXVlZV9lbGVtZW50X2dldF9o
ZWlnaHQoV2ViS2l0RE9NSFRNTE1hcnF1ZWVFbGVtZW50KiBzZWxmKQotewotICAgIFdlYkNvcmU6
OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChX
RUJLSVRfRE9NX0lTX0hUTUxfTUFSUVVFRV9FTEVNRU5UKHNlbGYpLCAwKTsKLSAgICBXZWJDb3Jl
OjpIVE1MTWFycXVlZUVsZW1lbnQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ2No
YXIqIHJlc3VsdCA9IGNvbnZlcnRUb1VURjhTdHJpbmcoaXRlbS0+YXR0cmlidXRlV2l0aG91dFN5
bmNocm9uaXphdGlvbihXZWJDb3JlOjpIVE1MTmFtZXM6OmhlaWdodEF0dHIpKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotCi12b2lkIHdlYmtpdF9kb21faHRtbF9tYXJxdWVlX2VsZW1lbnRfc2V0
X2hlaWdodChXZWJLaXRET01IVE1MTWFycXVlZUVsZW1lbnQqIHNlbGYsIGNvbnN0IGdjaGFyKiB2
YWx1ZSkKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAg
Z19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxfTUFSUVVFRV9FTEVNRU5UKHNlbGYp
KTsKLSAgICBnX3JldHVybl9pZl9mYWlsKHZhbHVlKTsKLSAgICBXZWJDb3JlOjpIVE1MTWFycXVl
ZUVsZW1lbnQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgV1RGOjpTdHJpbmcgY29u
dmVydGVkVmFsdWUgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgodmFsdWUpOwotICAgIGl0ZW0tPnNl
dEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oV2ViQ29yZTo6SFRNTE5hbWVzOjpoZWln
aHRBdHRyLCBjb252ZXJ0ZWRWYWx1ZSk7Ci19Ci0KLWd1bG9uZyB3ZWJraXRfZG9tX2h0bWxfbWFy
cXVlZV9lbGVtZW50X2dldF9oc3BhY2UoV2ViS2l0RE9NSFRNTE1hcnF1ZWVFbGVtZW50KiBzZWxm
KQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3Jl
dHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxfTUFSUVVFRV9FTEVNRU5UKHNlbGYp
LCAwKTsKLSAgICBXZWJDb3JlOjpIVE1MTWFycXVlZUVsZW1lbnQqIGl0ZW0gPSBXZWJLaXQ6OmNv
cmUoc2VsZik7Ci0gICAgZ3Vsb25nIHJlc3VsdCA9IGl0ZW0tPmdldFVuc2lnbmVkSW50ZWdyYWxB
dHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpoc3BhY2VBdHRyKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotCi12b2lkIHdlYmtpdF9kb21faHRtbF9tYXJxdWVlX2VsZW1lbnRfc2V0X2hzcGFj
ZShXZWJLaXRET01IVE1MTWFycXVlZUVsZW1lbnQqIHNlbGYsIGd1bG9uZyB2YWx1ZSkKLXsKLSAg
ICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5faWZf
ZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxfTUFSUVVFRV9FTEVNRU5UKHNlbGYpKTsKLSAgICBXZWJD
b3JlOjpIVE1MTWFycXVlZUVsZW1lbnQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAg
aXRlbS0+c2V0VW5zaWduZWRJbnRlZ3JhbEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6Omhz
cGFjZUF0dHIsIHZhbHVlKTsKLX0KLQotZ2xvbmcgd2Via2l0X2RvbV9odG1sX21hcnF1ZWVfZWxl
bWVudF9nZXRfbG9vcChXZWJLaXRET01IVE1MTWFycXVlZUVsZW1lbnQqIHNlbGYpCi17Ci0gICAg
V2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9p
Zl9mYWlsKFdFQktJVF9ET01fSVNfSFRNTF9NQVJRVUVFX0VMRU1FTlQoc2VsZiksIDApOwotICAg
IFdlYkNvcmU6OkhUTUxNYXJxdWVlRWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsK
LSAgICBnbG9uZyByZXN1bHQgPSBpdGVtLT5sb29wKCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfbWFycXVlZV9lbGVtZW50X3NldF9sb29wKFdlYktpdERP
TUhUTUxNYXJxdWVlRWxlbWVudCogc2VsZiwgZ2xvbmcgdmFsdWUsIEdFcnJvcioqIGVycm9yKQot
ewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVy
bl9pZl9mYWlsKFdFQktJVF9ET01fSVNfSFRNTF9NQVJRVUVFX0VMRU1FTlQoc2VsZikpOwotICAg
IGdfcmV0dXJuX2lmX2ZhaWwoIWVycm9yIHx8ICEqZXJyb3IpOwotICAgIFdlYkNvcmU6OkhUTUxN
YXJxdWVlRWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBXZWJDb3JlOjpF
eGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBpdGVtLT5zZXRMb29wKHZhbHVlLCBlYyk7Ci0gICAg
aWYgKGVjKSB7Ci0gICAgICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiBlY2Rl
c2MoZWMpOwotICAgICAgICBnX3NldF9lcnJvcl9saXRlcmFsKGVycm9yLCBnX3F1YXJrX2Zyb21f
c3RyaW5nKCJXRUJLSVRfRE9NIiksIGVjZGVzYy5jb2RlLCBlY2Rlc2MubmFtZSk7Ci0gICAgfQot
fQotCi1ndWxvbmcgd2Via2l0X2RvbV9odG1sX21hcnF1ZWVfZWxlbWVudF9nZXRfc2Nyb2xsX2Ft
b3VudChXZWJLaXRET01IVE1MTWFycXVlZUVsZW1lbnQqIHNlbGYpCi17Ci0gICAgV2ViQ29yZTo6
SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdF
QktJVF9ET01fSVNfSFRNTF9NQVJRVUVFX0VMRU1FTlQoc2VsZiksIDApOwotICAgIFdlYkNvcmU6
OkhUTUxNYXJxdWVlRWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBndWxv
bmcgcmVzdWx0ID0gaXRlbS0+c2Nyb2xsQW1vdW50KCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfbWFycXVlZV9lbGVtZW50X3NldF9zY3JvbGxfYW1vdW50
KFdlYktpdERPTUhUTUxNYXJxdWVlRWxlbWVudCogc2VsZiwgZ3Vsb25nIHZhbHVlKQotewotICAg
IFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl9pZl9m
YWlsKFdFQktJVF9ET01fSVNfSFRNTF9NQVJRVUVFX0VMRU1FTlQoc2VsZikpOwotICAgIFdlYkNv
cmU6OkhUTUxNYXJxdWVlRWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBp
dGVtLT5zZXRTY3JvbGxBbW91bnQodmFsdWUpOwotfQotCi1ndWxvbmcgd2Via2l0X2RvbV9odG1s
X21hcnF1ZWVfZWxlbWVudF9nZXRfc2Nyb2xsX2RlbGF5KFdlYktpdERPTUhUTUxNYXJxdWVlRWxl
bWVudCogc2VsZikKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7
Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19IVE1MX01BUlFVRUVfRUxF
TUVOVChzZWxmKSwgMCk7Ci0gICAgV2ViQ29yZTo6SFRNTE1hcnF1ZWVFbGVtZW50KiBpdGVtID0g
V2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGd1bG9uZyByZXN1bHQgPSBpdGVtLT5zY3JvbGxEZWxh
eSgpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXZvaWQgd2Via2l0X2RvbV9odG1sX21hcnF1
ZWVfZWxlbWVudF9zZXRfc2Nyb2xsX2RlbGF5KFdlYktpdERPTUhUTUxNYXJxdWVlRWxlbWVudCog
c2VsZiwgZ3Vsb25nIHZhbHVlKQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0
ZSBzdGF0ZTsKLSAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfSFRNTF9NQVJRVUVF
X0VMRU1FTlQoc2VsZikpOwotICAgIFdlYkNvcmU6OkhUTUxNYXJxdWVlRWxlbWVudCogaXRlbSA9
IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBpdGVtLT5zZXRTY3JvbGxEZWxheSh2YWx1ZSk7Ci19
Ci0KLWdib29sZWFuIHdlYmtpdF9kb21faHRtbF9tYXJxdWVlX2VsZW1lbnRfZ2V0X3RydWVfc3Bl
ZWQoV2ViS2l0RE9NSFRNTE1hcnF1ZWVFbGVtZW50KiBzZWxmKQotewotICAgIFdlYkNvcmU6OkpT
TWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJL
SVRfRE9NX0lTX0hUTUxfTUFSUVVFRV9FTEVNRU5UKHNlbGYpLCBGQUxTRSk7Ci0gICAgV2ViQ29y
ZTo6SFRNTE1hcnF1ZWVFbGVtZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdi
b29sZWFuIHJlc3VsdCA9IGl0ZW0tPmhhc0F0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24o
V2ViQ29yZTo6SFRNTE5hbWVzOjp0cnVlc3BlZWRBdHRyKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotCi12b2lkIHdlYmtpdF9kb21faHRtbF9tYXJxdWVlX2VsZW1lbnRfc2V0X3RydWVfc3BlZWQo
V2ViS2l0RE9NSFRNTE1hcnF1ZWVFbGVtZW50KiBzZWxmLCBnYm9vbGVhbiB2YWx1ZSkKLXsKLSAg
ICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5faWZf
ZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxfTUFSUVVFRV9FTEVNRU5UKHNlbGYpKTsKLSAgICBXZWJD
b3JlOjpIVE1MTWFycXVlZUVsZW1lbnQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAg
aXRlbS0+c2V0Qm9vbGVhbkF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnRydWVzcGVlZEF0
dHIsIHZhbHVlKTsKLX0KLQotZ3Vsb25nIHdlYmtpdF9kb21faHRtbF9tYXJxdWVlX2VsZW1lbnRf
Z2V0X3ZzcGFjZShXZWJLaXRET01IVE1MTWFycXVlZUVsZW1lbnQqIHNlbGYpCi17Ci0gICAgV2Vi
Q29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKFdFQktJVF9ET01fSVNfSFRNTF9NQVJRVUVFX0VMRU1FTlQoc2VsZiksIDApOwotICAgIFdl
YkNvcmU6OkhUTUxNYXJxdWVlRWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAg
ICBndWxvbmcgcmVzdWx0ID0gaXRlbS0+Z2V0VW5zaWduZWRJbnRlZ3JhbEF0dHJpYnV0ZShXZWJD
b3JlOjpIVE1MTmFtZXM6OnZzcGFjZUF0dHIpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXZv
aWQgd2Via2l0X2RvbV9odG1sX21hcnF1ZWVfZWxlbWVudF9zZXRfdnNwYWNlKFdlYktpdERPTUhU
TUxNYXJxdWVlRWxlbWVudCogc2VsZiwgZ3Vsb25nIHZhbHVlKQotewotICAgIFdlYkNvcmU6OkpT
TWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9E
T01fSVNfSFRNTF9NQVJRVUVFX0VMRU1FTlQoc2VsZikpOwotICAgIFdlYkNvcmU6OkhUTUxNYXJx
dWVlRWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBpdGVtLT5zZXRVbnNp
Z25lZEludGVncmFsQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6dnNwYWNlQXR0ciwgdmFs
dWUpOwotfQotCi1nY2hhciogd2Via2l0X2RvbV9odG1sX21hcnF1ZWVfZWxlbWVudF9nZXRfd2lk
dGgoV2ViS2l0RE9NSFRNTE1hcnF1ZWVFbGVtZW50KiBzZWxmKQotewotICAgIFdlYkNvcmU6OkpT
TWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJL
SVRfRE9NX0lTX0hUTUxfTUFSUVVFRV9FTEVNRU5UKHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpI
VE1MTWFycXVlZUVsZW1lbnQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ2NoYXIq
IHJlc3VsdCA9IGNvbnZlcnRUb1VURjhTdHJpbmcoaXRlbS0+YXR0cmlidXRlV2l0aG91dFN5bmNo
cm9uaXphdGlvbihXZWJDb3JlOjpIVE1MTmFtZXM6OndpZHRoQXR0cikpOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci0KLXZvaWQgd2Via2l0X2RvbV9odG1sX21hcnF1ZWVfZWxlbWVudF9zZXRfd2lk
dGgoV2ViS2l0RE9NSFRNTE1hcnF1ZWVFbGVtZW50KiBzZWxmLCBjb25zdCBnY2hhciogdmFsdWUp
Ci17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0
dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19IVE1MX01BUlFVRUVfRUxFTUVOVChzZWxmKSk7Ci0g
ICAgZ19yZXR1cm5faWZfZmFpbCh2YWx1ZSk7Ci0gICAgV2ViQ29yZTo6SFRNTE1hcnF1ZWVFbGVt
ZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIFdURjo6U3RyaW5nIGNvbnZlcnRl
ZFZhbHVlID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KHZhbHVlKTsKLSAgICBpdGVtLT5zZXRBdHRy
aWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFdlYkNvcmU6OkhUTUxOYW1lczo6d2lkdGhBdHRy
LCBjb252ZXJ0ZWRWYWx1ZSk7Ci19Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTE1hcnF1ZWVFbGVt
ZW50VW5zdGFibGUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTE1hcnF1ZWVFbGVtZW50VW5zdGFibGUuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTE4MjMwMC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxN
YXJxdWVlRWxlbWVudFVuc3RhYmxlLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyNjYgKzAsMCBAQAot
LyoKLSAqICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2pl
Y3QuCi0gKiAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5n
cy5wbC4gRE8gTk9UIE1PRElGWSEKLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAg
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiAgQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBXZWJLaXRET01IVE1MTWFy
cXVlZUVsZW1lbnRVbnN0YWJsZV9oCi0jZGVmaW5lIFdlYktpdERPTUhUTUxNYXJxdWVlRWxlbWVu
dFVuc3RhYmxlX2gKLQotI2lmZGVmIFdFQktJVF9ET01fVVNFX1VOU1RBQkxFX0FQSQotCi0jaW5j
bHVkZSA8d2Via2l0ZG9tL3dlYmtpdGRvbWRlZmluZXMtdW5zdGFibGUuaD4KLQotR19CRUdJTl9E
RUNMUwotCi0vKioKLSAqIHdlYmtpdF9kb21faHRtbF9tYXJxdWVlX2VsZW1lbnRfZ2V0X2JlaGF2
aW9yOgotICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxNYXJxdWVlRWxlbWVudAotICoKLSAqIFJl
dHVybnM6IEEgI2djaGFyCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRf
QVBJIGdjaGFyKgotd2Via2l0X2RvbV9odG1sX21hcnF1ZWVfZWxlbWVudF9nZXRfYmVoYXZpb3Io
V2ViS2l0RE9NSFRNTE1hcnF1ZWVFbGVtZW50KiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9t
X2h0bWxfbWFycXVlZV9lbGVtZW50X3NldF9iZWhhdmlvcjoKLSAqIEBzZWxmOiBBICNXZWJLaXRE
T01IVE1MTWFycXVlZUVsZW1lbnQKLSAqIEB2YWx1ZTogQSAjZ2NoYXIKLSAqCi0gKiBTdGFiaWxp
dHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgdm9pZAotd2Via2l0X2RvbV9odG1sX21hcnF1
ZWVfZWxlbWVudF9zZXRfYmVoYXZpb3IoV2ViS2l0RE9NSFRNTE1hcnF1ZWVFbGVtZW50KiBzZWxm
LCBjb25zdCBnY2hhciogdmFsdWUpOwotCi0vKioKLSAqIHdlYmtpdF9kb21faHRtbF9tYXJxdWVl
X2VsZW1lbnRfZ2V0X2JnX2NvbG9yOgotICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxNYXJxdWVl
RWxlbWVudAotICoKLSAqIFJldHVybnM6IEEgI2djaGFyCi0gKgotICogU3RhYmlsaXR5OiBVbnN0
YWJsZQotKiovCi1XRUJLSVRfQVBJIGdjaGFyKgotd2Via2l0X2RvbV9odG1sX21hcnF1ZWVfZWxl
bWVudF9nZXRfYmdfY29sb3IoV2ViS2l0RE9NSFRNTE1hcnF1ZWVFbGVtZW50KiBzZWxmKTsKLQot
LyoqCi0gKiB3ZWJraXRfZG9tX2h0bWxfbWFycXVlZV9lbGVtZW50X3NldF9iZ19jb2xvcjoKLSAq
IEBzZWxmOiBBICNXZWJLaXRET01IVE1MTWFycXVlZUVsZW1lbnQKLSAqIEB2YWx1ZTogQSAjZ2No
YXIKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgdm9pZAotd2Vi
a2l0X2RvbV9odG1sX21hcnF1ZWVfZWxlbWVudF9zZXRfYmdfY29sb3IoV2ViS2l0RE9NSFRNTE1h
cnF1ZWVFbGVtZW50KiBzZWxmLCBjb25zdCBnY2hhciogdmFsdWUpOwotCi0vKioKLSAqIHdlYmtp
dF9kb21faHRtbF9tYXJxdWVlX2VsZW1lbnRfZ2V0X2RpcmVjdGlvbjoKLSAqIEBzZWxmOiBBICNX
ZWJLaXRET01IVE1MTWFycXVlZUVsZW1lbnQKLSAqCi0gKiBSZXR1cm5zOiBBICNnY2hhcgotICoK
LSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSBnY2hhcioKLXdlYmtpdF9k
b21faHRtbF9tYXJxdWVlX2VsZW1lbnRfZ2V0X2RpcmVjdGlvbihXZWJLaXRET01IVE1MTWFycXVl
ZUVsZW1lbnQqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9kb21faHRtbF9tYXJxdWVlX2VsZW1l
bnRfc2V0X2RpcmVjdGlvbjoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MTWFycXVlZUVsZW1l
bnQKLSAqIEB2YWx1ZTogQSAjZ2NoYXIKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8K
LVdFQktJVF9BUEkgdm9pZAotd2Via2l0X2RvbV9odG1sX21hcnF1ZWVfZWxlbWVudF9zZXRfZGly
ZWN0aW9uKFdlYktpdERPTUhUTUxNYXJxdWVlRWxlbWVudCogc2VsZiwgY29uc3QgZ2NoYXIqIHZh
bHVlKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0bWxfbWFycXVlZV9lbGVtZW50X2dldF9oZWln
aHQ6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTE1hcnF1ZWVFbGVtZW50Ci0gKgotICogUmV0
dXJuczogQSAjZ2NoYXIKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9B
UEkgZ2NoYXIqCi13ZWJraXRfZG9tX2h0bWxfbWFycXVlZV9lbGVtZW50X2dldF9oZWlnaHQoV2Vi
S2l0RE9NSFRNTE1hcnF1ZWVFbGVtZW50KiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0
bWxfbWFycXVlZV9lbGVtZW50X3NldF9oZWlnaHQ6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRN
TE1hcnF1ZWVFbGVtZW50Ci0gKiBAdmFsdWU6IEEgI2djaGFyCi0gKgotICogU3RhYmlsaXR5OiBV
bnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIHZvaWQKLXdlYmtpdF9kb21faHRtbF9tYXJxdWVlX2Vs
ZW1lbnRfc2V0X2hlaWdodChXZWJLaXRET01IVE1MTWFycXVlZUVsZW1lbnQqIHNlbGYsIGNvbnN0
IGdjaGFyKiB2YWx1ZSk7Ci0KLS8qKgotICogd2Via2l0X2RvbV9odG1sX21hcnF1ZWVfZWxlbWVu
dF9nZXRfaHNwYWNlOgotICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxNYXJxdWVlRWxlbWVudAot
ICoKLSAqIFJldHVybnM6IEEgI2d1bG9uZwotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoq
LwotV0VCS0lUX0FQSSBndWxvbmcKLXdlYmtpdF9kb21faHRtbF9tYXJxdWVlX2VsZW1lbnRfZ2V0
X2hzcGFjZShXZWJLaXRET01IVE1MTWFycXVlZUVsZW1lbnQqIHNlbGYpOwotCi0vKioKLSAqIHdl
YmtpdF9kb21faHRtbF9tYXJxdWVlX2VsZW1lbnRfc2V0X2hzcGFjZToKLSAqIEBzZWxmOiBBICNX
ZWJLaXRET01IVE1MTWFycXVlZUVsZW1lbnQKLSAqIEB2YWx1ZTogQSAjZ3Vsb25nCi0gKgotICog
U3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIHZvaWQKLXdlYmtpdF9kb21faHRt
bF9tYXJxdWVlX2VsZW1lbnRfc2V0X2hzcGFjZShXZWJLaXRET01IVE1MTWFycXVlZUVsZW1lbnQq
IHNlbGYsIGd1bG9uZyB2YWx1ZSk7Ci0KLS8qKgotICogd2Via2l0X2RvbV9odG1sX21hcnF1ZWVf
ZWxlbWVudF9nZXRfbG9vcDoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MTWFycXVlZUVsZW1l
bnQKLSAqCi0gKiBSZXR1cm5zOiBBICNnbG9uZwotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUK
LSoqLwotV0VCS0lUX0FQSSBnbG9uZwotd2Via2l0X2RvbV9odG1sX21hcnF1ZWVfZWxlbWVudF9n
ZXRfbG9vcChXZWJLaXRET01IVE1MTWFycXVlZUVsZW1lbnQqIHNlbGYpOwotCi0vKioKLSAqIHdl
YmtpdF9kb21faHRtbF9tYXJxdWVlX2VsZW1lbnRfc2V0X2xvb3A6Ci0gKiBAc2VsZjogQSAjV2Vi
S2l0RE9NSFRNTE1hcnF1ZWVFbGVtZW50Ci0gKiBAdmFsdWU6IEEgI2dsb25nCi0gKiBAZXJyb3I6
ICNHRXJyb3IKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgdm9p
ZAotd2Via2l0X2RvbV9odG1sX21hcnF1ZWVfZWxlbWVudF9zZXRfbG9vcChXZWJLaXRET01IVE1M
TWFycXVlZUVsZW1lbnQqIHNlbGYsIGdsb25nIHZhbHVlLCBHRXJyb3IqKiBlcnJvcik7Ci0KLS8q
KgotICogd2Via2l0X2RvbV9odG1sX21hcnF1ZWVfZWxlbWVudF9nZXRfc2Nyb2xsX2Ftb3VudDoK
LSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MTWFycXVlZUVsZW1lbnQKLSAqCi0gKiBSZXR1cm5z
OiBBICNndWxvbmcKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkg
Z3Vsb25nCi13ZWJraXRfZG9tX2h0bWxfbWFycXVlZV9lbGVtZW50X2dldF9zY3JvbGxfYW1vdW50
KFdlYktpdERPTUhUTUxNYXJxdWVlRWxlbWVudCogc2VsZik7Ci0KLS8qKgotICogd2Via2l0X2Rv
bV9odG1sX21hcnF1ZWVfZWxlbWVudF9zZXRfc2Nyb2xsX2Ftb3VudDoKLSAqIEBzZWxmOiBBICNX
ZWJLaXRET01IVE1MTWFycXVlZUVsZW1lbnQKLSAqIEB2YWx1ZTogQSAjZ3Vsb25nCi0gKgotICog
U3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIHZvaWQKLXdlYmtpdF9kb21faHRt
bF9tYXJxdWVlX2VsZW1lbnRfc2V0X3Njcm9sbF9hbW91bnQoV2ViS2l0RE9NSFRNTE1hcnF1ZWVF
bGVtZW50KiBzZWxmLCBndWxvbmcgdmFsdWUpOwotCi0vKioKLSAqIHdlYmtpdF9kb21faHRtbF9t
YXJxdWVlX2VsZW1lbnRfZ2V0X3Njcm9sbF9kZWxheToKLSAqIEBzZWxmOiBBICNXZWJLaXRET01I
VE1MTWFycXVlZUVsZW1lbnQKLSAqCi0gKiBSZXR1cm5zOiBBICNndWxvbmcKLSAqCi0gKiBTdGFi
aWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgZ3Vsb25nCi13ZWJraXRfZG9tX2h0bWxf
bWFycXVlZV9lbGVtZW50X2dldF9zY3JvbGxfZGVsYXkoV2ViS2l0RE9NSFRNTE1hcnF1ZWVFbGVt
ZW50KiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0bWxfbWFycXVlZV9lbGVtZW50X3Nl
dF9zY3JvbGxfZGVsYXk6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTE1hcnF1ZWVFbGVtZW50
Ci0gKiBAdmFsdWU6IEEgI2d1bG9uZwotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwot
V0VCS0lUX0FQSSB2b2lkCi13ZWJraXRfZG9tX2h0bWxfbWFycXVlZV9lbGVtZW50X3NldF9zY3Jv
bGxfZGVsYXkoV2ViS2l0RE9NSFRNTE1hcnF1ZWVFbGVtZW50KiBzZWxmLCBndWxvbmcgdmFsdWUp
OwotCi0vKioKLSAqIHdlYmtpdF9kb21faHRtbF9tYXJxdWVlX2VsZW1lbnRfZ2V0X3RydWVfc3Bl
ZWQ6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTE1hcnF1ZWVFbGVtZW50Ci0gKgotICogUmV0
dXJuczogQSAjZ2Jvb2xlYW4KLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJ
VF9BUEkgZ2Jvb2xlYW4KLXdlYmtpdF9kb21faHRtbF9tYXJxdWVlX2VsZW1lbnRfZ2V0X3RydWVf
c3BlZWQoV2ViS2l0RE9NSFRNTE1hcnF1ZWVFbGVtZW50KiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJr
aXRfZG9tX2h0bWxfbWFycXVlZV9lbGVtZW50X3NldF90cnVlX3NwZWVkOgotICogQHNlbGY6IEEg
I1dlYktpdERPTUhUTUxNYXJxdWVlRWxlbWVudAotICogQHZhbHVlOiBBICNnYm9vbGVhbgotICoK
LSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSB2b2lkCi13ZWJraXRfZG9t
X2h0bWxfbWFycXVlZV9lbGVtZW50X3NldF90cnVlX3NwZWVkKFdlYktpdERPTUhUTUxNYXJxdWVl
RWxlbWVudCogc2VsZiwgZ2Jvb2xlYW4gdmFsdWUpOwotCi0vKioKLSAqIHdlYmtpdF9kb21faHRt
bF9tYXJxdWVlX2VsZW1lbnRfZ2V0X3ZzcGFjZToKLSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1M
TWFycXVlZUVsZW1lbnQKLSAqCi0gKiBSZXR1cm5zOiBBICNndWxvbmcKLSAqCi0gKiBTdGFiaWxp
dHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgZ3Vsb25nCi13ZWJraXRfZG9tX2h0bWxfbWFy
cXVlZV9lbGVtZW50X2dldF92c3BhY2UoV2ViS2l0RE9NSFRNTE1hcnF1ZWVFbGVtZW50KiBzZWxm
KTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0bWxfbWFycXVlZV9lbGVtZW50X3NldF92c3BhY2U6
Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTE1hcnF1ZWVFbGVtZW50Ci0gKiBAdmFsdWU6IEEg
I2d1bG9uZwotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSB2b2lk
Ci13ZWJraXRfZG9tX2h0bWxfbWFycXVlZV9lbGVtZW50X3NldF92c3BhY2UoV2ViS2l0RE9NSFRN
TE1hcnF1ZWVFbGVtZW50KiBzZWxmLCBndWxvbmcgdmFsdWUpOwotCi0vKioKLSAqIHdlYmtpdF9k
b21faHRtbF9tYXJxdWVlX2VsZW1lbnRfZ2V0X3dpZHRoOgotICogQHNlbGY6IEEgI1dlYktpdERP
TUhUTUxNYXJxdWVlRWxlbWVudAotICoKLSAqIFJldHVybnM6IEEgI2djaGFyCi0gKgotICogU3Rh
YmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIGdjaGFyKgotd2Via2l0X2RvbV9odG1s
X21hcnF1ZWVfZWxlbWVudF9nZXRfd2lkdGgoV2ViS2l0RE9NSFRNTE1hcnF1ZWVFbGVtZW50KiBz
ZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0bWxfbWFycXVlZV9lbGVtZW50X3NldF93aWR0
aDoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MTWFycXVlZUVsZW1lbnQKLSAqIEB2YWx1ZTog
QSAjZ2NoYXIKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgdm9p
ZAotd2Via2l0X2RvbV9odG1sX21hcnF1ZWVfZWxlbWVudF9zZXRfd2lkdGgoV2ViS2l0RE9NSFRN
TE1hcnF1ZWVFbGVtZW50KiBzZWxmLCBjb25zdCBnY2hhciogdmFsdWUpOwotCi0KLUdfRU5EX0RF
Q0xTCi0KLSNlbmRpZiAvKiBXRUJLSVRfRE9NX1VTRV9VTlNUQUJMRV9BUEkgKi8KLSNlbmRpZiAv
KiBXZWJLaXRET01IVE1MTWFycXVlZUVsZW1lbnRVbnN0YWJsZV9oICovCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktp
dERPTUhUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MTWVkaWFFbGVtZW50LmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTgwZGQwNi4uMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhU
TUxNZWRpYUVsZW1lbnQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTUxMCArMCwwIEBACi0vKgot
ICogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4K
LSAqICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBs
LiBETyBOT1QgTU9ESUZZIQotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQotICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiV2ViS2l0RE9NSFRNTE1lZGlhRWxlbWVudC5oIgotCi0jaW5jbHVkZSA8V2ViQ29yZS9DU1NJ
bXBvcnRSdWxlLmg+Ci0jaW5jbHVkZSAiRE9NT2JqZWN0Q2FjaGUuaCIKLSNpbmNsdWRlIDxXZWJD
b3JlL0RvY3VtZW50Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9FeGNlcHRpb25Db2RlLmg+Ci0jaW5j
bHVkZSA8V2ViQ29yZS9FeGNlcHRpb25Db2RlRGVzY3JpcHRpb24uaD4KLSNpbmNsdWRlICJHT2Jq
ZWN0RXZlbnRMaXN0ZW5lci5oIgotI2luY2x1ZGUgPFdlYkNvcmUvSFRNTE1lZGlhRWxlbWVudE1l
ZGlhU2Vzc2lvbi5oPgotI2luY2x1ZGUgPFdlYkNvcmUvSFRNTE5hbWVzLmg+Ci0jaW5jbHVkZSA8
V2ViQ29yZS9KU01haW5UaHJlYWRFeGVjU3RhdGUuaD4KLSNpbmNsdWRlICJXZWJLaXRET01FdmVu
dFByaXZhdGUuaCIKLSNpbmNsdWRlICJXZWJLaXRET01FdmVudFRhcmdldC5oIgotI2luY2x1ZGUg
IldlYktpdERPTUhUTUxNZWRpYUVsZW1lbnRQcml2YXRlLmgiCi0jaW5jbHVkZSAiV2ViS2l0RE9N
TWVkaWFDb250cm9sbGVyUHJpdmF0ZS5oIgotI2luY2x1ZGUgIldlYktpdERPTU1lZGlhRXJyb3JQ
cml2YXRlLmgiCi0jaW5jbHVkZSAiV2ViS2l0RE9NTm9kZVByaXZhdGUuaCIKLSNpbmNsdWRlICJX
ZWJLaXRET01Qcml2YXRlLmgiCi0jaW5jbHVkZSAiV2ViS2l0RE9NVGltZVJhbmdlc1ByaXZhdGUu
aCIKLSNpbmNsdWRlICJDb252ZXJ0VG9VVEY4U3RyaW5nLmgiCi0jaW5jbHVkZSA8d3RmL0dldFB0
ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotI2lmIEVOQUJMRShWSURFTykKLQotbmFt
ZXNwYWNlIFdlYktpdCB7Ci0KLVdlYktpdERPTUhUTUxNZWRpYUVsZW1lbnQqIGtpdChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50KiBvYmopCi17Ci0gICAgcmV0dXJuIFdFQktJVF9ET01fSFRNTF9N
RURJQV9FTEVNRU5UKGtpdChzdGF0aWNfY2FzdDxXZWJDb3JlOjpOb2RlKj4ob2JqKSkpOwotfQot
Ci1XZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50KiBjb3JlKFdlYktpdERPTUhUTUxNZWRpYUVsZW1l
bnQqIHJlcXVlc3QpCi17Ci0gICAgcmV0dXJuIHJlcXVlc3QgPyBzdGF0aWNfY2FzdDxXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50Kj4oV0VCS0lUX0RPTV9PQkpFQ1QocmVxdWVzdCktPmNvcmVPYmpl
Y3QpIDogMDsKLX0KLQotV2ViS2l0RE9NSFRNTE1lZGlhRWxlbWVudCogd3JhcEhUTUxNZWRpYUVs
ZW1lbnQoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudCogY29yZU9iamVjdCkKLXsKLSAgICBBU1NF
UlQoY29yZU9iamVjdCk7Ci0gICAgcmV0dXJuIFdFQktJVF9ET01fSFRNTF9NRURJQV9FTEVNRU5U
KGdfb2JqZWN0X25ldyhXRUJLSVRfRE9NX1RZUEVfSFRNTF9NRURJQV9FTEVNRU5ULCAiY29yZS1v
YmplY3QiLCBjb3JlT2JqZWN0LCBudWxscHRyKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktp
dAotCi0jZW5kaWYgLy8gRU5BQkxFKFZJREVPKQotCi1zdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X2Rv
bV9odG1sX21lZGlhX2VsZW1lbnRfZGlzcGF0Y2hfZXZlbnQoV2ViS2l0RE9NRXZlbnRUYXJnZXQq
IHRhcmdldCwgV2ViS2l0RE9NRXZlbnQqIGV2ZW50LCBHRXJyb3IqKiBlcnJvcikKLXsKLSNpZiBF
TkFCTEUoVklERU8pCi0gICAgV2ViQ29yZTo6RXZlbnQqIGNvcmVFdmVudCA9IFdlYktpdDo6Y29y
ZShldmVudCk7Ci0gICAgaWYgKCFjb3JlRXZlbnQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50KiBjb3JlVGFyZ2V0ID0gc3RhdGljX2Nhc3Q8V2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudCo+KFdFQktJVF9ET01fT0JKRUNUKHRhcmdldCktPmNvcmVP
YmplY3QpOwotCi0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgZ2Jvb2xl
YW4gcmVzdWx0ID0gY29yZVRhcmdldC0+ZGlzcGF0Y2hFdmVudEZvckJpbmRpbmdzKCpjb3JlRXZl
bnQsIGVjKTsKLSAgICBpZiAoZWMpIHsKLSAgICAgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZURl
c2NyaXB0aW9uIGRlc2NyaXB0aW9uKGVjKTsKLSAgICAgICAgZ19zZXRfZXJyb3JfbGl0ZXJhbChl
cnJvciwgZ19xdWFya19mcm9tX3N0cmluZygiV0VCS0lUX0RPTSIpLCBkZXNjcmlwdGlvbi5jb2Rl
LCBkZXNjcmlwdGlvbi5uYW1lKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSNlbHNlCi0g
ICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7Ci0gICAgVU5VU0VEX1BBUkFNKGV2ZW50KTsKLSAgICBV
TlVTRURfUEFSQU0oZXJyb3IpOwotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQo
IlZpZGVvIikKLSAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYgLy8gRU5BQkxFKFZJREVPKQotfQot
Ci1zdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X2RvbV9odG1sX21lZGlhX2VsZW1lbnRfYWRkX2V2ZW50
X2xpc3RlbmVyKFdlYktpdERPTUV2ZW50VGFyZ2V0KiB0YXJnZXQsIGNvbnN0IGNoYXIqIGV2ZW50
TmFtZSwgR0Nsb3N1cmUqIGhhbmRsZXIsIGdib29sZWFuIHVzZUNhcHR1cmUpCi17Ci0jaWYgRU5B
QkxFKFZJREVPKQotICAgIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQqIGNvcmVUYXJnZXQgPSBz
dGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Kj4oV0VCS0lUX0RPTV9PQkpFQ1Qo
dGFyZ2V0KS0+Y29yZU9iamVjdCk7Ci0gICAgcmV0dXJuIFdlYktpdDo6R09iamVjdEV2ZW50TGlz
dGVuZXI6OmFkZEV2ZW50TGlzdGVuZXIoR19PQkpFQ1QodGFyZ2V0KSwgY29yZVRhcmdldCwgZXZl
bnROYW1lLCBoYW5kbGVyLCB1c2VDYXB0dXJlKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHRh
cmdldCk7Ci0gICAgVU5VU0VEX1BBUkFNKGV2ZW50TmFtZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGhh
bmRsZXIpOwotICAgIFVOVVNFRF9QQVJBTSh1c2VDYXB0dXJlKTsKLSAgICBXRUJLSVRfV0FSTl9G
RUFUVVJFX05PVF9QUkVTRU5UKCJWaWRlbyIpCi0gICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmIC8v
IEVOQUJMRShWSURFTykKLX0KLQotc3RhdGljIGdib29sZWFuIHdlYmtpdF9kb21faHRtbF9tZWRp
YV9lbGVtZW50X3JlbW92ZV9ldmVudF9saXN0ZW5lcihXZWJLaXRET01FdmVudFRhcmdldCogdGFy
Z2V0LCBjb25zdCBjaGFyKiBldmVudE5hbWUsIEdDbG9zdXJlKiBoYW5kbGVyLCBnYm9vbGVhbiB1
c2VDYXB0dXJlKQotewotI2lmIEVOQUJMRShWSURFTykKLSAgICBXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50KiBjb3JlVGFyZ2V0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dCo+KFdFQktJVF9ET01fT0JKRUNUKHRhcmdldCktPmNvcmVPYmplY3QpOwotICAgIHJldHVybiBX
ZWJLaXQ6OkdPYmplY3RFdmVudExpc3RlbmVyOjpyZW1vdmVFdmVudExpc3RlbmVyKEdfT0JKRUNU
KHRhcmdldCksIGNvcmVUYXJnZXQsIGV2ZW50TmFtZSwgaGFuZGxlciwgdXNlQ2FwdHVyZSk7Ci0j
ZWxzZQotICAgIFVOVVNFRF9QQVJBTSh0YXJnZXQpOwotICAgIFVOVVNFRF9QQVJBTShldmVudE5h
bWUpOwotICAgIFVOVVNFRF9QQVJBTShoYW5kbGVyKTsKLSAgICBVTlVTRURfUEFSQU0odXNlQ2Fw
dHVyZSk7Ci0gICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiVmlkZW8iKQotICAg
IHJldHVybiBmYWxzZTsKLSNlbmRpZiAvLyBFTkFCTEUoVklERU8pCi19Ci0KLXN0YXRpYyB2b2lk
IHdlYmtpdF9kb21fZXZlbnRfdGFyZ2V0X2luaXQoV2ViS2l0RE9NRXZlbnRUYXJnZXRJZmFjZSog
aWZhY2UpCi17Ci0gICAgaWZhY2UtPmRpc3BhdGNoX2V2ZW50ID0gd2Via2l0X2RvbV9odG1sX21l
ZGlhX2VsZW1lbnRfZGlzcGF0Y2hfZXZlbnQ7Ci0gICAgaWZhY2UtPmFkZF9ldmVudF9saXN0ZW5l
ciA9IHdlYmtpdF9kb21faHRtbF9tZWRpYV9lbGVtZW50X2FkZF9ldmVudF9saXN0ZW5lcjsKLSAg
ICBpZmFjZS0+cmVtb3ZlX2V2ZW50X2xpc3RlbmVyID0gd2Via2l0X2RvbV9odG1sX21lZGlhX2Vs
ZW1lbnRfcmVtb3ZlX2V2ZW50X2xpc3RlbmVyOwotfQotCi1HX0RFRklORV9UWVBFX1dJVEhfQ09E
RShXZWJLaXRET01IVE1MTWVkaWFFbGVtZW50LCB3ZWJraXRfZG9tX2h0bWxfbWVkaWFfZWxlbWVu
dCwgV0VCS0lUX0RPTV9UWVBFX0hUTUxfRUxFTUVOVCwgR19JTVBMRU1FTlRfSU5URVJGQUNFKFdF
QktJVF9ET01fVFlQRV9FVkVOVF9UQVJHRVQsIHdlYmtpdF9kb21fZXZlbnRfdGFyZ2V0X2luaXQp
KQotCi1lbnVtIHsKLSAgICBQUk9QXzAsCi0gICAgUFJPUF9FUlJPUiwKLSAgICBQUk9QX1NSQywK
LSAgICBQUk9QX0NVUlJFTlRfU1JDLAotICAgIFBST1BfQ1JPU1NfT1JJR0lOLAotICAgIFBST1Bf
TkVUV09SS19TVEFURSwKLSAgICBQUk9QX1BSRUxPQUQsCi0gICAgUFJPUF9CVUZGRVJFRCwKLSAg
ICBQUk9QX1JFQURZX1NUQVRFLAotICAgIFBST1BfU0VFS0lORywKLSAgICBQUk9QX0NVUlJFTlRf
VElNRSwKLSAgICBQUk9QX0RVUkFUSU9OLAotICAgIFBST1BfUEFVU0VELAotICAgIFBST1BfREVG
QVVMVF9QTEFZQkFDS19SQVRFLAotICAgIFBST1BfUExBWUJBQ0tfUkFURSwKLSAgICBQUk9QX1BM
QVlFRCwKLSAgICBQUk9QX1NFRUtBQkxFLAotICAgIFBST1BfRU5ERUQsCi0gICAgUFJPUF9BVVRP
UExBWSwKLSAgICBQUk9QX0xPT1AsCi0gICAgUFJPUF9DT05UUk9MUywKLSAgICBQUk9QX1ZPTFVN
RSwKLSAgICBQUk9QX01VVEVELAotICAgIFBST1BfREVGQVVMVF9NVVRFRCwKLSAgICBQUk9QX1dF
QktJVF9QUkVTRVJWRVNfUElUQ0gsCi0gICAgUFJPUF9XRUJLSVRfSEFTX0NMT1NFRF9DQVBUSU9O
UywKLSAgICBQUk9QX1dFQktJVF9DTE9TRURfQ0FQVElPTlNfVklTSUJMRSwKLSAgICBQUk9QX1dF
QktJVF9BVURJT19ERUNPREVEX0JZVEVfQ09VTlQsCi0gICAgUFJPUF9XRUJLSVRfVklERU9fREVD
T0RFRF9CWVRFX0NPVU5ULAotICAgIFBST1BfTUVESUFfR1JPVVAsCi0gICAgUFJPUF9DT05UUk9M
TEVSLAotICAgIFBST1BfV0VCS0lUX0NVUlJFTlRfUExBWUJBQ0tfVEFSR0VUX0lTX1dJUkVMRVNT
LAotICAgIFBST1BfS0lORCwKLX07Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdF9kb21faHRtbF9tZWRp
YV9lbGVtZW50X3NldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BlcnR5SWQs
IGNvbnN0IEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKQotewotICAgIFdlYktpdERP
TUhUTUxNZWRpYUVsZW1lbnQqIHNlbGYgPSBXRUJLSVRfRE9NX0hUTUxfTUVESUFfRUxFTUVOVChv
YmplY3QpOwotCi0gICAgc3dpdGNoIChwcm9wZXJ0eUlkKSB7Ci0gICAgY2FzZSBQUk9QX1NSQzoK
LSAgICAgICAgd2Via2l0X2RvbV9odG1sX21lZGlhX2VsZW1lbnRfc2V0X3NyYyhzZWxmLCBnX3Zh
bHVlX2dldF9zdHJpbmcodmFsdWUpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX0NS
T1NTX09SSUdJTjoKLSAgICAgICAgd2Via2l0X2RvbV9odG1sX21lZGlhX2VsZW1lbnRfc2V0X2Ny
b3NzX29yaWdpbihzZWxmLCBnX3ZhbHVlX2dldF9zdHJpbmcodmFsdWUpKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBQUk9QX1BSRUxPQUQ6Ci0gICAgICAgIHdlYmtpdF9kb21faHRtbF9tZWRp
YV9lbGVtZW50X3NldF9wcmVsb2FkKHNlbGYsIGdfdmFsdWVfZ2V0X3N0cmluZyh2YWx1ZSkpOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfQ1VSUkVOVF9USU1FOgotICAgICAgICB3ZWJr
aXRfZG9tX2h0bWxfbWVkaWFfZWxlbWVudF9zZXRfY3VycmVudF90aW1lKHNlbGYsIGdfdmFsdWVf
Z2V0X2RvdWJsZSh2YWx1ZSksIG51bGxwdHIpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBS
T1BfREVGQVVMVF9QTEFZQkFDS19SQVRFOgotICAgICAgICB3ZWJraXRfZG9tX2h0bWxfbWVkaWFf
ZWxlbWVudF9zZXRfZGVmYXVsdF9wbGF5YmFja19yYXRlKHNlbGYsIGdfdmFsdWVfZ2V0X2RvdWJs
ZSh2YWx1ZSkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfUExBWUJBQ0tfUkFURToK
LSAgICAgICAgd2Via2l0X2RvbV9odG1sX21lZGlhX2VsZW1lbnRfc2V0X3BsYXliYWNrX3JhdGUo
c2VsZiwgZ192YWx1ZV9nZXRfZG91YmxlKHZhbHVlKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgUFJPUF9BVVRPUExBWToKLSAgICAgICAgd2Via2l0X2RvbV9odG1sX21lZGlhX2VsZW1lbnRf
c2V0X2F1dG9wbGF5KHNlbGYsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBQUk9QX0xPT1A6Ci0gICAgICAgIHdlYmtpdF9kb21faHRtbF9tZWRp
YV9lbGVtZW50X3NldF9sb29wKHNlbGYsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX0NPTlRST0xTOgotICAgICAgICB3ZWJraXRfZG9t
X2h0bWxfbWVkaWFfZWxlbWVudF9zZXRfY29udHJvbHMoc2VsZiwgZ192YWx1ZV9nZXRfYm9vbGVh
bih2YWx1ZSkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfVk9MVU1FOgotICAgICAg
ICB3ZWJraXRfZG9tX2h0bWxfbWVkaWFfZWxlbWVudF9zZXRfdm9sdW1lKHNlbGYsIGdfdmFsdWVf
Z2V0X2RvdWJsZSh2YWx1ZSksIG51bGxwdHIpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBS
T1BfTVVURUQ6Ci0gICAgICAgIHdlYmtpdF9kb21faHRtbF9tZWRpYV9lbGVtZW50X3NldF9tdXRl
ZChzZWxmLCBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSk7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgUFJPUF9ERUZBVUxUX01VVEVEOgotICAgICAgICB3ZWJraXRfZG9tX2h0bWxfbWVkaWFf
ZWxlbWVudF9zZXRfZGVmYXVsdF9tdXRlZChzZWxmLCBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVl
KSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9XRUJLSVRfUFJFU0VSVkVTX1BJVENI
OgotICAgICAgICB3ZWJraXRfZG9tX2h0bWxfbWVkaWFfZWxlbWVudF9zZXRfd2Via2l0X3ByZXNl
cnZlc19waXRjaChzZWxmLCBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSk7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgUFJPUF9XRUJLSVRfQ0xPU0VEX0NBUFRJT05TX1ZJU0lCTEU6Ci0gICAg
ICAgIHdlYmtpdF9kb21faHRtbF9tZWRpYV9lbGVtZW50X3NldF93ZWJraXRfY2xvc2VkX2NhcHRp
b25zX3Zpc2libGUoc2VsZiwgZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIFBST1BfTUVESUFfR1JPVVA6Ci0gICAgICAgIHdlYmtpdF9kb21faHRt
bF9tZWRpYV9lbGVtZW50X3NldF9tZWRpYV9ncm91cChzZWxmLCBnX3ZhbHVlX2dldF9zdHJpbmco
dmFsdWUpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX0tJTkQ6Ci0gICAgICAgIHdl
YmtpdF9kb21faHRtbF9tZWRpYV9lbGVtZW50X3NldF9raW5kKHNlbGYsIGdfdmFsdWVfZ2V0X3N0
cmluZyh2YWx1ZSkpOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBHX09C
SkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wZXJ0eUlkLCBwc3BlYyk7
Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLX0KLQotc3RhdGljIHZvaWQgd2Via2l0X2RvbV9odG1s
X21lZGlhX2VsZW1lbnRfZ2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcGVy
dHlJZCwgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpCi17Ci0gICAgV2ViS2l0RE9N
SFRNTE1lZGlhRWxlbWVudCogc2VsZiA9IFdFQktJVF9ET01fSFRNTF9NRURJQV9FTEVNRU5UKG9i
amVjdCk7Ci0KLSAgICBzd2l0Y2ggKHByb3BlcnR5SWQpIHsKLSAgICBjYXNlIFBST1BfRVJST1I6
Ci0gICAgICAgIGdfdmFsdWVfc2V0X29iamVjdCh2YWx1ZSwgd2Via2l0X2RvbV9odG1sX21lZGlh
X2VsZW1lbnRfZ2V0X2Vycm9yKHNlbGYpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9Q
X1NSQzoKLSAgICAgICAgZ192YWx1ZV90YWtlX3N0cmluZyh2YWx1ZSwgd2Via2l0X2RvbV9odG1s
X21lZGlhX2VsZW1lbnRfZ2V0X3NyYyhzZWxmKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
UFJPUF9DVVJSRU5UX1NSQzoKLSAgICAgICAgZ192YWx1ZV90YWtlX3N0cmluZyh2YWx1ZSwgd2Vi
a2l0X2RvbV9odG1sX21lZGlhX2VsZW1lbnRfZ2V0X2N1cnJlbnRfc3JjKHNlbGYpKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX0NST1NTX09SSUdJTjoKLSAgICAgICAgZ192YWx1ZV90
YWtlX3N0cmluZyh2YWx1ZSwgd2Via2l0X2RvbV9odG1sX21lZGlhX2VsZW1lbnRfZ2V0X2Nyb3Nz
X29yaWdpbihzZWxmKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9ORVRXT1JLX1NU
QVRFOgotICAgICAgICBnX3ZhbHVlX3NldF91aW50KHZhbHVlLCB3ZWJraXRfZG9tX2h0bWxfbWVk
aWFfZWxlbWVudF9nZXRfbmV0d29ya19zdGF0ZShzZWxmKSk7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgUFJPUF9QUkVMT0FEOgotICAgICAgICBnX3ZhbHVlX3Rha2Vfc3RyaW5nKHZhbHVlLCB3
ZWJraXRfZG9tX2h0bWxfbWVkaWFfZWxlbWVudF9nZXRfcHJlbG9hZChzZWxmKSk7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgUFJPUF9CVUZGRVJFRDoKLSAgICAgICAgZ192YWx1ZV9zZXRfb2Jq
ZWN0KHZhbHVlLCB3ZWJraXRfZG9tX2h0bWxfbWVkaWFfZWxlbWVudF9nZXRfYnVmZmVyZWQoc2Vs
ZikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfUkVBRFlfU1RBVEU6Ci0gICAgICAg
IGdfdmFsdWVfc2V0X3VpbnQodmFsdWUsIHdlYmtpdF9kb21faHRtbF9tZWRpYV9lbGVtZW50X2dl
dF9yZWFkeV9zdGF0ZShzZWxmKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9TRUVL
SU5HOgotICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfZG9tX2h0bWxf
bWVkaWFfZWxlbWVudF9nZXRfc2Vla2luZyhzZWxmKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgUFJPUF9DVVJSRU5UX1RJTUU6Ci0gICAgICAgIGdfdmFsdWVfc2V0X2RvdWJsZSh2YWx1ZSwg
d2Via2l0X2RvbV9odG1sX21lZGlhX2VsZW1lbnRfZ2V0X2N1cnJlbnRfdGltZShzZWxmKSk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9EVVJBVElPTjoKLSAgICAgICAgZ192YWx1ZV9z
ZXRfZG91YmxlKHZhbHVlLCB3ZWJraXRfZG9tX2h0bWxfbWVkaWFfZWxlbWVudF9nZXRfZHVyYXRp
b24oc2VsZikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfUEFVU0VEOgotICAgICAg
ICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfZG9tX2h0bWxfbWVkaWFfZWxlbWVu
dF9nZXRfcGF1c2VkKHNlbGYpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX0RFRkFV
TFRfUExBWUJBQ0tfUkFURToKLSAgICAgICAgZ192YWx1ZV9zZXRfZG91YmxlKHZhbHVlLCB3ZWJr
aXRfZG9tX2h0bWxfbWVkaWFfZWxlbWVudF9nZXRfZGVmYXVsdF9wbGF5YmFja19yYXRlKHNlbGYp
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX1BMQVlCQUNLX1JBVEU6Ci0gICAgICAg
IGdfdmFsdWVfc2V0X2RvdWJsZSh2YWx1ZSwgd2Via2l0X2RvbV9odG1sX21lZGlhX2VsZW1lbnRf
Z2V0X3BsYXliYWNrX3JhdGUoc2VsZikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1Bf
UExBWUVEOgotICAgICAgICBnX3ZhbHVlX3NldF9vYmplY3QodmFsdWUsIHdlYmtpdF9kb21faHRt
bF9tZWRpYV9lbGVtZW50X2dldF9wbGF5ZWQoc2VsZikpOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIFBST1BfU0VFS0FCTEU6Ci0gICAgICAgIGdfdmFsdWVfc2V0X29iamVjdCh2YWx1ZSwgd2Vi
a2l0X2RvbV9odG1sX21lZGlhX2VsZW1lbnRfZ2V0X3NlZWthYmxlKHNlbGYpKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBQUk9QX0VOREVEOgotICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFu
KHZhbHVlLCB3ZWJraXRfZG9tX2h0bWxfbWVkaWFfZWxlbWVudF9nZXRfZW5kZWQoc2VsZikpOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfQVVUT1BMQVk6Ci0gICAgICAgIGdfdmFsdWVf
c2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF9kb21faHRtbF9tZWRpYV9lbGVtZW50X2dldF9hdXRv
cGxheShzZWxmKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9MT09QOgotICAgICAg
ICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfZG9tX2h0bWxfbWVkaWFfZWxlbWVu
dF9nZXRfbG9vcChzZWxmKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9DT05UUk9M
UzoKLSAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X2RvbV9odG1sX21l
ZGlhX2VsZW1lbnRfZ2V0X2NvbnRyb2xzKHNlbGYpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBQUk9QX1ZPTFVNRToKLSAgICAgICAgZ192YWx1ZV9zZXRfZG91YmxlKHZhbHVlLCB3ZWJraXRf
ZG9tX2h0bWxfbWVkaWFfZWxlbWVudF9nZXRfdm9sdW1lKHNlbGYpKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBQUk9QX01VVEVEOgotICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVl
LCB3ZWJraXRfZG9tX2h0bWxfbWVkaWFfZWxlbWVudF9nZXRfbXV0ZWQoc2VsZikpOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIFBST1BfREVGQVVMVF9NVVRFRDoKLSAgICAgICAgZ192YWx1ZV9z
ZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X2RvbV9odG1sX21lZGlhX2VsZW1lbnRfZ2V0X2RlZmF1
bHRfbXV0ZWQoc2VsZikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfV0VCS0lUX1BS
RVNFUlZFU19QSVRDSDoKLSAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0
X2RvbV9odG1sX21lZGlhX2VsZW1lbnRfZ2V0X3dlYmtpdF9wcmVzZXJ2ZXNfcGl0Y2goc2VsZikp
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfV0VCS0lUX0hBU19DTE9TRURfQ0FQVElP
TlM6Ci0gICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF9kb21faHRtbF9t
ZWRpYV9lbGVtZW50X2dldF93ZWJraXRfaGFzX2Nsb3NlZF9jYXB0aW9ucyhzZWxmKSk7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9XRUJLSVRfQ0xPU0VEX0NBUFRJT05TX1ZJU0lCTEU6
Ci0gICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF9kb21faHRtbF9tZWRp
YV9lbGVtZW50X2dldF93ZWJraXRfY2xvc2VkX2NhcHRpb25zX3Zpc2libGUoc2VsZikpOwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfV0VCS0lUX0FVRElPX0RFQ09ERURfQllURV9DT1VO
VDoKLSAgICAgICAgZ192YWx1ZV9zZXRfdWxvbmcodmFsdWUsIHdlYmtpdF9kb21faHRtbF9tZWRp
YV9lbGVtZW50X2dldF93ZWJraXRfYXVkaW9fZGVjb2RlZF9ieXRlX2NvdW50KHNlbGYpKTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX1dFQktJVF9WSURFT19ERUNPREVEX0JZVEVfQ09V
TlQ6Ci0gICAgICAgIGdfdmFsdWVfc2V0X3Vsb25nKHZhbHVlLCB3ZWJraXRfZG9tX2h0bWxfbWVk
aWFfZWxlbWVudF9nZXRfd2Via2l0X3ZpZGVvX2RlY29kZWRfYnl0ZV9jb3VudChzZWxmKSk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9NRURJQV9HUk9VUDoKLSAgICAgICAgZ192YWx1
ZV90YWtlX3N0cmluZyh2YWx1ZSwgd2Via2l0X2RvbV9odG1sX21lZGlhX2VsZW1lbnRfZ2V0X21l
ZGlhX2dyb3VwKHNlbGYpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX0NPTlRST0xM
RVI6Ci0gICAgICAgIGdfdmFsdWVfc2V0X29iamVjdCh2YWx1ZSwgd2Via2l0X2RvbV9odG1sX21l
ZGlhX2VsZW1lbnRfZ2V0X2NvbnRyb2xsZXIoc2VsZikpOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIFBST1BfV0VCS0lUX0NVUlJFTlRfUExBWUJBQ0tfVEFSR0VUX0lTX1dJUkVMRVNTOgotICAg
ICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfZG9tX2h0bWxfbWVkaWFfZWxl
bWVudF9nZXRfd2Via2l0X2N1cnJlbnRfcGxheWJhY2tfdGFyZ2V0X2lzX3dpcmVsZXNzKHNlbGYp
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX0tJTkQ6Ci0gICAgICAgIGdfdmFsdWVf
dGFrZV9zdHJpbmcodmFsdWUsIHdlYmtpdF9kb21faHRtbF9tZWRpYV9lbGVtZW50X2dldF9raW5k
KHNlbGYpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgR19PQkpFQ1Rf
V0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcGVydHlJZCwgcHNwZWMpOwotICAg
ICAgICBicmVhazsKLSAgICB9Ci19Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdF9kb21faHRtbF9tZWRp
YV9lbGVtZW50X2NsYXNzX2luaXQoV2ViS2l0RE9NSFRNTE1lZGlhRWxlbWVudENsYXNzKiByZXF1
ZXN0Q2xhc3MpCi17Ci0gICAgR09iamVjdENsYXNzKiBnb2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9D
TEFTUyhyZXF1ZXN0Q2xhc3MpOwotICAgIGdvYmplY3RDbGFzcy0+c2V0X3Byb3BlcnR5ID0gd2Vi
a2l0X2RvbV9odG1sX21lZGlhX2VsZW1lbnRfc2V0X3Byb3BlcnR5OwotICAgIGdvYmplY3RDbGFz
cy0+Z2V0X3Byb3BlcnR5ID0gd2Via2l0X2RvbV9odG1sX21lZGlhX2VsZW1lbnRfZ2V0X3Byb3Bl
cnR5OwotCi0gICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAgZ29i
amVjdENsYXNzLAotICAgICAgICBQUk9QX0VSUk9SLAotICAgICAgICBnX3BhcmFtX3NwZWNfb2Jq
ZWN0KAotICAgICAgICAgICAgImVycm9yIiwKLSAgICAgICAgICAgICJIVE1MTWVkaWFFbGVtZW50
OmVycm9yIiwKLSAgICAgICAgICAgICJyZWFkLW9ubHkgV2ViS2l0RE9NTWVkaWFFcnJvciogSFRN
TE1lZGlhRWxlbWVudDplcnJvciIsCi0gICAgICAgICAgICBXRUJLSVRfRE9NX1RZUEVfTUVESUFf
RVJST1IsCi0gICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKLQotICAgIGdfb2Jq
ZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAg
ICAgUFJPUF9TUkMsCi0gICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcoCi0gICAgICAgICAgICAi
c3JjIiwKLSAgICAgICAgICAgICJIVE1MTWVkaWFFbGVtZW50OnNyYyIsCi0gICAgICAgICAgICAi
cmVhZC13cml0ZSBnY2hhciogSFRNTE1lZGlhRWxlbWVudDpzcmMiLAotICAgICAgICAgICAgIiIs
Ci0gICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBRFdSSVRFKSk7Ci0KLSAgICBnX29iamVjdF9j
bGFzc19pbnN0YWxsX3Byb3BlcnR5KAotICAgICAgICBnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBS
T1BfQ1VSUkVOVF9TUkMsCi0gICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcoCi0gICAgICAgICAg
ICAiY3VycmVudC1zcmMiLAotICAgICAgICAgICAgIkhUTUxNZWRpYUVsZW1lbnQ6Y3VycmVudC1z
cmMiLAotICAgICAgICAgICAgInJlYWQtb25seSBnY2hhciogSFRNTE1lZGlhRWxlbWVudDpjdXJy
ZW50LXNyYyIsCi0gICAgICAgICAgICAiIiwKLSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFE
QUJMRSkpOwotCi0gICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAg
Z29iamVjdENsYXNzLAotICAgICAgICBQUk9QX0NST1NTX09SSUdJTiwKLSAgICAgICAgZ19wYXJh
bV9zcGVjX3N0cmluZygKLSAgICAgICAgICAgICJjcm9zcy1vcmlnaW4iLAotICAgICAgICAgICAg
IkhUTUxNZWRpYUVsZW1lbnQ6Y3Jvc3Mtb3JpZ2luIiwKLSAgICAgICAgICAgICJyZWFkLXdyaXRl
IGdjaGFyKiBIVE1MTWVkaWFFbGVtZW50OmNyb3NzLW9yaWdpbiIsCi0gICAgICAgICAgICAiIiwK
LSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEV1JJVEUpKTsKLQotICAgIGdfb2JqZWN0X2Ns
YXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJP
UF9ORVRXT1JLX1NUQVRFLAotICAgICAgICBnX3BhcmFtX3NwZWNfdWludCgKLSAgICAgICAgICAg
ICJuZXR3b3JrLXN0YXRlIiwKLSAgICAgICAgICAgICJIVE1MTWVkaWFFbGVtZW50Om5ldHdvcmst
c3RhdGUiLAotICAgICAgICAgICAgInJlYWQtb25seSBndXNob3J0IEhUTUxNZWRpYUVsZW1lbnQ6
bmV0d29yay1zdGF0ZSIsCi0gICAgICAgICAgICAwLCBHX01BWFVJTlQsIDAsCi0gICAgICAgICAg
ICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxf
cHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9QUkVMT0FELAot
ICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nKAotICAgICAgICAgICAgInByZWxvYWQiLAotICAg
ICAgICAgICAgIkhUTUxNZWRpYUVsZW1lbnQ6cHJlbG9hZCIsCi0gICAgICAgICAgICAicmVhZC13
cml0ZSBnY2hhciogSFRNTE1lZGlhRWxlbWVudDpwcmVsb2FkIiwKLSAgICAgICAgICAgICIiLAot
ICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURXUklURSkpOwotCi0gICAgZ19vYmplY3RfY2xh
c3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAgZ29iamVjdENsYXNzLAotICAgICAgICBQUk9Q
X0JVRkZFUkVELAotICAgICAgICBnX3BhcmFtX3NwZWNfb2JqZWN0KAotICAgICAgICAgICAgImJ1
ZmZlcmVkIiwKLSAgICAgICAgICAgICJIVE1MTWVkaWFFbGVtZW50OmJ1ZmZlcmVkIiwKLSAgICAg
ICAgICAgICJyZWFkLW9ubHkgV2ViS2l0RE9NVGltZVJhbmdlcyogSFRNTE1lZGlhRWxlbWVudDpi
dWZmZXJlZCIsCi0gICAgICAgICAgICBXRUJLSVRfRE9NX1RZUEVfVElNRV9SQU5HRVMsCi0gICAg
ICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2lu
c3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9SRUFE
WV9TVEFURSwKLSAgICAgICAgZ19wYXJhbV9zcGVjX3VpbnQoCi0gICAgICAgICAgICAicmVhZHkt
c3RhdGUiLAotICAgICAgICAgICAgIkhUTUxNZWRpYUVsZW1lbnQ6cmVhZHktc3RhdGUiLAotICAg
ICAgICAgICAgInJlYWQtb25seSBndXNob3J0IEhUTUxNZWRpYUVsZW1lbnQ6cmVhZHktc3RhdGUi
LAotICAgICAgICAgICAgMCwgR19NQVhVSU5ULCAwLAotICAgICAgICAgICAgV0VCS0lUX1BBUkFN
X1JFQURBQkxFKSk7Ci0KLSAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAotICAg
ICAgICBnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBST1BfU0VFS0lORywKLSAgICAgICAgZ19wYXJh
bV9zcGVjX2Jvb2xlYW4oCi0gICAgICAgICAgICAic2Vla2luZyIsCi0gICAgICAgICAgICAiSFRN
TE1lZGlhRWxlbWVudDpzZWVraW5nIiwKLSAgICAgICAgICAgICJyZWFkLW9ubHkgZ2Jvb2xlYW4g
SFRNTE1lZGlhRWxlbWVudDpzZWVraW5nIiwKLSAgICAgICAgICAgIEZBTFNFLAotICAgICAgICAg
ICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7Ci0KLSAgICBnX29iamVjdF9jbGFzc19pbnN0YWxs
X3Byb3BlcnR5KAotICAgICAgICBnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBST1BfQ1VSUkVOVF9U
SU1FLAotICAgICAgICBnX3BhcmFtX3NwZWNfZG91YmxlKAotICAgICAgICAgICAgImN1cnJlbnQt
dGltZSIsCi0gICAgICAgICAgICAiSFRNTE1lZGlhRWxlbWVudDpjdXJyZW50LXRpbWUiLAotICAg
ICAgICAgICAgInJlYWQtd3JpdGUgZ2RvdWJsZSBIVE1MTWVkaWFFbGVtZW50OmN1cnJlbnQtdGlt
ZSIsCi0gICAgICAgICAgICAtR19NQVhET1VCTEUsIEdfTUFYRE9VQkxFLCAwLAotICAgICAgICAg
ICAgV0VCS0lUX1BBUkFNX1JFQURXUklURSkpOwotCi0gICAgZ19vYmplY3RfY2xhc3NfaW5zdGFs
bF9wcm9wZXJ0eSgKLSAgICAgICAgZ29iamVjdENsYXNzLAotICAgICAgICBQUk9QX0RVUkFUSU9O
LAotICAgICAgICBnX3BhcmFtX3NwZWNfZG91YmxlKAotICAgICAgICAgICAgImR1cmF0aW9uIiwK
LSAgICAgICAgICAgICJIVE1MTWVkaWFFbGVtZW50OmR1cmF0aW9uIiwKLSAgICAgICAgICAgICJy
ZWFkLW9ubHkgZ2RvdWJsZSBIVE1MTWVkaWFFbGVtZW50OmR1cmF0aW9uIiwKLSAgICAgICAgICAg
IC1HX01BWERPVUJMRSwgR19NQVhET1VCTEUsIDAsCi0gICAgICAgICAgICBXRUJLSVRfUEFSQU1f
UkVBREFCTEUpKTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAg
ICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9QQVVTRUQsCi0gICAgICAgIGdfcGFyYW1f
c3BlY19ib29sZWFuKAotICAgICAgICAgICAgInBhdXNlZCIsCi0gICAgICAgICAgICAiSFRNTE1l
ZGlhRWxlbWVudDpwYXVzZWQiLAotICAgICAgICAgICAgInJlYWQtb25seSBnYm9vbGVhbiBIVE1M
TWVkaWFFbGVtZW50OnBhdXNlZCIsCi0gICAgICAgICAgICBGQUxTRSwKLSAgICAgICAgICAgIFdF
QktJVF9QQVJBTV9SRUFEQUJMRSkpOwotCi0gICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9w
ZXJ0eSgKLSAgICAgICAgZ29iamVjdENsYXNzLAotICAgICAgICBQUk9QX0RFRkFVTFRfUExBWUJB
Q0tfUkFURSwKLSAgICAgICAgZ19wYXJhbV9zcGVjX2RvdWJsZSgKLSAgICAgICAgICAgICJkZWZh
dWx0LXBsYXliYWNrLXJhdGUiLAotICAgICAgICAgICAgIkhUTUxNZWRpYUVsZW1lbnQ6ZGVmYXVs
dC1wbGF5YmFjay1yYXRlIiwKLSAgICAgICAgICAgICJyZWFkLXdyaXRlIGdkb3VibGUgSFRNTE1l
ZGlhRWxlbWVudDpkZWZhdWx0LXBsYXliYWNrLXJhdGUiLAotICAgICAgICAgICAgLUdfTUFYRE9V
QkxFLCBHX01BWERPVUJMRSwgMCwKLSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEV1JJVEUp
KTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmpl
Y3RDbGFzcywKLSAgICAgICAgUFJPUF9QTEFZQkFDS19SQVRFLAotICAgICAgICBnX3BhcmFtX3Nw
ZWNfZG91YmxlKAotICAgICAgICAgICAgInBsYXliYWNrLXJhdGUiLAotICAgICAgICAgICAgIkhU
TUxNZWRpYUVsZW1lbnQ6cGxheWJhY2stcmF0ZSIsCi0gICAgICAgICAgICAicmVhZC13cml0ZSBn
ZG91YmxlIEhUTUxNZWRpYUVsZW1lbnQ6cGxheWJhY2stcmF0ZSIsCi0gICAgICAgICAgICAtR19N
QVhET1VCTEUsIEdfTUFYRE9VQkxFLCAwLAotICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURX
UklURSkpOwotCi0gICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAg
Z29iamVjdENsYXNzLAotICAgICAgICBQUk9QX1BMQVlFRCwKLSAgICAgICAgZ19wYXJhbV9zcGVj
X29iamVjdCgKLSAgICAgICAgICAgICJwbGF5ZWQiLAotICAgICAgICAgICAgIkhUTUxNZWRpYUVs
ZW1lbnQ6cGxheWVkIiwKLSAgICAgICAgICAgICJyZWFkLW9ubHkgV2ViS2l0RE9NVGltZVJhbmdl
cyogSFRNTE1lZGlhRWxlbWVudDpwbGF5ZWQiLAotICAgICAgICAgICAgV0VCS0lUX0RPTV9UWVBF
X1RJTUVfUkFOR0VTLAotICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7Ci0KLSAg
ICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAotICAgICAgICBnb2JqZWN0Q2xhc3Ms
Ci0gICAgICAgIFBST1BfU0VFS0FCTEUsCi0gICAgICAgIGdfcGFyYW1fc3BlY19vYmplY3QoCi0g
ICAgICAgICAgICAic2Vla2FibGUiLAotICAgICAgICAgICAgIkhUTUxNZWRpYUVsZW1lbnQ6c2Vl
a2FibGUiLAotICAgICAgICAgICAgInJlYWQtb25seSBXZWJLaXRET01UaW1lUmFuZ2VzKiBIVE1M
TWVkaWFFbGVtZW50OnNlZWthYmxlIiwKLSAgICAgICAgICAgIFdFQktJVF9ET01fVFlQRV9USU1F
X1JBTkdFUywKLSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSkpOwotCi0gICAgZ19v
YmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAgZ29iamVjdENsYXNzLAotICAg
ICAgICBQUk9QX0VOREVELAotICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigKLSAgICAgICAg
ICAgICJlbmRlZCIsCi0gICAgICAgICAgICAiSFRNTE1lZGlhRWxlbWVudDplbmRlZCIsCi0gICAg
ICAgICAgICAicmVhZC1vbmx5IGdib29sZWFuIEhUTUxNZWRpYUVsZW1lbnQ6ZW5kZWQiLAotICAg
ICAgICAgICAgRkFMU0UsCi0gICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKLQot
ICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFz
cywKLSAgICAgICAgUFJPUF9BVVRPUExBWSwKLSAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4o
Ci0gICAgICAgICAgICAiYXV0b3BsYXkiLAotICAgICAgICAgICAgIkhUTUxNZWRpYUVsZW1lbnQ6
YXV0b3BsYXkiLAotICAgICAgICAgICAgInJlYWQtd3JpdGUgZ2Jvb2xlYW4gSFRNTE1lZGlhRWxl
bWVudDphdXRvcGxheSIsCi0gICAgICAgICAgICBGQUxTRSwKLSAgICAgICAgICAgIFdFQktJVF9Q
QVJBTV9SRUFEV1JJVEUpKTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHko
Ci0gICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9MT09QLAotICAgICAgICBnX3Bh
cmFtX3NwZWNfYm9vbGVhbigKLSAgICAgICAgICAgICJsb29wIiwKLSAgICAgICAgICAgICJIVE1M
TWVkaWFFbGVtZW50Omxvb3AiLAotICAgICAgICAgICAgInJlYWQtd3JpdGUgZ2Jvb2xlYW4gSFRN
TE1lZGlhRWxlbWVudDpsb29wIiwKLSAgICAgICAgICAgIEZBTFNFLAotICAgICAgICAgICAgV0VC
S0lUX1BBUkFNX1JFQURXUklURSkpOwotCi0gICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9w
ZXJ0eSgKLSAgICAgICAgZ29iamVjdENsYXNzLAotICAgICAgICBQUk9QX0NPTlRST0xTLAotICAg
ICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigKLSAgICAgICAgICAgICJjb250cm9scyIsCi0gICAg
ICAgICAgICAiSFRNTE1lZGlhRWxlbWVudDpjb250cm9scyIsCi0gICAgICAgICAgICAicmVhZC13
cml0ZSBnYm9vbGVhbiBIVE1MTWVkaWFFbGVtZW50OmNvbnRyb2xzIiwKLSAgICAgICAgICAgIEZB
TFNFLAotICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURXUklURSkpOwotCi0gICAgZ19vYmpl
Y3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAgZ29iamVjdENsYXNzLAotICAgICAg
ICBQUk9QX1ZPTFVNRSwKLSAgICAgICAgZ19wYXJhbV9zcGVjX2RvdWJsZSgKLSAgICAgICAgICAg
ICJ2b2x1bWUiLAotICAgICAgICAgICAgIkhUTUxNZWRpYUVsZW1lbnQ6dm9sdW1lIiwKLSAgICAg
ICAgICAgICJyZWFkLXdyaXRlIGdkb3VibGUgSFRNTE1lZGlhRWxlbWVudDp2b2x1bWUiLAotICAg
ICAgICAgICAgLUdfTUFYRE9VQkxFLCBHX01BWERPVUJMRSwgMCwKLSAgICAgICAgICAgIFdFQktJ
VF9QQVJBTV9SRUFEV1JJVEUpKTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVy
dHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9NVVRFRCwKLSAgICAgICAg
Z19wYXJhbV9zcGVjX2Jvb2xlYW4oCi0gICAgICAgICAgICAibXV0ZWQiLAotICAgICAgICAgICAg
IkhUTUxNZWRpYUVsZW1lbnQ6bXV0ZWQiLAotICAgICAgICAgICAgInJlYWQtd3JpdGUgZ2Jvb2xl
YW4gSFRNTE1lZGlhRWxlbWVudDptdXRlZCIsCi0gICAgICAgICAgICBGQUxTRSwKLSAgICAgICAg
ICAgIFdFQktJVF9QQVJBTV9SRUFEV1JJVEUpKTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3Rh
bGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9ERUZBVUxU
X01VVEVELAotICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigKLSAgICAgICAgICAgICJkZWZh
dWx0LW11dGVkIiwKLSAgICAgICAgICAgICJIVE1MTWVkaWFFbGVtZW50OmRlZmF1bHQtbXV0ZWQi
LAotICAgICAgICAgICAgInJlYWQtd3JpdGUgZ2Jvb2xlYW4gSFRNTE1lZGlhRWxlbWVudDpkZWZh
dWx0LW11dGVkIiwKLSAgICAgICAgICAgIEZBTFNFLAotICAgICAgICAgICAgV0VCS0lUX1BBUkFN
X1JFQURXUklURSkpOwotCi0gICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAg
ICAgICAgZ29iamVjdENsYXNzLAotICAgICAgICBQUk9QX1dFQktJVF9QUkVTRVJWRVNfUElUQ0gs
Ci0gICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKAotICAgICAgICAgICAgIndlYmtpdC1wcmVz
ZXJ2ZXMtcGl0Y2giLAotICAgICAgICAgICAgIkhUTUxNZWRpYUVsZW1lbnQ6d2Via2l0LXByZXNl
cnZlcy1waXRjaCIsCi0gICAgICAgICAgICAicmVhZC13cml0ZSBnYm9vbGVhbiBIVE1MTWVkaWFF
bGVtZW50OndlYmtpdC1wcmVzZXJ2ZXMtcGl0Y2giLAotICAgICAgICAgICAgRkFMU0UsCi0gICAg
ICAgICAgICBXRUJLSVRfUEFSQU1fUkVBRFdSSVRFKSk7Ci0KLSAgICBnX29iamVjdF9jbGFzc19p
bnN0YWxsX3Byb3BlcnR5KAotICAgICAgICBnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBST1BfV0VC
S0lUX0hBU19DTE9TRURfQ0FQVElPTlMsCi0gICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKAot
ICAgICAgICAgICAgIndlYmtpdC1oYXMtY2xvc2VkLWNhcHRpb25zIiwKLSAgICAgICAgICAgICJI
VE1MTWVkaWFFbGVtZW50OndlYmtpdC1oYXMtY2xvc2VkLWNhcHRpb25zIiwKLSAgICAgICAgICAg
ICJyZWFkLW9ubHkgZ2Jvb2xlYW4gSFRNTE1lZGlhRWxlbWVudDp3ZWJraXQtaGFzLWNsb3NlZC1j
YXB0aW9ucyIsCi0gICAgICAgICAgICBGQUxTRSwKLSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9S
RUFEQUJMRSkpOwotCi0gICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAg
ICAgZ29iamVjdENsYXNzLAotICAgICAgICBQUk9QX1dFQktJVF9DTE9TRURfQ0FQVElPTlNfVklT
SUJMRSwKLSAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oCi0gICAgICAgICAgICAid2Via2l0
LWNsb3NlZC1jYXB0aW9ucy12aXNpYmxlIiwKLSAgICAgICAgICAgICJIVE1MTWVkaWFFbGVtZW50
OndlYmtpdC1jbG9zZWQtY2FwdGlvbnMtdmlzaWJsZSIsCi0gICAgICAgICAgICAicmVhZC13cml0
ZSBnYm9vbGVhbiBIVE1MTWVkaWFFbGVtZW50OndlYmtpdC1jbG9zZWQtY2FwdGlvbnMtdmlzaWJs
ZSIsCi0gICAgICAgICAgICBGQUxTRSwKLSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEV1JJ
VEUpKTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdv
YmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9XRUJLSVRfQVVESU9fREVDT0RFRF9CWVRFX0NPVU5U
LAotICAgICAgICBnX3BhcmFtX3NwZWNfdWxvbmcoCi0gICAgICAgICAgICAid2Via2l0LWF1ZGlv
LWRlY29kZWQtYnl0ZS1jb3VudCIsCi0gICAgICAgICAgICAiSFRNTE1lZGlhRWxlbWVudDp3ZWJr
aXQtYXVkaW8tZGVjb2RlZC1ieXRlLWNvdW50IiwKLSAgICAgICAgICAgICJyZWFkLW9ubHkgZ3Vs
b25nIEhUTUxNZWRpYUVsZW1lbnQ6d2Via2l0LWF1ZGlvLWRlY29kZWQtYnl0ZS1jb3VudCIsCi0g
ICAgICAgICAgICAwLCBHX01BWFVMT05HLCAwLAotICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JF
QURBQkxFKSk7Ci0KLSAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAotICAgICAg
ICBnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBST1BfV0VCS0lUX1ZJREVPX0RFQ09ERURfQllURV9D
T1VOVCwKLSAgICAgICAgZ19wYXJhbV9zcGVjX3Vsb25nKAotICAgICAgICAgICAgIndlYmtpdC12
aWRlby1kZWNvZGVkLWJ5dGUtY291bnQiLAotICAgICAgICAgICAgIkhUTUxNZWRpYUVsZW1lbnQ6
d2Via2l0LXZpZGVvLWRlY29kZWQtYnl0ZS1jb3VudCIsCi0gICAgICAgICAgICAicmVhZC1vbmx5
IGd1bG9uZyBIVE1MTWVkaWFFbGVtZW50OndlYmtpdC12aWRlby1kZWNvZGVkLWJ5dGUtY291bnQi
LAotICAgICAgICAgICAgMCwgR19NQVhVTE9ORywgMCwKLSAgICAgICAgICAgIFdFQktJVF9QQVJB
TV9SRUFEQUJMRSkpOwotCi0gICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAg
ICAgICAgZ29iamVjdENsYXNzLAotICAgICAgICBQUk9QX01FRElBX0dST1VQLAotICAgICAgICBn
X3BhcmFtX3NwZWNfc3RyaW5nKAotICAgICAgICAgICAgIm1lZGlhLWdyb3VwIiwKLSAgICAgICAg
ICAgICJIVE1MTWVkaWFFbGVtZW50Om1lZGlhLWdyb3VwIiwKLSAgICAgICAgICAgICJyZWFkLXdy
aXRlIGdjaGFyKiBIVE1MTWVkaWFFbGVtZW50Om1lZGlhLWdyb3VwIiwKLSAgICAgICAgICAgICIi
LAotICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURXUklURSkpOwotCi0gICAgZ19vYmplY3Rf
Y2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAgZ29iamVjdENsYXNzLAotICAgICAgICBQ
Uk9QX0NPTlRST0xMRVIsCi0gICAgICAgIGdfcGFyYW1fc3BlY19vYmplY3QoCi0gICAgICAgICAg
ICAiY29udHJvbGxlciIsCi0gICAgICAgICAgICAiSFRNTE1lZGlhRWxlbWVudDpjb250cm9sbGVy
IiwKLSAgICAgICAgICAgICJyZWFkLW9ubHkgV2ViS2l0RE9NTWVkaWFDb250cm9sbGVyKiBIVE1M
TWVkaWFFbGVtZW50OmNvbnRyb2xsZXIiLAotICAgICAgICAgICAgV0VCS0lUX0RPTV9UWVBFX01F
RElBX0NPTlRST0xMRVIsCi0gICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKLQot
ICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFz
cywKLSAgICAgICAgUFJPUF9XRUJLSVRfQ1VSUkVOVF9QTEFZQkFDS19UQVJHRVRfSVNfV0lSRUxF
U1MsCi0gICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKAotICAgICAgICAgICAgIndlYmtpdC1j
dXJyZW50LXBsYXliYWNrLXRhcmdldC1pcy13aXJlbGVzcyIsCi0gICAgICAgICAgICAiSFRNTE1l
ZGlhRWxlbWVudDp3ZWJraXQtY3VycmVudC1wbGF5YmFjay10YXJnZXQtaXMtd2lyZWxlc3MiLAot
ICAgICAgICAgICAgInJlYWQtb25seSBnYm9vbGVhbiBIVE1MTWVkaWFFbGVtZW50OndlYmtpdC1j
dXJyZW50LXBsYXliYWNrLXRhcmdldC1pcy13aXJlbGVzcyIsCi0gICAgICAgICAgICBGQUxTRSwK
LSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSkpOwotCi0gICAgZ19vYmplY3RfY2xh
c3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAgZ29iamVjdENsYXNzLAotICAgICAgICBQUk9Q
X0tJTkQsCi0gICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcoCi0gICAgICAgICAgICAia2luZCIs
Ci0gICAgICAgICAgICAiSFRNTE1lZGlhRWxlbWVudDpraW5kIiwKLSAgICAgICAgICAgICJyZWFk
LXdyaXRlIGdjaGFyKiBIVE1MTWVkaWFFbGVtZW50OmtpbmQiLAotICAgICAgICAgICAgIiIsCi0g
ICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBRFdSSVRFKSk7Ci0KLX0KLQotc3RhdGljIHZvaWQg
d2Via2l0X2RvbV9odG1sX21lZGlhX2VsZW1lbnRfaW5pdChXZWJLaXRET01IVE1MTWVkaWFFbGVt
ZW50KiByZXF1ZXN0KQotewotICAgIFVOVVNFRF9QQVJBTShyZXF1ZXN0KTsKLX0KLQotdm9pZCB3
ZWJraXRfZG9tX2h0bWxfbWVkaWFfZWxlbWVudF9sb2FkKFdlYktpdERPTUhUTUxNZWRpYUVsZW1l
bnQqIHNlbGYpCi17Ci0jaWYgRU5BQkxFKFZJREVPKQotICAgIFdlYkNvcmU6OkpTTWFpblRocmVh
ZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfSFRN
TF9NRURJQV9FTEVNRU5UKHNlbGYpKTsKLSAgICBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50KiBp
dGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGl0ZW0tPmxvYWQoKTsKLSNlbHNlCi0gICAg
VU5VU0VEX1BBUkFNKHNlbGYpOwotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQo
IlZpZGVvIikKLSNlbmRpZiAvKiBFTkFCTEUoVklERU8pICovCi19Ci0KLWdjaGFyKiB3ZWJraXRf
ZG9tX2h0bWxfbWVkaWFfZWxlbWVudF9jYW5fcGxheV90eXBlKFdlYktpdERPTUhUTUxNZWRpYUVs
ZW1lbnQqIHNlbGYsIGNvbnN0IGdjaGFyKiB0eXBlKQotewotI2lmIEVOQUJMRShWSURFTykKLSAg
ICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFs
X2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19IVE1MX01FRElBX0VMRU1FTlQoc2VsZiksIDApOwotICAg
IGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHR5cGUsIDApOwotICAgIFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgV1RGOjpTdHJpbmcgY29udmVy
dGVkVHlwZSA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOCh0eXBlKTsKLSAgICBnY2hhciogcmVzdWx0
ID0gY29udmVydFRvVVRGOFN0cmluZyhpdGVtLT5jYW5QbGF5VHlwZShjb252ZXJ0ZWRUeXBlKSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHNlbGYpOwotICAg
IFVOVVNFRF9QQVJBTSh0eXBlKTsKLSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5U
KCJWaWRlbyIpCi0gICAgcmV0dXJuIDA7Ci0jZW5kaWYgLyogRU5BQkxFKFZJREVPKSAqLwotfQot
Ci12b2lkIHdlYmtpdF9kb21faHRtbF9tZWRpYV9lbGVtZW50X3BhdXNlKFdlYktpdERPTUhUTUxN
ZWRpYUVsZW1lbnQqIHNlbGYpCi17Ci0jaWYgRU5BQkxFKFZJREVPKQotICAgIFdlYkNvcmU6OkpT
TWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9E
T01fSVNfSFRNTF9NRURJQV9FTEVNRU5UKHNlbGYpKTsKLSAgICBXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGl0ZW0tPnBhdXNlKCk7Ci0j
ZWxzZQotICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKLSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05P
VF9QUkVTRU5UKCJWaWRlbyIpCi0jZW5kaWYgLyogRU5BQkxFKFZJREVPKSAqLwotfQotCi12b2lk
IHdlYmtpdF9kb21faHRtbF9tZWRpYV9lbGVtZW50X2Zhc3Rfc2VlayhXZWJLaXRET01IVE1MTWVk
aWFFbGVtZW50KiBzZWxmLCBnZG91YmxlIHRpbWUpCi17Ci0jaWYgRU5BQkxFKFZJREVPKQotICAg
IFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl9pZl9m
YWlsKFdFQktJVF9ET01fSVNfSFRNTF9NRURJQV9FTEVNRU5UKHNlbGYpKTsKLSAgICBXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGl0ZW0t
PmZhc3RTZWVrKHRpbWUpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc2VsZik7Ci0gICAgVU5V
U0VEX1BBUkFNKHRpbWUpOwotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIlZp
ZGVvIikKLSNlbmRpZiAvKiBFTkFCTEUoVklERU8pICovCi19Ci0KLXZvaWQgd2Via2l0X2RvbV9o
dG1sX21lZGlhX2VsZW1lbnRfd2Via2l0X3Nob3dfcGxheWJhY2tfdGFyZ2V0X3BpY2tlcihXZWJL
aXRET01IVE1MTWVkaWFFbGVtZW50KiBzZWxmKQotewotI2lmIEVOQUJMRShWSURFTykKLSNpZiBF
TkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQotICAgIFdlYkNvcmU6OkpTTWFpblRocmVh
ZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfSFRN
TF9NRURJQV9FTEVNRU5UKHNlbGYpKTsKLSAgICBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50KiBp
dGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGl0ZW0tPndlYmtpdFNob3dQbGF5YmFja1Rh
cmdldFBpY2tlcigpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc2VsZik7Ci0gICAgV0VCS0lU
X1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiV2lyZWxlc3MgUGxheWJhY2sgVGFyZ2V0IikKLSNl
bmRpZiAvKiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAqLwotI2Vsc2UKLSAgICBV
TlVTRURfUEFSQU0oc2VsZik7Ci0gICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgi
VmlkZW8iKQotI2VuZGlmIC8qIEVOQUJMRShWSURFTykgKi8KLX0KLQotV2ViS2l0RE9NTWVkaWFF
cnJvciogd2Via2l0X2RvbV9odG1sX21lZGlhX2VsZW1lbnRfZ2V0X2Vycm9yKFdlYktpdERPTUhU
TUxNZWRpYUVsZW1lbnQqIHNlbGYpCi17Ci0jaWYgRU5BQkxFKFZJREVPKQotICAgIFdlYkNvcmU6
OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChX
RUJLSVRfRE9NX0lTX0hUTUxfTUVESUFfRUxFTUVOVChzZWxmKSwgMCk7Ci0gICAgV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBSZWZQdHI8
V2ViQ29yZTo6TWVkaWFFcnJvcj4gZ29iamVjdFJlc3VsdCA9IFdURjo6Z2V0UHRyKGl0ZW0tPmVy
cm9yKCkpOwotICAgIHJldHVybiBXZWJLaXQ6OmtpdChnb2JqZWN0UmVzdWx0LmdldCgpKTsKLSNl
bHNlCi0gICAgVU5VU0VEX1BBUkFNKHNlbGYpOwotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9U
X1BSRVNFTlQoIlZpZGVvIikKLSAgICByZXR1cm4gMDsKLSNlbmRpZiAvKiBFTkFCTEUoVklERU8p
ICovCi19Ci0KLWdjaGFyKiB3ZWJraXRfZG9tX2h0bWxfbWVkaWFfZWxlbWVudF9nZXRfc3JjKFdl
YktpdERPTUhUTUxNZWRpYUVsZW1lbnQqIHNlbGYpCi17Ci0jaWYgRU5BQkxFKFZJREVPKQotICAg
IFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxf
aWZfZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxfTUVESUFfRUxFTUVOVChzZWxmKSwgMCk7Ci0gICAg
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAg
ICBnY2hhciogcmVzdWx0ID0gY29udmVydFRvVVRGOFN0cmluZyhpdGVtLT5nZXRVUkxBdHRyaWJ1
dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpzcmNBdHRyKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSNl
bHNlCi0gICAgVU5VU0VEX1BBUkFNKHNlbGYpOwotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9U
X1BSRVNFTlQoIlZpZGVvIikKLSAgICByZXR1cm4gMDsKLSNlbmRpZiAvKiBFTkFCTEUoVklERU8p
ICovCi19Ci0KLXZvaWQgd2Via2l0X2RvbV9odG1sX21lZGlhX2VsZW1lbnRfc2V0X3NyYyhXZWJL
aXRET01IVE1MTWVkaWFFbGVtZW50KiBzZWxmLCBjb25zdCBnY2hhciogdmFsdWUpCi17Ci0jaWYg
RU5BQkxFKFZJREVPKQotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsK
LSAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfSFRNTF9NRURJQV9FTEVNRU5UKHNl
bGYpKTsKLSAgICBnX3JldHVybl9pZl9mYWlsKHZhbHVlKTsKLSAgICBXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIFdURjo6U3RyaW5nIGNv
bnZlcnRlZFZhbHVlID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KHZhbHVlKTsKLSAgICBpdGVtLT5z
ZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFdlYkNvcmU6OkhUTUxOYW1lczo6c3Jj
QXR0ciwgY29udmVydGVkVmFsdWUpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc2VsZik7Ci0g
ICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKLSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVT
RU5UKCJWaWRlbyIpCi0jZW5kaWYgLyogRU5BQkxFKFZJREVPKSAqLwotfQotCi1nY2hhciogd2Vi
a2l0X2RvbV9odG1sX21lZGlhX2VsZW1lbnRfZ2V0X2N1cnJlbnRfc3JjKFdlYktpdERPTUhUTUxN
ZWRpYUVsZW1lbnQqIHNlbGYpCi17Ci0jaWYgRU5BQkxFKFZJREVPKQotICAgIFdlYkNvcmU6OkpT
TWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJL
SVRfRE9NX0lTX0hUTUxfTUVESUFfRUxFTUVOVChzZWxmKSwgMCk7Ci0gICAgV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBnY2hhciogcmVz
dWx0ID0gY29udmVydFRvVVRGOFN0cmluZyhpdGVtLT5jdXJyZW50U3JjKCkpOwotICAgIHJldHVy
biByZXN1bHQ7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKLSAgICBXRUJLSVRfV0FS
Tl9GRUFUVVJFX05PVF9QUkVTRU5UKCJWaWRlbyIpCi0gICAgcmV0dXJuIDA7Ci0jZW5kaWYgLyog
RU5BQkxFKFZJREVPKSAqLwotfQotCi1nY2hhciogd2Via2l0X2RvbV9odG1sX21lZGlhX2VsZW1l
bnRfZ2V0X2Nyb3NzX29yaWdpbihXZWJLaXRET01IVE1MTWVkaWFFbGVtZW50KiBzZWxmKQotewot
I2lmIEVOQUJMRShWSURFTykKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3Rh
dGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19IVE1MX01FRElBX0VM
RU1FTlQoc2VsZiksIDApOwotICAgIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQqIGl0ZW0gPSBX
ZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ2NoYXIqIHJlc3VsdCA9IGNvbnZlcnRUb1VURjhTdHJp
bmcoaXRlbS0+Y3Jvc3NPcmlnaW4oKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSNlbHNlCi0gICAg
VU5VU0VEX1BBUkFNKHNlbGYpOwotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQo
IlZpZGVvIikKLSAgICByZXR1cm4gMDsKLSNlbmRpZiAvKiBFTkFCTEUoVklERU8pICovCi19Ci0K
LXZvaWQgd2Via2l0X2RvbV9odG1sX21lZGlhX2VsZW1lbnRfc2V0X2Nyb3NzX29yaWdpbihXZWJL
aXRET01IVE1MTWVkaWFFbGVtZW50KiBzZWxmLCBjb25zdCBnY2hhciogdmFsdWUpCi17Ci0jaWYg
RU5BQkxFKFZJREVPKQotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsK
LSAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfSFRNTF9NRURJQV9FTEVNRU5UKHNl
bGYpKTsKLSAgICBnX3JldHVybl9pZl9mYWlsKHZhbHVlKTsKLSAgICBXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIFdURjo6U3RyaW5nIGNv
bnZlcnRlZFZhbHVlID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KHZhbHVlKTsKLSAgICBpdGVtLT5z
ZXRDcm9zc09yaWdpbihjb252ZXJ0ZWRWYWx1ZSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShz
ZWxmKTsKLSAgICBVTlVTRURfUEFSQU0odmFsdWUpOwotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVf
Tk9UX1BSRVNFTlQoIlZpZGVvIikKLSNlbmRpZiAvKiBFTkFCTEUoVklERU8pICovCi19Ci0KLWd1
c2hvcnQgd2Via2l0X2RvbV9odG1sX21lZGlhX2VsZW1lbnRfZ2V0X25ldHdvcmtfc3RhdGUoV2Vi
S2l0RE9NSFRNTE1lZGlhRWxlbWVudCogc2VsZikKLXsKLSNpZiBFTkFCTEUoVklERU8pCi0gICAg
V2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9p
Zl9mYWlsKFdFQktJVF9ET01fSVNfSFRNTF9NRURJQV9FTEVNRU5UKHNlbGYpLCAwKTsKLSAgICBX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAg
IGd1c2hvcnQgcmVzdWx0ID0gaXRlbS0+bmV0d29ya1N0YXRlKCk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHNlbGYpOwotICAgIFdFQktJVF9XQVJOX0ZFQVRV
UkVfTk9UX1BSRVNFTlQoIlZpZGVvIikKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Z3VzaG9ydD4o
MCk7Ci0jZW5kaWYgLyogRU5BQkxFKFZJREVPKSAqLwotfQotCi1nY2hhciogd2Via2l0X2RvbV9o
dG1sX21lZGlhX2VsZW1lbnRfZ2V0X3ByZWxvYWQoV2ViS2l0RE9NSFRNTE1lZGlhRWxlbWVudCog
c2VsZikKLXsKLSNpZiBFTkFCTEUoVklERU8pCi0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVs
bFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfSFRN
TF9NRURJQV9FTEVNRU5UKHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdjaGFyKiByZXN1bHQgPSBjb252ZXJ0
VG9VVEY4U3RyaW5nKGl0ZW0tPnByZWxvYWQoKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSNlbHNl
Ci0gICAgVU5VU0VEX1BBUkFNKHNlbGYpOwotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BS
RVNFTlQoIlZpZGVvIikKLSAgICByZXR1cm4gMDsKLSNlbmRpZiAvKiBFTkFCTEUoVklERU8pICov
Ci19Ci0KLXZvaWQgd2Via2l0X2RvbV9odG1sX21lZGlhX2VsZW1lbnRfc2V0X3ByZWxvYWQoV2Vi
S2l0RE9NSFRNTE1lZGlhRWxlbWVudCogc2VsZiwgY29uc3QgZ2NoYXIqIHZhbHVlKQotewotI2lm
IEVOQUJMRShWSURFTykKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7
Ci0gICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxfTUVESUFfRUxFTUVOVChz
ZWxmKSk7Ci0gICAgZ19yZXR1cm5faWZfZmFpbCh2YWx1ZSk7Ci0gICAgV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBXVEY6OlN0cmluZyBj
b252ZXJ0ZWRWYWx1ZSA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOCh2YWx1ZSk7Ci0gICAgaXRlbS0+
c2V0UHJlbG9hZChjb252ZXJ0ZWRWYWx1ZSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShzZWxm
KTsKLSAgICBVTlVTRURfUEFSQU0odmFsdWUpOwotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9U
X1BSRVNFTlQoIlZpZGVvIikKLSNlbmRpZiAvKiBFTkFCTEUoVklERU8pICovCi19Ci0KLVdlYktp
dERPTVRpbWVSYW5nZXMqIHdlYmtpdF9kb21faHRtbF9tZWRpYV9lbGVtZW50X2dldF9idWZmZXJl
ZChXZWJLaXRET01IVE1MTWVkaWFFbGVtZW50KiBzZWxmKQotewotI2lmIEVOQUJMRShWSURFTykK
LSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5f
dmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19IVE1MX01FRElBX0VMRU1FTlQoc2VsZiksIDApOwot
ICAgIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7
Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlRpbWVSYW5nZXM+IGdvYmplY3RSZXN1bHQgPSBXVEY6Omdl
dFB0cihpdGVtLT5idWZmZXJlZCgpKTsKLSAgICByZXR1cm4gV2ViS2l0OjpraXQoZ29iamVjdFJl
c3VsdC5nZXQoKSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKLSAgICBXRUJLSVRf
V0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJWaWRlbyIpCi0gICAgcmV0dXJuIDA7Ci0jZW5kaWYg
LyogRU5BQkxFKFZJREVPKSAqLwotfQotCi1ndXNob3J0IHdlYmtpdF9kb21faHRtbF9tZWRpYV9l
bGVtZW50X2dldF9yZWFkeV9zdGF0ZShXZWJLaXRET01IVE1MTWVkaWFFbGVtZW50KiBzZWxmKQot
ewotI2lmIEVOQUJMRShWSURFTykKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUg
c3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19IVE1MX01FRElB
X0VMRU1FTlQoc2VsZiksIDApOwotICAgIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQqIGl0ZW0g
PSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ3VzaG9ydCByZXN1bHQgPSBpdGVtLT5yZWFkeVN0
YXRlKCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHNlbGYp
OwotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIlZpZGVvIikKLSAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8Z3VzaG9ydD4oMCk7Ci0jZW5kaWYgLyogRU5BQkxFKFZJREVPKSAqLwot
fQotCi1nYm9vbGVhbiB3ZWJraXRfZG9tX2h0bWxfbWVkaWFfZWxlbWVudF9nZXRfc2Vla2luZyhX
ZWJLaXRET01IVE1MTWVkaWFFbGVtZW50KiBzZWxmKQotewotI2lmIEVOQUJMRShWSURFTykKLSAg
ICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFs
X2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19IVE1MX01FRElBX0VMRU1FTlQoc2VsZiksIEZBTFNFKTsK
LSAgICBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYp
OwotICAgIGdib29sZWFuIHJlc3VsdCA9IGl0ZW0tPnNlZWtpbmcoKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc2VsZik7Ci0gICAgV0VCS0lUX1dBUk5fRkVB
VFVSRV9OT1RfUFJFU0VOVCgiVmlkZW8iKQotICAgIHJldHVybiBzdGF0aWNfY2FzdDxnYm9vbGVh
bj4oMCk7Ci0jZW5kaWYgLyogRU5BQkxFKFZJREVPKSAqLwotfQotCi1nZG91YmxlIHdlYmtpdF9k
b21faHRtbF9tZWRpYV9lbGVtZW50X2dldF9jdXJyZW50X3RpbWUoV2ViS2l0RE9NSFRNTE1lZGlh
RWxlbWVudCogc2VsZikKLXsKLSNpZiBFTkFCTEUoVklERU8pCi0gICAgV2ViQ29yZTo6SlNNYWlu
VGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9E
T01fSVNfSFRNTF9NRURJQV9FTEVNRU5UKHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdkb3VibGUgcmVzdWx0
ID0gaXRlbS0+Y3VycmVudFRpbWUoKTsKLSAgICByZXR1cm4gcmVzdWx0OwotI2Vsc2UKLSAgICBV
TlVTRURfUEFSQU0oc2VsZik7Ci0gICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgi
VmlkZW8iKQotICAgIHJldHVybiBzdGF0aWNfY2FzdDxnZG91YmxlPigwKTsKLSNlbmRpZiAvKiBF
TkFCTEUoVklERU8pICovCi19Ci0KLXZvaWQgd2Via2l0X2RvbV9odG1sX21lZGlhX2VsZW1lbnRf
c2V0X2N1cnJlbnRfdGltZShXZWJLaXRET01IVE1MTWVkaWFFbGVtZW50KiBzZWxmLCBnZG91Ymxl
IHZhbHVlLCBHRXJyb3IqKiBlcnJvcikKLXsKLSNpZiBFTkFCTEUoVklERU8pCi0gICAgV2ViQ29y
ZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VC
S0lUX0RPTV9JU19IVE1MX01FRElBX0VMRU1FTlQoc2VsZikpOwotICAgIGdfcmV0dXJuX2lmX2Zh
aWwoIWVycm9yIHx8ICEqZXJyb3IpOwotICAgIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQqIGl0
ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9
IDA7Ci0gICAgaXRlbS0+c2V0Q3VycmVudFRpbWUodmFsdWUsIGVjKTsKLSAgICBpZiAoZWMpIHsK
LSAgICAgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uIGVjZGVzYyhlYyk7Ci0g
ICAgICAgIGdfc2V0X2Vycm9yX2xpdGVyYWwoZXJyb3IsIGdfcXVhcmtfZnJvbV9zdHJpbmcoIldF
QktJVF9ET00iKSwgZWNkZXNjLmNvZGUsIGVjZGVzYy5uYW1lKTsKLSAgICB9Ci0jZWxzZQotICAg
IFVOVVNFRF9QQVJBTShzZWxmKTsKLSAgICBVTlVTRURfUEFSQU0odmFsdWUpOwotICAgIFVOVVNF
RF9QQVJBTShlcnJvcik7Ci0gICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiVmlk
ZW8iKQotI2VuZGlmIC8qIEVOQUJMRShWSURFTykgKi8KLX0KLQotZ2RvdWJsZSB3ZWJraXRfZG9t
X2h0bWxfbWVkaWFfZWxlbWVudF9nZXRfZHVyYXRpb24oV2ViS2l0RE9NSFRNTE1lZGlhRWxlbWVu
dCogc2VsZikKLXsKLSNpZiBFTkFCTEUoVklERU8pCi0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFk
TnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNf
SFRNTF9NRURJQV9FTEVNRU5UKHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdkb3VibGUgcmVzdWx0ID0gaXRl
bS0+ZHVyYXRpb24oKTsKLSAgICByZXR1cm4gcmVzdWx0OwotI2Vsc2UKLSAgICBVTlVTRURfUEFS
QU0oc2VsZik7Ci0gICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiVmlkZW8iKQot
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxnZG91YmxlPigwKTsKLSNlbmRpZiAvKiBFTkFCTEUoVklE
RU8pICovCi19Ci0KLWdib29sZWFuIHdlYmtpdF9kb21faHRtbF9tZWRpYV9lbGVtZW50X2dldF9w
YXVzZWQoV2ViS2l0RE9NSFRNTE1lZGlhRWxlbWVudCogc2VsZikKLXsKLSNpZiBFTkFCTEUoVklE
RU8pCi0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0
dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfSFRNTF9NRURJQV9FTEVNRU5UKHNlbGYpLCBG
QUxTRSk7Ci0gICAgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29y
ZShzZWxmKTsKLSAgICBnYm9vbGVhbiByZXN1bHQgPSBpdGVtLT5wYXVzZWQoKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc2VsZik7Ci0gICAgV0VCS0lUX1dB
Uk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiVmlkZW8iKQotICAgIHJldHVybiBzdGF0aWNfY2FzdDxn
Ym9vbGVhbj4oMCk7Ci0jZW5kaWYgLyogRU5BQkxFKFZJREVPKSAqLwotfQotCi1nZG91YmxlIHdl
YmtpdF9kb21faHRtbF9tZWRpYV9lbGVtZW50X2dldF9kZWZhdWx0X3BsYXliYWNrX3JhdGUoV2Vi
S2l0RE9NSFRNTE1lZGlhRWxlbWVudCogc2VsZikKLXsKLSNpZiBFTkFCTEUoVklERU8pCi0gICAg
V2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9p
Zl9mYWlsKFdFQktJVF9ET01fSVNfSFRNTF9NRURJQV9FTEVNRU5UKHNlbGYpLCAwKTsKLSAgICBX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAg
IGdkb3VibGUgcmVzdWx0ID0gaXRlbS0+ZGVmYXVsdFBsYXliYWNrUmF0ZSgpOwotICAgIHJldHVy
biByZXN1bHQ7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKLSAgICBXRUJLSVRfV0FS
Tl9GRUFUVVJFX05PVF9QUkVTRU5UKCJWaWRlbyIpCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGdk
b3VibGU+KDApOwotI2VuZGlmIC8qIEVOQUJMRShWSURFTykgKi8KLX0KLQotdm9pZCB3ZWJraXRf
ZG9tX2h0bWxfbWVkaWFfZWxlbWVudF9zZXRfZGVmYXVsdF9wbGF5YmFja19yYXRlKFdlYktpdERP
TUhUTUxNZWRpYUVsZW1lbnQqIHNlbGYsIGdkb3VibGUgdmFsdWUpCi17Ci0jaWYgRU5BQkxFKFZJ
REVPKQotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3Jl
dHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfSFRNTF9NRURJQV9FTEVNRU5UKHNlbGYpKTsKLSAg
ICBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwot
ICAgIGl0ZW0tPnNldERlZmF1bHRQbGF5YmFja1JhdGUodmFsdWUpOwotI2Vsc2UKLSAgICBVTlVT
RURfUEFSQU0oc2VsZik7Ci0gICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKLSAgICBXRUJLSVRfV0FS
Tl9GRUFUVVJFX05PVF9QUkVTRU5UKCJWaWRlbyIpCi0jZW5kaWYgLyogRU5BQkxFKFZJREVPKSAq
LwotfQotCi1nZG91YmxlIHdlYmtpdF9kb21faHRtbF9tZWRpYV9lbGVtZW50X2dldF9wbGF5YmFj
a19yYXRlKFdlYktpdERPTUhUTUxNZWRpYUVsZW1lbnQqIHNlbGYpCi17Ci0jaWYgRU5BQkxFKFZJ
REVPKQotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3Jl
dHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxfTUVESUFfRUxFTUVOVChzZWxmKSwg
MCk7Ci0gICAgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShz
ZWxmKTsKLSAgICBnZG91YmxlIHJlc3VsdCA9IGl0ZW0tPnBsYXliYWNrUmF0ZSgpOwotICAgIHJl
dHVybiByZXN1bHQ7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKLSAgICBXRUJLSVRf
V0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJWaWRlbyIpCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0
PGdkb3VibGU+KDApOwotI2VuZGlmIC8qIEVOQUJMRShWSURFTykgKi8KLX0KLQotdm9pZCB3ZWJr
aXRfZG9tX2h0bWxfbWVkaWFfZWxlbWVudF9zZXRfcGxheWJhY2tfcmF0ZShXZWJLaXRET01IVE1M
TWVkaWFFbGVtZW50KiBzZWxmLCBnZG91YmxlIHZhbHVlKQotewotI2lmIEVOQUJMRShWSURFTykK
LSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5f
aWZfZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxfTUVESUFfRUxFTUVOVChzZWxmKSk7Ci0gICAgV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBp
dGVtLT5zZXRQbGF5YmFja1JhdGUodmFsdWUpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc2Vs
Zik7Ci0gICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKLSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05P
VF9QUkVTRU5UKCJWaWRlbyIpCi0jZW5kaWYgLyogRU5BQkxFKFZJREVPKSAqLwotfQotCi1XZWJL
aXRET01UaW1lUmFuZ2VzKiB3ZWJraXRfZG9tX2h0bWxfbWVkaWFfZWxlbWVudF9nZXRfcGxheWVk
KFdlYktpdERPTUhUTUxNZWRpYUVsZW1lbnQqIHNlbGYpCi17Ci0jaWYgRU5BQkxFKFZJREVPKQot
ICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92
YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxfTUVESUFfRUxFTUVOVChzZWxmKSwgMCk7Ci0g
ICAgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsK
LSAgICBSZWZQdHI8V2ViQ29yZTo6VGltZVJhbmdlcz4gZ29iamVjdFJlc3VsdCA9IFdURjo6Z2V0
UHRyKGl0ZW0tPnBsYXllZCgpKTsKLSAgICByZXR1cm4gV2ViS2l0OjpraXQoZ29iamVjdFJlc3Vs
dC5nZXQoKSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKLSAgICBXRUJLSVRfV0FS
Tl9GRUFUVVJFX05PVF9QUkVTRU5UKCJWaWRlbyIpCi0gICAgcmV0dXJuIDA7Ci0jZW5kaWYgLyog
RU5BQkxFKFZJREVPKSAqLwotfQotCi1XZWJLaXRET01UaW1lUmFuZ2VzKiB3ZWJraXRfZG9tX2h0
bWxfbWVkaWFfZWxlbWVudF9nZXRfc2Vla2FibGUoV2ViS2l0RE9NSFRNTE1lZGlhRWxlbWVudCog
c2VsZikKLXsKLSNpZiBFTkFCTEUoVklERU8pCi0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVs
bFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfSFRN
TF9NRURJQV9FTEVNRU5UKHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpUaW1lUmFu
Z2VzPiBnb2JqZWN0UmVzdWx0ID0gV1RGOjpnZXRQdHIoaXRlbS0+c2Vla2FibGUoKSk7Ci0gICAg
cmV0dXJuIFdlYktpdDo6a2l0KGdvYmplY3RSZXN1bHQuZ2V0KCkpOwotI2Vsc2UKLSAgICBVTlVT
RURfUEFSQU0oc2VsZik7Ci0gICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiVmlk
ZW8iKQotICAgIHJldHVybiAwOwotI2VuZGlmIC8qIEVOQUJMRShWSURFTykgKi8KLX0KLQotZ2Jv
b2xlYW4gd2Via2l0X2RvbV9odG1sX21lZGlhX2VsZW1lbnRfZ2V0X2VuZGVkKFdlYktpdERPTUhU
TUxNZWRpYUVsZW1lbnQqIHNlbGYpCi17Ci0jaWYgRU5BQkxFKFZJREVPKQotICAgIFdlYkNvcmU6
OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChX
RUJLSVRfRE9NX0lTX0hUTUxfTUVESUFfRUxFTUVOVChzZWxmKSwgRkFMU0UpOwotICAgIFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ2Jv
b2xlYW4gcmVzdWx0ID0gaXRlbS0+ZW5kZWQoKTsKLSAgICByZXR1cm4gcmVzdWx0OwotI2Vsc2UK
LSAgICBVTlVTRURfUEFSQU0oc2VsZik7Ci0gICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJF
U0VOVCgiVmlkZW8iKQotICAgIHJldHVybiBzdGF0aWNfY2FzdDxnYm9vbGVhbj4oMCk7Ci0jZW5k
aWYgLyogRU5BQkxFKFZJREVPKSAqLwotfQotCi1nYm9vbGVhbiB3ZWJraXRfZG9tX2h0bWxfbWVk
aWFfZWxlbWVudF9nZXRfYXV0b3BsYXkoV2ViS2l0RE9NSFRNTE1lZGlhRWxlbWVudCogc2VsZikK
LXsKLSNpZiBFTkFCTEUoVklERU8pCi0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRl
IHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfSFRNTF9NRURJ
QV9FTEVNRU5UKHNlbGYpLCBGQUxTRSk7Ci0gICAgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudCog
aXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBnYm9vbGVhbiByZXN1bHQgPSBpdGVtLT5o
YXNBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFdlYkNvcmU6OkhUTUxOYW1lczo6YXV0
b3BsYXlBdHRyKTsKLSAgICByZXR1cm4gcmVzdWx0OwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0o
c2VsZik7Ci0gICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiVmlkZW8iKQotICAg
IHJldHVybiBzdGF0aWNfY2FzdDxnYm9vbGVhbj4oMCk7Ci0jZW5kaWYgLyogRU5BQkxFKFZJREVP
KSAqLwotfQotCi12b2lkIHdlYmtpdF9kb21faHRtbF9tZWRpYV9lbGVtZW50X3NldF9hdXRvcGxh
eShXZWJLaXRET01IVE1MTWVkaWFFbGVtZW50KiBzZWxmLCBnYm9vbGVhbiB2YWx1ZSkKLXsKLSNp
ZiBFTkFCTEUoVklERU8pCi0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRl
OwotICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19IVE1MX01FRElBX0VMRU1FTlQo
c2VsZikpOwotICAgIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQqIGl0ZW0gPSBXZWJLaXQ6OmNv
cmUoc2VsZik7Ci0gICAgaXRlbS0+c2V0Qm9vbGVhbkF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFt
ZXM6OmF1dG9wbGF5QXR0ciwgdmFsdWUpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc2VsZik7
Ci0gICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKLSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9Q
UkVTRU5UKCJWaWRlbyIpCi0jZW5kaWYgLyogRU5BQkxFKFZJREVPKSAqLwotfQotCi1nYm9vbGVh
biB3ZWJraXRfZG9tX2h0bWxfbWVkaWFfZWxlbWVudF9nZXRfbG9vcChXZWJLaXRET01IVE1MTWVk
aWFFbGVtZW50KiBzZWxmKQotewotI2lmIEVOQUJMRShWSURFTykKLSAgICBXZWJDb3JlOjpKU01h
aW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lU
X0RPTV9JU19IVE1MX01FRElBX0VMRU1FTlQoc2VsZiksIEZBTFNFKTsKLSAgICBXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdib29sZWFu
IHJlc3VsdCA9IGl0ZW0tPmhhc0F0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oV2ViQ29y
ZTo6SFRNTE5hbWVzOjpsb29wQXR0cik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSNlbHNlCi0gICAg
VU5VU0VEX1BBUkFNKHNlbGYpOwotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQo
IlZpZGVvIikKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Z2Jvb2xlYW4+KDApOwotI2VuZGlmIC8q
IEVOQUJMRShWSURFTykgKi8KLX0KLQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfbWVkaWFfZWxlbWVu
dF9zZXRfbG9vcChXZWJLaXRET01IVE1MTWVkaWFFbGVtZW50KiBzZWxmLCBnYm9vbGVhbiB2YWx1
ZSkKLXsKLSNpZiBFTkFCTEUoVklERU8pCi0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0
YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19IVE1MX01FRElB
X0VMRU1FTlQoc2VsZikpOwotICAgIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQqIGl0ZW0gPSBX
ZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgaXRlbS0+c2V0Qm9vbGVhbkF0dHJpYnV0ZShXZWJDb3Jl
OjpIVE1MTmFtZXM6Omxvb3BBdHRyLCB2YWx1ZSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShz
ZWxmKTsKLSAgICBVTlVTRURfUEFSQU0odmFsdWUpOwotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVf
Tk9UX1BSRVNFTlQoIlZpZGVvIikKLSNlbmRpZiAvKiBFTkFCTEUoVklERU8pICovCi19Ci0KLWdi
b29sZWFuIHdlYmtpdF9kb21faHRtbF9tZWRpYV9lbGVtZW50X2dldF9jb250cm9scyhXZWJLaXRE
T01IVE1MTWVkaWFFbGVtZW50KiBzZWxmKQotewotI2lmIEVOQUJMRShWSURFTykKLSAgICBXZWJD
b3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwoV0VCS0lUX0RPTV9JU19IVE1MX01FRElBX0VMRU1FTlQoc2VsZiksIEZBTFNFKTsKLSAgICBX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAg
IGdib29sZWFuIHJlc3VsdCA9IGl0ZW0tPmNvbnRyb2xzKCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHNlbGYpOwotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVf
Tk9UX1BSRVNFTlQoIlZpZGVvIikKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Z2Jvb2xlYW4+KDAp
OwotI2VuZGlmIC8qIEVOQUJMRShWSURFTykgKi8KLX0KLQotdm9pZCB3ZWJraXRfZG9tX2h0bWxf
bWVkaWFfZWxlbWVudF9zZXRfY29udHJvbHMoV2ViS2l0RE9NSFRNTE1lZGlhRWxlbWVudCogc2Vs
ZiwgZ2Jvb2xlYW4gdmFsdWUpCi17Ci0jaWYgRU5BQkxFKFZJREVPKQotICAgIFdlYkNvcmU6OkpT
TWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9E
T01fSVNfSFRNTF9NRURJQV9FTEVNRU5UKHNlbGYpKTsKLSAgICBXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGl0ZW0tPnNldENvbnRyb2xz
KHZhbHVlKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHNlbGYpOwotICAgIFVOVVNFRF9QQVJB
TSh2YWx1ZSk7Ci0gICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiVmlkZW8iKQot
I2VuZGlmIC8qIEVOQUJMRShWSURFTykgKi8KLX0KLQotZ2RvdWJsZSB3ZWJraXRfZG9tX2h0bWxf
bWVkaWFfZWxlbWVudF9nZXRfdm9sdW1lKFdlYktpdERPTUhUTUxNZWRpYUVsZW1lbnQqIHNlbGYp
Ci17Ci0jaWYgRU5BQkxFKFZJREVPKQotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0
ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxfTUVE
SUFfRUxFTUVOVChzZWxmKSwgMCk7Ci0gICAgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudCogaXRl
bSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBnZG91YmxlIHJlc3VsdCA9IGl0ZW0tPnZvbHVt
ZSgpOwotICAgIHJldHVybiByZXN1bHQ7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShzZWxmKTsK
LSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJWaWRlbyIpCi0gICAgcmV0dXJu
IHN0YXRpY19jYXN0PGdkb3VibGU+KDApOwotI2VuZGlmIC8qIEVOQUJMRShWSURFTykgKi8KLX0K
LQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfbWVkaWFfZWxlbWVudF9zZXRfdm9sdW1lKFdlYktpdERP
TUhUTUxNZWRpYUVsZW1lbnQqIHNlbGYsIGdkb3VibGUgdmFsdWUsIEdFcnJvcioqIGVycm9yKQot
ewotI2lmIEVOQUJMRShWSURFTykKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUg
c3RhdGU7Ci0gICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxfTUVESUFfRUxF
TUVOVChzZWxmKSk7Ci0gICAgZ19yZXR1cm5faWZfZmFpbCghZXJyb3IgfHwgISplcnJvcik7Ci0g
ICAgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsK
LSAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBpdGVtLT5zZXRWb2x1bWUo
dmFsdWUsIGVjKTsKLSAgICBpZiAoZWMpIHsKLSAgICAgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29k
ZURlc2NyaXB0aW9uIGVjZGVzYyhlYyk7Ci0gICAgICAgIGdfc2V0X2Vycm9yX2xpdGVyYWwoZXJy
b3IsIGdfcXVhcmtfZnJvbV9zdHJpbmcoIldFQktJVF9ET00iKSwgZWNkZXNjLmNvZGUsIGVjZGVz
Yy5uYW1lKTsKLSAgICB9Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKLSAgICBVTlVT
RURfUEFSQU0odmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTShlcnJvcik7Ci0gICAgV0VCS0lUX1dB
Uk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiVmlkZW8iKQotI2VuZGlmIC8qIEVOQUJMRShWSURFTykg
Ki8KLX0KLQotZ2Jvb2xlYW4gd2Via2l0X2RvbV9odG1sX21lZGlhX2VsZW1lbnRfZ2V0X211dGVk
KFdlYktpdERPTUhUTUxNZWRpYUVsZW1lbnQqIHNlbGYpCi17Ci0jaWYgRU5BQkxFKFZJREVPKQot
ICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92
YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxfTUVESUFfRUxFTUVOVChzZWxmKSwgRkFMU0Up
OwotICAgIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2Vs
Zik7Ci0gICAgZ2Jvb2xlYW4gcmVzdWx0ID0gaXRlbS0+bXV0ZWQoKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc2VsZik7Ci0gICAgV0VCS0lUX1dBUk5fRkVB
VFVSRV9OT1RfUFJFU0VOVCgiVmlkZW8iKQotICAgIHJldHVybiBzdGF0aWNfY2FzdDxnYm9vbGVh
bj4oMCk7Ci0jZW5kaWYgLyogRU5BQkxFKFZJREVPKSAqLwotfQotCi12b2lkIHdlYmtpdF9kb21f
aHRtbF9tZWRpYV9lbGVtZW50X3NldF9tdXRlZChXZWJLaXRET01IVE1MTWVkaWFFbGVtZW50KiBz
ZWxmLCBnYm9vbGVhbiB2YWx1ZSkKLXsKLSNpZiBFTkFCTEUoVklERU8pCi0gICAgV2ViQ29yZTo6
SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lU
X0RPTV9JU19IVE1MX01FRElBX0VMRU1FTlQoc2VsZikpOwotICAgIFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgaXRlbS0+c2V0TXV0ZWQo
dmFsdWUpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc2VsZik7Ci0gICAgVU5VU0VEX1BBUkFN
KHZhbHVlKTsKLSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJWaWRlbyIpCi0j
ZW5kaWYgLyogRU5BQkxFKFZJREVPKSAqLwotfQotCi1nYm9vbGVhbiB3ZWJraXRfZG9tX2h0bWxf
bWVkaWFfZWxlbWVudF9nZXRfZGVmYXVsdF9tdXRlZChXZWJLaXRET01IVE1MTWVkaWFFbGVtZW50
KiBzZWxmKQotewotI2lmIEVOQUJMRShWSURFTykKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWRO
dWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19I
VE1MX01FRElBX0VMRU1FTlQoc2VsZiksIEZBTFNFKTsKLSAgICBXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdib29sZWFuIHJlc3VsdCA9
IGl0ZW0tPmhhc0F0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oV2ViQ29yZTo6SFRNTE5h
bWVzOjptdXRlZEF0dHIpOwotICAgIHJldHVybiByZXN1bHQ7Ci0jZWxzZQotICAgIFVOVVNFRF9Q
QVJBTShzZWxmKTsKLSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJWaWRlbyIp
Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGdib29sZWFuPigwKTsKLSNlbmRpZiAvKiBFTkFCTEUo
VklERU8pICovCi19Ci0KLXZvaWQgd2Via2l0X2RvbV9odG1sX21lZGlhX2VsZW1lbnRfc2V0X2Rl
ZmF1bHRfbXV0ZWQoV2ViS2l0RE9NSFRNTE1lZGlhRWxlbWVudCogc2VsZiwgZ2Jvb2xlYW4gdmFs
dWUpCi17Ci0jaWYgRU5BQkxFKFZJREVPKQotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxT
dGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfSFRNTF9NRURJ
QV9FTEVNRU5UKHNlbGYpKTsKLSAgICBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50KiBpdGVtID0g
V2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGl0ZW0tPnNldEJvb2xlYW5BdHRyaWJ1dGUoV2ViQ29y
ZTo6SFRNTE5hbWVzOjptdXRlZEF0dHIsIHZhbHVlKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFN
KHNlbGYpOwotICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7Ci0gICAgV0VCS0lUX1dBUk5fRkVBVFVS
RV9OT1RfUFJFU0VOVCgiVmlkZW8iKQotI2VuZGlmIC8qIEVOQUJMRShWSURFTykgKi8KLX0KLQot
Z2Jvb2xlYW4gd2Via2l0X2RvbV9odG1sX21lZGlhX2VsZW1lbnRfZ2V0X3dlYmtpdF9wcmVzZXJ2
ZXNfcGl0Y2goV2ViS2l0RE9NSFRNTE1lZGlhRWxlbWVudCogc2VsZikKLXsKLSNpZiBFTkFCTEUo
VklERU8pCi0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdf
cmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfSFRNTF9NRURJQV9FTEVNRU5UKHNlbGYp
LCBGQUxTRSk7Ci0gICAgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudCogaXRlbSA9IFdlYktpdDo6
Y29yZShzZWxmKTsKLSAgICBnYm9vbGVhbiByZXN1bHQgPSBpdGVtLT53ZWJraXRQcmVzZXJ2ZXNQ
aXRjaCgpOwotICAgIHJldHVybiByZXN1bHQ7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShzZWxm
KTsKLSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJWaWRlbyIpCi0gICAgcmV0
dXJuIHN0YXRpY19jYXN0PGdib29sZWFuPigwKTsKLSNlbmRpZiAvKiBFTkFCTEUoVklERU8pICov
Ci19Ci0KLXZvaWQgd2Via2l0X2RvbV9odG1sX21lZGlhX2VsZW1lbnRfc2V0X3dlYmtpdF9wcmVz
ZXJ2ZXNfcGl0Y2goV2ViS2l0RE9NSFRNTE1lZGlhRWxlbWVudCogc2VsZiwgZ2Jvb2xlYW4gdmFs
dWUpCi17Ci0jaWYgRU5BQkxFKFZJREVPKQotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxT
dGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfSFRNTF9NRURJ
QV9FTEVNRU5UKHNlbGYpKTsKLSAgICBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50KiBpdGVtID0g
V2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGl0ZW0tPnNldFdlYmtpdFByZXNlcnZlc1BpdGNoKHZh
bHVlKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHNlbGYpOwotICAgIFVOVVNFRF9QQVJBTSh2
YWx1ZSk7Ci0gICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiVmlkZW8iKQotI2Vu
ZGlmIC8qIEVOQUJMRShWSURFTykgKi8KLX0KLQotZ2Jvb2xlYW4gd2Via2l0X2RvbV9odG1sX21l
ZGlhX2VsZW1lbnRfZ2V0X3dlYmtpdF9oYXNfY2xvc2VkX2NhcHRpb25zKFdlYktpdERPTUhUTUxN
ZWRpYUVsZW1lbnQqIHNlbGYpCi17Ci0jaWYgRU5BQkxFKFZJREVPKQotICAgIFdlYkNvcmU6OkpT
TWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJL
SVRfRE9NX0lTX0hUTUxfTUVESUFfRUxFTUVOVChzZWxmKSwgRkFMU0UpOwotICAgIFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ2Jvb2xl
YW4gcmVzdWx0ID0gaXRlbS0+d2Via2l0SGFzQ2xvc2VkQ2FwdGlvbnMoKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc2VsZik7Ci0gICAgV0VCS0lUX1dBUk5f
RkVBVFVSRV9OT1RfUFJFU0VOVCgiVmlkZW8iKQotICAgIHJldHVybiBzdGF0aWNfY2FzdDxnYm9v
bGVhbj4oMCk7Ci0jZW5kaWYgLyogRU5BQkxFKFZJREVPKSAqLwotfQotCi1nYm9vbGVhbiB3ZWJr
aXRfZG9tX2h0bWxfbWVkaWFfZWxlbWVudF9nZXRfd2Via2l0X2Nsb3NlZF9jYXB0aW9uc192aXNp
YmxlKFdlYktpdERPTUhUTUxNZWRpYUVsZW1lbnQqIHNlbGYpCi17Ci0jaWYgRU5BQkxFKFZJREVP
KQotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVy
bl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxfTUVESUFfRUxFTUVOVChzZWxmKSwgRkFM
U0UpOwotICAgIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUo
c2VsZik7Ci0gICAgZ2Jvb2xlYW4gcmVzdWx0ID0gaXRlbS0+d2Via2l0Q2xvc2VkQ2FwdGlvbnNW
aXNpYmxlKCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHNl
bGYpOwotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIlZpZGVvIikKLSAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8Z2Jvb2xlYW4+KDApOwotI2VuZGlmIC8qIEVOQUJMRShWSURFTykg
Ki8KLX0KLQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfbWVkaWFfZWxlbWVudF9zZXRfd2Via2l0X2Ns
b3NlZF9jYXB0aW9uc192aXNpYmxlKFdlYktpdERPTUhUTUxNZWRpYUVsZW1lbnQqIHNlbGYsIGdi
b29sZWFuIHZhbHVlKQotewotI2lmIEVOQUJMRShWSURFTykKLSAgICBXZWJDb3JlOjpKU01haW5U
aHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lT
X0hUTUxfTUVESUFfRUxFTUVOVChzZWxmKSk7Ci0gICAgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBpdGVtLT5zZXRXZWJraXRDbG9zZWRD
YXB0aW9uc1Zpc2libGUodmFsdWUpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc2VsZik7Ci0g
ICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKLSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVT
RU5UKCJWaWRlbyIpCi0jZW5kaWYgLyogRU5BQkxFKFZJREVPKSAqLwotfQotCi1ndWxvbmcgd2Vi
a2l0X2RvbV9odG1sX21lZGlhX2VsZW1lbnRfZ2V0X3dlYmtpdF9hdWRpb19kZWNvZGVkX2J5dGVf
Y291bnQoV2ViS2l0RE9NSFRNTE1lZGlhRWxlbWVudCogc2VsZikKLXsKLSNpZiBFTkFCTEUoVklE
RU8pCi0jaWYgRU5BQkxFKE1FRElBX1NUQVRJU1RJQ1MpCi0gICAgV2ViQ29yZTo6SlNNYWluVGhy
ZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01f
SVNfSFRNTF9NRURJQV9FTEVNRU5UKHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGd1bG9uZyByZXN1bHQgPSBp
dGVtLT53ZWJraXRBdWRpb0RlY29kZWRCeXRlQ291bnQoKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
I2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc2VsZik7Ci0gICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9O
T1RfUFJFU0VOVCgiTWVkaWEgU3RhdGlzdGljcyIpCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGd1
bG9uZz4oMCk7Ci0jZW5kaWYgLyogRU5BQkxFKE1FRElBX1NUQVRJU1RJQ1MpICovCi0jZWxzZQot
ICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKLSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVT
RU5UKCJWaWRlbyIpCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGd1bG9uZz4oMCk7Ci0jZW5kaWYg
LyogRU5BQkxFKFZJREVPKSAqLwotfQotCi1ndWxvbmcgd2Via2l0X2RvbV9odG1sX21lZGlhX2Vs
ZW1lbnRfZ2V0X3dlYmtpdF92aWRlb19kZWNvZGVkX2J5dGVfY291bnQoV2ViS2l0RE9NSFRNTE1l
ZGlhRWxlbWVudCogc2VsZikKLXsKLSNpZiBFTkFCTEUoVklERU8pCi0jaWYgRU5BQkxFKE1FRElB
X1NUQVRJU1RJQ1MpCi0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwot
ICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfSFRNTF9NRURJQV9FTEVNRU5U
KHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50KiBpdGVtID0gV2ViS2l0
Ojpjb3JlKHNlbGYpOwotICAgIGd1bG9uZyByZXN1bHQgPSBpdGVtLT53ZWJraXRWaWRlb0RlY29k
ZWRCeXRlQ291bnQoKTsKLSAgICByZXR1cm4gcmVzdWx0OwotI2Vsc2UKLSAgICBVTlVTRURfUEFS
QU0oc2VsZik7Ci0gICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiTWVkaWEgU3Rh
dGlzdGljcyIpCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGd1bG9uZz4oMCk7Ci0jZW5kaWYgLyog
RU5BQkxFKE1FRElBX1NUQVRJU1RJQ1MpICovCi0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShzZWxm
KTsKLSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJWaWRlbyIpCi0gICAgcmV0
dXJuIHN0YXRpY19jYXN0PGd1bG9uZz4oMCk7Ci0jZW5kaWYgLyogRU5BQkxFKFZJREVPKSAqLwot
fQotCi1nY2hhciogd2Via2l0X2RvbV9odG1sX21lZGlhX2VsZW1lbnRfZ2V0X21lZGlhX2dyb3Vw
KFdlYktpdERPTUhUTUxNZWRpYUVsZW1lbnQqIHNlbGYpCi17Ci0jaWYgRU5BQkxFKFZJREVPKQot
ICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92
YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxfTUVESUFfRUxFTUVOVChzZWxmKSwgMCk7Ci0g
ICAgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsK
LSAgICBnY2hhciogcmVzdWx0ID0gY29udmVydFRvVVRGOFN0cmluZyhpdGVtLT5hdHRyaWJ1dGVX
aXRob3V0U3luY2hyb25pemF0aW9uKFdlYkNvcmU6OkhUTUxOYW1lczo6bWVkaWFncm91cEF0dHIp
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc2VsZik7Ci0g
ICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiVmlkZW8iKQotICAgIHJldHVybiAw
OwotI2VuZGlmIC8qIEVOQUJMRShWSURFTykgKi8KLX0KLQotdm9pZCB3ZWJraXRfZG9tX2h0bWxf
bWVkaWFfZWxlbWVudF9zZXRfbWVkaWFfZ3JvdXAoV2ViS2l0RE9NSFRNTE1lZGlhRWxlbWVudCog
c2VsZiwgY29uc3QgZ2NoYXIqIHZhbHVlKQotewotI2lmIEVOQUJMRShWSURFTykKLSAgICBXZWJD
b3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5faWZfZmFpbChX
RUJLSVRfRE9NX0lTX0hUTUxfTUVESUFfRUxFTUVOVChzZWxmKSk7Ci0gICAgZ19yZXR1cm5faWZf
ZmFpbCh2YWx1ZSk7Ci0gICAgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudCogaXRlbSA9IFdlYktp
dDo6Y29yZShzZWxmKTsKLSAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRWYWx1ZSA9IFdURjo6U3Ry
aW5nOjpmcm9tVVRGOCh2YWx1ZSk7Ci0gICAgaXRlbS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNo
cm9uaXphdGlvbihXZWJDb3JlOjpIVE1MTmFtZXM6Om1lZGlhZ3JvdXBBdHRyLCBjb252ZXJ0ZWRW
YWx1ZSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKLSAgICBVTlVTRURfUEFSQU0o
dmFsdWUpOwotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIlZpZGVvIikKLSNl
bmRpZiAvKiBFTkFCTEUoVklERU8pICovCi19Ci0KLVdlYktpdERPTU1lZGlhQ29udHJvbGxlciog
d2Via2l0X2RvbV9odG1sX21lZGlhX2VsZW1lbnRfZ2V0X2NvbnRyb2xsZXIoV2ViS2l0RE9NSFRN
TE1lZGlhRWxlbWVudCogc2VsZikKLXsKLSNpZiBFTkFCTEUoVklERU8pCi0gICAgV2ViQ29yZTo6
SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdF
QktJVF9ET01fSVNfSFRNTF9NRURJQV9FTEVNRU5UKHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIFJlZlB0cjxX
ZWJDb3JlOjpNZWRpYUNvbnRyb2xsZXI+IGdvYmplY3RSZXN1bHQgPSBXVEY6OmdldFB0cihpdGVt
LT5jb250cm9sbGVyKCkpOwotICAgIHJldHVybiBXZWJLaXQ6OmtpdChnb2JqZWN0UmVzdWx0Lmdl
dCgpKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHNlbGYpOwotICAgIFdFQktJVF9XQVJOX0ZF
QVRVUkVfTk9UX1BSRVNFTlQoIlZpZGVvIikKLSAgICByZXR1cm4gMDsKLSNlbmRpZiAvKiBFTkFC
TEUoVklERU8pICovCi19Ci0KLWdib29sZWFuIHdlYmtpdF9kb21faHRtbF9tZWRpYV9lbGVtZW50
X2dldF93ZWJraXRfY3VycmVudF9wbGF5YmFja190YXJnZXRfaXNfd2lyZWxlc3MoV2ViS2l0RE9N
SFRNTE1lZGlhRWxlbWVudCogc2VsZikKLXsKLSNpZiBFTkFCTEUoVklERU8pCi0jaWYgRU5BQkxF
KFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxs
U3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19IVE1M
X01FRElBX0VMRU1FTlQoc2VsZiksIEZBTFNFKTsKLSAgICBXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdib29sZWFuIHJlc3VsdCA9IGl0
ZW0tPndlYmtpdEN1cnJlbnRQbGF5YmFja1RhcmdldElzV2lyZWxlc3MoKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc2VsZik7Ci0gICAgV0VCS0lUX1dBUk5f
RkVBVFVSRV9OT1RfUFJFU0VOVCgiV2lyZWxlc3MgUGxheWJhY2sgVGFyZ2V0IikKLSAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8Z2Jvb2xlYW4+KDApOwotI2VuZGlmIC8qIEVOQUJMRShXSVJFTEVTU19Q
TEFZQkFDS19UQVJHRVQpICovCi0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKLSAgICBX
RUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJWaWRlbyIpCi0gICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGdib29sZWFuPigwKTsKLSNlbmRpZiAvKiBFTkFCTEUoVklERU8pICovCi19Ci0KLWdj
aGFyKiB3ZWJraXRfZG9tX2h0bWxfbWVkaWFfZWxlbWVudF9nZXRfa2luZChXZWJLaXRET01IVE1M
TWVkaWFFbGVtZW50KiBzZWxmKQotewotI2lmIEVOQUJMRShWSURFTykKLSNpZiBFTkFCTEUoTUVE
SUFfU0VTU0lPTikgJiYgRU5BQkxFKFZJREVPKQotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51
bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX0hU
TUxfTUVESUFfRUxFTUVOVChzZWxmKSwgMCk7Ci0gICAgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBnY2hhciogcmVzdWx0ID0gY29udmVy
dFRvVVRGOFN0cmluZyhXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50TWVkaWFTZXNzaW9uOjpraW5k
KGl0ZW0pKTsKLSAgICByZXR1cm4gcmVzdWx0OwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc2Vs
Zik7Ci0jaWYgIUVOQUJMRShWSURFTykKLSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVT
RU5UKCJWaWRlbyIpCi0jZW5kaWYKLSNpZiAhRU5BQkxFKE1FRElBX1NFU1NJT04pCi0gICAgV0VC
S0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiTWVkaWEgU2Vzc2lvbiIpCi0jZW5kaWYKLSAg
ICByZXR1cm4gMDsKLSNlbmRpZiAvKiBFTkFCTEUoTUVESUFfU0VTU0lPTikgJiYgRU5BQkxFKFZJ
REVPKSAqLwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc2VsZik7Ci0gICAgV0VCS0lUX1dBUk5f
RkVBVFVSRV9OT1RfUFJFU0VOVCgiVmlkZW8iKQotICAgIHJldHVybiAwOwotI2VuZGlmIC8qIEVO
QUJMRShWSURFTykgKi8KLX0KLQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfbWVkaWFfZWxlbWVudF9z
ZXRfa2luZChXZWJLaXRET01IVE1MTWVkaWFFbGVtZW50KiBzZWxmLCBjb25zdCBnY2hhciogdmFs
dWUpCi17Ci0jaWYgRU5BQkxFKFZJREVPKQotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKSAmJiBF
TkFCTEUoVklERU8pCi0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwot
ICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19IVE1MX01FRElBX0VMRU1FTlQoc2Vs
ZikpOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwodmFsdWUpOwotICAgIFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgV1RGOjpTdHJpbmcgY29u
dmVydGVkVmFsdWUgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgodmFsdWUpOwotICAgIFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnRNZWRpYVNlc3Npb246OnNldEtpbmQoKml0ZW0sIGNvbnZlcnRlZFZh
bHVlKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHNlbGYpOwotICAgIFVOVVNFRF9QQVJBTSh2
YWx1ZSk7Ci0jaWYgIUVOQUJMRShWSURFTykKLSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9Q
UkVTRU5UKCJWaWRlbyIpCi0jZW5kaWYKLSNpZiAhRU5BQkxFKE1FRElBX1NFU1NJT04pCi0gICAg
V0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiTWVkaWEgU2Vzc2lvbiIpCi0jZW5kaWYK
LSNlbmRpZiAvKiBFTkFCTEUoTUVESUFfU0VTU0lPTikgJiYgRU5BQkxFKFZJREVPKSAqLwotI2Vs
c2UKLSAgICBVTlVTRURfUEFSQU0oc2VsZik7Ci0gICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKLSAg
ICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJWaWRlbyIpCi0jZW5kaWYgLyogRU5B
QkxFKFZJREVPKSAqLwotfQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxNZWRpYUVsZW1lbnQuaCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2Vi
S2l0RE9NSFRNTE1lZGlhRWxlbWVudC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0
ZDZkYjEzLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTE1lZGlhRWxlbWVudC5oCisrKyAvZGV2L251
bGwKQEAgLTEsNjYxICswLDAgQEAKLS8qCi0gKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdl
YktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICogIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0
ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICogIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
LSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
LSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAq
ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNp
Zm5kZWYgV2ViS2l0RE9NSFRNTE1lZGlhRWxlbWVudF9oCi0jZGVmaW5lIFdlYktpdERPTUhUTUxN
ZWRpYUVsZW1lbnRfaAotCi0jaWZkZWYgV0VCS0lUX0RPTV9VU0VfVU5TVEFCTEVfQVBJCi0KLSNp
bmNsdWRlIDxnbGliLW9iamVjdC5oPgotI2luY2x1ZGUgPHdlYmtpdGRvbS9XZWJLaXRET01IVE1M
RWxlbWVudC5oPgotI2luY2x1ZGUgPHdlYmtpdGRvbS93ZWJraXRkb21kZWZpbmVzLXVuc3RhYmxl
Lmg+Ci0KLUdfQkVHSU5fREVDTFMKLQotI2RlZmluZSBXRUJLSVRfRE9NX1RZUEVfSFRNTF9NRURJ
QV9FTEVNRU5UICAgICAgICAgICAgKHdlYmtpdF9kb21faHRtbF9tZWRpYV9lbGVtZW50X2dldF90
eXBlKCkpCi0jZGVmaW5lIFdFQktJVF9ET01fSFRNTF9NRURJQV9FTEVNRU5UKG9iaikgICAgICAg
ICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9ET01fVFlQRV9I
VE1MX01FRElBX0VMRU1FTlQsIFdlYktpdERPTUhUTUxNZWRpYUVsZW1lbnQpKQotI2RlZmluZSBX
RUJLSVRfRE9NX0hUTUxfTUVESUFfRUxFTUVOVF9DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVD
S19DTEFTU19DQVNUKChrbGFzcyksICBXRUJLSVRfRE9NX1RZUEVfSFRNTF9NRURJQV9FTEVNRU5U
LCBXZWJLaXRET01IVE1MTWVkaWFFbGVtZW50Q2xhc3MpCi0jZGVmaW5lIFdFQktJVF9ET01fSVNf
SFRNTF9NRURJQV9FTEVNRU5UKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZ
UEUoKG9iaiksIFdFQktJVF9ET01fVFlQRV9IVE1MX01FRElBX0VMRU1FTlQpKQotI2RlZmluZSBX
RUJLSVRfRE9NX0lTX0hUTUxfTUVESUFfRUxFTUVOVF9DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVD
S19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfRE9NX1RZUEVfSFRNTF9NRURJQV9FTEVNRU5U
KSkKLSNkZWZpbmUgV0VCS0lUX0RPTV9IVE1MX01FRElBX0VMRU1FTlRfR0VUX0NMQVNTKG9iaikg
IChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgV0VCS0lUX0RPTV9UWVBFX0hUTUxf
TUVESUFfRUxFTUVOVCwgV2ViS2l0RE9NSFRNTE1lZGlhRWxlbWVudENsYXNzKSkKLQotLyoqCi0g
KiBXRUJLSVRfRE9NX0hUTUxfTUVESUFfRUxFTUVOVF9ORVRXT1JLX0VNUFRZOgotICovCi0jZGVm
aW5lIFdFQktJVF9ET01fSFRNTF9NRURJQV9FTEVNRU5UX05FVFdPUktfRU1QVFkgMAotCi0vKioK
LSAqIFdFQktJVF9ET01fSFRNTF9NRURJQV9FTEVNRU5UX05FVFdPUktfSURMRToKLSAqLwotI2Rl
ZmluZSBXRUJLSVRfRE9NX0hUTUxfTUVESUFfRUxFTUVOVF9ORVRXT1JLX0lETEUgMQotCi0vKioK
LSAqIFdFQktJVF9ET01fSFRNTF9NRURJQV9FTEVNRU5UX05FVFdPUktfTE9BRElORzoKLSAqLwot
I2RlZmluZSBXRUJLSVRfRE9NX0hUTUxfTUVESUFfRUxFTUVOVF9ORVRXT1JLX0xPQURJTkcgMgot
Ci0vKioKLSAqIFdFQktJVF9ET01fSFRNTF9NRURJQV9FTEVNRU5UX05FVFdPUktfTk9fU09VUkNF
OgotICovCi0jZGVmaW5lIFdFQktJVF9ET01fSFRNTF9NRURJQV9FTEVNRU5UX05FVFdPUktfTk9f
U09VUkNFIDMKLQotLyoqCi0gKiBXRUJLSVRfRE9NX0hUTUxfTUVESUFfRUxFTUVOVF9IQVZFX05P
VEhJTkc6Ci0gKi8KLSNkZWZpbmUgV0VCS0lUX0RPTV9IVE1MX01FRElBX0VMRU1FTlRfSEFWRV9O
T1RISU5HIDAKLQotLyoqCi0gKiBXRUJLSVRfRE9NX0hUTUxfTUVESUFfRUxFTUVOVF9IQVZFX01F
VEFEQVRBOgotICovCi0jZGVmaW5lIFdFQktJVF9ET01fSFRNTF9NRURJQV9FTEVNRU5UX0hBVkVf
TUVUQURBVEEgMQotCi0vKioKLSAqIFdFQktJVF9ET01fSFRNTF9NRURJQV9FTEVNRU5UX0hBVkVf
Q1VSUkVOVF9EQVRBOgotICovCi0jZGVmaW5lIFdFQktJVF9ET01fSFRNTF9NRURJQV9FTEVNRU5U
X0hBVkVfQ1VSUkVOVF9EQVRBIDIKLQotLyoqCi0gKiBXRUJLSVRfRE9NX0hUTUxfTUVESUFfRUxF
TUVOVF9IQVZFX0ZVVFVSRV9EQVRBOgotICovCi0jZGVmaW5lIFdFQktJVF9ET01fSFRNTF9NRURJ
QV9FTEVNRU5UX0hBVkVfRlVUVVJFX0RBVEEgMwotCi0vKioKLSAqIFdFQktJVF9ET01fSFRNTF9N
RURJQV9FTEVNRU5UX0hBVkVfRU5PVUdIX0RBVEE6Ci0gKi8KLSNkZWZpbmUgV0VCS0lUX0RPTV9I
VE1MX01FRElBX0VMRU1FTlRfSEFWRV9FTk9VR0hfREFUQSA0Ci0KLXN0cnVjdCBfV2ViS2l0RE9N
SFRNTE1lZGlhRWxlbWVudCB7Ci0gICAgV2ViS2l0RE9NSFRNTEVsZW1lbnQgcGFyZW50X2luc3Rh
bmNlOwotfTsKLQotc3RydWN0IF9XZWJLaXRET01IVE1MTWVkaWFFbGVtZW50Q2xhc3MgewotICAg
IFdlYktpdERPTUhUTUxFbGVtZW50Q2xhc3MgcGFyZW50X2NsYXNzOwotfTsKLQotV0VCS0lUX0FQ
SSBHVHlwZQotd2Via2l0X2RvbV9odG1sX21lZGlhX2VsZW1lbnRfZ2V0X3R5cGUodm9pZCk7Ci0K
LS8qKgotICogd2Via2l0X2RvbV9odG1sX21lZGlhX2VsZW1lbnRfbG9hZDoKLSAqIEBzZWxmOiBB
ICNXZWJLaXRET01IVE1MTWVkaWFFbGVtZW50Ci0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQot
KiovCi1XRUJLSVRfQVBJIHZvaWQKLXdlYmtpdF9kb21faHRtbF9tZWRpYV9lbGVtZW50X2xvYWQo
V2ViS2l0RE9NSFRNTE1lZGlhRWxlbWVudCogc2VsZik7Ci0KLS8qKgotICogd2Via2l0X2RvbV9o
dG1sX21lZGlhX2VsZW1lbnRfY2FuX3BsYXlfdHlwZToKLSAqIEBzZWxmOiBBICNXZWJLaXRET01I
VE1MTWVkaWFFbGVtZW50Ci0gKiBAdHlwZTogQSAjZ2NoYXIKLSAqCi0gKiBSZXR1cm5zOiBBICNn
Y2hhcgotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSBnY2hhcioK
LXdlYmtpdF9kb21faHRtbF9tZWRpYV9lbGVtZW50X2Nhbl9wbGF5X3R5cGUoV2ViS2l0RE9NSFRN
TE1lZGlhRWxlbWVudCogc2VsZiwgY29uc3QgZ2NoYXIqIHR5cGUpOwotCi0vKioKLSAqIHdlYmtp
dF9kb21faHRtbF9tZWRpYV9lbGVtZW50X3BhdXNlOgotICogQHNlbGY6IEEgI1dlYktpdERPTUhU
TUxNZWRpYUVsZW1lbnQKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9B
UEkgdm9pZAotd2Via2l0X2RvbV9odG1sX21lZGlhX2VsZW1lbnRfcGF1c2UoV2ViS2l0RE9NSFRN
TE1lZGlhRWxlbWVudCogc2VsZik7Ci0KLS8qKgotICogd2Via2l0X2RvbV9odG1sX21lZGlhX2Vs
ZW1lbnRfZmFzdF9zZWVrOgotICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxNZWRpYUVsZW1lbnQK
LSAqIEB0aW1lOiBBICNnZG91YmxlCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1X
RUJLSVRfQVBJIHZvaWQKLXdlYmtpdF9kb21faHRtbF9tZWRpYV9lbGVtZW50X2Zhc3Rfc2VlayhX
ZWJLaXRET01IVE1MTWVkaWFFbGVtZW50KiBzZWxmLCBnZG91YmxlIHRpbWUpOwotCi0vKioKLSAq
IHdlYmtpdF9kb21faHRtbF9tZWRpYV9lbGVtZW50X3dlYmtpdF9zaG93X3BsYXliYWNrX3Rhcmdl
dF9waWNrZXI6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTE1lZGlhRWxlbWVudAotICoKLSAq
IFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSB2b2lkCi13ZWJraXRfZG9tX2h0
bWxfbWVkaWFfZWxlbWVudF93ZWJraXRfc2hvd19wbGF5YmFja190YXJnZXRfcGlja2VyKFdlYktp
dERPTUhUTUxNZWRpYUVsZW1lbnQqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9kb21faHRtbF9t
ZWRpYV9lbGVtZW50X2dldF9lcnJvcjoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MTWVkaWFF
bGVtZW50Ci0gKgotICogUmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiBBICNXZWJLaXRET01NZWRp
YUVycm9yCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIFdlYktp
dERPTU1lZGlhRXJyb3IqCi13ZWJraXRfZG9tX2h0bWxfbWVkaWFfZWxlbWVudF9nZXRfZXJyb3Io
V2ViS2l0RE9NSFRNTE1lZGlhRWxlbWVudCogc2VsZik7Ci0KLS8qKgotICogd2Via2l0X2RvbV9o
dG1sX21lZGlhX2VsZW1lbnRfZ2V0X3NyYzoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MTWVk
aWFFbGVtZW50Ci0gKgotICogUmV0dXJuczogQSAjZ2NoYXIKLSAqCi0gKiBTdGFiaWxpdHk6IFVu
c3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgZ2NoYXIqCi13ZWJraXRfZG9tX2h0bWxfbWVkaWFfZWxl
bWVudF9nZXRfc3JjKFdlYktpdERPTUhUTUxNZWRpYUVsZW1lbnQqIHNlbGYpOwotCi0vKioKLSAq
IHdlYmtpdF9kb21faHRtbF9tZWRpYV9lbGVtZW50X3NldF9zcmM6Ci0gKiBAc2VsZjogQSAjV2Vi
S2l0RE9NSFRNTE1lZGlhRWxlbWVudAotICogQHZhbHVlOiBBICNnY2hhcgotICoKLSAqIFN0YWJp
bGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSB2b2lkCi13ZWJraXRfZG9tX2h0bWxfbWVk
aWFfZWxlbWVudF9zZXRfc3JjKFdlYktpdERPTUhUTUxNZWRpYUVsZW1lbnQqIHNlbGYsIGNvbnN0
IGdjaGFyKiB2YWx1ZSk7Ci0KLS8qKgotICogd2Via2l0X2RvbV9odG1sX21lZGlhX2VsZW1lbnRf
Z2V0X2N1cnJlbnRfc3JjOgotICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxNZWRpYUVsZW1lbnQK
LSAqCi0gKiBSZXR1cm5zOiBBICNnY2hhcgotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoq
LwotV0VCS0lUX0FQSSBnY2hhcioKLXdlYmtpdF9kb21faHRtbF9tZWRpYV9lbGVtZW50X2dldF9j
dXJyZW50X3NyYyhXZWJLaXRET01IVE1MTWVkaWFFbGVtZW50KiBzZWxmKTsKLQotLyoqCi0gKiB3
ZWJraXRfZG9tX2h0bWxfbWVkaWFfZWxlbWVudF9nZXRfY3Jvc3Nfb3JpZ2luOgotICogQHNlbGY6
IEEgI1dlYktpdERPTUhUTUxNZWRpYUVsZW1lbnQKLSAqCi0gKiBSZXR1cm5zOiBBICNnY2hhcgot
ICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSBnY2hhcioKLXdlYmtp
dF9kb21faHRtbF9tZWRpYV9lbGVtZW50X2dldF9jcm9zc19vcmlnaW4oV2ViS2l0RE9NSFRNTE1l
ZGlhRWxlbWVudCogc2VsZik7Ci0KLS8qKgotICogd2Via2l0X2RvbV9odG1sX21lZGlhX2VsZW1l
bnRfc2V0X2Nyb3NzX29yaWdpbjoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MTWVkaWFFbGVt
ZW50Ci0gKiBAdmFsdWU6IEEgI2djaGFyCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiov
Ci1XRUJLSVRfQVBJIHZvaWQKLXdlYmtpdF9kb21faHRtbF9tZWRpYV9lbGVtZW50X3NldF9jcm9z
c19vcmlnaW4oV2ViS2l0RE9NSFRNTE1lZGlhRWxlbWVudCogc2VsZiwgY29uc3QgZ2NoYXIqIHZh
bHVlKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0bWxfbWVkaWFfZWxlbWVudF9nZXRfbmV0d29y
a19zdGF0ZToKLSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MTWVkaWFFbGVtZW50Ci0gKgotICog
UmV0dXJuczogQSAjZ3VzaG9ydAotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VC
S0lUX0FQSSBndXNob3J0Ci13ZWJraXRfZG9tX2h0bWxfbWVkaWFfZWxlbWVudF9nZXRfbmV0d29y
a19zdGF0ZShXZWJLaXRET01IVE1MTWVkaWFFbGVtZW50KiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJr
aXRfZG9tX2h0bWxfbWVkaWFfZWxlbWVudF9nZXRfcHJlbG9hZDoKLSAqIEBzZWxmOiBBICNXZWJL
aXRET01IVE1MTWVkaWFFbGVtZW50Ci0gKgotICogUmV0dXJuczogQSAjZ2NoYXIKLSAqCi0gKiBT
dGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgZ2NoYXIqCi13ZWJraXRfZG9tX2h0
bWxfbWVkaWFfZWxlbWVudF9nZXRfcHJlbG9hZChXZWJLaXRET01IVE1MTWVkaWFFbGVtZW50KiBz
ZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0bWxfbWVkaWFfZWxlbWVudF9zZXRfcHJlbG9h
ZDoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MTWVkaWFFbGVtZW50Ci0gKiBAdmFsdWU6IEEg
I2djaGFyCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIHZvaWQK
LXdlYmtpdF9kb21faHRtbF9tZWRpYV9lbGVtZW50X3NldF9wcmVsb2FkKFdlYktpdERPTUhUTUxN
ZWRpYUVsZW1lbnQqIHNlbGYsIGNvbnN0IGdjaGFyKiB2YWx1ZSk7Ci0KLS8qKgotICogd2Via2l0
X2RvbV9odG1sX21lZGlhX2VsZW1lbnRfZ2V0X2J1ZmZlcmVkOgotICogQHNlbGY6IEEgI1dlYktp
dERPTUhUTUxNZWRpYUVsZW1lbnQKLSAqCi0gKiBSZXR1cm5zOiAodHJhbnNmZXIgZnVsbCk6IEEg
I1dlYktpdERPTVRpbWVSYW5nZXMKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdF
QktJVF9BUEkgV2ViS2l0RE9NVGltZVJhbmdlcyoKLXdlYmtpdF9kb21faHRtbF9tZWRpYV9lbGVt
ZW50X2dldF9idWZmZXJlZChXZWJLaXRET01IVE1MTWVkaWFFbGVtZW50KiBzZWxmKTsKLQotLyoq
Ci0gKiB3ZWJraXRfZG9tX2h0bWxfbWVkaWFfZWxlbWVudF9nZXRfcmVhZHlfc3RhdGU6Ci0gKiBA
c2VsZjogQSAjV2ViS2l0RE9NSFRNTE1lZGlhRWxlbWVudAotICoKLSAqIFJldHVybnM6IEEgI2d1
c2hvcnQKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgZ3VzaG9y
dAotd2Via2l0X2RvbV9odG1sX21lZGlhX2VsZW1lbnRfZ2V0X3JlYWR5X3N0YXRlKFdlYktpdERP
TUhUTUxNZWRpYUVsZW1lbnQqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9kb21faHRtbF9tZWRp
YV9lbGVtZW50X2dldF9zZWVraW5nOgotICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxNZWRpYUVs
ZW1lbnQKLSAqCi0gKiBSZXR1cm5zOiBBICNnYm9vbGVhbgotICoKLSAqIFN0YWJpbGl0eTogVW5z
dGFibGUKLSoqLwotV0VCS0lUX0FQSSBnYm9vbGVhbgotd2Via2l0X2RvbV9odG1sX21lZGlhX2Vs
ZW1lbnRfZ2V0X3NlZWtpbmcoV2ViS2l0RE9NSFRNTE1lZGlhRWxlbWVudCogc2VsZik7Ci0KLS8q
KgotICogd2Via2l0X2RvbV9odG1sX21lZGlhX2VsZW1lbnRfZ2V0X2N1cnJlbnRfdGltZToKLSAq
IEBzZWxmOiBBICNXZWJLaXRET01IVE1MTWVkaWFFbGVtZW50Ci0gKgotICogUmV0dXJuczogQSAj
Z2RvdWJsZQotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSBnZG91
YmxlCi13ZWJraXRfZG9tX2h0bWxfbWVkaWFfZWxlbWVudF9nZXRfY3VycmVudF90aW1lKFdlYktp
dERPTUhUTUxNZWRpYUVsZW1lbnQqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9kb21faHRtbF9t
ZWRpYV9lbGVtZW50X3NldF9jdXJyZW50X3RpbWU6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRN
TE1lZGlhRWxlbWVudAotICogQHZhbHVlOiBBICNnZG91YmxlCi0gKiBAZXJyb3I6ICNHRXJyb3IK
LSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgdm9pZAotd2Via2l0
X2RvbV9odG1sX21lZGlhX2VsZW1lbnRfc2V0X2N1cnJlbnRfdGltZShXZWJLaXRET01IVE1MTWVk
aWFFbGVtZW50KiBzZWxmLCBnZG91YmxlIHZhbHVlLCBHRXJyb3IqKiBlcnJvcik7Ci0KLS8qKgot
ICogd2Via2l0X2RvbV9odG1sX21lZGlhX2VsZW1lbnRfZ2V0X2R1cmF0aW9uOgotICogQHNlbGY6
IEEgI1dlYktpdERPTUhUTUxNZWRpYUVsZW1lbnQKLSAqCi0gKiBSZXR1cm5zOiBBICNnZG91Ymxl
Ci0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIGdkb3VibGUKLXdl
YmtpdF9kb21faHRtbF9tZWRpYV9lbGVtZW50X2dldF9kdXJhdGlvbihXZWJLaXRET01IVE1MTWVk
aWFFbGVtZW50KiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0bWxfbWVkaWFfZWxlbWVu
dF9nZXRfcGF1c2VkOgotICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxNZWRpYUVsZW1lbnQKLSAq
Ci0gKiBSZXR1cm5zOiBBICNnYm9vbGVhbgotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoq
LwotV0VCS0lUX0FQSSBnYm9vbGVhbgotd2Via2l0X2RvbV9odG1sX21lZGlhX2VsZW1lbnRfZ2V0
X3BhdXNlZChXZWJLaXRET01IVE1MTWVkaWFFbGVtZW50KiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJr
aXRfZG9tX2h0bWxfbWVkaWFfZWxlbWVudF9nZXRfZGVmYXVsdF9wbGF5YmFja19yYXRlOgotICog
QHNlbGY6IEEgI1dlYktpdERPTUhUTUxNZWRpYUVsZW1lbnQKLSAqCi0gKiBSZXR1cm5zOiBBICNn
ZG91YmxlCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIGdkb3Vi
bGUKLXdlYmtpdF9kb21faHRtbF9tZWRpYV9lbGVtZW50X2dldF9kZWZhdWx0X3BsYXliYWNrX3Jh
dGUoV2ViS2l0RE9NSFRNTE1lZGlhRWxlbWVudCogc2VsZik7Ci0KLS8qKgotICogd2Via2l0X2Rv
bV9odG1sX21lZGlhX2VsZW1lbnRfc2V0X2RlZmF1bHRfcGxheWJhY2tfcmF0ZToKLSAqIEBzZWxm
OiBBICNXZWJLaXRET01IVE1MTWVkaWFFbGVtZW50Ci0gKiBAdmFsdWU6IEEgI2dkb3VibGUKLSAq
Ci0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgdm9pZAotd2Via2l0X2Rv
bV9odG1sX21lZGlhX2VsZW1lbnRfc2V0X2RlZmF1bHRfcGxheWJhY2tfcmF0ZShXZWJLaXRET01I
VE1MTWVkaWFFbGVtZW50KiBzZWxmLCBnZG91YmxlIHZhbHVlKTsKLQotLyoqCi0gKiB3ZWJraXRf
ZG9tX2h0bWxfbWVkaWFfZWxlbWVudF9nZXRfcGxheWJhY2tfcmF0ZToKLSAqIEBzZWxmOiBBICNX
ZWJLaXRET01IVE1MTWVkaWFFbGVtZW50Ci0gKgotICogUmV0dXJuczogQSAjZ2RvdWJsZQotICoK
LSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSBnZG91YmxlCi13ZWJraXRf
ZG9tX2h0bWxfbWVkaWFfZWxlbWVudF9nZXRfcGxheWJhY2tfcmF0ZShXZWJLaXRET01IVE1MTWVk
aWFFbGVtZW50KiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0bWxfbWVkaWFfZWxlbWVu
dF9zZXRfcGxheWJhY2tfcmF0ZToKLSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MTWVkaWFFbGVt
ZW50Ci0gKiBAdmFsdWU6IEEgI2dkb3VibGUKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0q
Ki8KLVdFQktJVF9BUEkgdm9pZAotd2Via2l0X2RvbV9odG1sX21lZGlhX2VsZW1lbnRfc2V0X3Bs
YXliYWNrX3JhdGUoV2ViS2l0RE9NSFRNTE1lZGlhRWxlbWVudCogc2VsZiwgZ2RvdWJsZSB2YWx1
ZSk7Ci0KLS8qKgotICogd2Via2l0X2RvbV9odG1sX21lZGlhX2VsZW1lbnRfZ2V0X3BsYXllZDoK
LSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MTWVkaWFFbGVtZW50Ci0gKgotICogUmV0dXJuczog
KHRyYW5zZmVyIGZ1bGwpOiBBICNXZWJLaXRET01UaW1lUmFuZ2VzCi0gKgotICogU3RhYmlsaXR5
OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIFdlYktpdERPTVRpbWVSYW5nZXMqCi13ZWJraXRf
ZG9tX2h0bWxfbWVkaWFfZWxlbWVudF9nZXRfcGxheWVkKFdlYktpdERPTUhUTUxNZWRpYUVsZW1l
bnQqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9kb21faHRtbF9tZWRpYV9lbGVtZW50X2dldF9z
ZWVrYWJsZToKLSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MTWVkaWFFbGVtZW50Ci0gKgotICog
UmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiBBICNXZWJLaXRET01UaW1lUmFuZ2VzCi0gKgotICog
U3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIFdlYktpdERPTVRpbWVSYW5nZXMq
Ci13ZWJraXRfZG9tX2h0bWxfbWVkaWFfZWxlbWVudF9nZXRfc2Vla2FibGUoV2ViS2l0RE9NSFRN
TE1lZGlhRWxlbWVudCogc2VsZik7Ci0KLS8qKgotICogd2Via2l0X2RvbV9odG1sX21lZGlhX2Vs
ZW1lbnRfZ2V0X2VuZGVkOgotICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxNZWRpYUVsZW1lbnQK
LSAqCi0gKiBSZXR1cm5zOiBBICNnYm9vbGVhbgotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUK
LSoqLwotV0VCS0lUX0FQSSBnYm9vbGVhbgotd2Via2l0X2RvbV9odG1sX21lZGlhX2VsZW1lbnRf
Z2V0X2VuZGVkKFdlYktpdERPTUhUTUxNZWRpYUVsZW1lbnQqIHNlbGYpOwotCi0vKioKLSAqIHdl
YmtpdF9kb21faHRtbF9tZWRpYV9lbGVtZW50X2dldF9hdXRvcGxheToKLSAqIEBzZWxmOiBBICNX
ZWJLaXRET01IVE1MTWVkaWFFbGVtZW50Ci0gKgotICogUmV0dXJuczogQSAjZ2Jvb2xlYW4KLSAq
Ci0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgZ2Jvb2xlYW4KLXdlYmtp
dF9kb21faHRtbF9tZWRpYV9lbGVtZW50X2dldF9hdXRvcGxheShXZWJLaXRET01IVE1MTWVkaWFF
bGVtZW50KiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0bWxfbWVkaWFfZWxlbWVudF9z
ZXRfYXV0b3BsYXk6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTE1lZGlhRWxlbWVudAotICog
QHZhbHVlOiBBICNnYm9vbGVhbgotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VC
S0lUX0FQSSB2b2lkCi13ZWJraXRfZG9tX2h0bWxfbWVkaWFfZWxlbWVudF9zZXRfYXV0b3BsYXko
V2ViS2l0RE9NSFRNTE1lZGlhRWxlbWVudCogc2VsZiwgZ2Jvb2xlYW4gdmFsdWUpOwotCi0vKioK
LSAqIHdlYmtpdF9kb21faHRtbF9tZWRpYV9lbGVtZW50X2dldF9sb29wOgotICogQHNlbGY6IEEg
I1dlYktpdERPTUhUTUxNZWRpYUVsZW1lbnQKLSAqCi0gKiBSZXR1cm5zOiBBICNnYm9vbGVhbgot
ICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSBnYm9vbGVhbgotd2Vi
a2l0X2RvbV9odG1sX21lZGlhX2VsZW1lbnRfZ2V0X2xvb3AoV2ViS2l0RE9NSFRNTE1lZGlhRWxl
bWVudCogc2VsZik7Ci0KLS8qKgotICogd2Via2l0X2RvbV9odG1sX21lZGlhX2VsZW1lbnRfc2V0
X2xvb3A6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTE1lZGlhRWxlbWVudAotICogQHZhbHVl
OiBBICNnYm9vbGVhbgotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQ
SSB2b2lkCi13ZWJraXRfZG9tX2h0bWxfbWVkaWFfZWxlbWVudF9zZXRfbG9vcChXZWJLaXRET01I
VE1MTWVkaWFFbGVtZW50KiBzZWxmLCBnYm9vbGVhbiB2YWx1ZSk7Ci0KLS8qKgotICogd2Via2l0
X2RvbV9odG1sX21lZGlhX2VsZW1lbnRfZ2V0X2NvbnRyb2xzOgotICogQHNlbGY6IEEgI1dlYktp
dERPTUhUTUxNZWRpYUVsZW1lbnQKLSAqCi0gKiBSZXR1cm5zOiBBICNnYm9vbGVhbgotICoKLSAq
IFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSBnYm9vbGVhbgotd2Via2l0X2Rv
bV9odG1sX21lZGlhX2VsZW1lbnRfZ2V0X2NvbnRyb2xzKFdlYktpdERPTUhUTUxNZWRpYUVsZW1l
bnQqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9kb21faHRtbF9tZWRpYV9lbGVtZW50X3NldF9j
b250cm9sczoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MTWVkaWFFbGVtZW50Ci0gKiBAdmFs
dWU6IEEgI2dib29sZWFuCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRf
QVBJIHZvaWQKLXdlYmtpdF9kb21faHRtbF9tZWRpYV9lbGVtZW50X3NldF9jb250cm9scyhXZWJL
aXRET01IVE1MTWVkaWFFbGVtZW50KiBzZWxmLCBnYm9vbGVhbiB2YWx1ZSk7Ci0KLS8qKgotICog
d2Via2l0X2RvbV9odG1sX21lZGlhX2VsZW1lbnRfZ2V0X3ZvbHVtZToKLSAqIEBzZWxmOiBBICNX
ZWJLaXRET01IVE1MTWVkaWFFbGVtZW50Ci0gKgotICogUmV0dXJuczogQSAjZ2RvdWJsZQotICoK
LSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSBnZG91YmxlCi13ZWJraXRf
ZG9tX2h0bWxfbWVkaWFfZWxlbWVudF9nZXRfdm9sdW1lKFdlYktpdERPTUhUTUxNZWRpYUVsZW1l
bnQqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9kb21faHRtbF9tZWRpYV9lbGVtZW50X3NldF92
b2x1bWU6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTE1lZGlhRWxlbWVudAotICogQHZhbHVl
OiBBICNnZG91YmxlCi0gKiBAZXJyb3I6ICNHRXJyb3IKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3Rh
YmxlCi0qKi8KLVdFQktJVF9BUEkgdm9pZAotd2Via2l0X2RvbV9odG1sX21lZGlhX2VsZW1lbnRf
c2V0X3ZvbHVtZShXZWJLaXRET01IVE1MTWVkaWFFbGVtZW50KiBzZWxmLCBnZG91YmxlIHZhbHVl
LCBHRXJyb3IqKiBlcnJvcik7Ci0KLS8qKgotICogd2Via2l0X2RvbV9odG1sX21lZGlhX2VsZW1l
bnRfZ2V0X211dGVkOgotICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxNZWRpYUVsZW1lbnQKLSAq
Ci0gKiBSZXR1cm5zOiBBICNnYm9vbGVhbgotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoq
LwotV0VCS0lUX0FQSSBnYm9vbGVhbgotd2Via2l0X2RvbV9odG1sX21lZGlhX2VsZW1lbnRfZ2V0
X211dGVkKFdlYktpdERPTUhUTUxNZWRpYUVsZW1lbnQqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtp
dF9kb21faHRtbF9tZWRpYV9lbGVtZW50X3NldF9tdXRlZDoKLSAqIEBzZWxmOiBBICNXZWJLaXRE
T01IVE1MTWVkaWFFbGVtZW50Ci0gKiBAdmFsdWU6IEEgI2dib29sZWFuCi0gKgotICogU3RhYmls
aXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIHZvaWQKLXdlYmtpdF9kb21faHRtbF9tZWRp
YV9lbGVtZW50X3NldF9tdXRlZChXZWJLaXRET01IVE1MTWVkaWFFbGVtZW50KiBzZWxmLCBnYm9v
bGVhbiB2YWx1ZSk7Ci0KLS8qKgotICogd2Via2l0X2RvbV9odG1sX21lZGlhX2VsZW1lbnRfZ2V0
X2RlZmF1bHRfbXV0ZWQ6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTE1lZGlhRWxlbWVudAot
ICoKLSAqIFJldHVybnM6IEEgI2dib29sZWFuCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQot
KiovCi1XRUJLSVRfQVBJIGdib29sZWFuCi13ZWJraXRfZG9tX2h0bWxfbWVkaWFfZWxlbWVudF9n
ZXRfZGVmYXVsdF9tdXRlZChXZWJLaXRET01IVE1MTWVkaWFFbGVtZW50KiBzZWxmKTsKLQotLyoq
Ci0gKiB3ZWJraXRfZG9tX2h0bWxfbWVkaWFfZWxlbWVudF9zZXRfZGVmYXVsdF9tdXRlZDoKLSAq
IEBzZWxmOiBBICNXZWJLaXRET01IVE1MTWVkaWFFbGVtZW50Ci0gKiBAdmFsdWU6IEEgI2dib29s
ZWFuCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIHZvaWQKLXdl
YmtpdF9kb21faHRtbF9tZWRpYV9lbGVtZW50X3NldF9kZWZhdWx0X211dGVkKFdlYktpdERPTUhU
TUxNZWRpYUVsZW1lbnQqIHNlbGYsIGdib29sZWFuIHZhbHVlKTsKLQotLyoqCi0gKiB3ZWJraXRf
ZG9tX2h0bWxfbWVkaWFfZWxlbWVudF9nZXRfd2Via2l0X3ByZXNlcnZlc19waXRjaDoKLSAqIEBz
ZWxmOiBBICNXZWJLaXRET01IVE1MTWVkaWFFbGVtZW50Ci0gKgotICogUmV0dXJuczogQSAjZ2Jv
b2xlYW4KLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgZ2Jvb2xl
YW4KLXdlYmtpdF9kb21faHRtbF9tZWRpYV9lbGVtZW50X2dldF93ZWJraXRfcHJlc2VydmVzX3Bp
dGNoKFdlYktpdERPTUhUTUxNZWRpYUVsZW1lbnQqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9k
b21faHRtbF9tZWRpYV9lbGVtZW50X3NldF93ZWJraXRfcHJlc2VydmVzX3BpdGNoOgotICogQHNl
bGY6IEEgI1dlYktpdERPTUhUTUxNZWRpYUVsZW1lbnQKLSAqIEB2YWx1ZTogQSAjZ2Jvb2xlYW4K
LSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgdm9pZAotd2Via2l0
X2RvbV9odG1sX21lZGlhX2VsZW1lbnRfc2V0X3dlYmtpdF9wcmVzZXJ2ZXNfcGl0Y2goV2ViS2l0
RE9NSFRNTE1lZGlhRWxlbWVudCogc2VsZiwgZ2Jvb2xlYW4gdmFsdWUpOwotCi0vKioKLSAqIHdl
YmtpdF9kb21faHRtbF9tZWRpYV9lbGVtZW50X2dldF93ZWJraXRfaGFzX2Nsb3NlZF9jYXB0aW9u
czoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MTWVkaWFFbGVtZW50Ci0gKgotICogUmV0dXJu
czogQSAjZ2Jvb2xlYW4KLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9B
UEkgZ2Jvb2xlYW4KLXdlYmtpdF9kb21faHRtbF9tZWRpYV9lbGVtZW50X2dldF93ZWJraXRfaGFz
X2Nsb3NlZF9jYXB0aW9ucyhXZWJLaXRET01IVE1MTWVkaWFFbGVtZW50KiBzZWxmKTsKLQotLyoq
Ci0gKiB3ZWJraXRfZG9tX2h0bWxfbWVkaWFfZWxlbWVudF9nZXRfd2Via2l0X2Nsb3NlZF9jYXB0
aW9uc192aXNpYmxlOgotICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxNZWRpYUVsZW1lbnQKLSAq
Ci0gKiBSZXR1cm5zOiBBICNnYm9vbGVhbgotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoq
LwotV0VCS0lUX0FQSSBnYm9vbGVhbgotd2Via2l0X2RvbV9odG1sX21lZGlhX2VsZW1lbnRfZ2V0
X3dlYmtpdF9jbG9zZWRfY2FwdGlvbnNfdmlzaWJsZShXZWJLaXRET01IVE1MTWVkaWFFbGVtZW50
KiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0bWxfbWVkaWFfZWxlbWVudF9zZXRfd2Vi
a2l0X2Nsb3NlZF9jYXB0aW9uc192aXNpYmxlOgotICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxN
ZWRpYUVsZW1lbnQKLSAqIEB2YWx1ZTogQSAjZ2Jvb2xlYW4KLSAqCi0gKiBTdGFiaWxpdHk6IFVu
c3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgdm9pZAotd2Via2l0X2RvbV9odG1sX21lZGlhX2VsZW1l
bnRfc2V0X3dlYmtpdF9jbG9zZWRfY2FwdGlvbnNfdmlzaWJsZShXZWJLaXRET01IVE1MTWVkaWFF
bGVtZW50KiBzZWxmLCBnYm9vbGVhbiB2YWx1ZSk7Ci0KLS8qKgotICogd2Via2l0X2RvbV9odG1s
X21lZGlhX2VsZW1lbnRfZ2V0X3dlYmtpdF9hdWRpb19kZWNvZGVkX2J5dGVfY291bnQ6Ci0gKiBA
c2VsZjogQSAjV2ViS2l0RE9NSFRNTE1lZGlhRWxlbWVudAotICoKLSAqIFJldHVybnM6IEEgI2d1
bG9uZwotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSBndWxvbmcK
LXdlYmtpdF9kb21faHRtbF9tZWRpYV9lbGVtZW50X2dldF93ZWJraXRfYXVkaW9fZGVjb2RlZF9i
eXRlX2NvdW50KFdlYktpdERPTUhUTUxNZWRpYUVsZW1lbnQqIHNlbGYpOwotCi0vKioKLSAqIHdl
YmtpdF9kb21faHRtbF9tZWRpYV9lbGVtZW50X2dldF93ZWJraXRfdmlkZW9fZGVjb2RlZF9ieXRl
X2NvdW50OgotICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxNZWRpYUVsZW1lbnQKLSAqCi0gKiBS
ZXR1cm5zOiBBICNndWxvbmcKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJ
VF9BUEkgZ3Vsb25nCi13ZWJraXRfZG9tX2h0bWxfbWVkaWFfZWxlbWVudF9nZXRfd2Via2l0X3Zp
ZGVvX2RlY29kZWRfYnl0ZV9jb3VudChXZWJLaXRET01IVE1MTWVkaWFFbGVtZW50KiBzZWxmKTsK
LQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0bWxfbWVkaWFfZWxlbWVudF9nZXRfbWVkaWFfZ3JvdXA6
Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTE1lZGlhRWxlbWVudAotICoKLSAqIFJldHVybnM6
IEEgI2djaGFyCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIGdj
aGFyKgotd2Via2l0X2RvbV9odG1sX21lZGlhX2VsZW1lbnRfZ2V0X21lZGlhX2dyb3VwKFdlYktp
dERPTUhUTUxNZWRpYUVsZW1lbnQqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9kb21faHRtbF9t
ZWRpYV9lbGVtZW50X3NldF9tZWRpYV9ncm91cDoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1M
TWVkaWFFbGVtZW50Ci0gKiBAdmFsdWU6IEEgI2djaGFyCi0gKgotICogU3RhYmlsaXR5OiBVbnN0
YWJsZQotKiovCi1XRUJLSVRfQVBJIHZvaWQKLXdlYmtpdF9kb21faHRtbF9tZWRpYV9lbGVtZW50
X3NldF9tZWRpYV9ncm91cChXZWJLaXRET01IVE1MTWVkaWFFbGVtZW50KiBzZWxmLCBjb25zdCBn
Y2hhciogdmFsdWUpOwotCi0vKioKLSAqIHdlYmtpdF9kb21faHRtbF9tZWRpYV9lbGVtZW50X2dl
dF9jb250cm9sbGVyOgotICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxNZWRpYUVsZW1lbnQKLSAq
Ci0gKiBSZXR1cm5zOiAodHJhbnNmZXIgZnVsbCk6IEEgI1dlYktpdERPTU1lZGlhQ29udHJvbGxl
cgotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSBXZWJLaXRET01N
ZWRpYUNvbnRyb2xsZXIqCi13ZWJraXRfZG9tX2h0bWxfbWVkaWFfZWxlbWVudF9nZXRfY29udHJv
bGxlcihXZWJLaXRET01IVE1MTWVkaWFFbGVtZW50KiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRf
ZG9tX2h0bWxfbWVkaWFfZWxlbWVudF9nZXRfd2Via2l0X2N1cnJlbnRfcGxheWJhY2tfdGFyZ2V0
X2lzX3dpcmVsZXNzOgotICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxNZWRpYUVsZW1lbnQKLSAq
Ci0gKiBSZXR1cm5zOiBBICNnYm9vbGVhbgotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoq
LwotV0VCS0lUX0FQSSBnYm9vbGVhbgotd2Via2l0X2RvbV9odG1sX21lZGlhX2VsZW1lbnRfZ2V0
X3dlYmtpdF9jdXJyZW50X3BsYXliYWNrX3RhcmdldF9pc193aXJlbGVzcyhXZWJLaXRET01IVE1M
TWVkaWFFbGVtZW50KiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0bWxfbWVkaWFfZWxl
bWVudF9nZXRfa2luZDoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MTWVkaWFFbGVtZW50Ci0g
KgotICogUmV0dXJuczogQSAjZ2NoYXIKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8K
LVdFQktJVF9BUEkgZ2NoYXIqCi13ZWJraXRfZG9tX2h0bWxfbWVkaWFfZWxlbWVudF9nZXRfa2lu
ZChXZWJLaXRET01IVE1MTWVkaWFFbGVtZW50KiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9t
X2h0bWxfbWVkaWFfZWxlbWVudF9zZXRfa2luZDoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1M
TWVkaWFFbGVtZW50Ci0gKiBAdmFsdWU6IEEgI2djaGFyCi0gKgotICogU3RhYmlsaXR5OiBVbnN0
YWJsZQotKiovCi1XRUJLSVRfQVBJIHZvaWQKLXdlYmtpdF9kb21faHRtbF9tZWRpYV9lbGVtZW50
X3NldF9raW5kKFdlYktpdERPTUhUTUxNZWRpYUVsZW1lbnQqIHNlbGYsIGNvbnN0IGdjaGFyKiB2
YWx1ZSk7Ci0KLUdfRU5EX0RFQ0xTCi0KLSNlbmRpZiAvKiBXRUJLSVRfRE9NX1VTRV9VTlNUQUJM
RV9BUEkgKi8KLSNlbmRpZiAvKiBXZWJLaXRET01IVE1MTWVkaWFFbGVtZW50X2ggKi8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9E
T00vV2ViS2l0RE9NSFRNTE1lZGlhRWxlbWVudFByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTE1lZGlhRWxl
bWVudFByaXZhdGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDNkN2I4My4uMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
dGsvRE9NL1dlYktpdERPTUhUTUxNZWRpYUVsZW1lbnRQcml2YXRlLmgKKysrIC9kZXYvbnVsbApA
QCAtMSwzNiArMCwwIEBACi0vKgotICogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQg
b3BlbiBzb3VyY2UgcHJvamVjdC4KLSAqICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5
IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQotICoKLSAqICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAg
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKLSAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiAgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKLSAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaWZuZGVm
IFdlYktpdERPTUhUTUxNZWRpYUVsZW1lbnRQcml2YXRlX2gKLSNkZWZpbmUgV2ViS2l0RE9NSFRN
TE1lZGlhRWxlbWVudFByaXZhdGVfaAotCi0jaW5jbHVkZSA8V2ViQ29yZS9IVE1MTWVkaWFFbGVt
ZW50Lmg+Ci0jaW5jbHVkZSA8d2Via2l0ZG9tL1dlYktpdERPTUhUTUxNZWRpYUVsZW1lbnQuaD4K
LSNpZiBFTkFCTEUoVklERU8pCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotV2ViS2l0RE9NSFRNTE1l
ZGlhRWxlbWVudCogd3JhcEhUTUxNZWRpYUVsZW1lbnQoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dCopOwotV2ViS2l0RE9NSFRNTE1lZGlhRWxlbWVudCoga2l0KFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQqKTsKLVdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQqIGNvcmUoV2ViS2l0RE9NSFRNTE1l
ZGlhRWxlbWVudCopOwotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvKiBFTkFCTEUo
VklERU8pICovCi0KLSNlbmRpZiAvKiBXZWJLaXRET01IVE1MTWVkaWFFbGVtZW50UHJpdmF0ZV9o
ICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxPTGlzdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MT0xp
c3RFbGVtZW50LmNwcAppbmRleCBkM2M2MjBlLi5mNGY4NzYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhU
TUxPTGlzdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTE9MaXN0RWxlbWVudC5jcHAKQEAgLTM1
LDcgKzM1LDYgQEAKICNpbmNsdWRlICJXZWJLaXRET01Ob2RlUHJpdmF0ZS5oIgogI2luY2x1ZGUg
IldlYktpdERPTVByaXZhdGUuaCIKICNpbmNsdWRlICJDb252ZXJ0VG9VVEY4U3RyaW5nLmgiCi0j
aW5jbHVkZSAiV2ViS2l0RE9NSFRNTE9MaXN0RWxlbWVudFVuc3RhYmxlLmgiCiAjaW5jbHVkZSA8
d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApAQCAtMTAwLDcgKzk5LDYg
QEAgZW51bSB7CiAgICAgUFJPUF8wLAogICAgIFBST1BfQ09NUEFDVCwKICAgICBQUk9QX1NUQVJU
LAotICAgIFBST1BfUkVWRVJTRUQsCiAgICAgUFJPUF9UWVBFLAogfTsKIApAQCAtMTE1LDkgKzEx
Myw2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21faHRtbF9vX2xpc3RfZWxlbWVudF9zZXRfcHJv
cGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwCiAgICAgY2FzZSBQUk9QX1NUQVJUOgogICAg
ICAgICB3ZWJraXRfZG9tX2h0bWxfb19saXN0X2VsZW1lbnRfc2V0X3N0YXJ0KHNlbGYsIGdfdmFs
dWVfZ2V0X2xvbmcodmFsdWUpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX1JFVkVS
U0VEOgotICAgICAgICB3ZWJraXRfZG9tX2h0bWxfb19saXN0X2VsZW1lbnRfc2V0X3JldmVyc2Vk
KHNlbGYsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKLSAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBQUk9QX1RZUEU6CiAgICAgICAgIHdlYmtpdF9kb21faHRtbF9vX2xpc3RfZWxlbWVudF9z
ZXRfdHlwZV9hdHRyKHNlbGYsIGdfdmFsdWVfZ2V0X3N0cmluZyh2YWx1ZSkpOwogICAgICAgICBi
cmVhazsKQEAgLTEzOCw5ICsxMzMsNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX2h0bWxfb19s
aXN0X2VsZW1lbnRfZ2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcAogICAgIGNh
c2UgUFJPUF9TVEFSVDoKICAgICAgICAgZ192YWx1ZV9zZXRfbG9uZyh2YWx1ZSwgd2Via2l0X2Rv
bV9odG1sX29fbGlzdF9lbGVtZW50X2dldF9zdGFydChzZWxmKSk7CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgUFJPUF9SRVZFUlNFRDoKLSAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1
ZSwgd2Via2l0X2RvbV9odG1sX29fbGlzdF9lbGVtZW50X2dldF9yZXZlcnNlZChzZWxmKSk7Ci0g
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJPUF9UWVBFOgogICAgICAgICBnX3ZhbHVlX3Rha2Vf
c3RyaW5nKHZhbHVlLCB3ZWJraXRfZG9tX2h0bWxfb19saXN0X2VsZW1lbnRfZ2V0X3R5cGVfYXR0
cihzZWxmKSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTc4LDE2ICsxNzAsNiBAQCBzdGF0aWMgdm9p
ZCB3ZWJraXRfZG9tX2h0bWxfb19saXN0X2VsZW1lbnRfY2xhc3NfaW5pdChXZWJLaXRET01IVE1M
T0xpc3RFbGVtZW50QwogCiAgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKICAg
ICAgICAgZ29iamVjdENsYXNzLAotICAgICAgICBQUk9QX1JFVkVSU0VELAotICAgICAgICBnX3Bh
cmFtX3NwZWNfYm9vbGVhbigKLSAgICAgICAgICAgICJyZXZlcnNlZCIsCi0gICAgICAgICAgICAi
SFRNTE9MaXN0RWxlbWVudDpyZXZlcnNlZCIsCi0gICAgICAgICAgICAicmVhZC13cml0ZSBnYm9v
bGVhbiBIVE1MT0xpc3RFbGVtZW50OnJldmVyc2VkIiwKLSAgICAgICAgICAgIEZBTFNFLAotICAg
ICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURXUklURSkpOwotCi0gICAgZ19vYmplY3RfY2xhc3Nf
aW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAgZ29iamVjdENsYXNzLAogICAgICAgICBQUk9QX1RZ
UEUsCiAgICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcoCiAgICAgICAgICAgICAidHlwZSIsCkBA
IC0yMzcsMjMgKzIxOSw2IEBAIHZvaWQgd2Via2l0X2RvbV9odG1sX29fbGlzdF9lbGVtZW50X3Nl
dF9zdGFydChXZWJLaXRET01IVE1MT0xpc3RFbGVtZW50KiBzZWxmLCBnCiAgICAgaXRlbS0+c2V0
U3RhcnQodmFsdWUpOwogfQogCi1nYm9vbGVhbiB3ZWJraXRfZG9tX2h0bWxfb19saXN0X2VsZW1l
bnRfZ2V0X3JldmVyc2VkKFdlYktpdERPTUhUTUxPTGlzdEVsZW1lbnQqIHNlbGYpCi17Ci0gICAg
V2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9p
Zl9mYWlsKFdFQktJVF9ET01fSVNfSFRNTF9PX0xJU1RfRUxFTUVOVChzZWxmKSwgRkFMU0UpOwot
ICAgIFdlYkNvcmU6OkhUTUxPTGlzdEVsZW1lbnQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7
Ci0gICAgZ2Jvb2xlYW4gcmVzdWx0ID0gaXRlbS0+aGFzQXR0cmlidXRlV2l0aG91dFN5bmNocm9u
aXphdGlvbihXZWJDb3JlOjpIVE1MTmFtZXM6OnJldmVyc2VkQXR0cik7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfb19saXN0X2VsZW1lbnRfc2V0X3JldmVy
c2VkKFdlYktpdERPTUhUTUxPTGlzdEVsZW1lbnQqIHNlbGYsIGdib29sZWFuIHZhbHVlKQotewot
ICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl9p
Zl9mYWlsKFdFQktJVF9ET01fSVNfSFRNTF9PX0xJU1RfRUxFTUVOVChzZWxmKSk7Ci0gICAgV2Vi
Q29yZTo6SFRNTE9MaXN0RWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBp
dGVtLT5zZXRCb29sZWFuQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6cmV2ZXJzZWRBdHRy
LCB2YWx1ZSk7Ci19Ci0KIGdjaGFyKiB3ZWJraXRfZG9tX2h0bWxfb19saXN0X2VsZW1lbnRfZ2V0
X3R5cGVfYXR0cihXZWJLaXRET01IVE1MT0xpc3RFbGVtZW50KiBzZWxmKQogewogICAgIFdlYkNv
cmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTE9M
aXN0RWxlbWVudFVuc3RhYmxlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxPTGlzdEVsZW1lbnRVbnN0YWJsZS5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMTdjZDQ3Li4wMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9N
SFRNTE9MaXN0RWxlbWVudFVuc3RhYmxlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBA
Ci0vKgotICogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJv
amVjdC4KLSAqICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRp
bmdzLnBsLiBETyBOT1QgTU9ESUZZIQotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAq
ICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAg
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQotICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaWZuZGVmIFdlYktpdERPTUhUTUxP
TGlzdEVsZW1lbnRVbnN0YWJsZV9oCi0jZGVmaW5lIFdlYktpdERPTUhUTUxPTGlzdEVsZW1lbnRV
bnN0YWJsZV9oCi0KLSNpZmRlZiBXRUJLSVRfRE9NX1VTRV9VTlNUQUJMRV9BUEkKLQotI2luY2x1
ZGUgPHdlYmtpdGRvbS93ZWJraXRkb21kZWZpbmVzLXVuc3RhYmxlLmg+Ci0KLUdfQkVHSU5fREVD
TFMKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0bWxfb19saXN0X2VsZW1lbnRfZ2V0X3JldmVyc2Vk
OgotICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxPTGlzdEVsZW1lbnQKLSAqCi0gKiBSZXR1cm5z
OiBBICNnYm9vbGVhbgotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQ
SSBnYm9vbGVhbgotd2Via2l0X2RvbV9odG1sX29fbGlzdF9lbGVtZW50X2dldF9yZXZlcnNlZChX
ZWJLaXRET01IVE1MT0xpc3RFbGVtZW50KiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0
bWxfb19saXN0X2VsZW1lbnRfc2V0X3JldmVyc2VkOgotICogQHNlbGY6IEEgI1dlYktpdERPTUhU
TUxPTGlzdEVsZW1lbnQKLSAqIEB2YWx1ZTogQSAjZ2Jvb2xlYW4KLSAqCi0gKiBTdGFiaWxpdHk6
IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgdm9pZAotd2Via2l0X2RvbV9odG1sX29fbGlzdF9l
bGVtZW50X3NldF9yZXZlcnNlZChXZWJLaXRET01IVE1MT0xpc3RFbGVtZW50KiBzZWxmLCBnYm9v
bGVhbiB2YWx1ZSk7Ci0KLQotR19FTkRfREVDTFMKLQotI2VuZGlmIC8qIFdFQktJVF9ET01fVVNF
X1VOU1RBQkxFX0FQSSAqLwotI2VuZGlmIC8qIFdlYktpdERPTUhUTUxPTGlzdEVsZW1lbnRVbnN0
YWJsZV9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxPYmplY3RFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9N
SFRNTE9iamVjdEVsZW1lbnQuY3BwCmluZGV4IDQ5YmUyNGUuLmE0OGRhOTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2Vi
S2l0RE9NSFRNTE9iamVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTE9iamVjdEVsZW1lbnQu
Y3BwCkBAIC0zNiw5ICszNiw3IEBACiAjaW5jbHVkZSAiV2ViS2l0RE9NSFRNTE9iamVjdEVsZW1l
bnRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0RE9NTm9kZVByaXZhdGUuaCIKICNpbmNsdWRl
ICJXZWJLaXRET01Qcml2YXRlLmgiCi0jaW5jbHVkZSAiV2ViS2l0RE9NVmFsaWRpdHlTdGF0ZVBy
aXZhdGUuaCIKICNpbmNsdWRlICJDb252ZXJ0VG9VVEY4U3RyaW5nLmgiCi0jaW5jbHVkZSAiV2Vi
S2l0RE9NSFRNTE9iamVjdEVsZW1lbnRVbnN0YWJsZS5oIgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIu
aD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKQEAgLTExOCw5ICsxMTYsNiBAQCBlbnVtIHsK
ICAgICBQUk9QX1VTRV9NQVAsCiAgICAgUFJPUF9WU1BBQ0UsCiAgICAgUFJPUF9XSURUSCwKLSAg
ICBQUk9QX1dJTExfVkFMSURBVEUsCi0gICAgUFJPUF9WQUxJRElUWSwKLSAgICBQUk9QX1ZBTElE
QVRJT05fTUVTU0FHRSwKICAgICBQUk9QX0NPTlRFTlRfRE9DVU1FTlQsCiB9OwogCkBAIC0yMzks
MTUgKzIzNCw2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21faHRtbF9vYmplY3RfZWxlbWVudF9n
ZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwCiAgICAgY2FzZSBQUk9QX1dJRFRI
OgogICAgICAgICBnX3ZhbHVlX3Rha2Vfc3RyaW5nKHZhbHVlLCB3ZWJraXRfZG9tX2h0bWxfb2Jq
ZWN0X2VsZW1lbnRfZ2V0X3dpZHRoKHNlbGYpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQ
Uk9QX1dJTExfVkFMSURBVEU6Ci0gICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdl
YmtpdF9kb21faHRtbF9vYmplY3RfZWxlbWVudF9nZXRfd2lsbF92YWxpZGF0ZShzZWxmKSk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9WQUxJRElUWToKLSAgICAgICAgZ192YWx1ZV9z
ZXRfb2JqZWN0KHZhbHVlLCB3ZWJraXRfZG9tX2h0bWxfb2JqZWN0X2VsZW1lbnRfZ2V0X3ZhbGlk
aXR5KHNlbGYpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX1ZBTElEQVRJT05fTUVT
U0FHRToKLSAgICAgICAgZ192YWx1ZV90YWtlX3N0cmluZyh2YWx1ZSwgd2Via2l0X2RvbV9odG1s
X29iamVjdF9lbGVtZW50X2dldF92YWxpZGF0aW9uX21lc3NhZ2Uoc2VsZikpOwotICAgICAgICBi
cmVhazsKICAgICBjYXNlIFBST1BfQ09OVEVOVF9ET0NVTUVOVDoKICAgICAgICAgZ192YWx1ZV9z
ZXRfb2JqZWN0KHZhbHVlLCB3ZWJraXRfZG9tX2h0bWxfb2JqZWN0X2VsZW1lbnRfZ2V0X2NvbnRl
bnRfZG9jdW1lbnQoc2VsZikpOwogICAgICAgICBicmVhazsKQEAgLTQzNSwzNiArNDIxLDYgQEAg
c3RhdGljIHZvaWQgd2Via2l0X2RvbV9odG1sX29iamVjdF9lbGVtZW50X2NsYXNzX2luaXQoV2Vi
S2l0RE9NSFRNTE9iamVjdEVsZW1lbnQKIAogICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJv
cGVydHkoCiAgICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9XSUxMX1ZBTElEQVRF
LAotICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigKLSAgICAgICAgICAgICJ3aWxsLXZhbGlk
YXRlIiwKLSAgICAgICAgICAgICJIVE1MT2JqZWN0RWxlbWVudDp3aWxsLXZhbGlkYXRlIiwKLSAg
ICAgICAgICAgICJyZWFkLW9ubHkgZ2Jvb2xlYW4gSFRNTE9iamVjdEVsZW1lbnQ6d2lsbC12YWxp
ZGF0ZSIsCi0gICAgICAgICAgICBGQUxTRSwKLSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFE
QUJMRSkpOwotCi0gICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAg
Z29iamVjdENsYXNzLAotICAgICAgICBQUk9QX1ZBTElESVRZLAotICAgICAgICBnX3BhcmFtX3Nw
ZWNfb2JqZWN0KAotICAgICAgICAgICAgInZhbGlkaXR5IiwKLSAgICAgICAgICAgICJIVE1MT2Jq
ZWN0RWxlbWVudDp2YWxpZGl0eSIsCi0gICAgICAgICAgICAicmVhZC1vbmx5IFdlYktpdERPTVZh
bGlkaXR5U3RhdGUqIEhUTUxPYmplY3RFbGVtZW50OnZhbGlkaXR5IiwKLSAgICAgICAgICAgIFdF
QktJVF9ET01fVFlQRV9WQUxJRElUWV9TVEFURSwKLSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9S
RUFEQUJMRSkpOwotCi0gICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAg
ICAgZ29iamVjdENsYXNzLAotICAgICAgICBQUk9QX1ZBTElEQVRJT05fTUVTU0FHRSwKLSAgICAg
ICAgZ19wYXJhbV9zcGVjX3N0cmluZygKLSAgICAgICAgICAgICJ2YWxpZGF0aW9uLW1lc3NhZ2Ui
LAotICAgICAgICAgICAgIkhUTUxPYmplY3RFbGVtZW50OnZhbGlkYXRpb24tbWVzc2FnZSIsCi0g
ICAgICAgICAgICAicmVhZC1vbmx5IGdjaGFyKiBIVE1MT2JqZWN0RWxlbWVudDp2YWxpZGF0aW9u
LW1lc3NhZ2UiLAotICAgICAgICAgICAgIiIsCi0gICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVB
REFCTEUpKTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAg
IGdvYmplY3RDbGFzcywKICAgICAgICAgUFJPUF9DT05URU5UX0RPQ1VNRU5ULAogICAgICAgICBn
X3BhcmFtX3NwZWNfb2JqZWN0KAogICAgICAgICAgICAgImNvbnRlbnQtZG9jdW1lbnQiLApAQCAt
NDgwLDI1ICs0MzYsNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX2h0bWxfb2JqZWN0X2VsZW1l
bnRfaW5pdChXZWJLaXRET01IVE1MT2JqZWN0RWxlbWVudCogcmVxdQogICAgIFVOVVNFRF9QQVJB
TShyZXF1ZXN0KTsKIH0KIAotZ2Jvb2xlYW4gd2Via2l0X2RvbV9odG1sX29iamVjdF9lbGVtZW50
X2NoZWNrX3ZhbGlkaXR5KFdlYktpdERPTUhUTUxPYmplY3RFbGVtZW50KiBzZWxmKQotewotICAg
IFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxf
aWZfZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxfT0JKRUNUX0VMRU1FTlQoc2VsZiksIEZBTFNFKTsK
LSAgICBXZWJDb3JlOjpIVE1MT2JqZWN0RWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxm
KTsKLSAgICBnYm9vbGVhbiByZXN1bHQgPSBpdGVtLT5jaGVja1ZhbGlkaXR5KCk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfb2JqZWN0X2VsZW1lbnRfc2V0
X2N1c3RvbV92YWxpZGl0eShXZWJLaXRET01IVE1MT2JqZWN0RWxlbWVudCogc2VsZiwgY29uc3Qg
Z2NoYXIqIGVycm9yKQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0
ZTsKLSAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfSFRNTF9PQkpFQ1RfRUxFTUVO
VChzZWxmKSk7Ci0gICAgZ19yZXR1cm5faWZfZmFpbChlcnJvcik7Ci0gICAgV2ViQ29yZTo6SFRN
TE9iamVjdEVsZW1lbnQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgV1RGOjpTdHJp
bmcgY29udmVydGVkRXJyb3IgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgoZXJyb3IpOwotICAgIGl0
ZW0tPnNldEN1c3RvbVZhbGlkaXR5KGNvbnZlcnRlZEVycm9yKTsKLX0KLQogV2ViS2l0RE9NSFRN
TEZvcm1FbGVtZW50KiB3ZWJraXRfZG9tX2h0bWxfb2JqZWN0X2VsZW1lbnRfZ2V0X2Zvcm0oV2Vi
S2l0RE9NSFRNTE9iamVjdEVsZW1lbnQqIHNlbGYpCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhy
ZWFkTnVsbFN0YXRlIHN0YXRlOwpAQCAtODA2LDMzICs3NDMsNiBAQCB2b2lkIHdlYmtpdF9kb21f
aHRtbF9vYmplY3RfZWxlbWVudF9zZXRfd2lkdGgoV2ViS2l0RE9NSFRNTE9iamVjdEVsZW1lbnQq
IHNlbGYsCiAgICAgaXRlbS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihXZWJD
b3JlOjpIVE1MTmFtZXM6OndpZHRoQXR0ciwgY29udmVydGVkVmFsdWUpOwogfQogCi1nYm9vbGVh
biB3ZWJraXRfZG9tX2h0bWxfb2JqZWN0X2VsZW1lbnRfZ2V0X3dpbGxfdmFsaWRhdGUoV2ViS2l0
RE9NSFRNTE9iamVjdEVsZW1lbnQqIHNlbGYpCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFk
TnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNf
SFRNTF9PQkpFQ1RfRUxFTUVOVChzZWxmKSwgRkFMU0UpOwotICAgIFdlYkNvcmU6OkhUTUxPYmpl
Y3RFbGVtZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdib29sZWFuIHJlc3Vs
dCA9IGl0ZW0tPndpbGxWYWxpZGF0ZSgpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLVdlYktp
dERPTVZhbGlkaXR5U3RhdGUqIHdlYmtpdF9kb21faHRtbF9vYmplY3RfZWxlbWVudF9nZXRfdmFs
aWRpdHkoV2ViS2l0RE9NSFRNTE9iamVjdEVsZW1lbnQqIHNlbGYpCi17Ci0gICAgV2ViQ29yZTo6
SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdF
QktJVF9ET01fSVNfSFRNTF9PQkpFQ1RfRUxFTUVOVChzZWxmKSwgMCk7Ci0gICAgV2ViQ29yZTo6
SFRNTE9iamVjdEVsZW1lbnQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgUmVmUHRy
PFdlYkNvcmU6OlZhbGlkaXR5U3RhdGU+IGdvYmplY3RSZXN1bHQgPSBXVEY6OmdldFB0cihpdGVt
LT52YWxpZGl0eSgpKTsKLSAgICByZXR1cm4gV2ViS2l0OjpraXQoZ29iamVjdFJlc3VsdC5nZXQo
KSk7Ci19Ci0KLWdjaGFyKiB3ZWJraXRfZG9tX2h0bWxfb2JqZWN0X2VsZW1lbnRfZ2V0X3ZhbGlk
YXRpb25fbWVzc2FnZShXZWJLaXRET01IVE1MT2JqZWN0RWxlbWVudCogc2VsZikKLXsKLSAgICBX
ZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoV0VCS0lUX0RPTV9JU19IVE1MX09CSkVDVF9FTEVNRU5UKHNlbGYpLCAwKTsKLSAgICBX
ZWJDb3JlOjpIVE1MT2JqZWN0RWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAg
ICBnY2hhciogcmVzdWx0ID0gY29udmVydFRvVVRGOFN0cmluZyhpdGVtLT52YWxpZGF0aW9uTWVz
c2FnZSgpKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCiBXZWJLaXRET01Eb2N1bWVudCogd2Vi
a2l0X2RvbV9odG1sX29iamVjdF9lbGVtZW50X2dldF9jb250ZW50X2RvY3VtZW50KFdlYktpdERP
TUhUTUxPYmplY3RFbGVtZW50KiBzZWxmKQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51
bGxTdGF0ZSBzdGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTE9iamVjdEVsZW1lbnRVbnN0YWJs
ZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RP
TS9XZWJLaXRET01IVE1MT2JqZWN0RWxlbWVudFVuc3RhYmxlLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGZkZDkzZWIuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MT2JqZWN0RWxlbWVu
dFVuc3RhYmxlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4OCArMCwwIEBACi0vKgotICogIFRoaXMg
ZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAqICBUaGlz
IGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1Qg
TU9ESUZZIQotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgot
ICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQotICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KLSAqLwotCi0jaWZuZGVmIFdlYktpdERPTUhUTUxPYmplY3RFbGVtZW50VW5z
dGFibGVfaAotI2RlZmluZSBXZWJLaXRET01IVE1MT2JqZWN0RWxlbWVudFVuc3RhYmxlX2gKLQot
I2lmZGVmIFdFQktJVF9ET01fVVNFX1VOU1RBQkxFX0FQSQotCi0jaW5jbHVkZSA8d2Via2l0ZG9t
L3dlYmtpdGRvbWRlZmluZXMtdW5zdGFibGUuaD4KLQotR19CRUdJTl9ERUNMUwotCi0vKioKLSAq
IHdlYmtpdF9kb21faHRtbF9vYmplY3RfZWxlbWVudF9jaGVja192YWxpZGl0eToKLSAqIEBzZWxm
OiBBICNXZWJLaXRET01IVE1MT2JqZWN0RWxlbWVudAotICoKLSAqIFJldHVybnM6IEEgI2dib29s
ZWFuCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIGdib29sZWFu
Ci13ZWJraXRfZG9tX2h0bWxfb2JqZWN0X2VsZW1lbnRfY2hlY2tfdmFsaWRpdHkoV2ViS2l0RE9N
SFRNTE9iamVjdEVsZW1lbnQqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9kb21faHRtbF9vYmpl
Y3RfZWxlbWVudF9zZXRfY3VzdG9tX3ZhbGlkaXR5OgotICogQHNlbGY6IEEgI1dlYktpdERPTUhU
TUxPYmplY3RFbGVtZW50Ci0gKiBAZXJyb3I6IEEgI2djaGFyCi0gKgotICogU3RhYmlsaXR5OiBV
bnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIHZvaWQKLXdlYmtpdF9kb21faHRtbF9vYmplY3RfZWxl
bWVudF9zZXRfY3VzdG9tX3ZhbGlkaXR5KFdlYktpdERPTUhUTUxPYmplY3RFbGVtZW50KiBzZWxm
LCBjb25zdCBnY2hhciogZXJyb3IpOwotCi0vKioKLSAqIHdlYmtpdF9kb21faHRtbF9vYmplY3Rf
ZWxlbWVudF9nZXRfd2lsbF92YWxpZGF0ZToKLSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MT2Jq
ZWN0RWxlbWVudAotICoKLSAqIFJldHVybnM6IEEgI2dib29sZWFuCi0gKgotICogU3RhYmlsaXR5
OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIGdib29sZWFuCi13ZWJraXRfZG9tX2h0bWxfb2Jq
ZWN0X2VsZW1lbnRfZ2V0X3dpbGxfdmFsaWRhdGUoV2ViS2l0RE9NSFRNTE9iamVjdEVsZW1lbnQq
IHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9kb21faHRtbF9vYmplY3RfZWxlbWVudF9nZXRfdmFs
aWRpdHk6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTE9iamVjdEVsZW1lbnQKLSAqCi0gKiBS
ZXR1cm5zOiAodHJhbnNmZXIgZnVsbCk6IEEgI1dlYktpdERPTVZhbGlkaXR5U3RhdGUKLSAqCi0g
KiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgV2ViS2l0RE9NVmFsaWRpdHlT
dGF0ZSoKLXdlYmtpdF9kb21faHRtbF9vYmplY3RfZWxlbWVudF9nZXRfdmFsaWRpdHkoV2ViS2l0
RE9NSFRNTE9iamVjdEVsZW1lbnQqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9kb21faHRtbF9v
YmplY3RfZWxlbWVudF9nZXRfdmFsaWRhdGlvbl9tZXNzYWdlOgotICogQHNlbGY6IEEgI1dlYktp
dERPTUhUTUxPYmplY3RFbGVtZW50Ci0gKgotICogUmV0dXJuczogQSAjZ2NoYXIKLSAqCi0gKiBT
dGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgZ2NoYXIqCi13ZWJraXRfZG9tX2h0
bWxfb2JqZWN0X2VsZW1lbnRfZ2V0X3ZhbGlkYXRpb25fbWVzc2FnZShXZWJLaXRET01IVE1MT2Jq
ZWN0RWxlbWVudCogc2VsZik7Ci0KLQotR19FTkRfREVDTFMKLQotI2VuZGlmIC8qIFdFQktJVF9E
T01fVVNFX1VOU1RBQkxFX0FQSSAqLwotI2VuZGlmIC8qIFdlYktpdERPTUhUTUxPYmplY3RFbGVt
ZW50VW5zdGFibGVfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MT3B0aW9uc0NvbGxlY3Rpb24u
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RP
TS9XZWJLaXRET01IVE1MT3B0aW9uc0NvbGxlY3Rpb24uY3BwCmluZGV4IDU5MDUwYWQuLmYzMjQz
NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERP
TUhUTUxPcHRpb25zQ29sbGVjdGlvbi5jcHAKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlICJX
ZWJLaXRET01Ob2RlUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdERPTVByaXZhdGUuaCIKICNp
bmNsdWRlICJDb252ZXJ0VG9VVEY4U3RyaW5nLmgiCi0jaW5jbHVkZSAiV2ViS2l0RE9NSFRNTE9w
dGlvbnNDb2xsZWN0aW9uVW5zdGFibGUuaCIKICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgogCkBAIC0xNDAsMzAgKzEzOSw2IEBAIFdlYktpdERPTU5vZGUq
IHdlYmtpdF9kb21faHRtbF9vcHRpb25zX2NvbGxlY3Rpb25fbmFtZWRfaXRlbShXZWJLaXRET01I
VE1MT3B0aW9uCiAgICAgcmV0dXJuIFdlYktpdDo6a2l0KGdvYmplY3RSZXN1bHQuZ2V0KCkpOwog
fQogCi12b2lkIHdlYmtpdF9kb21faHRtbF9vcHRpb25zX2NvbGxlY3Rpb25fYWRkKFdlYktpdERP
TUhUTUxPcHRpb25zQ29sbGVjdGlvbiogc2VsZiwgV2ViS2l0RE9NSFRNTE9wdGlvbkVsZW1lbnQq
IG9wdGlvbiwgZ3Vsb25nIGluZGV4LCBHRXJyb3IqKiBlcnJvcikKLXsKLSAgICBXZWJDb3JlOjpK
U01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRf
RE9NX0lTX0hUTUxfT1BUSU9OU19DT0xMRUNUSU9OKHNlbGYpKTsKLSAgICBnX3JldHVybl9pZl9m
YWlsKFdFQktJVF9ET01fSVNfSFRNTF9PUFRJT05fRUxFTUVOVChvcHRpb24pKTsKLSAgICBnX3Jl
dHVybl9pZl9mYWlsKCFlcnJvciB8fCAhKmVycm9yKTsKLSAgICBXZWJDb3JlOjpIVE1MT3B0aW9u
c0NvbGxlY3Rpb24qIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgV2ViQ29yZTo6SFRN
TE9wdGlvbkVsZW1lbnQqIGNvbnZlcnRlZE9wdGlvbiA9IFdlYktpdDo6Y29yZShvcHRpb24pOwot
ICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGl0ZW0tPmFkZCgqY29udmVy
dGVkT3B0aW9uLCBpbmRleCwgZWMpOwotICAgIGlmIChlYykgewotICAgICAgICBXZWJDb3JlOjpF
eGNlcHRpb25Db2RlRGVzY3JpcHRpb24gZWNkZXNjKGVjKTsKLSAgICAgICAgZ19zZXRfZXJyb3Jf
bGl0ZXJhbChlcnJvciwgZ19xdWFya19mcm9tX3N0cmluZygiV0VCS0lUX0RPTSIpLCBlY2Rlc2Mu
Y29kZSwgZWNkZXNjLm5hbWUpOwotICAgIH0KLX0KLQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfb3B0
aW9uc19jb2xsZWN0aW9uX3JlbW92ZShXZWJLaXRET01IVE1MT3B0aW9uc0NvbGxlY3Rpb24qIHNl
bGYsIGdsb25nIGluZGV4KQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBz
dGF0ZTsKLSAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfSFRNTF9PUFRJT05TX0NP
TExFQ1RJT04oc2VsZikpOwotICAgIFdlYkNvcmU6OkhUTUxPcHRpb25zQ29sbGVjdGlvbiogaXRl
bSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBpdGVtLT5yZW1vdmUoaW5kZXgpOwotfQotCiBn
bG9uZyB3ZWJraXRfZG9tX2h0bWxfb3B0aW9uc19jb2xsZWN0aW9uX2dldF9zZWxlY3RlZF9pbmRl
eChXZWJLaXRET01IVE1MT3B0aW9uc0NvbGxlY3Rpb24qIHNlbGYpCiB7CiAgICAgV2ViQ29yZTo6
SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MT3B0aW9u
c0NvbGxlY3Rpb25VbnN0YWJsZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MT3B0aW9uc0NvbGxlY3Rpb25VbnN0YWJs
ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZmUzNmQ4Li4wMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2Vi
S2l0RE9NSFRNTE9wdGlvbnNDb2xsZWN0aW9uVW5zdGFibGUuaAorKysgL2Rldi9udWxsCkBAIC0x
LDU2ICswLDAgQEAKLS8qCi0gKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVu
IHNvdXJjZSBwcm9qZWN0LgotICogIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2Vu
ZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICogIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwot
ICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgV2Vi
S2l0RE9NSFRNTE9wdGlvbnNDb2xsZWN0aW9uVW5zdGFibGVfaAotI2RlZmluZSBXZWJLaXRET01I
VE1MT3B0aW9uc0NvbGxlY3Rpb25VbnN0YWJsZV9oCi0KLSNpZmRlZiBXRUJLSVRfRE9NX1VTRV9V
TlNUQUJMRV9BUEkKLQotI2luY2x1ZGUgPHdlYmtpdGRvbS93ZWJraXRkb21kZWZpbmVzLXVuc3Rh
YmxlLmg+Ci0KLUdfQkVHSU5fREVDTFMKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0bWxfb3B0aW9u
c19jb2xsZWN0aW9uX2FkZDoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MT3B0aW9uc0NvbGxl
Y3Rpb24KLSAqIEBvcHRpb246IEEgI1dlYktpdERPTUhUTUxPcHRpb25FbGVtZW50Ci0gKiBAaW5k
ZXg6IEEgI2d1bG9uZwotICogQGVycm9yOiAjR0Vycm9yCi0gKgotICogU3RhYmlsaXR5OiBVbnN0
YWJsZQotKiovCi1XRUJLSVRfQVBJIHZvaWQKLXdlYmtpdF9kb21faHRtbF9vcHRpb25zX2NvbGxl
Y3Rpb25fYWRkKFdlYktpdERPTUhUTUxPcHRpb25zQ29sbGVjdGlvbiogc2VsZiwgV2ViS2l0RE9N
SFRNTE9wdGlvbkVsZW1lbnQqIG9wdGlvbiwgZ3Vsb25nIGluZGV4LCBHRXJyb3IqKiBlcnJvcik7
Ci0KLS8qKgotICogd2Via2l0X2RvbV9odG1sX29wdGlvbnNfY29sbGVjdGlvbl9yZW1vdmU6Ci0g
KiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTE9wdGlvbnNDb2xsZWN0aW9uCi0gKiBAaW5kZXg6IEEg
I2dsb25nCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIHZvaWQK
LXdlYmtpdF9kb21faHRtbF9vcHRpb25zX2NvbGxlY3Rpb25fcmVtb3ZlKFdlYktpdERPTUhUTUxP
cHRpb25zQ29sbGVjdGlvbiogc2VsZiwgZ2xvbmcgaW5kZXgpOwotCi0KLUdfRU5EX0RFQ0xTCi0K
LSNlbmRpZiAvKiBXRUJLSVRfRE9NX1VTRV9VTlNUQUJMRV9BUEkgKi8KLSNlbmRpZiAvKiBXZWJL
aXRET01IVE1MT3B0aW9uc0NvbGxlY3Rpb25VbnN0YWJsZV9oICovCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERP
TUhUTUxQcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTFByaXZhdGUuY3BwCmluZGV4IGEyZWE4NGYuLmFi
ZDU1ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTFByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTFBy
aXZhdGUuY3BwCkBAIC0xMTQsNyArMTE0LDYgQEAKICNpbmNsdWRlICJXZWJLaXRET01IVE1MSUZy
YW1lRWxlbWVudFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRET01IVE1MSW1hZ2VFbGVtZW50
UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdERPTUhUTUxJbnB1dEVsZW1lbnRQcml2YXRlLmgi
Ci0jaW5jbHVkZSAiV2ViS2l0RE9NSFRNTEtleWdlbkVsZW1lbnRQcml2YXRlLmgiCiAjaW5jbHVk
ZSAiV2ViS2l0RE9NSFRNTExJRWxlbWVudFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRET01I
VE1MTGFiZWxFbGVtZW50UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdERPTUhUTUxMZWdlbmRF
bGVtZW50UHJpdmF0ZS5oIgpAQCAtMTQ1LDExICsxNDQsNiBAQAogI2luY2x1ZGUgIldlYktpdERP
TUhUTUxUaXRsZUVsZW1lbnRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0RE9NSFRNTFVMaXN0
RWxlbWVudFByaXZhdGUuaCIKIAotI2lmIEVOQUJMRShWSURFTykKLSNpbmNsdWRlICJXZWJLaXRE
T01IVE1MQXVkaW9FbGVtZW50UHJpdmF0ZS5oIgotI2luY2x1ZGUgIldlYktpdERPTUhUTUxWaWRl
b0VsZW1lbnRQcml2YXRlLmgiCi0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtMTU3LDE2ICsxNTEsNyBAQCB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTo6SFRNTE5hbWVzOwogCiAvLyBtYWNybyhUYWdOYW1lLCBFbGVtZW50TmFtZSkKIAot
I2lmIEVOQUJMRShWSURFTykKLSNkZWZpbmUgRk9SX0VBQ0hfSFRNTF9WSURFT19UQUcobWFjcm8p
IFwKLSAgICBtYWNybyhhdWRpbywgQXVkaW8pIFwKLSAgICBtYWNybyh2aWRlbywgVmlkZW8pCi0j
ZWxzZQotI2RlZmluZSBGT1JfRUFDSF9IVE1MX1ZJREVPX1RBRyhtYWNybykKLSNlbmRpZgotCiAj
ZGVmaW5lIEZPUl9FQUNIX0hUTUxfVEFHKG1hY3JvKSBcCi0gICAgRk9SX0VBQ0hfSFRNTF9WSURF
T19UQUcobWFjcm8pIFwKICAgICBtYWNybyhhLCBBbmNob3IpIFwKICAgICBtYWNybyhhcHBsZXQs
IEFwcGxldCkgXAogICAgIG1hY3JvKGFyZWEsIEFyZWEpIFwKQEAgLTIyOSw3ICsyMTQsNiBAQCB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTo6SFRNTE5hbWVzOwogICAgIG1hY3JvKGg2LCBIZWFkaW5n
KSBcCiAgICAgbWFjcm8oaW1hZ2UsIEltYWdlKSBcCiAgICAgbWFjcm8oaW5zLCBNb2QpIFwKLSAg
ICBtYWNybyhrZXlnZW4sIEtleWdlbikgXAogICAgIG1hY3JvKGxpc3RpbmcsIFByZSkgXAogICAg
IG1hY3JvKHRmb290LCBUYWJsZVNlY3Rpb24pIFwKICAgICBtYWNybyh0aCwgVGFibGVDZWxsKSBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9ndGsvRE9NL1dlYktpdERPTUhUTUxTY3JpcHRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTFNjcmlw
dEVsZW1lbnQuY3BwCmluZGV4IDJiMjNiMzIuLjk1NWFhMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRN
TFNjcmlwdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTFNjcmlwdEVsZW1lbnQuY3BwCkBAIC0z
NSw3ICszNSw2IEBACiAjaW5jbHVkZSAiV2ViS2l0RE9NTm9kZVByaXZhdGUuaCIKICNpbmNsdWRl
ICJXZWJLaXRET01Qcml2YXRlLmgiCiAjaW5jbHVkZSAiQ29udmVydFRvVVRGOFN0cmluZy5oIgot
I2luY2x1ZGUgIldlYktpdERPTUhUTUxTY3JpcHRFbGVtZW50VW5zdGFibGUuaCIKICNpbmNsdWRl
IDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCkBAIC0xMDIsMTIgKzEw
MSw5IEBAIGVudW0gewogICAgIFBST1BfSFRNTF9GT1IsCiAgICAgUFJPUF9FVkVOVCwKICAgICBQ
Uk9QX0NIQVJTRVQsCi0gICAgUFJPUF9BU1lOQywKICAgICBQUk9QX0RFRkVSLAogICAgIFBST1Bf
U1JDLAogICAgIFBST1BfVFlQRSwKLSAgICBQUk9QX0NST1NTX09SSUdJTiwKLSAgICBQUk9QX05P
TkNFLAogfTsKIAogc3RhdGljIHZvaWQgd2Via2l0X2RvbV9odG1sX3NjcmlwdF9lbGVtZW50X3Nl
dF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BlcnR5SWQsIGNvbnN0IEdWYWx1
ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKQpAQCAtMTI3LDkgKzEyMyw2IEBAIHN0YXRpYyB2
b2lkIHdlYmtpdF9kb21faHRtbF9zY3JpcHRfZWxlbWVudF9zZXRfcHJvcGVydHkoR09iamVjdCog
b2JqZWN0LCBndWludCBwCiAgICAgY2FzZSBQUk9QX0NIQVJTRVQ6CiAgICAgICAgIHdlYmtpdF9k
b21faHRtbF9zY3JpcHRfZWxlbWVudF9zZXRfY2hhcnNldChzZWxmLCBnX3ZhbHVlX2dldF9zdHJp
bmcodmFsdWUpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX0FTWU5DOgotICAgICAg
ICB3ZWJraXRfZG9tX2h0bWxfc2NyaXB0X2VsZW1lbnRfc2V0X2FzeW5jKHNlbGYsIGdfdmFsdWVf
Z2V0X2Jvb2xlYW4odmFsdWUpKTsKLSAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9QX0RFRkVS
OgogICAgICAgICB3ZWJraXRfZG9tX2h0bWxfc2NyaXB0X2VsZW1lbnRfc2V0X2RlZmVyKHNlbGYs
IGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKICAgICAgICAgYnJlYWs7CkBAIC0xMzksMTIg
KzEzMiw2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21faHRtbF9zY3JpcHRfZWxlbWVudF9zZXRf
cHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwCiAgICAgY2FzZSBQUk9QX1RZUEU6CiAg
ICAgICAgIHdlYmtpdF9kb21faHRtbF9zY3JpcHRfZWxlbWVudF9zZXRfdHlwZV9hdHRyKHNlbGYs
IGdfdmFsdWVfZ2V0X3N0cmluZyh2YWx1ZSkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFBS
T1BfQ1JPU1NfT1JJR0lOOgotICAgICAgICB3ZWJraXRfZG9tX2h0bWxfc2NyaXB0X2VsZW1lbnRf
c2V0X2Nyb3NzX29yaWdpbihzZWxmLCBnX3ZhbHVlX2dldF9zdHJpbmcodmFsdWUpKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX05PTkNFOgotICAgICAgICB3ZWJraXRfZG9tX2h0bWxf
c2NyaXB0X2VsZW1lbnRfc2V0X25vbmNlKHNlbGYsIGdfdmFsdWVfZ2V0X3N0cmluZyh2YWx1ZSkp
OwotICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBHX09CSkVDVF9XQVJOX0lO
VkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wZXJ0eUlkLCBwc3BlYyk7CiAgICAgICAgIGJy
ZWFrOwpAQCAtMTY4LDkgKzE1NSw2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21faHRtbF9zY3Jp
cHRfZWxlbWVudF9nZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwCiAgICAgY2Fz
ZSBQUk9QX0NIQVJTRVQ6CiAgICAgICAgIGdfdmFsdWVfdGFrZV9zdHJpbmcodmFsdWUsIHdlYmtp
dF9kb21faHRtbF9zY3JpcHRfZWxlbWVudF9nZXRfY2hhcnNldChzZWxmKSk7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgUFJPUF9BU1lOQzoKLSAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2
YWx1ZSwgd2Via2l0X2RvbV9odG1sX3NjcmlwdF9lbGVtZW50X2dldF9hc3luYyhzZWxmKSk7Ci0g
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJPUF9ERUZFUjoKICAgICAgICAgZ192YWx1ZV9zZXRf
Ym9vbGVhbih2YWx1ZSwgd2Via2l0X2RvbV9odG1sX3NjcmlwdF9lbGVtZW50X2dldF9kZWZlcihz
ZWxmKSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTgwLDEyICsxNjQsNiBAQCBzdGF0aWMgdm9pZCB3
ZWJraXRfZG9tX2h0bWxfc2NyaXB0X2VsZW1lbnRfZ2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVj
dCwgZ3VpbnQgcAogICAgIGNhc2UgUFJPUF9UWVBFOgogICAgICAgICBnX3ZhbHVlX3Rha2Vfc3Ry
aW5nKHZhbHVlLCB3ZWJraXRfZG9tX2h0bWxfc2NyaXB0X2VsZW1lbnRfZ2V0X3R5cGVfYXR0cihz
ZWxmKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9DUk9TU19PUklHSU46Ci0gICAg
ICAgIGdfdmFsdWVfdGFrZV9zdHJpbmcodmFsdWUsIHdlYmtpdF9kb21faHRtbF9zY3JpcHRfZWxl
bWVudF9nZXRfY3Jvc3Nfb3JpZ2luKHNlbGYpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQ
Uk9QX05PTkNFOgotICAgICAgICBnX3ZhbHVlX3Rha2Vfc3RyaW5nKHZhbHVlLCB3ZWJraXRfZG9t
X2h0bWxfc2NyaXB0X2VsZW1lbnRfZ2V0X25vbmNlKHNlbGYpKTsKLSAgICAgICAgYnJlYWs7CiAg
ICAgZGVmYXVsdDoKICAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9i
amVjdCwgcHJvcGVydHlJZCwgcHNwZWMpOwogICAgICAgICBicmVhazsKQEAgLTI0MCwxNiArMjE4
LDYgQEAgc3RhdGljIHZvaWQgd2Via2l0X2RvbV9odG1sX3NjcmlwdF9lbGVtZW50X2NsYXNzX2lu
aXQoV2ViS2l0RE9NSFRNTFNjcmlwdEVsZW1lbnQKIAogICAgIGdfb2JqZWN0X2NsYXNzX2luc3Rh
bGxfcHJvcGVydHkoCiAgICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9BU1lOQywK
LSAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oCi0gICAgICAgICAgICAiYXN5bmMiLAotICAg
ICAgICAgICAgIkhUTUxTY3JpcHRFbGVtZW50OmFzeW5jIiwKLSAgICAgICAgICAgICJyZWFkLXdy
aXRlIGdib29sZWFuIEhUTUxTY3JpcHRFbGVtZW50OmFzeW5jIiwKLSAgICAgICAgICAgIEZBTFNF
LAotICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURXUklURSkpOwotCi0gICAgZ19vYmplY3Rf
Y2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAgZ29iamVjdENsYXNzLAogICAgICAgICBQ
Uk9QX0RFRkVSLAogICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigKICAgICAgICAgICAgICJk
ZWZlciIsCkBAIC0yNzcsMjcgKzI0NSw2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21faHRtbF9z
Y3JpcHRfZWxlbWVudF9jbGFzc19pbml0KFdlYktpdERPTUhUTUxTY3JpcHRFbGVtZW50CiAgICAg
ICAgICAgICAicmVhZC13cml0ZSBnY2hhciogSFRNTFNjcmlwdEVsZW1lbnQ6dHlwZSIsCiAgICAg
ICAgICAgICAiIiwKICAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEV1JJVEUpKTsKLQotICAg
IGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywK
LSAgICAgICAgUFJPUF9DUk9TU19PUklHSU4sCi0gICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmco
Ci0gICAgICAgICAgICAiY3Jvc3Mtb3JpZ2luIiwKLSAgICAgICAgICAgICJIVE1MU2NyaXB0RWxl
bWVudDpjcm9zcy1vcmlnaW4iLAotICAgICAgICAgICAgInJlYWQtd3JpdGUgZ2NoYXIqIEhUTUxT
Y3JpcHRFbGVtZW50OmNyb3NzLW9yaWdpbiIsCi0gICAgICAgICAgICAiIiwKLSAgICAgICAgICAg
IFdFQktJVF9QQVJBTV9SRUFEV1JJVEUpKTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxf
cHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9OT05DRSwKLSAg
ICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZygKLSAgICAgICAgICAgICJub25jZSIsCi0gICAgICAg
ICAgICAiSFRNTFNjcmlwdEVsZW1lbnQ6bm9uY2UiLAotICAgICAgICAgICAgInJlYWQtd3JpdGUg
Z2NoYXIqIEhUTUxTY3JpcHRFbGVtZW50Om5vbmNlIiwKLSAgICAgICAgICAgICIiLAotICAgICAg
ICAgICAgV0VCS0lUX1BBUkFNX1JFQURXUklURSkpOwotCiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtp
dF9kb21faHRtbF9zY3JpcHRfZWxlbWVudF9pbml0KFdlYktpdERPTUhUTUxTY3JpcHRFbGVtZW50
KiByZXF1ZXN0KQpAQCAtMzgxLDIzICszMjgsNiBAQCB2b2lkIHdlYmtpdF9kb21faHRtbF9zY3Jp
cHRfZWxlbWVudF9zZXRfY2hhcnNldChXZWJLaXRET01IVE1MU2NyaXB0RWxlbWVudCogc2VsZgog
ICAgIGl0ZW0tPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oV2ViQ29yZTo6SFRN
TE5hbWVzOjpjaGFyc2V0QXR0ciwgY29udmVydGVkVmFsdWUpOwogfQogCi1nYm9vbGVhbiB3ZWJr
aXRfZG9tX2h0bWxfc2NyaXB0X2VsZW1lbnRfZ2V0X2FzeW5jKFdlYktpdERPTUhUTUxTY3JpcHRF
bGVtZW50KiBzZWxmKQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0
ZTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxfU0NSSVBUX0VM
RU1FTlQoc2VsZiksIEZBTFNFKTsKLSAgICBXZWJDb3JlOjpIVE1MU2NyaXB0RWxlbWVudCogaXRl
bSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBnYm9vbGVhbiByZXN1bHQgPSBpdGVtLT5hc3lu
YygpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXZvaWQgd2Via2l0X2RvbV9odG1sX3Njcmlw
dF9lbGVtZW50X3NldF9hc3luYyhXZWJLaXRET01IVE1MU2NyaXB0RWxlbWVudCogc2VsZiwgZ2Jv
b2xlYW4gdmFsdWUpCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRl
OwotICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19IVE1MX1NDUklQVF9FTEVNRU5U
KHNlbGYpKTsKLSAgICBXZWJDb3JlOjpIVE1MU2NyaXB0RWxlbWVudCogaXRlbSA9IFdlYktpdDo6
Y29yZShzZWxmKTsKLSAgICBpdGVtLT5zZXRBc3luYyh2YWx1ZSk7Ci19Ci0KIGdib29sZWFuIHdl
YmtpdF9kb21faHRtbF9zY3JpcHRfZWxlbWVudF9nZXRfZGVmZXIoV2ViS2l0RE9NSFRNTFNjcmlw
dEVsZW1lbnQqIHNlbGYpCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0
YXRlOwpAQCAtNDUyLDQyICszODIsMyBAQCB2b2lkIHdlYmtpdF9kb21faHRtbF9zY3JpcHRfZWxl
bWVudF9zZXRfdHlwZV9hdHRyKFdlYktpdERPTUhUTUxTY3JpcHRFbGVtZW50KiBzZQogICAgIFdU
Rjo6U3RyaW5nIGNvbnZlcnRlZFZhbHVlID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KHZhbHVlKTsK
ICAgICBpdGVtLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFdlYkNvcmU6OkhU
TUxOYW1lczo6dHlwZUF0dHIsIGNvbnZlcnRlZFZhbHVlKTsKIH0KLQotZ2NoYXIqIHdlYmtpdF9k
b21faHRtbF9zY3JpcHRfZWxlbWVudF9nZXRfY3Jvc3Nfb3JpZ2luKFdlYktpdERPTUhUTUxTY3Jp
cHRFbGVtZW50KiBzZWxmKQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBz
dGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxfU0NSSVBU
X0VMRU1FTlQoc2VsZiksIDApOwotICAgIFdlYkNvcmU6OkhUTUxTY3JpcHRFbGVtZW50KiBpdGVt
ID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdjaGFyKiByZXN1bHQgPSBjb252ZXJ0VG9VVEY4
U3RyaW5nKGl0ZW0tPmNyb3NzT3JpZ2luKCkpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXZv
aWQgd2Via2l0X2RvbV9odG1sX3NjcmlwdF9lbGVtZW50X3NldF9jcm9zc19vcmlnaW4oV2ViS2l0
RE9NSFRNTFNjcmlwdEVsZW1lbnQqIHNlbGYsIGNvbnN0IGdjaGFyKiB2YWx1ZSkKLXsKLSAgICBX
ZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5faWZfZmFp
bChXRUJLSVRfRE9NX0lTX0hUTUxfU0NSSVBUX0VMRU1FTlQoc2VsZikpOwotICAgIGdfcmV0dXJu
X2lmX2ZhaWwodmFsdWUpOwotICAgIFdlYkNvcmU6OkhUTUxTY3JpcHRFbGVtZW50KiBpdGVtID0g
V2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIFdURjo6U3RyaW5nIGNvbnZlcnRlZFZhbHVlID0gV1RG
OjpTdHJpbmc6OmZyb21VVEY4KHZhbHVlKTsKLSAgICBpdGVtLT5zZXRDcm9zc09yaWdpbihjb252
ZXJ0ZWRWYWx1ZSk7Ci19Ci0KLWdjaGFyKiB3ZWJraXRfZG9tX2h0bWxfc2NyaXB0X2VsZW1lbnRf
Z2V0X25vbmNlKFdlYktpdERPTUhUTUxTY3JpcHRFbGVtZW50KiBzZWxmKQotewotICAgIFdlYkNv
cmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFp
bChXRUJLSVRfRE9NX0lTX0hUTUxfU0NSSVBUX0VMRU1FTlQoc2VsZiksIDApOwotICAgIFdlYkNv
cmU6OkhUTUxTY3JpcHRFbGVtZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdj
aGFyKiByZXN1bHQgPSBjb252ZXJ0VG9VVEY4U3RyaW5nKGl0ZW0tPmF0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24oV2ViQ29yZTo6SFRNTE5hbWVzOjpub25jZUF0dHIpKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotCi12b2lkIHdlYmtpdF9kb21faHRtbF9zY3JpcHRfZWxlbWVudF9zZXRf
bm9uY2UoV2ViS2l0RE9NSFRNTFNjcmlwdEVsZW1lbnQqIHNlbGYsIGNvbnN0IGdjaGFyKiB2YWx1
ZSkKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19y
ZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxfU0NSSVBUX0VMRU1FTlQoc2VsZikpOwot
ICAgIGdfcmV0dXJuX2lmX2ZhaWwodmFsdWUpOwotICAgIFdlYkNvcmU6OkhUTUxTY3JpcHRFbGVt
ZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIFdURjo6U3RyaW5nIGNvbnZlcnRl
ZFZhbHVlID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KHZhbHVlKTsKLSAgICBpdGVtLT5zZXRBdHRy
aWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFdlYkNvcmU6OkhUTUxOYW1lczo6bm9uY2VBdHRy
LCBjb252ZXJ0ZWRWYWx1ZSk7Ci19Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTFNjcmlwdEVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9E
T00vV2ViS2l0RE9NSFRNTFNjcmlwdEVsZW1lbnQuaAppbmRleCAzMTgyNzZmLi5iOGQ3OWFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
dGsvRE9NL1dlYktpdERPTUhUTUxTY3JpcHRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MU2NyaXB0
RWxlbWVudC5oCkBAIC0xMTMsNiArMTEzLDE2IEBAIFdFQktJVF9BUEkgZ2NoYXIqCiB3ZWJraXRf
ZG9tX2h0bWxfc2NyaXB0X2VsZW1lbnRfZ2V0X2NoYXJzZXQoV2ViS2l0RE9NSFRNTFNjcmlwdEVs
ZW1lbnQqIHNlbGYpOwogCiAvKioKKyAqIHdlYmtpdF9kb21faHRtbF9zY3JpcHRfZWxlbWVudF9z
ZXRfY2hhcnNldDoKKyAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MU2NyaXB0RWxlbWVudAorICog
QHZhbHVlOiBBICNnY2hhcgorICoKKyAqIFNpbmNlOiAyLjE2CisqKi8KK1dFQktJVF9BUEkgdm9p
ZAord2Via2l0X2RvbV9odG1sX3NjcmlwdF9lbGVtZW50X3NldF9jaGFyc2V0KFdlYktpdERPTUhU
TUxTY3JpcHRFbGVtZW50KiBzZWxmLCBjb25zdCBnY2hhciogdmFsdWUpOworCisvKioKICAqIHdl
YmtpdF9kb21faHRtbF9zY3JpcHRfZWxlbWVudF9nZXRfZGVmZXI6CiAgKiBAc2VsZjogQSAjV2Vi
S2l0RE9NSFRNTFNjcmlwdEVsZW1lbnQKICAqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxTY3JpcHRF
bGVtZW50VW5zdGFibGUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTFNjcmlwdEVsZW1lbnRVbnN0YWJsZS5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlODA0YTE0Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRN
TFNjcmlwdEVsZW1lbnRVbnN0YWJsZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTA3ICswLDAgQEAK
LS8qCi0gKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9q
ZWN0LgotICogIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGlu
Z3MucGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICog
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgV2ViS2l0RE9NSFRNTFNj
cmlwdEVsZW1lbnRVbnN0YWJsZV9oCi0jZGVmaW5lIFdlYktpdERPTUhUTUxTY3JpcHRFbGVtZW50
VW5zdGFibGVfaAotCi0jaWZkZWYgV0VCS0lUX0RPTV9VU0VfVU5TVEFCTEVfQVBJCi0KLSNpbmNs
dWRlIDx3ZWJraXRkb20vd2Via2l0ZG9tZGVmaW5lcy11bnN0YWJsZS5oPgotCi1HX0JFR0lOX0RF
Q0xTCi0KLS8qKgotICogd2Via2l0X2RvbV9odG1sX3NjcmlwdF9lbGVtZW50X3NldF9jaGFyc2V0
OgotICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxTY3JpcHRFbGVtZW50Ci0gKiBAdmFsdWU6IEEg
I2djaGFyCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIHZvaWQK
LXdlYmtpdF9kb21faHRtbF9zY3JpcHRfZWxlbWVudF9zZXRfY2hhcnNldChXZWJLaXRET01IVE1M
U2NyaXB0RWxlbWVudCogc2VsZiwgY29uc3QgZ2NoYXIqIHZhbHVlKTsKLQotLyoqCi0gKiB3ZWJr
aXRfZG9tX2h0bWxfc2NyaXB0X2VsZW1lbnRfZ2V0X2FzeW5jOgotICogQHNlbGY6IEEgI1dlYktp
dERPTUhUTUxTY3JpcHRFbGVtZW50Ci0gKgotICogUmV0dXJuczogQSAjZ2Jvb2xlYW4KLSAqCi0g
KiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgZ2Jvb2xlYW4KLXdlYmtpdF9k
b21faHRtbF9zY3JpcHRfZWxlbWVudF9nZXRfYXN5bmMoV2ViS2l0RE9NSFRNTFNjcmlwdEVsZW1l
bnQqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9kb21faHRtbF9zY3JpcHRfZWxlbWVudF9zZXRf
YXN5bmM6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTFNjcmlwdEVsZW1lbnQKLSAqIEB2YWx1
ZTogQSAjZ2Jvb2xlYW4KLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9B
UEkgdm9pZAotd2Via2l0X2RvbV9odG1sX3NjcmlwdF9lbGVtZW50X3NldF9hc3luYyhXZWJLaXRE
T01IVE1MU2NyaXB0RWxlbWVudCogc2VsZiwgZ2Jvb2xlYW4gdmFsdWUpOwotCi0vKioKLSAqIHdl
YmtpdF9kb21faHRtbF9zY3JpcHRfZWxlbWVudF9nZXRfY3Jvc3Nfb3JpZ2luOgotICogQHNlbGY6
IEEgI1dlYktpdERPTUhUTUxTY3JpcHRFbGVtZW50Ci0gKgotICogUmV0dXJuczogQSAjZ2NoYXIK
LSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgZ2NoYXIqCi13ZWJr
aXRfZG9tX2h0bWxfc2NyaXB0X2VsZW1lbnRfZ2V0X2Nyb3NzX29yaWdpbihXZWJLaXRET01IVE1M
U2NyaXB0RWxlbWVudCogc2VsZik7Ci0KLS8qKgotICogd2Via2l0X2RvbV9odG1sX3NjcmlwdF9l
bGVtZW50X3NldF9jcm9zc19vcmlnaW46Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTFNjcmlw
dEVsZW1lbnQKLSAqIEB2YWx1ZTogQSAjZ2NoYXIKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxl
Ci0qKi8KLVdFQktJVF9BUEkgdm9pZAotd2Via2l0X2RvbV9odG1sX3NjcmlwdF9lbGVtZW50X3Nl
dF9jcm9zc19vcmlnaW4oV2ViS2l0RE9NSFRNTFNjcmlwdEVsZW1lbnQqIHNlbGYsIGNvbnN0IGdj
aGFyKiB2YWx1ZSk7Ci0KLS8qKgotICogd2Via2l0X2RvbV9odG1sX3NjcmlwdF9lbGVtZW50X2dl
dF9ub25jZToKLSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MU2NyaXB0RWxlbWVudAotICoKLSAq
IFJldHVybnM6IEEgI2djaGFyCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJL
SVRfQVBJIGdjaGFyKgotd2Via2l0X2RvbV9odG1sX3NjcmlwdF9lbGVtZW50X2dldF9ub25jZShX
ZWJLaXRET01IVE1MU2NyaXB0RWxlbWVudCogc2VsZik7Ci0KLS8qKgotICogd2Via2l0X2RvbV9o
dG1sX3NjcmlwdF9lbGVtZW50X3NldF9ub25jZToKLSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1M
U2NyaXB0RWxlbWVudAotICogQHZhbHVlOiBBICNnY2hhcgotICoKLSAqIFN0YWJpbGl0eTogVW5z
dGFibGUKLSoqLwotV0VCS0lUX0FQSSB2b2lkCi13ZWJraXRfZG9tX2h0bWxfc2NyaXB0X2VsZW1l
bnRfc2V0X25vbmNlKFdlYktpdERPTUhUTUxTY3JpcHRFbGVtZW50KiBzZWxmLCBjb25zdCBnY2hh
ciogdmFsdWUpOwotCi0KLUdfRU5EX0RFQ0xTCi0KLSNlbmRpZiAvKiBXRUJLSVRfRE9NX1VTRV9V
TlNUQUJMRV9BUEkgKi8KLSNlbmRpZiAvKiBXZWJLaXRET01IVE1MU2NyaXB0RWxlbWVudFVuc3Rh
YmxlX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTFNlbGVjdEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01I
VE1MU2VsZWN0RWxlbWVudC5jcHAKaW5kZXggMjMyZWY3NS4uYzJmYjIxMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJL
aXRET01IVE1MU2VsZWN0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MU2VsZWN0RWxlbWVudC5j
cHAKQEAgLTM5LDkgKzM5LDcgQEAKICNpbmNsdWRlICJXZWJLaXRET01Ob2RlTGlzdFByaXZhdGUu
aCIKICNpbmNsdWRlICJXZWJLaXRET01Ob2RlUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdERP
TVByaXZhdGUuaCIKLSNpbmNsdWRlICJXZWJLaXRET01WYWxpZGl0eVN0YXRlUHJpdmF0ZS5oIgog
I2luY2x1ZGUgIkNvbnZlcnRUb1VURjhTdHJpbmcuaCIKLSNpbmNsdWRlICJXZWJLaXRET01IVE1M
U2VsZWN0RWxlbWVudFVuc3RhYmxlLmgiCiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KIApAQCAtMTA5LDE5ICsxMDcsMTMgQEAgZW51bSB7CiAgICAgUFJP
UF9GT1JNLAogICAgIFBST1BfTVVMVElQTEUsCiAgICAgUFJPUF9OQU1FLAotICAgIFBST1BfUkVR
VUlSRUQsCiAgICAgUFJPUF9TSVpFLAogICAgIFBST1BfVFlQRSwKICAgICBQUk9QX09QVElPTlMs
CiAgICAgUFJPUF9MRU5HVEgsCi0gICAgUFJPUF9TRUxFQ1RFRF9PUFRJT05TLAogICAgIFBST1Bf
U0VMRUNURURfSU5ERVgsCiAgICAgUFJPUF9WQUxVRSwKICAgICBQUk9QX1dJTExfVkFMSURBVEUs
Ci0gICAgUFJPUF9WQUxJRElUWSwKLSAgICBQUk9QX1ZBTElEQVRJT05fTUVTU0FHRSwKLSAgICBQ
Uk9QX0xBQkVMUywKLSAgICBQUk9QX0FVVE9DT01QTEVURSwKIH07CiAKIHN0YXRpYyB2b2lkIHdl
YmtpdF9kb21faHRtbF9zZWxlY3RfZWxlbWVudF9zZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0
LCBndWludCBwcm9wZXJ0eUlkLCBjb25zdCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3Bl
YykKQEAgLTE0MSw5ICsxMzMsNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX2h0bWxfc2VsZWN0
X2VsZW1lbnRfc2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcAogICAgIGNhc2Ug
UFJPUF9OQU1FOgogICAgICAgICB3ZWJraXRfZG9tX2h0bWxfc2VsZWN0X2VsZW1lbnRfc2V0X25h
bWUoc2VsZiwgZ192YWx1ZV9nZXRfc3RyaW5nKHZhbHVlKSk7CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgUFJPUF9SRVFVSVJFRDoKLSAgICAgICAgd2Via2l0X2RvbV9odG1sX3NlbGVjdF9lbGVt
ZW50X3NldF9yZXF1aXJlZChzZWxmLCBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSk7Ci0gICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgUFJPUF9TSVpFOgogICAgICAgICB3ZWJraXRfZG9tX2h0bWxf
c2VsZWN0X2VsZW1lbnRfc2V0X3NpemUoc2VsZiwgZ192YWx1ZV9nZXRfbG9uZyh2YWx1ZSkpOwog
ICAgICAgICBicmVhazsKQEAgLTE1Niw5ICsxNDUsNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfZG9t
X2h0bWxfc2VsZWN0X2VsZW1lbnRfc2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQg
cAogICAgIGNhc2UgUFJPUF9WQUxVRToKICAgICAgICAgd2Via2l0X2RvbV9odG1sX3NlbGVjdF9l
bGVtZW50X3NldF92YWx1ZShzZWxmLCBnX3ZhbHVlX2dldF9zdHJpbmcodmFsdWUpKTsKICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX0FVVE9DT01QTEVURToKLSAgICAgICAgd2Via2l0X2Rv
bV9odG1sX3NlbGVjdF9lbGVtZW50X3NldF9hdXRvY29tcGxldGUoc2VsZiwgZ192YWx1ZV9nZXRf
c3RyaW5nKHZhbHVlKSk7Ci0gICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEdf
T0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BlcnR5SWQsIHBzcGVj
KTsKICAgICAgICAgYnJlYWs7CkBAIC0xODUsOSArMTcxLDYgQEAgc3RhdGljIHZvaWQgd2Via2l0
X2RvbV9odG1sX3NlbGVjdF9lbGVtZW50X2dldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1
aW50IHAKICAgICBjYXNlIFBST1BfTkFNRToKICAgICAgICAgZ192YWx1ZV90YWtlX3N0cmluZyh2
YWx1ZSwgd2Via2l0X2RvbV9odG1sX3NlbGVjdF9lbGVtZW50X2dldF9uYW1lKHNlbGYpKTsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX1JFUVVJUkVEOgotICAgICAgICBnX3ZhbHVlX3Nl
dF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfZG9tX2h0bWxfc2VsZWN0X2VsZW1lbnRfZ2V0X3JlcXVp
cmVkKHNlbGYpKTsKLSAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9QX1NJWkU6CiAgICAgICAg
IGdfdmFsdWVfc2V0X2xvbmcodmFsdWUsIHdlYmtpdF9kb21faHRtbF9zZWxlY3RfZWxlbWVudF9n
ZXRfc2l6ZShzZWxmKSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMjAwLDkgKzE4Myw2IEBAIHN0YXRp
YyB2b2lkIHdlYmtpdF9kb21faHRtbF9zZWxlY3RfZWxlbWVudF9nZXRfcHJvcGVydHkoR09iamVj
dCogb2JqZWN0LCBndWludCBwCiAgICAgY2FzZSBQUk9QX0xFTkdUSDoKICAgICAgICAgZ192YWx1
ZV9zZXRfdWxvbmcodmFsdWUsIHdlYmtpdF9kb21faHRtbF9zZWxlY3RfZWxlbWVudF9nZXRfbGVu
Z3RoKHNlbGYpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX1NFTEVDVEVEX09QVElP
TlM6Ci0gICAgICAgIGdfdmFsdWVfc2V0X29iamVjdCh2YWx1ZSwgd2Via2l0X2RvbV9odG1sX3Nl
bGVjdF9lbGVtZW50X2dldF9zZWxlY3RlZF9vcHRpb25zKHNlbGYpKTsKLSAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBQUk9QX1NFTEVDVEVEX0lOREVYOgogICAgICAgICBnX3ZhbHVlX3NldF9sb25n
KHZhbHVlLCB3ZWJraXRfZG9tX2h0bWxfc2VsZWN0X2VsZW1lbnRfZ2V0X3NlbGVjdGVkX2luZGV4
KHNlbGYpKTsKICAgICAgICAgYnJlYWs7CkBAIC0yMTIsMTggKzE5Miw2IEBAIHN0YXRpYyB2b2lk
IHdlYmtpdF9kb21faHRtbF9zZWxlY3RfZWxlbWVudF9nZXRfcHJvcGVydHkoR09iamVjdCogb2Jq
ZWN0LCBndWludCBwCiAgICAgY2FzZSBQUk9QX1dJTExfVkFMSURBVEU6CiAgICAgICAgIGdfdmFs
dWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF9kb21faHRtbF9zZWxlY3RfZWxlbWVudF9nZXRf
d2lsbF92YWxpZGF0ZShzZWxmKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9WQUxJ
RElUWToKLSAgICAgICAgZ192YWx1ZV9zZXRfb2JqZWN0KHZhbHVlLCB3ZWJraXRfZG9tX2h0bWxf
c2VsZWN0X2VsZW1lbnRfZ2V0X3ZhbGlkaXR5KHNlbGYpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBQUk9QX1ZBTElEQVRJT05fTUVTU0FHRToKLSAgICAgICAgZ192YWx1ZV90YWtlX3N0cmlu
Zyh2YWx1ZSwgd2Via2l0X2RvbV9odG1sX3NlbGVjdF9lbGVtZW50X2dldF92YWxpZGF0aW9uX21l
c3NhZ2Uoc2VsZikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfTEFCRUxTOgotICAg
ICAgICBnX3ZhbHVlX3NldF9vYmplY3QodmFsdWUsIHdlYmtpdF9kb21faHRtbF9zZWxlY3RfZWxl
bWVudF9nZXRfbGFiZWxzKHNlbGYpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX0FV
VE9DT01QTEVURToKLSAgICAgICAgZ192YWx1ZV90YWtlX3N0cmluZyh2YWx1ZSwgd2Via2l0X2Rv
bV9odG1sX3NlbGVjdF9lbGVtZW50X2dldF9hdXRvY29tcGxldGUoc2VsZikpOwotICAgICAgICBi
cmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVS
VFlfSUQob2JqZWN0LCBwcm9wZXJ0eUlkLCBwc3BlYyk7CiAgICAgICAgIGJyZWFrOwpAQCAtMjg4
LDE2ICsyNTYsNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX2h0bWxfc2VsZWN0X2VsZW1lbnRf
Y2xhc3NfaW5pdChXZWJLaXRET01IVE1MU2VsZWN0RWxlbWVudAogCiAgICAgZ19vYmplY3RfY2xh
c3NfaW5zdGFsbF9wcm9wZXJ0eSgKICAgICAgICAgZ29iamVjdENsYXNzLAotICAgICAgICBQUk9Q
X1JFUVVJUkVELAotICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigKLSAgICAgICAgICAgICJy
ZXF1aXJlZCIsCi0gICAgICAgICAgICAiSFRNTFNlbGVjdEVsZW1lbnQ6cmVxdWlyZWQiLAotICAg
ICAgICAgICAgInJlYWQtd3JpdGUgZ2Jvb2xlYW4gSFRNTFNlbGVjdEVsZW1lbnQ6cmVxdWlyZWQi
LAotICAgICAgICAgICAgRkFMU0UsCi0gICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBRFdSSVRF
KSk7Ci0KLSAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAotICAgICAgICBnb2Jq
ZWN0Q2xhc3MsCiAgICAgICAgIFBST1BfU0laRSwKICAgICAgICAgZ19wYXJhbV9zcGVjX2xvbmco
CiAgICAgICAgICAgICAic2l6ZSIsCkBAIC0zMzgsMTYgKzI5Niw2IEBAIHN0YXRpYyB2b2lkIHdl
YmtpdF9kb21faHRtbF9zZWxlY3RfZWxlbWVudF9jbGFzc19pbml0KFdlYktpdERPTUhUTUxTZWxl
Y3RFbGVtZW50CiAKICAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAogICAgICAg
ICBnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBST1BfU0VMRUNURURfT1BUSU9OUywKLSAgICAgICAg
Z19wYXJhbV9zcGVjX29iamVjdCgKLSAgICAgICAgICAgICJzZWxlY3RlZC1vcHRpb25zIiwKLSAg
ICAgICAgICAgICJIVE1MU2VsZWN0RWxlbWVudDpzZWxlY3RlZC1vcHRpb25zIiwKLSAgICAgICAg
ICAgICJyZWFkLW9ubHkgV2ViS2l0RE9NSFRNTENvbGxlY3Rpb24qIEhUTUxTZWxlY3RFbGVtZW50
OnNlbGVjdGVkLW9wdGlvbnMiLAotICAgICAgICAgICAgV0VCS0lUX0RPTV9UWVBFX0hUTUxfQ09M
TEVDVElPTiwKLSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSkpOwotCi0gICAgZ19v
YmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAgZ29iamVjdENsYXNzLAogICAg
ICAgICBQUk9QX1NFTEVDVEVEX0lOREVYLAogICAgICAgICBnX3BhcmFtX3NwZWNfbG9uZygKICAg
ICAgICAgICAgICJzZWxlY3RlZC1pbmRleCIsCkBAIC0zNzUsNDcgKzMyMyw2IEBAIHN0YXRpYyB2
b2lkIHdlYmtpdF9kb21faHRtbF9zZWxlY3RfZWxlbWVudF9jbGFzc19pbml0KFdlYktpdERPTUhU
TUxTZWxlY3RFbGVtZW50CiAgICAgICAgICAgICAicmVhZC1vbmx5IGdib29sZWFuIEhUTUxTZWxl
Y3RFbGVtZW50OndpbGwtdmFsaWRhdGUiLAogICAgICAgICAgICAgRkFMU0UsCiAgICAgICAgICAg
ICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxf
cHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9WQUxJRElUWSwK
LSAgICAgICAgZ19wYXJhbV9zcGVjX29iamVjdCgKLSAgICAgICAgICAgICJ2YWxpZGl0eSIsCi0g
ICAgICAgICAgICAiSFRNTFNlbGVjdEVsZW1lbnQ6dmFsaWRpdHkiLAotICAgICAgICAgICAgInJl
YWQtb25seSBXZWJLaXRET01WYWxpZGl0eVN0YXRlKiBIVE1MU2VsZWN0RWxlbWVudDp2YWxpZGl0
eSIsCi0gICAgICAgICAgICBXRUJLSVRfRE9NX1RZUEVfVkFMSURJVFlfU1RBVEUsCi0gICAgICAg
ICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3Rh
bGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9WQUxJREFU
SU9OX01FU1NBR0UsCi0gICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcoCi0gICAgICAgICAgICAi
dmFsaWRhdGlvbi1tZXNzYWdlIiwKLSAgICAgICAgICAgICJIVE1MU2VsZWN0RWxlbWVudDp2YWxp
ZGF0aW9uLW1lc3NhZ2UiLAotICAgICAgICAgICAgInJlYWQtb25seSBnY2hhciogSFRNTFNlbGVj
dEVsZW1lbnQ6dmFsaWRhdGlvbi1tZXNzYWdlIiwKLSAgICAgICAgICAgICIiLAotICAgICAgICAg
ICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7Ci0KLSAgICBnX29iamVjdF9jbGFzc19pbnN0YWxs
X3Byb3BlcnR5KAotICAgICAgICBnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBST1BfTEFCRUxTLAot
ICAgICAgICBnX3BhcmFtX3NwZWNfb2JqZWN0KAotICAgICAgICAgICAgImxhYmVscyIsCi0gICAg
ICAgICAgICAiSFRNTFNlbGVjdEVsZW1lbnQ6bGFiZWxzIiwKLSAgICAgICAgICAgICJyZWFkLW9u
bHkgV2ViS2l0RE9NTm9kZUxpc3QqIEhUTUxTZWxlY3RFbGVtZW50OmxhYmVscyIsCi0gICAgICAg
ICAgICBXRUJLSVRfRE9NX1RZUEVfTk9ERV9MSVNULAotICAgICAgICAgICAgV0VCS0lUX1BBUkFN
X1JFQURBQkxFKSk7Ci0KLSAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAotICAg
ICAgICBnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBST1BfQVVUT0NPTVBMRVRFLAotICAgICAgICBn
X3BhcmFtX3NwZWNfc3RyaW5nKAotICAgICAgICAgICAgImF1dG9jb21wbGV0ZSIsCi0gICAgICAg
ICAgICAiSFRNTFNlbGVjdEVsZW1lbnQ6YXV0b2NvbXBsZXRlIiwKLSAgICAgICAgICAgICJyZWFk
LXdyaXRlIGdjaGFyKiBIVE1MU2VsZWN0RWxlbWVudDphdXRvY29tcGxldGUiLAotICAgICAgICAg
ICAgIiIsCi0gICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBRFdSSVRFKSk7Ci0KIH0KIAogc3Rh
dGljIHZvaWQgd2Via2l0X2RvbV9odG1sX3NlbGVjdF9lbGVtZW50X2luaXQoV2ViS2l0RE9NSFRN
TFNlbGVjdEVsZW1lbnQqIHJlcXVlc3QpCkBAIC00NjksMjUgKzM3Niw2IEBAIHZvaWQgd2Via2l0
X2RvbV9odG1sX3NlbGVjdF9lbGVtZW50X3JlbW92ZShXZWJLaXRET01IVE1MU2VsZWN0RWxlbWVu
dCogc2VsZiwgZ2xvCiAgICAgaXRlbS0+cmVtb3ZlQnlJbmRleChpbmRleCk7CiB9CiAKLWdib29s
ZWFuIHdlYmtpdF9kb21faHRtbF9zZWxlY3RfZWxlbWVudF9jaGVja192YWxpZGl0eShXZWJLaXRE
T01IVE1MU2VsZWN0RWxlbWVudCogc2VsZikKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWRO
dWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19I
VE1MX1NFTEVDVF9FTEVNRU5UKHNlbGYpLCBGQUxTRSk7Ci0gICAgV2ViQ29yZTo6SFRNTFNlbGVj
dEVsZW1lbnQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ2Jvb2xlYW4gcmVzdWx0
ID0gaXRlbS0+Y2hlY2tWYWxpZGl0eSgpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXZvaWQg
d2Via2l0X2RvbV9odG1sX3NlbGVjdF9lbGVtZW50X3NldF9jdXN0b21fdmFsaWRpdHkoV2ViS2l0
RE9NSFRNTFNlbGVjdEVsZW1lbnQqIHNlbGYsIGNvbnN0IGdjaGFyKiBlcnJvcikKLXsKLSAgICBX
ZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5faWZfZmFp
bChXRUJLSVRfRE9NX0lTX0hUTUxfU0VMRUNUX0VMRU1FTlQoc2VsZikpOwotICAgIGdfcmV0dXJu
X2lmX2ZhaWwoZXJyb3IpOwotICAgIFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50KiBpdGVtID0g
V2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIFdURjo6U3RyaW5nIGNvbnZlcnRlZEVycm9yID0gV1RG
OjpTdHJpbmc6OmZyb21VVEY4KGVycm9yKTsKLSAgICBpdGVtLT5zZXRDdXN0b21WYWxpZGl0eShj
b252ZXJ0ZWRFcnJvcik7Ci19Ci0KIGdib29sZWFuIHdlYmtpdF9kb21faHRtbF9zZWxlY3RfZWxl
bWVudF9nZXRfYXV0b2ZvY3VzKFdlYktpdERPTUhUTUxTZWxlY3RFbGVtZW50KiBzZWxmKQogewog
ICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKQEAgLTU2NywyMyArNDU1
LDYgQEAgdm9pZCB3ZWJraXRfZG9tX2h0bWxfc2VsZWN0X2VsZW1lbnRfc2V0X25hbWUoV2ViS2l0
RE9NSFRNTFNlbGVjdEVsZW1lbnQqIHNlbGYsIGMKICAgICBpdGVtLT5zZXRBdHRyaWJ1dGVXaXRo
b3V0U3luY2hyb25pemF0aW9uKFdlYkNvcmU6OkhUTUxOYW1lczo6bmFtZUF0dHIsIGNvbnZlcnRl
ZFZhbHVlKTsKIH0KIAotZ2Jvb2xlYW4gd2Via2l0X2RvbV9odG1sX3NlbGVjdF9lbGVtZW50X2dl
dF9yZXF1aXJlZChXZWJLaXRET01IVE1MU2VsZWN0RWxlbWVudCogc2VsZikKLXsKLSAgICBXZWJD
b3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwoV0VCS0lUX0RPTV9JU19IVE1MX1NFTEVDVF9FTEVNRU5UKHNlbGYpLCBGQUxTRSk7Ci0gICAg
V2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0g
ICAgZ2Jvb2xlYW4gcmVzdWx0ID0gaXRlbS0+aGFzQXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXph
dGlvbihXZWJDb3JlOjpIVE1MTmFtZXM6OnJlcXVpcmVkQXR0cik7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfc2VsZWN0X2VsZW1lbnRfc2V0X3JlcXVpcmVk
KFdlYktpdERPTUhUTUxTZWxlY3RFbGVtZW50KiBzZWxmLCBnYm9vbGVhbiB2YWx1ZSkKLXsKLSAg
ICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5faWZf
ZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxfU0VMRUNUX0VMRU1FTlQoc2VsZikpOwotICAgIFdlYkNv
cmU6OkhUTUxTZWxlY3RFbGVtZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGl0
ZW0tPnNldEJvb2xlYW5BdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpyZXF1aXJlZEF0dHIs
IHZhbHVlKTsKLX0KLQogZ2xvbmcgd2Via2l0X2RvbV9odG1sX3NlbGVjdF9lbGVtZW50X2dldF9z
aXplKFdlYktpdERPTUhUTUxTZWxlY3RFbGVtZW50KiBzZWxmKQogewogICAgIFdlYkNvcmU6OkpT
TWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKQEAgLTY0MiwxNSArNTEzLDYgQEAgdm9pZCB3ZWJr
aXRfZG9tX2h0bWxfc2VsZWN0X2VsZW1lbnRfc2V0X2xlbmd0aChXZWJLaXRET01IVE1MU2VsZWN0
RWxlbWVudCogc2VsZiwKICAgICB9CiB9CiAKLVdlYktpdERPTUhUTUxDb2xsZWN0aW9uKiB3ZWJr
aXRfZG9tX2h0bWxfc2VsZWN0X2VsZW1lbnRfZ2V0X3NlbGVjdGVkX29wdGlvbnMoV2ViS2l0RE9N
SFRNTFNlbGVjdEVsZW1lbnQqIHNlbGYpCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVs
bFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfSFRN
TF9TRUxFQ1RfRUxFTUVOVChzZWxmKSwgMCk7Ci0gICAgV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1l
bnQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkhUTUxD
b2xsZWN0aW9uPiBnb2JqZWN0UmVzdWx0ID0gV1RGOjpnZXRQdHIoaXRlbS0+c2VsZWN0ZWRPcHRp
b25zKCkpOwotICAgIHJldHVybiBXZWJLaXQ6OmtpdChnb2JqZWN0UmVzdWx0LmdldCgpKTsKLX0K
LQogZ2xvbmcgd2Via2l0X2RvbV9odG1sX3NlbGVjdF9lbGVtZW50X2dldF9zZWxlY3RlZF9pbmRl
eChXZWJLaXRET01IVE1MU2VsZWN0RWxlbWVudCogc2VsZikKIHsKICAgICBXZWJDb3JlOjpKU01h
aW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CkBAIC02OTUsNTAgKzU1NywzIEBAIGdib29sZWFuIHdl
YmtpdF9kb21faHRtbF9zZWxlY3RfZWxlbWVudF9nZXRfd2lsbF92YWxpZGF0ZShXZWJLaXRET01I
VE1MU2VsZWN0RWxlCiAgICAgZ2Jvb2xlYW4gcmVzdWx0ID0gaXRlbS0+d2lsbFZhbGlkYXRlKCk7
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KLQotV2ViS2l0RE9NVmFsaWRpdHlTdGF0ZSogd2Via2l0
X2RvbV9odG1sX3NlbGVjdF9lbGVtZW50X2dldF92YWxpZGl0eShXZWJLaXRET01IVE1MU2VsZWN0
RWxlbWVudCogc2VsZikKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3Rh
dGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19IVE1MX1NFTEVDVF9F
TEVNRU5UKHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudCogaXRlbSA9
IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6VmFsaWRpdHlTdGF0ZT4g
Z29iamVjdFJlc3VsdCA9IFdURjo6Z2V0UHRyKGl0ZW0tPnZhbGlkaXR5KCkpOwotICAgIHJldHVy
biBXZWJLaXQ6OmtpdChnb2JqZWN0UmVzdWx0LmdldCgpKTsKLX0KLQotZ2NoYXIqIHdlYmtpdF9k
b21faHRtbF9zZWxlY3RfZWxlbWVudF9nZXRfdmFsaWRhdGlvbl9tZXNzYWdlKFdlYktpdERPTUhU
TUxTZWxlY3RFbGVtZW50KiBzZWxmKQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxT
dGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxf
U0VMRUNUX0VMRU1FTlQoc2VsZiksIDApOwotICAgIFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50
KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdjaGFyKiByZXN1bHQgPSBjb252ZXJ0
VG9VVEY4U3RyaW5nKGl0ZW0tPnZhbGlkYXRpb25NZXNzYWdlKCkpOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci0KLVdlYktpdERPTU5vZGVMaXN0KiB3ZWJraXRfZG9tX2h0bWxfc2VsZWN0X2VsZW1l
bnRfZ2V0X2xhYmVscyhXZWJLaXRET01IVE1MU2VsZWN0RWxlbWVudCogc2VsZikKLXsKLSAgICBX
ZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoV0VCS0lUX0RPTV9JU19IVE1MX1NFTEVDVF9FTEVNRU5UKHNlbGYpLCAwKTsKLSAgICBX
ZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAg
ICBSZWZQdHI8V2ViQ29yZTo6Tm9kZUxpc3Q+IGdvYmplY3RSZXN1bHQgPSBXVEY6OmdldFB0cihp
dGVtLT5sYWJlbHMoKSk7Ci0gICAgcmV0dXJuIFdlYktpdDo6a2l0KGdvYmplY3RSZXN1bHQuZ2V0
KCkpOwotfQotCi1nY2hhciogd2Via2l0X2RvbV9odG1sX3NlbGVjdF9lbGVtZW50X2dldF9hdXRv
Y29tcGxldGUoV2ViS2l0RE9NSFRNTFNlbGVjdEVsZW1lbnQqIHNlbGYpCi17Ci0gICAgV2ViQ29y
ZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWls
KFdFQktJVF9ET01fSVNfSFRNTF9TRUxFQ1RfRUxFTUVOVChzZWxmKSwgMCk7Ci0gICAgV2ViQ29y
ZTo6SFRNTFNlbGVjdEVsZW1lbnQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ2No
YXIqIHJlc3VsdCA9IGNvbnZlcnRUb1VURjhTdHJpbmcoaXRlbS0+YXV0b2NvbXBsZXRlKCkpOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXZvaWQgd2Via2l0X2RvbV9odG1sX3NlbGVjdF9lbGVt
ZW50X3NldF9hdXRvY29tcGxldGUoV2ViS2l0RE9NSFRNTFNlbGVjdEVsZW1lbnQqIHNlbGYsIGNv
bnN0IGdjaGFyKiB2YWx1ZSkKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUg
c3RhdGU7Ci0gICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxfU0VMRUNUX0VM
RU1FTlQoc2VsZikpOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwodmFsdWUpOwotICAgIFdlYkNvcmU6
OkhUTUxTZWxlY3RFbGVtZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIFdURjo6
U3RyaW5nIGNvbnZlcnRlZFZhbHVlID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KHZhbHVlKTsKLSAg
ICBpdGVtLT5zZXRBdXRvY29tcGxldGUoY29udmVydGVkVmFsdWUpOwotfQotCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dl
YktpdERPTUhUTUxTZWxlY3RFbGVtZW50VW5zdGFibGUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTFNlbGVjdEVsZW1l
bnRVbnN0YWJsZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OTE5YTEwLi4wMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0
ay9ET00vV2ViS2l0RE9NSFRNTFNlbGVjdEVsZW1lbnRVbnN0YWJsZS5oCisrKyAvZGV2L251bGwK
QEAgLTEsMTQxICswLDAgQEAKLS8qCi0gKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktp
dCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICogIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQg
YnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICogIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAq
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAq
ICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5k
ZWYgV2ViS2l0RE9NSFRNTFNlbGVjdEVsZW1lbnRVbnN0YWJsZV9oCi0jZGVmaW5lIFdlYktpdERP
TUhUTUxTZWxlY3RFbGVtZW50VW5zdGFibGVfaAotCi0jaWZkZWYgV0VCS0lUX0RPTV9VU0VfVU5T
VEFCTEVfQVBJCi0KLSNpbmNsdWRlIDx3ZWJraXRkb20vd2Via2l0ZG9tZGVmaW5lcy11bnN0YWJs
ZS5oPgotCi1HX0JFR0lOX0RFQ0xTCi0KLS8qKgotICogd2Via2l0X2RvbV9odG1sX3NlbGVjdF9l
bGVtZW50X2NoZWNrX3ZhbGlkaXR5OgotICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxTZWxlY3RF
bGVtZW50Ci0gKgotICogUmV0dXJuczogQSAjZ2Jvb2xlYW4KLSAqCi0gKiBTdGFiaWxpdHk6IFVu
c3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgZ2Jvb2xlYW4KLXdlYmtpdF9kb21faHRtbF9zZWxlY3Rf
ZWxlbWVudF9jaGVja192YWxpZGl0eShXZWJLaXRET01IVE1MU2VsZWN0RWxlbWVudCogc2VsZik7
Ci0KLS8qKgotICogd2Via2l0X2RvbV9odG1sX3NlbGVjdF9lbGVtZW50X3NldF9jdXN0b21fdmFs
aWRpdHk6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTFNlbGVjdEVsZW1lbnQKLSAqIEBlcnJv
cjogQSAjZ2NoYXIKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkg
dm9pZAotd2Via2l0X2RvbV9odG1sX3NlbGVjdF9lbGVtZW50X3NldF9jdXN0b21fdmFsaWRpdHko
V2ViS2l0RE9NSFRNTFNlbGVjdEVsZW1lbnQqIHNlbGYsIGNvbnN0IGdjaGFyKiBlcnJvcik7Ci0K
LS8qKgotICogd2Via2l0X2RvbV9odG1sX3NlbGVjdF9lbGVtZW50X2dldF9yZXF1aXJlZDoKLSAq
IEBzZWxmOiBBICNXZWJLaXRET01IVE1MU2VsZWN0RWxlbWVudAotICoKLSAqIFJldHVybnM6IEEg
I2dib29sZWFuCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIGdi
b29sZWFuCi13ZWJraXRfZG9tX2h0bWxfc2VsZWN0X2VsZW1lbnRfZ2V0X3JlcXVpcmVkKFdlYktp
dERPTUhUTUxTZWxlY3RFbGVtZW50KiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0bWxf
c2VsZWN0X2VsZW1lbnRfc2V0X3JlcXVpcmVkOgotICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxT
ZWxlY3RFbGVtZW50Ci0gKiBAdmFsdWU6IEEgI2dib29sZWFuCi0gKgotICogU3RhYmlsaXR5OiBV
bnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIHZvaWQKLXdlYmtpdF9kb21faHRtbF9zZWxlY3RfZWxl
bWVudF9zZXRfcmVxdWlyZWQoV2ViS2l0RE9NSFRNTFNlbGVjdEVsZW1lbnQqIHNlbGYsIGdib29s
ZWFuIHZhbHVlKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0bWxfc2VsZWN0X2VsZW1lbnRfZ2V0
X3NlbGVjdGVkX29wdGlvbnM6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTFNlbGVjdEVsZW1l
bnQKLSAqCi0gKiBSZXR1cm5zOiAodHJhbnNmZXIgZnVsbCk6IEEgI1dlYktpdERPTUhUTUxDb2xs
ZWN0aW9uCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIFdlYktp
dERPTUhUTUxDb2xsZWN0aW9uKgotd2Via2l0X2RvbV9odG1sX3NlbGVjdF9lbGVtZW50X2dldF9z
ZWxlY3RlZF9vcHRpb25zKFdlYktpdERPTUhUTUxTZWxlY3RFbGVtZW50KiBzZWxmKTsKLQotLyoq
Ci0gKiB3ZWJraXRfZG9tX2h0bWxfc2VsZWN0X2VsZW1lbnRfZ2V0X3ZhbGlkaXR5OgotICogQHNl
bGY6IEEgI1dlYktpdERPTUhUTUxTZWxlY3RFbGVtZW50Ci0gKgotICogUmV0dXJuczogKHRyYW5z
ZmVyIGZ1bGwpOiBBICNXZWJLaXRET01WYWxpZGl0eVN0YXRlCi0gKgotICogU3RhYmlsaXR5OiBV
bnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIFdlYktpdERPTVZhbGlkaXR5U3RhdGUqCi13ZWJraXRf
ZG9tX2h0bWxfc2VsZWN0X2VsZW1lbnRfZ2V0X3ZhbGlkaXR5KFdlYktpdERPTUhUTUxTZWxlY3RF
bGVtZW50KiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0bWxfc2VsZWN0X2VsZW1lbnRf
Z2V0X3ZhbGlkYXRpb25fbWVzc2FnZToKLSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MU2VsZWN0
RWxlbWVudAotICoKLSAqIFJldHVybnM6IEEgI2djaGFyCi0gKgotICogU3RhYmlsaXR5OiBVbnN0
YWJsZQotKiovCi1XRUJLSVRfQVBJIGdjaGFyKgotd2Via2l0X2RvbV9odG1sX3NlbGVjdF9lbGVt
ZW50X2dldF92YWxpZGF0aW9uX21lc3NhZ2UoV2ViS2l0RE9NSFRNTFNlbGVjdEVsZW1lbnQqIHNl
bGYpOwotCi0vKioKLSAqIHdlYmtpdF9kb21faHRtbF9zZWxlY3RfZWxlbWVudF9nZXRfbGFiZWxz
OgotICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxTZWxlY3RFbGVtZW50Ci0gKgotICogUmV0dXJu
czogKHRyYW5zZmVyIGZ1bGwpOiBBICNXZWJLaXRET01Ob2RlTGlzdAotICoKLSAqIFN0YWJpbGl0
eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSBXZWJLaXRET01Ob2RlTGlzdCoKLXdlYmtpdF9k
b21faHRtbF9zZWxlY3RfZWxlbWVudF9nZXRfbGFiZWxzKFdlYktpdERPTUhUTUxTZWxlY3RFbGVt
ZW50KiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0bWxfc2VsZWN0X2VsZW1lbnRfZ2V0
X2F1dG9jb21wbGV0ZToKLSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MU2VsZWN0RWxlbWVudAot
ICoKLSAqIFJldHVybnM6IEEgI2djaGFyCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiov
Ci1XRUJLSVRfQVBJIGdjaGFyKgotd2Via2l0X2RvbV9odG1sX3NlbGVjdF9lbGVtZW50X2dldF9h
dXRvY29tcGxldGUoV2ViS2l0RE9NSFRNTFNlbGVjdEVsZW1lbnQqIHNlbGYpOwotCi0vKioKLSAq
IHdlYmtpdF9kb21faHRtbF9zZWxlY3RfZWxlbWVudF9zZXRfYXV0b2NvbXBsZXRlOgotICogQHNl
bGY6IEEgI1dlYktpdERPTUhUTUxTZWxlY3RFbGVtZW50Ci0gKiBAdmFsdWU6IEEgI2djaGFyCi0g
KgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIHZvaWQKLXdlYmtpdF9k
b21faHRtbF9zZWxlY3RfZWxlbWVudF9zZXRfYXV0b2NvbXBsZXRlKFdlYktpdERPTUhUTUxTZWxl
Y3RFbGVtZW50KiBzZWxmLCBjb25zdCBnY2hhciogdmFsdWUpOwotCi0KLUdfRU5EX0RFQ0xTCi0K
LSNlbmRpZiAvKiBXRUJLSVRfRE9NX1VTRV9VTlNUQUJMRV9BUEkgKi8KLSNlbmRpZiAvKiBXZWJL
aXRET01IVE1MU2VsZWN0RWxlbWVudFVuc3RhYmxlX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRN
TFN0eWxlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxTdHlsZUVsZW1lbnQuY3BwCmluZGV4IDRkYzMw
MTkuLjgzOWZlMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTFN0eWxlRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJL
aXRET01IVE1MU3R5bGVFbGVtZW50LmNwcApAQCAtMzYsNyArMzYsNiBAQAogI2luY2x1ZGUgIldl
YktpdERPTVByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRET01TdHlsZVNoZWV0UHJpdmF0ZS5o
IgogI2luY2x1ZGUgIkNvbnZlcnRUb1VURjhTdHJpbmcuaCIKLSNpbmNsdWRlICJXZWJLaXRET01I
VE1MU3R5bGVFbGVtZW50VW5zdGFibGUuaCIKICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgogCkBAIC0xMDMsNyArMTAyLDYgQEAgZW51bSB7CiAgICAgUFJP
UF9NRURJQSwKICAgICBQUk9QX1RZUEUsCiAgICAgUFJPUF9TSEVFVCwKLSAgICBQUk9QX05PTkNF
LAogfTsKIAogc3RhdGljIHZvaWQgd2Via2l0X2RvbV9odG1sX3N0eWxlX2VsZW1lbnRfc2V0X3By
b3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcGVydHlJZCwgY29uc3QgR1ZhbHVlKiB2
YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpCkBAIC0xMjAsOSArMTE4LDYgQEAgc3RhdGljIHZvaWQg
d2Via2l0X2RvbV9odG1sX3N0eWxlX2VsZW1lbnRfc2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVj
dCwgZ3VpbnQgcHIKICAgICBjYXNlIFBST1BfVFlQRToKICAgICAgICAgd2Via2l0X2RvbV9odG1s
X3N0eWxlX2VsZW1lbnRfc2V0X3R5cGVfYXR0cihzZWxmLCBnX3ZhbHVlX2dldF9zdHJpbmcodmFs
dWUpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX05PTkNFOgotICAgICAgICB3ZWJr
aXRfZG9tX2h0bWxfc3R5bGVfZWxlbWVudF9zZXRfbm9uY2Uoc2VsZiwgZ192YWx1ZV9nZXRfc3Ry
aW5nKHZhbHVlKSk7Ci0gICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEdfT0JK
RUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BlcnR5SWQsIHBzcGVjKTsK
ICAgICAgICAgYnJlYWs7CkBAIC0xNDYsOSArMTQxLDYgQEAgc3RhdGljIHZvaWQgd2Via2l0X2Rv
bV9odG1sX3N0eWxlX2VsZW1lbnRfZ2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQg
cHIKICAgICBjYXNlIFBST1BfU0hFRVQ6CiAgICAgICAgIGdfdmFsdWVfc2V0X29iamVjdCh2YWx1
ZSwgd2Via2l0X2RvbV9odG1sX3N0eWxlX2VsZW1lbnRfZ2V0X3NoZWV0KHNlbGYpKTsKICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX05PTkNFOgotICAgICAgICBnX3ZhbHVlX3Rha2Vfc3Ry
aW5nKHZhbHVlLCB3ZWJraXRfZG9tX2h0bWxfc3R5bGVfZWxlbWVudF9nZXRfbm9uY2Uoc2VsZikp
OwotICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBHX09CSkVDVF9XQVJOX0lO
VkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wZXJ0eUlkLCBwc3BlYyk7CiAgICAgICAgIGJy
ZWFrOwpAQCAtMjAwLDE3ICsxOTIsNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX2h0bWxfc3R5
bGVfZWxlbWVudF9jbGFzc19pbml0KFdlYktpdERPTUhUTUxTdHlsZUVsZW1lbnRDbAogICAgICAg
ICAgICAgInJlYWQtb25seSBXZWJLaXRET01TdHlsZVNoZWV0KiBIVE1MU3R5bGVFbGVtZW50OnNo
ZWV0IiwKICAgICAgICAgICAgIFdFQktJVF9ET01fVFlQRV9TVFlMRV9TSEVFVCwKICAgICAgICAg
ICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSkpOwotCi0gICAgZ19vYmplY3RfY2xhc3NfaW5zdGFs
bF9wcm9wZXJ0eSgKLSAgICAgICAgZ29iamVjdENsYXNzLAotICAgICAgICBQUk9QX05PTkNFLAot
ICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nKAotICAgICAgICAgICAgIm5vbmNlIiwKLSAgICAg
ICAgICAgICJIVE1MU3R5bGVFbGVtZW50Om5vbmNlIiwKLSAgICAgICAgICAgICJyZWFkLXdyaXRl
IGdjaGFyKiBIVE1MU3R5bGVFbGVtZW50Om5vbmNlIiwKLSAgICAgICAgICAgICIiLAotICAgICAg
ICAgICAgV0VCS0lUX1BBUkFNX1JFQURXUklURSkpOwotCiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtp
dF9kb21faHRtbF9zdHlsZV9lbGVtZW50X2luaXQoV2ViS2l0RE9NSFRNTFN0eWxlRWxlbWVudCog
cmVxdWVzdCkKQEAgLTI4MSwyMyArMjYyLDMgQEAgV2ViS2l0RE9NU3R5bGVTaGVldCogd2Via2l0
X2RvbV9odG1sX3N0eWxlX2VsZW1lbnRfZ2V0X3NoZWV0KFdlYktpdERPTUhUTUxTdHlsZUUKICAg
ICBSZWZQdHI8V2ViQ29yZTo6U3R5bGVTaGVldD4gZ29iamVjdFJlc3VsdCA9IFdURjo6Z2V0UHRy
KGl0ZW0tPnNoZWV0KCkpOwogICAgIHJldHVybiBXZWJLaXQ6OmtpdChnb2JqZWN0UmVzdWx0Lmdl
dCgpKTsKIH0KLQotZ2NoYXIqIHdlYmtpdF9kb21faHRtbF9zdHlsZV9lbGVtZW50X2dldF9ub25j
ZShXZWJLaXRET01IVE1MU3R5bGVFbGVtZW50KiBzZWxmKQotewotICAgIFdlYkNvcmU6OkpTTWFp
blRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRf
RE9NX0lTX0hUTUxfU1RZTEVfRUxFTUVOVChzZWxmKSwgMCk7Ci0gICAgV2ViQ29yZTo6SFRNTFN0
eWxlRWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBnY2hhciogcmVzdWx0
ID0gY29udmVydFRvVVRGOFN0cmluZyhpdGVtLT5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKFdlYkNvcmU6OkhUTUxOYW1lczo6bm9uY2VBdHRyKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfc3R5bGVfZWxlbWVudF9zZXRfbm9uY2UoV2ViS2l0
RE9NSFRNTFN0eWxlRWxlbWVudCogc2VsZiwgY29uc3QgZ2NoYXIqIHZhbHVlKQotewotICAgIFdl
YkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl9pZl9mYWls
KFdFQktJVF9ET01fSVNfSFRNTF9TVFlMRV9FTEVNRU5UKHNlbGYpKTsKLSAgICBnX3JldHVybl9p
Zl9mYWlsKHZhbHVlKTsKLSAgICBXZWJDb3JlOjpIVE1MU3R5bGVFbGVtZW50KiBpdGVtID0gV2Vi
S2l0Ojpjb3JlKHNlbGYpOwotICAgIFdURjo6U3RyaW5nIGNvbnZlcnRlZFZhbHVlID0gV1RGOjpT
dHJpbmc6OmZyb21VVEY4KHZhbHVlKTsKLSAgICBpdGVtLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3lu
Y2hyb25pemF0aW9uKFdlYkNvcmU6OkhUTUxOYW1lczo6bm9uY2VBdHRyLCBjb252ZXJ0ZWRWYWx1
ZSk7Ci19Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTFN0eWxlRWxlbWVudFVuc3RhYmxlLmggYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktp
dERPTUhUTUxTdHlsZUVsZW1lbnRVbnN0YWJsZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA2NWE2MzM3Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTFN0eWxlRWxlbWVudFVuc3RhYmxl
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi0vKgotICogIFRoaXMgZmlsZSBpcyBw
YXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAqICBUaGlzIGZpbGUgaGFz
IGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQot
ICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KLSAqLwotCi0jaWZuZGVmIFdlYktpdERPTUhUTUxTdHlsZUVsZW1lbnRVbnN0YWJsZV9oCi0j
ZGVmaW5lIFdlYktpdERPTUhUTUxTdHlsZUVsZW1lbnRVbnN0YWJsZV9oCi0KLSNpZmRlZiBXRUJL
SVRfRE9NX1VTRV9VTlNUQUJMRV9BUEkKLQotI2luY2x1ZGUgPHdlYmtpdGRvbS93ZWJraXRkb21k
ZWZpbmVzLXVuc3RhYmxlLmg+Ci0KLUdfQkVHSU5fREVDTFMKLQotLyoqCi0gKiB3ZWJraXRfZG9t
X2h0bWxfc3R5bGVfZWxlbWVudF9nZXRfbm9uY2U6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRN
TFN0eWxlRWxlbWVudAotICoKLSAqIFJldHVybnM6IEEgI2djaGFyCi0gKgotICogU3RhYmlsaXR5
OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIGdjaGFyKgotd2Via2l0X2RvbV9odG1sX3N0eWxl
X2VsZW1lbnRfZ2V0X25vbmNlKFdlYktpdERPTUhUTUxTdHlsZUVsZW1lbnQqIHNlbGYpOwotCi0v
KioKLSAqIHdlYmtpdF9kb21faHRtbF9zdHlsZV9lbGVtZW50X3NldF9ub25jZToKLSAqIEBzZWxm
OiBBICNXZWJLaXRET01IVE1MU3R5bGVFbGVtZW50Ci0gKiBAdmFsdWU6IEEgI2djaGFyCi0gKgot
ICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIHZvaWQKLXdlYmtpdF9kb21f
aHRtbF9zdHlsZV9lbGVtZW50X3NldF9ub25jZShXZWJLaXRET01IVE1MU3R5bGVFbGVtZW50KiBz
ZWxmLCBjb25zdCBnY2hhciogdmFsdWUpOwotCi0KLUdfRU5EX0RFQ0xTCi0KLSNlbmRpZiAvKiBX
RUJLSVRfRE9NX1VTRV9VTlNUQUJMRV9BUEkgKi8KLSNlbmRpZiAvKiBXZWJLaXRET01IVE1MU3R5
bGVFbGVtZW50VW5zdGFibGVfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MVGFibGVFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9E
T00vV2ViS2l0RE9NSFRNTFRhYmxlRWxlbWVudC5jcHAKaW5kZXggMzZiMTg0My4uZmRkMDk4MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z3RrL0RPTS9XZWJLaXRET01IVE1MVGFibGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxUYWJs
ZUVsZW1lbnQuY3BwCkBAIC0zOSw3ICszOSw2IEBACiAjaW5jbHVkZSAiV2ViS2l0RE9NTm9kZVBy
aXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRET01Qcml2YXRlLmgiCiAjaW5jbHVkZSAiQ29udmVy
dFRvVVRGOFN0cmluZy5oIgotI2luY2x1ZGUgIldlYktpdERPTUhUTUxUYWJsZUVsZW1lbnRVbnN0
YWJsZS5oIgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CiAKQEAgLTExMiw3ICsxMTEsNiBAQCBlbnVtIHsKICAgICBQUk9QX0JPUkRFUiwKICAgICBQUk9Q
X0NFTExfUEFERElORywKICAgICBQUk9QX0NFTExfU1BBQ0lORywKLSAgICBQUk9QX0ZSQU1FLAog
ICAgIFBST1BfUlVMRVMsCiAgICAgUFJPUF9TVU1NQVJZLAogICAgIFBST1BfV0lEVEgsCkBAIC0x
MzgsOSArMTM2LDYgQEAgc3RhdGljIHZvaWQgd2Via2l0X2RvbV9odG1sX3RhYmxlX2VsZW1lbnRf
c2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHIKICAgICBjYXNlIFBST1BfQ0VM
TF9TUEFDSU5HOgogICAgICAgICB3ZWJraXRfZG9tX2h0bWxfdGFibGVfZWxlbWVudF9zZXRfY2Vs
bF9zcGFjaW5nKHNlbGYsIGdfdmFsdWVfZ2V0X3N0cmluZyh2YWx1ZSkpOwogICAgICAgICBicmVh
azsKLSAgICBjYXNlIFBST1BfRlJBTUU6Ci0gICAgICAgIHdlYmtpdF9kb21faHRtbF90YWJsZV9l
bGVtZW50X3NldF9mcmFtZShzZWxmLCBnX3ZhbHVlX2dldF9zdHJpbmcodmFsdWUpKTsKLSAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBQUk9QX1JVTEVTOgogICAgICAgICB3ZWJraXRfZG9tX2h0bWxf
dGFibGVfZWxlbWVudF9zZXRfcnVsZXMoc2VsZiwgZ192YWx1ZV9nZXRfc3RyaW5nKHZhbHVlKSk7
CiAgICAgICAgIGJyZWFrOwpAQCAtMTkxLDkgKzE4Niw2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9k
b21faHRtbF90YWJsZV9lbGVtZW50X2dldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50
IHByCiAgICAgY2FzZSBQUk9QX0NFTExfU1BBQ0lORzoKICAgICAgICAgZ192YWx1ZV90YWtlX3N0
cmluZyh2YWx1ZSwgd2Via2l0X2RvbV9odG1sX3RhYmxlX2VsZW1lbnRfZ2V0X2NlbGxfc3BhY2lu
ZyhzZWxmKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9GUkFNRToKLSAgICAgICAg
Z192YWx1ZV90YWtlX3N0cmluZyh2YWx1ZSwgd2Via2l0X2RvbV9odG1sX3RhYmxlX2VsZW1lbnRf
Z2V0X2ZyYW1lKHNlbGYpKTsKLSAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9QX1JVTEVTOgog
ICAgICAgICBnX3ZhbHVlX3Rha2Vfc3RyaW5nKHZhbHVlLCB3ZWJraXRfZG9tX2h0bWxfdGFibGVf
ZWxlbWVudF9nZXRfcnVsZXMoc2VsZikpOwogICAgICAgICBicmVhazsKQEAgLTMxNywxNiArMzA5
LDYgQEAgc3RhdGljIHZvaWQgd2Via2l0X2RvbV9odG1sX3RhYmxlX2VsZW1lbnRfY2xhc3NfaW5p
dChXZWJLaXRET01IVE1MVGFibGVFbGVtZW50Q2wKIAogICAgIGdfb2JqZWN0X2NsYXNzX2luc3Rh
bGxfcHJvcGVydHkoCiAgICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9GUkFNRSwK
LSAgICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZygKLSAgICAgICAgICAgICJmcmFtZSIsCi0gICAg
ICAgICAgICAiSFRNTFRhYmxlRWxlbWVudDpmcmFtZSIsCi0gICAgICAgICAgICAicmVhZC13cml0
ZSBnY2hhciogSFRNTFRhYmxlRWxlbWVudDpmcmFtZSIsCi0gICAgICAgICAgICAiIiwKLSAgICAg
ICAgICAgIFdFQktJVF9QQVJBTV9SRUFEV1JJVEUpKTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2lu
c3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKICAgICAgICAgUFJPUF9SVUxF
UywKICAgICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZygKICAgICAgICAgICAgICJydWxlcyIsCkBA
IC0zOTYsMTUgKzM3OCw2IEBAIHZvaWQgd2Via2l0X2RvbV9odG1sX3RhYmxlX2VsZW1lbnRfZGVs
ZXRlX3RfZm9vdChXZWJLaXRET01IVE1MVGFibGVFbGVtZW50KiBzZWxmCiAgICAgaXRlbS0+ZGVs
ZXRlVEZvb3QoKTsKIH0KIAotV2ViS2l0RE9NSFRNTEVsZW1lbnQqIHdlYmtpdF9kb21faHRtbF90
YWJsZV9lbGVtZW50X2NyZWF0ZV90X2JvZHkoV2ViS2l0RE9NSFRNTFRhYmxlRWxlbWVudCogc2Vs
ZikKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19IVE1MX1RBQkxFX0VMRU1FTlQoc2VsZiks
IDApOwotICAgIFdlYkNvcmU6OkhUTUxUYWJsZUVsZW1lbnQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUo
c2VsZik7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkhUTUxFbGVtZW50PiBnb2JqZWN0UmVzdWx0ID0g
V1RGOjpnZXRQdHIoaXRlbS0+Y3JlYXRlVEJvZHkoKSk7Ci0gICAgcmV0dXJuIFdlYktpdDo6a2l0
KGdvYmplY3RSZXN1bHQuZ2V0KCkpOwotfQotCiBXZWJLaXRET01IVE1MRWxlbWVudCogd2Via2l0
X2RvbV9odG1sX3RhYmxlX2VsZW1lbnRfY3JlYXRlX2NhcHRpb24oV2ViS2l0RE9NSFRNTFRhYmxl
RWxlbWVudCogc2VsZikKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3Rh
dGU7CkBAIC02MzksMjUgKzYxMiw2IEBAIHZvaWQgd2Via2l0X2RvbV9odG1sX3RhYmxlX2VsZW1l
bnRfc2V0X2NlbGxfc3BhY2luZyhXZWJLaXRET01IVE1MVGFibGVFbGVtZW50KiBzCiAgICAgaXRl
bS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihXZWJDb3JlOjpIVE1MTmFtZXM6
OmNlbGxzcGFjaW5nQXR0ciwgY29udmVydGVkVmFsdWUpOwogfQogCi1nY2hhciogd2Via2l0X2Rv
bV9odG1sX3RhYmxlX2VsZW1lbnRfZ2V0X2ZyYW1lKFdlYktpdERPTUhUTUxUYWJsZUVsZW1lbnQq
IHNlbGYpCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAg
IGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfSFRNTF9UQUJMRV9FTEVNRU5UKHNl
bGYpLCAwKTsKLSAgICBXZWJDb3JlOjpIVE1MVGFibGVFbGVtZW50KiBpdGVtID0gV2ViS2l0Ojpj
b3JlKHNlbGYpOwotICAgIGdjaGFyKiByZXN1bHQgPSBjb252ZXJ0VG9VVEY4U3RyaW5nKGl0ZW0t
PmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oV2ViQ29yZTo6SFRNTE5hbWVzOjpmcmFt
ZUF0dHIpKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi12b2lkIHdlYmtpdF9kb21faHRtbF90
YWJsZV9lbGVtZW50X3NldF9mcmFtZShXZWJLaXRET01IVE1MVGFibGVFbGVtZW50KiBzZWxmLCBj
b25zdCBnY2hhciogdmFsdWUpCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRl
IHN0YXRlOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19IVE1MX1RBQkxFX0VM
RU1FTlQoc2VsZikpOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwodmFsdWUpOwotICAgIFdlYkNvcmU6
OkhUTUxUYWJsZUVsZW1lbnQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgV1RGOjpT
dHJpbmcgY29udmVydGVkVmFsdWUgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgodmFsdWUpOwotICAg
IGl0ZW0tPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oV2ViQ29yZTo6SFRNTE5h
bWVzOjpmcmFtZUF0dHIsIGNvbnZlcnRlZFZhbHVlKTsKLX0KLQogZ2NoYXIqIHdlYmtpdF9kb21f
aHRtbF90YWJsZV9lbGVtZW50X2dldF9ydWxlcyhXZWJLaXRET01IVE1MVGFibGVFbGVtZW50KiBz
ZWxmKQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9E
T00vV2ViS2l0RE9NSFRNTFRhYmxlRWxlbWVudFVuc3RhYmxlLmggYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxUYWJsZUVs
ZW1lbnRVbnN0YWJsZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYWU5ZDRmLi4w
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2d0ay9ET00vV2ViS2l0RE9NSFRNTFRhYmxlRWxlbWVudFVuc3RhYmxlLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw2NiArMCwwIEBACi0vKgotICogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJL
aXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAqICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVk
IGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQotICoKLSAqICBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0g
KiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0g
KiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiAg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKLSAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaWZu
ZGVmIFdlYktpdERPTUhUTUxUYWJsZUVsZW1lbnRVbnN0YWJsZV9oCi0jZGVmaW5lIFdlYktpdERP
TUhUTUxUYWJsZUVsZW1lbnRVbnN0YWJsZV9oCi0KLSNpZmRlZiBXRUJLSVRfRE9NX1VTRV9VTlNU
QUJMRV9BUEkKLQotI2luY2x1ZGUgPHdlYmtpdGRvbS93ZWJraXRkb21kZWZpbmVzLXVuc3RhYmxl
Lmg+Ci0KLUdfQkVHSU5fREVDTFMKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0bWxfdGFibGVfZWxl
bWVudF9jcmVhdGVfdF9ib2R5OgotICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxUYWJsZUVsZW1l
bnQKLSAqCi0gKiBSZXR1cm5zOiAodHJhbnNmZXIgbm9uZSk6IEEgI1dlYktpdERPTUhUTUxFbGVt
ZW50Ci0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIFdlYktpdERP
TUhUTUxFbGVtZW50Kgotd2Via2l0X2RvbV9odG1sX3RhYmxlX2VsZW1lbnRfY3JlYXRlX3RfYm9k
eShXZWJLaXRET01IVE1MVGFibGVFbGVtZW50KiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9t
X2h0bWxfdGFibGVfZWxlbWVudF9nZXRfZnJhbWU6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRN
TFRhYmxlRWxlbWVudAotICoKLSAqIFJldHVybnM6IEEgI2djaGFyCi0gKgotICogU3RhYmlsaXR5
OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIGdjaGFyKgotd2Via2l0X2RvbV9odG1sX3RhYmxl
X2VsZW1lbnRfZ2V0X2ZyYW1lKFdlYktpdERPTUhUTUxUYWJsZUVsZW1lbnQqIHNlbGYpOwotCi0v
KioKLSAqIHdlYmtpdF9kb21faHRtbF90YWJsZV9lbGVtZW50X3NldF9mcmFtZToKLSAqIEBzZWxm
OiBBICNXZWJLaXRET01IVE1MVGFibGVFbGVtZW50Ci0gKiBAdmFsdWU6IEEgI2djaGFyCi0gKgot
ICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIHZvaWQKLXdlYmtpdF9kb21f
aHRtbF90YWJsZV9lbGVtZW50X3NldF9mcmFtZShXZWJLaXRET01IVE1MVGFibGVFbGVtZW50KiBz
ZWxmLCBjb25zdCBnY2hhciogdmFsdWUpOwotCi0KLUdfRU5EX0RFQ0xTCi0KLSNlbmRpZiAvKiBX
RUJLSVRfRE9NX1VTRV9VTlNUQUJMRV9BUEkgKi8KLSNlbmRpZiAvKiBXZWJLaXRET01IVE1MVGFi
bGVFbGVtZW50VW5zdGFibGVfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MVGV4dEFyZWFFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0
ay9ET00vV2ViS2l0RE9NSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKaW5kZXggOTYzMGJhMi4uYTFk
YjU3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERP
TUhUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCkBAIC0zNiw5ICszNiw3IEBACiAjaW5jbHVkZSAiV2Vi
S2l0RE9NTm9kZUxpc3RQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0RE9NTm9kZVByaXZhdGUu
aCIKICNpbmNsdWRlICJXZWJLaXRET01Qcml2YXRlLmgiCi0jaW5jbHVkZSAiV2ViS2l0RE9NVmFs
aWRpdHlTdGF0ZVByaXZhdGUuaCIKICNpbmNsdWRlICJDb252ZXJ0VG9VVEY4U3RyaW5nLmgiCi0j
aW5jbHVkZSAiV2ViS2l0RE9NSFRNTFRleHRBcmVhRWxlbWVudFVuc3RhYmxlLmgiCiAjaW5jbHVk
ZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApAQCAtMTAyLDMxICsx
MDAsMTggQEAgR19ERUZJTkVfVFlQRV9XSVRIX0NPREUoV2ViS2l0RE9NSFRNTFRleHRBcmVhRWxl
bWVudCwgd2Via2l0X2RvbV9odG1sX3RleHRfYXJlYV8KIGVudW0gewogICAgIFBST1BfMCwKICAg
ICBQUk9QX0FVVE9GT0NVUywKLSAgICBQUk9QX0RJUl9OQU1FLAogICAgIFBST1BfRElTQUJMRUQs
CiAgICAgUFJPUF9GT1JNLAotICAgIFBST1BfTUFYX0xFTkdUSCwKICAgICBQUk9QX05BTUUsCi0g
ICAgUFJPUF9QTEFDRUhPTERFUiwKICAgICBQUk9QX1JFQURfT05MWSwKLSAgICBQUk9QX1JFUVVJ
UkVELAogICAgIFBST1BfUk9XUywKICAgICBQUk9QX0NPTFMsCi0gICAgUFJPUF9XUkFQLAogICAg
IFBST1BfVFlQRSwKICAgICBQUk9QX0RFRkFVTFRfVkFMVUUsCiAgICAgUFJPUF9WQUxVRSwKLSAg
ICBQUk9QX1RFWFRfTEVOR1RILAogICAgIFBST1BfV0lMTF9WQUxJREFURSwKLSAgICBQUk9QX1ZB
TElESVRZLAotICAgIFBST1BfVkFMSURBVElPTl9NRVNTQUdFLAotICAgIFBST1BfTEFCRUxTLAog
ICAgIFBST1BfU0VMRUNUSU9OX1NUQVJULAogICAgIFBST1BfU0VMRUNUSU9OX0VORCwKLSAgICBQ
Uk9QX1NFTEVDVElPTl9ESVJFQ1RJT04sCi0gICAgUFJPUF9BVVRPQ09SUkVDVCwKLSAgICBQUk9Q
X0FVVE9DQVBJVEFMSVpFLAotICAgIFBST1BfQVVUT0NPTVBMRVRFLAogfTsKIAogc3RhdGljIHZv
aWQgd2Via2l0X2RvbV9odG1sX3RleHRfYXJlYV9lbGVtZW50X3NldF9wcm9wZXJ0eShHT2JqZWN0
KiBvYmplY3QsIGd1aW50IHByb3BlcnR5SWQsIGNvbnN0IEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNw
ZWMqIHBzcGVjKQpAQCAtMTM3LDM2ICsxMjIsMjEgQEAgc3RhdGljIHZvaWQgd2Via2l0X2RvbV9o
dG1sX3RleHRfYXJlYV9lbGVtZW50X3NldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW4K
ICAgICBjYXNlIFBST1BfQVVUT0ZPQ1VTOgogICAgICAgICB3ZWJraXRfZG9tX2h0bWxfdGV4dF9h
cmVhX2VsZW1lbnRfc2V0X2F1dG9mb2N1cyhzZWxmLCBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVl
KSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9ESVJfTkFNRToKLSAgICAgICAgd2Vi
a2l0X2RvbV9odG1sX3RleHRfYXJlYV9lbGVtZW50X3NldF9kaXJfbmFtZShzZWxmLCBnX3ZhbHVl
X2dldF9zdHJpbmcodmFsdWUpKTsKLSAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9QX0RJU0FC
TEVEOgogICAgICAgICB3ZWJraXRfZG9tX2h0bWxfdGV4dF9hcmVhX2VsZW1lbnRfc2V0X2Rpc2Fi
bGVkKHNlbGYsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKICAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBQUk9QX01BWF9MRU5HVEg6Ci0gICAgICAgIHdlYmtpdF9kb21faHRtbF90ZXh0X2Fy
ZWFfZWxlbWVudF9zZXRfbWF4X2xlbmd0aChzZWxmLCBnX3ZhbHVlX2dldF9sb25nKHZhbHVlKSwg
bnVsbHB0cik7Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJPUF9OQU1FOgogICAgICAgICB3
ZWJraXRfZG9tX2h0bWxfdGV4dF9hcmVhX2VsZW1lbnRfc2V0X25hbWUoc2VsZiwgZ192YWx1ZV9n
ZXRfc3RyaW5nKHZhbHVlKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9QTEFDRUhP
TERFUjoKLSAgICAgICAgd2Via2l0X2RvbV9odG1sX3RleHRfYXJlYV9lbGVtZW50X3NldF9wbGFj
ZWhvbGRlcihzZWxmLCBnX3ZhbHVlX2dldF9zdHJpbmcodmFsdWUpKTsKLSAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBQUk9QX1JFQURfT05MWToKICAgICAgICAgd2Via2l0X2RvbV9odG1sX3RleHRf
YXJlYV9lbGVtZW50X3NldF9yZWFkX29ubHkoc2VsZiwgZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1
ZSkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfUkVRVUlSRUQ6Ci0gICAgICAgIHdl
YmtpdF9kb21faHRtbF90ZXh0X2FyZWFfZWxlbWVudF9zZXRfcmVxdWlyZWQoc2VsZiwgZ192YWx1
ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOwotICAgICAgICBicmVhazsKICAgICBjYXNlIFBST1BfUk9X
UzoKICAgICAgICAgd2Via2l0X2RvbV9odG1sX3RleHRfYXJlYV9lbGVtZW50X3NldF9yb3dzKHNl
bGYsIGdfdmFsdWVfZ2V0X2xvbmcodmFsdWUpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQ
Uk9QX0NPTFM6CiAgICAgICAgIHdlYmtpdF9kb21faHRtbF90ZXh0X2FyZWFfZWxlbWVudF9zZXRf
Y29scyhzZWxmLCBnX3ZhbHVlX2dldF9sb25nKHZhbHVlKSk7CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgUFJPUF9XUkFQOgotICAgICAgICB3ZWJraXRfZG9tX2h0bWxfdGV4dF9hcmVhX2VsZW1l
bnRfc2V0X3dyYXAoc2VsZiwgZ192YWx1ZV9nZXRfc3RyaW5nKHZhbHVlKSk7Ci0gICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgUFJPUF9ERUZBVUxUX1ZBTFVFOgogICAgICAgICB3ZWJraXRfZG9tX2h0
bWxfdGV4dF9hcmVhX2VsZW1lbnRfc2V0X2RlZmF1bHRfdmFsdWUoc2VsZiwgZ192YWx1ZV9nZXRf
c3RyaW5nKHZhbHVlKSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTc5LDE4ICsxNDksNiBAQCBzdGF0
aWMgdm9pZCB3ZWJraXRfZG9tX2h0bWxfdGV4dF9hcmVhX2VsZW1lbnRfc2V0X3Byb3BlcnR5KEdP
YmplY3QqIG9iamVjdCwgZ3VpbgogICAgIGNhc2UgUFJPUF9TRUxFQ1RJT05fRU5EOgogICAgICAg
ICB3ZWJraXRfZG9tX2h0bWxfdGV4dF9hcmVhX2VsZW1lbnRfc2V0X3NlbGVjdGlvbl9lbmQoc2Vs
ZiwgZ192YWx1ZV9nZXRfbG9uZyh2YWx1ZSkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFBS
T1BfU0VMRUNUSU9OX0RJUkVDVElPTjoKLSAgICAgICAgd2Via2l0X2RvbV9odG1sX3RleHRfYXJl
YV9lbGVtZW50X3NldF9zZWxlY3Rpb25fZGlyZWN0aW9uKHNlbGYsIGdfdmFsdWVfZ2V0X3N0cmlu
Zyh2YWx1ZSkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfQVVUT0NPUlJFQ1Q6Ci0g
ICAgICAgIHdlYmtpdF9kb21faHRtbF90ZXh0X2FyZWFfZWxlbWVudF9zZXRfYXV0b2NvcnJlY3Qo
c2VsZiwgZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIFBST1BfQVVUT0NBUElUQUxJWkU6Ci0gICAgICAgIHdlYmtpdF9kb21faHRtbF90ZXh0X2Fy
ZWFfZWxlbWVudF9zZXRfYXV0b2NhcGl0YWxpemUoc2VsZiwgZ192YWx1ZV9nZXRfc3RyaW5nKHZh
bHVlKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9BVVRPQ09NUExFVEU6Ci0gICAg
ICAgIHdlYmtpdF9kb21faHRtbF90ZXh0X2FyZWFfZWxlbWVudF9zZXRfYXV0b2NvbXBsZXRlKHNl
bGYsIGdfdmFsdWVfZ2V0X3N0cmluZyh2YWx1ZSkpOwotICAgICAgICBicmVhazsKICAgICBkZWZh
dWx0OgogICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBw
cm9wZXJ0eUlkLCBwc3BlYyk7CiAgICAgICAgIGJyZWFrOwpAQCAtMjA1LDM5ICsxNjMsMjQgQEAg
c3RhdGljIHZvaWQgd2Via2l0X2RvbV9odG1sX3RleHRfYXJlYV9lbGVtZW50X2dldF9wcm9wZXJ0
eShHT2JqZWN0KiBvYmplY3QsIGd1aW4KICAgICBjYXNlIFBST1BfQVVUT0ZPQ1VTOgogICAgICAg
ICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfZG9tX2h0bWxfdGV4dF9hcmVhX2Vs
ZW1lbnRfZ2V0X2F1dG9mb2N1cyhzZWxmKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJP
UF9ESVJfTkFNRToKLSAgICAgICAgZ192YWx1ZV90YWtlX3N0cmluZyh2YWx1ZSwgd2Via2l0X2Rv
bV9odG1sX3RleHRfYXJlYV9lbGVtZW50X2dldF9kaXJfbmFtZShzZWxmKSk7Ci0gICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgUFJPUF9ESVNBQkxFRDoKICAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVh
bih2YWx1ZSwgd2Via2l0X2RvbV9odG1sX3RleHRfYXJlYV9lbGVtZW50X2dldF9kaXNhYmxlZChz
ZWxmKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJPUF9GT1JNOgogICAgICAgICBnX3Zh
bHVlX3NldF9vYmplY3QodmFsdWUsIHdlYmtpdF9kb21faHRtbF90ZXh0X2FyZWFfZWxlbWVudF9n
ZXRfZm9ybShzZWxmKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9NQVhfTEVOR1RI
OgotICAgICAgICBnX3ZhbHVlX3NldF9sb25nKHZhbHVlLCB3ZWJraXRfZG9tX2h0bWxfdGV4dF9h
cmVhX2VsZW1lbnRfZ2V0X21heF9sZW5ndGgoc2VsZikpOwotICAgICAgICBicmVhazsKICAgICBj
YXNlIFBST1BfTkFNRToKICAgICAgICAgZ192YWx1ZV90YWtlX3N0cmluZyh2YWx1ZSwgd2Via2l0
X2RvbV9odG1sX3RleHRfYXJlYV9lbGVtZW50X2dldF9uYW1lKHNlbGYpKTsKICAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBQUk9QX1BMQUNFSE9MREVSOgotICAgICAgICBnX3ZhbHVlX3Rha2Vfc3Ry
aW5nKHZhbHVlLCB3ZWJraXRfZG9tX2h0bWxfdGV4dF9hcmVhX2VsZW1lbnRfZ2V0X3BsYWNlaG9s
ZGVyKHNlbGYpKTsKLSAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9QX1JFQURfT05MWToKICAg
ICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X2RvbV9odG1sX3RleHRfYXJl
YV9lbGVtZW50X2dldF9yZWFkX29ubHkoc2VsZikpOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IFBST1BfUkVRVUlSRUQ6Ci0gICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtp
dF9kb21faHRtbF90ZXh0X2FyZWFfZWxlbWVudF9nZXRfcmVxdWlyZWQoc2VsZikpOwotICAgICAg
ICBicmVhazsKICAgICBjYXNlIFBST1BfUk9XUzoKICAgICAgICAgZ192YWx1ZV9zZXRfbG9uZyh2
YWx1ZSwgd2Via2l0X2RvbV9odG1sX3RleHRfYXJlYV9lbGVtZW50X2dldF9yb3dzKHNlbGYpKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9QX0NPTFM6CiAgICAgICAgIGdfdmFsdWVfc2V0
X2xvbmcodmFsdWUsIHdlYmtpdF9kb21faHRtbF90ZXh0X2FyZWFfZWxlbWVudF9nZXRfY29scyhz
ZWxmKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9XUkFQOgotICAgICAgICBnX3Zh
bHVlX3Rha2Vfc3RyaW5nKHZhbHVlLCB3ZWJraXRfZG9tX2h0bWxfdGV4dF9hcmVhX2VsZW1lbnRf
Z2V0X3dyYXAoc2VsZikpOwotICAgICAgICBicmVhazsKICAgICBjYXNlIFBST1BfVFlQRToKICAg
ICAgICAgZ192YWx1ZV90YWtlX3N0cmluZyh2YWx1ZSwgd2Via2l0X2RvbV9odG1sX3RleHRfYXJl
YV9lbGVtZW50X2dldF9hcmVhX3R5cGUoc2VsZikpOwogICAgICAgICBicmVhazsKQEAgLTI0Nywz
OSArMTkwLDE1IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21faHRtbF90ZXh0X2FyZWFfZWxlbWVu
dF9nZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWluCiAgICAgY2FzZSBQUk9QX1ZBTFVF
OgogICAgICAgICBnX3ZhbHVlX3Rha2Vfc3RyaW5nKHZhbHVlLCB3ZWJraXRfZG9tX2h0bWxfdGV4
dF9hcmVhX2VsZW1lbnRfZ2V0X3ZhbHVlKHNlbGYpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBQUk9QX1RFWFRfTEVOR1RIOgotICAgICAgICBnX3ZhbHVlX3NldF91bG9uZyh2YWx1ZSwgd2Vi
a2l0X2RvbV9odG1sX3RleHRfYXJlYV9lbGVtZW50X2dldF90ZXh0X2xlbmd0aChzZWxmKSk7Ci0g
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJPUF9XSUxMX1ZBTElEQVRFOgogICAgICAgICBnX3Zh
bHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfZG9tX2h0bWxfdGV4dF9hcmVhX2VsZW1lbnRf
Z2V0X3dpbGxfdmFsaWRhdGUoc2VsZikpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1Bf
VkFMSURJVFk6Ci0gICAgICAgIGdfdmFsdWVfc2V0X29iamVjdCh2YWx1ZSwgd2Via2l0X2RvbV9o
dG1sX3RleHRfYXJlYV9lbGVtZW50X2dldF92YWxpZGl0eShzZWxmKSk7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgUFJPUF9WQUxJREFUSU9OX01FU1NBR0U6Ci0gICAgICAgIGdfdmFsdWVfdGFr
ZV9zdHJpbmcodmFsdWUsIHdlYmtpdF9kb21faHRtbF90ZXh0X2FyZWFfZWxlbWVudF9nZXRfdmFs
aWRhdGlvbl9tZXNzYWdlKHNlbGYpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX0xB
QkVMUzoKLSAgICAgICAgZ192YWx1ZV9zZXRfb2JqZWN0KHZhbHVlLCB3ZWJraXRfZG9tX2h0bWxf
dGV4dF9hcmVhX2VsZW1lbnRfZ2V0X2xhYmVscyhzZWxmKSk7Ci0gICAgICAgIGJyZWFrOwogICAg
IGNhc2UgUFJPUF9TRUxFQ1RJT05fU1RBUlQ6CiAgICAgICAgIGdfdmFsdWVfc2V0X2xvbmcodmFs
dWUsIHdlYmtpdF9kb21faHRtbF90ZXh0X2FyZWFfZWxlbWVudF9nZXRfc2VsZWN0aW9uX3N0YXJ0
KHNlbGYpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9QX1NFTEVDVElPTl9FTkQ6CiAg
ICAgICAgIGdfdmFsdWVfc2V0X2xvbmcodmFsdWUsIHdlYmtpdF9kb21faHRtbF90ZXh0X2FyZWFf
ZWxlbWVudF9nZXRfc2VsZWN0aW9uX2VuZChzZWxmKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNh
c2UgUFJPUF9TRUxFQ1RJT05fRElSRUNUSU9OOgotICAgICAgICBnX3ZhbHVlX3Rha2Vfc3RyaW5n
KHZhbHVlLCB3ZWJraXRfZG9tX2h0bWxfdGV4dF9hcmVhX2VsZW1lbnRfZ2V0X3NlbGVjdGlvbl9k
aXJlY3Rpb24oc2VsZikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfQVVUT0NPUlJF
Q1Q6Ci0gICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF9kb21faHRtbF90
ZXh0X2FyZWFfZWxlbWVudF9nZXRfYXV0b2NvcnJlY3Qoc2VsZikpOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIFBST1BfQVVUT0NBUElUQUxJWkU6Ci0gICAgICAgIGdfdmFsdWVfdGFrZV9zdHJp
bmcodmFsdWUsIHdlYmtpdF9kb21faHRtbF90ZXh0X2FyZWFfZWxlbWVudF9nZXRfYXV0b2NhcGl0
YWxpemUoc2VsZikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfQVVUT0NPTVBMRVRF
OgotICAgICAgICBnX3ZhbHVlX3Rha2Vfc3RyaW5nKHZhbHVlLCB3ZWJraXRfZG9tX2h0bWxfdGV4
dF9hcmVhX2VsZW1lbnRfZ2V0X2F1dG9jb21wbGV0ZShzZWxmKSk7Ci0gICAgICAgIGJyZWFrOwog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChv
YmplY3QsIHByb3BlcnR5SWQsIHBzcGVjKTsKICAgICAgICAgYnJlYWs7CkBAIC0zMDQsMTYgKzIy
Myw2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21faHRtbF90ZXh0X2FyZWFfZWxlbWVudF9jbGFz
c19pbml0KFdlYktpdERPTUhUTUxUZXh0QXJlYUVsCiAKICAgICBnX29iamVjdF9jbGFzc19pbnN0
YWxsX3Byb3BlcnR5KAogICAgICAgICBnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBST1BfRElSX05B
TUUsCi0gICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcoCi0gICAgICAgICAgICAiZGlyLW5hbWUi
LAotICAgICAgICAgICAgIkhUTUxUZXh0QXJlYUVsZW1lbnQ6ZGlyLW5hbWUiLAotICAgICAgICAg
ICAgInJlYWQtd3JpdGUgZ2NoYXIqIEhUTUxUZXh0QXJlYUVsZW1lbnQ6ZGlyLW5hbWUiLAotICAg
ICAgICAgICAgIiIsCi0gICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBRFdSSVRFKSk7Ci0KLSAg
ICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAotICAgICAgICBnb2JqZWN0Q2xhc3Ms
CiAgICAgICAgIFBST1BfRElTQUJMRUQsCiAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKAog
ICAgICAgICAgICAgImRpc2FibGVkIiwKQEAgLTMzNCwxNiArMjQzLDYgQEAgc3RhdGljIHZvaWQg
d2Via2l0X2RvbV9odG1sX3RleHRfYXJlYV9lbGVtZW50X2NsYXNzX2luaXQoV2ViS2l0RE9NSFRN
TFRleHRBcmVhRWwKIAogICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCiAgICAg
ICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9NQVhfTEVOR1RILAotICAgICAgICBnX3Bh
cmFtX3NwZWNfbG9uZygKLSAgICAgICAgICAgICJtYXgtbGVuZ3RoIiwKLSAgICAgICAgICAgICJI
VE1MVGV4dEFyZWFFbGVtZW50Om1heC1sZW5ndGgiLAotICAgICAgICAgICAgInJlYWQtd3JpdGUg
Z2xvbmcgSFRNTFRleHRBcmVhRWxlbWVudDptYXgtbGVuZ3RoIiwKLSAgICAgICAgICAgIEdfTUlO
TE9ORywgR19NQVhMT05HLCAwLAotICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURXUklURSkp
OwotCi0gICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAgZ29iamVj
dENsYXNzLAogICAgICAgICBQUk9QX05BTUUsCiAgICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmco
CiAgICAgICAgICAgICAibmFtZSIsCkBAIC0zNTQsMTYgKzI1Myw2IEBAIHN0YXRpYyB2b2lkIHdl
YmtpdF9kb21faHRtbF90ZXh0X2FyZWFfZWxlbWVudF9jbGFzc19pbml0KFdlYktpdERPTUhUTUxU
ZXh0QXJlYUVsCiAKICAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAogICAgICAg
ICBnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBST1BfUExBQ0VIT0xERVIsCi0gICAgICAgIGdfcGFy
YW1fc3BlY19zdHJpbmcoCi0gICAgICAgICAgICAicGxhY2Vob2xkZXIiLAotICAgICAgICAgICAg
IkhUTUxUZXh0QXJlYUVsZW1lbnQ6cGxhY2Vob2xkZXIiLAotICAgICAgICAgICAgInJlYWQtd3Jp
dGUgZ2NoYXIqIEhUTUxUZXh0QXJlYUVsZW1lbnQ6cGxhY2Vob2xkZXIiLAotICAgICAgICAgICAg
IiIsCi0gICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBRFdSSVRFKSk7Ci0KLSAgICBnX29iamVj
dF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAotICAgICAgICBnb2JqZWN0Q2xhc3MsCiAgICAgICAg
IFBST1BfUkVBRF9PTkxZLAogICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigKICAgICAgICAg
ICAgICJyZWFkLW9ubHkiLApAQCAtMzc0LDE2ICsyNjMsNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRf
ZG9tX2h0bWxfdGV4dF9hcmVhX2VsZW1lbnRfY2xhc3NfaW5pdChXZWJLaXRET01IVE1MVGV4dEFy
ZWFFbAogCiAgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKICAgICAgICAgZ29i
amVjdENsYXNzLAotICAgICAgICBQUk9QX1JFUVVJUkVELAotICAgICAgICBnX3BhcmFtX3NwZWNf
Ym9vbGVhbigKLSAgICAgICAgICAgICJyZXF1aXJlZCIsCi0gICAgICAgICAgICAiSFRNTFRleHRB
cmVhRWxlbWVudDpyZXF1aXJlZCIsCi0gICAgICAgICAgICAicmVhZC13cml0ZSBnYm9vbGVhbiBI
VE1MVGV4dEFyZWFFbGVtZW50OnJlcXVpcmVkIiwKLSAgICAgICAgICAgIEZBTFNFLAotICAgICAg
ICAgICAgV0VCS0lUX1BBUkFNX1JFQURXUklURSkpOwotCi0gICAgZ19vYmplY3RfY2xhc3NfaW5z
dGFsbF9wcm9wZXJ0eSgKLSAgICAgICAgZ29iamVjdENsYXNzLAogICAgICAgICBQUk9QX1JPV1Ms
CiAgICAgICAgIGdfcGFyYW1fc3BlY19sb25nKAogICAgICAgICAgICAgInJvd3MiLApAQCAtNDA0
LDE2ICsyODMsNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX2h0bWxfdGV4dF9hcmVhX2VsZW1l
bnRfY2xhc3NfaW5pdChXZWJLaXRET01IVE1MVGV4dEFyZWFFbAogCiAgICAgZ19vYmplY3RfY2xh
c3NfaW5zdGFsbF9wcm9wZXJ0eSgKICAgICAgICAgZ29iamVjdENsYXNzLAotICAgICAgICBQUk9Q
X1dSQVAsCi0gICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcoCi0gICAgICAgICAgICAid3JhcCIs
Ci0gICAgICAgICAgICAiSFRNTFRleHRBcmVhRWxlbWVudDp3cmFwIiwKLSAgICAgICAgICAgICJy
ZWFkLXdyaXRlIGdjaGFyKiBIVE1MVGV4dEFyZWFFbGVtZW50OndyYXAiLAotICAgICAgICAgICAg
IiIsCi0gICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBRFdSSVRFKSk7Ci0KLSAgICBnX29iamVj
dF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAotICAgICAgICBnb2JqZWN0Q2xhc3MsCiAgICAgICAg
IFBST1BfVFlQRSwKICAgICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZygKICAgICAgICAgICAgICJ0
eXBlIiwKQEAgLTQ0NCwxNiArMzEzLDYgQEAgc3RhdGljIHZvaWQgd2Via2l0X2RvbV9odG1sX3Rl
eHRfYXJlYV9lbGVtZW50X2NsYXNzX2luaXQoV2ViS2l0RE9NSFRNTFRleHRBcmVhRWwKIAogICAg
IGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCiAgICAgICAgIGdvYmplY3RDbGFzcywK
LSAgICAgICAgUFJPUF9URVhUX0xFTkdUSCwKLSAgICAgICAgZ19wYXJhbV9zcGVjX3Vsb25nKAot
ICAgICAgICAgICAgInRleHQtbGVuZ3RoIiwKLSAgICAgICAgICAgICJIVE1MVGV4dEFyZWFFbGVt
ZW50OnRleHQtbGVuZ3RoIiwKLSAgICAgICAgICAgICJyZWFkLW9ubHkgZ3Vsb25nIEhUTUxUZXh0
QXJlYUVsZW1lbnQ6dGV4dC1sZW5ndGgiLAotICAgICAgICAgICAgMCwgR19NQVhVTE9ORywgMCwK
LSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSkpOwotCi0gICAgZ19vYmplY3RfY2xh
c3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAgZ29iamVjdENsYXNzLAogICAgICAgICBQUk9Q
X1dJTExfVkFMSURBVEUsCiAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKAogICAgICAgICAg
ICAgIndpbGwtdmFsaWRhdGUiLApAQCAtNDY0LDM2ICszMjMsNiBAQCBzdGF0aWMgdm9pZCB3ZWJr
aXRfZG9tX2h0bWxfdGV4dF9hcmVhX2VsZW1lbnRfY2xhc3NfaW5pdChXZWJLaXRET01IVE1MVGV4
dEFyZWFFbAogCiAgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKICAgICAgICAg
Z29iamVjdENsYXNzLAotICAgICAgICBQUk9QX1ZBTElESVRZLAotICAgICAgICBnX3BhcmFtX3Nw
ZWNfb2JqZWN0KAotICAgICAgICAgICAgInZhbGlkaXR5IiwKLSAgICAgICAgICAgICJIVE1MVGV4
dEFyZWFFbGVtZW50OnZhbGlkaXR5IiwKLSAgICAgICAgICAgICJyZWFkLW9ubHkgV2ViS2l0RE9N
VmFsaWRpdHlTdGF0ZSogSFRNTFRleHRBcmVhRWxlbWVudDp2YWxpZGl0eSIsCi0gICAgICAgICAg
ICBXRUJLSVRfRE9NX1RZUEVfVkFMSURJVFlfU1RBVEUsCi0gICAgICAgICAgICBXRUJLSVRfUEFS
QU1fUkVBREFCTEUpKTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0g
ICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9WQUxJREFUSU9OX01FU1NBR0UsCi0g
ICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcoCi0gICAgICAgICAgICAidmFsaWRhdGlvbi1tZXNz
YWdlIiwKLSAgICAgICAgICAgICJIVE1MVGV4dEFyZWFFbGVtZW50OnZhbGlkYXRpb24tbWVzc2Fn
ZSIsCi0gICAgICAgICAgICAicmVhZC1vbmx5IGdjaGFyKiBIVE1MVGV4dEFyZWFFbGVtZW50OnZh
bGlkYXRpb24tbWVzc2FnZSIsCi0gICAgICAgICAgICAiIiwKLSAgICAgICAgICAgIFdFQktJVF9Q
QVJBTV9SRUFEQUJMRSkpOwotCi0gICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgK
LSAgICAgICAgZ29iamVjdENsYXNzLAotICAgICAgICBQUk9QX0xBQkVMUywKLSAgICAgICAgZ19w
YXJhbV9zcGVjX29iamVjdCgKLSAgICAgICAgICAgICJsYWJlbHMiLAotICAgICAgICAgICAgIkhU
TUxUZXh0QXJlYUVsZW1lbnQ6bGFiZWxzIiwKLSAgICAgICAgICAgICJyZWFkLW9ubHkgV2ViS2l0
RE9NTm9kZUxpc3QqIEhUTUxUZXh0QXJlYUVsZW1lbnQ6bGFiZWxzIiwKLSAgICAgICAgICAgIFdF
QktJVF9ET01fVFlQRV9OT0RFX0xJU1QsCi0gICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFC
TEUpKTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdv
YmplY3RDbGFzcywKICAgICAgICAgUFJPUF9TRUxFQ1RJT05fU1RBUlQsCiAgICAgICAgIGdfcGFy
YW1fc3BlY19sb25nKAogICAgICAgICAgICAgInNlbGVjdGlvbi1zdGFydCIsCkBAIC01MTEsNDcg
KzM0MCw2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21faHRtbF90ZXh0X2FyZWFfZWxlbWVudF9j
bGFzc19pbml0KFdlYktpdERPTUhUTUxUZXh0QXJlYUVsCiAgICAgICAgICAgICAicmVhZC13cml0
ZSBnbG9uZyBIVE1MVGV4dEFyZWFFbGVtZW50OnNlbGVjdGlvbi1lbmQiLAogICAgICAgICAgICAg
R19NSU5MT05HLCBHX01BWExPTkcsIDAsCiAgICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBRFdS
SVRFKSk7Ci0KLSAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAotICAgICAgICBn
b2JqZWN0Q2xhc3MsCi0gICAgICAgIFBST1BfU0VMRUNUSU9OX0RJUkVDVElPTiwKLSAgICAgICAg
Z19wYXJhbV9zcGVjX3N0cmluZygKLSAgICAgICAgICAgICJzZWxlY3Rpb24tZGlyZWN0aW9uIiwK
LSAgICAgICAgICAgICJIVE1MVGV4dEFyZWFFbGVtZW50OnNlbGVjdGlvbi1kaXJlY3Rpb24iLAot
ICAgICAgICAgICAgInJlYWQtd3JpdGUgZ2NoYXIqIEhUTUxUZXh0QXJlYUVsZW1lbnQ6c2VsZWN0
aW9uLWRpcmVjdGlvbiIsCi0gICAgICAgICAgICAiIiwKLSAgICAgICAgICAgIFdFQktJVF9QQVJB
TV9SRUFEV1JJVEUpKTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0g
ICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9BVVRPQ09SUkVDVCwKLSAgICAgICAg
Z19wYXJhbV9zcGVjX2Jvb2xlYW4oCi0gICAgICAgICAgICAiYXV0b2NvcnJlY3QiLAotICAgICAg
ICAgICAgIkhUTUxUZXh0QXJlYUVsZW1lbnQ6YXV0b2NvcnJlY3QiLAotICAgICAgICAgICAgInJl
YWQtd3JpdGUgZ2Jvb2xlYW4gSFRNTFRleHRBcmVhRWxlbWVudDphdXRvY29ycmVjdCIsCi0gICAg
ICAgICAgICBGQUxTRSwKLSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEV1JJVEUpKTsKLQot
ICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFz
cywKLSAgICAgICAgUFJPUF9BVVRPQ0FQSVRBTElaRSwKLSAgICAgICAgZ19wYXJhbV9zcGVjX3N0
cmluZygKLSAgICAgICAgICAgICJhdXRvY2FwaXRhbGl6ZSIsCi0gICAgICAgICAgICAiSFRNTFRl
eHRBcmVhRWxlbWVudDphdXRvY2FwaXRhbGl6ZSIsCi0gICAgICAgICAgICAicmVhZC13cml0ZSBn
Y2hhciogSFRNTFRleHRBcmVhRWxlbWVudDphdXRvY2FwaXRhbGl6ZSIsCi0gICAgICAgICAgICAi
IiwKLSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEV1JJVEUpKTsKLQotICAgIGdfb2JqZWN0
X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAg
UFJPUF9BVVRPQ09NUExFVEUsCi0gICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcoCi0gICAgICAg
ICAgICAiYXV0b2NvbXBsZXRlIiwKLSAgICAgICAgICAgICJIVE1MVGV4dEFyZWFFbGVtZW50OmF1
dG9jb21wbGV0ZSIsCi0gICAgICAgICAgICAicmVhZC13cml0ZSBnY2hhciogSFRNTFRleHRBcmVh
RWxlbWVudDphdXRvY29tcGxldGUiLAotICAgICAgICAgICAgIiIsCi0gICAgICAgICAgICBXRUJL
SVRfUEFSQU1fUkVBRFdSSVRFKSk7Ci0KIH0KIAogc3RhdGljIHZvaWQgd2Via2l0X2RvbV9odG1s
X3RleHRfYXJlYV9lbGVtZW50X2luaXQoV2ViS2l0RE9NSFRNTFRleHRBcmVhRWxlbWVudCogcmVx
dWVzdCkKQEAgLTU1OSwyNSArMzQ3LDYgQEAgc3RhdGljIHZvaWQgd2Via2l0X2RvbV9odG1sX3Rl
eHRfYXJlYV9lbGVtZW50X2luaXQoV2ViS2l0RE9NSFRNTFRleHRBcmVhRWxlbWVudCoKICAgICBV
TlVTRURfUEFSQU0ocmVxdWVzdCk7CiB9CiAKLWdib29sZWFuIHdlYmtpdF9kb21faHRtbF90ZXh0
X2FyZWFfZWxlbWVudF9jaGVja192YWxpZGl0eShXZWJLaXRET01IVE1MVGV4dEFyZWFFbGVtZW50
KiBzZWxmKQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxfVEVYVF9BUkVBX0VMRU1F
TlQoc2VsZiksIEZBTFNFKTsKLSAgICBXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50KiBpdGVt
ID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdib29sZWFuIHJlc3VsdCA9IGl0ZW0tPmNoZWNr
VmFsaWRpdHkoKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi12b2lkIHdlYmtpdF9kb21faHRt
bF90ZXh0X2FyZWFfZWxlbWVudF9zZXRfY3VzdG9tX3ZhbGlkaXR5KFdlYktpdERPTUhUTUxUZXh0
QXJlYUVsZW1lbnQqIHNlbGYsIGNvbnN0IGdjaGFyKiBlcnJvcikKLXsKLSAgICBXZWJDb3JlOjpK
U01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRf
RE9NX0lTX0hUTUxfVEVYVF9BUkVBX0VMRU1FTlQoc2VsZikpOwotICAgIGdfcmV0dXJuX2lmX2Zh
aWwoZXJyb3IpOwotICAgIFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQqIGl0ZW0gPSBXZWJL
aXQ6OmNvcmUoc2VsZik7Ci0gICAgV1RGOjpTdHJpbmcgY29udmVydGVkRXJyb3IgPSBXVEY6OlN0
cmluZzo6ZnJvbVVURjgoZXJyb3IpOwotICAgIGl0ZW0tPnNldEN1c3RvbVZhbGlkaXR5KGNvbnZl
cnRlZEVycm9yKTsKLX0KLQogdm9pZCB3ZWJraXRfZG9tX2h0bWxfdGV4dF9hcmVhX2VsZW1lbnRf
c2VsZWN0KFdlYktpdERPTUhUTUxUZXh0QXJlYUVsZW1lbnQqIHNlbGYpCiB7CiAgICAgV2ViQ29y
ZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwpAQCAtNTg2LDI0ICszNTUsNiBAQCB2b2lk
IHdlYmtpdF9kb21faHRtbF90ZXh0X2FyZWFfZWxlbWVudF9zZWxlY3QoV2ViS2l0RE9NSFRNTFRl
eHRBcmVhRWxlbWVudCogc2VsZgogICAgIGl0ZW0tPnNlbGVjdCgpOwogfQogCi12b2lkIHdlYmtp
dF9kb21faHRtbF90ZXh0X2FyZWFfZWxlbWVudF9zZXRfcmFuZ2VfdGV4dChXZWJLaXRET01IVE1M
VGV4dEFyZWFFbGVtZW50KiBzZWxmLCBjb25zdCBnY2hhciogcmVwbGFjZW1lbnQsIGd1bG9uZyBz
dGFydCwgZ3Vsb25nIGVuZCwgY29uc3QgZ2NoYXIqIHNlbGVjdGlvbk1vZGUsIEdFcnJvcioqIGVy
cm9yKQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBn
X3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfSFRNTF9URVhUX0FSRUFfRUxFTUVOVChzZWxm
KSk7Ci0gICAgZ19yZXR1cm5faWZfZmFpbChyZXBsYWNlbWVudCk7Ci0gICAgZ19yZXR1cm5faWZf
ZmFpbChzZWxlY3Rpb25Nb2RlKTsKLSAgICBnX3JldHVybl9pZl9mYWlsKCFlcnJvciB8fCAhKmVy
cm9yKTsKLSAgICBXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50KiBpdGVtID0gV2ViS2l0Ojpj
b3JlKHNlbGYpOwotICAgIFdURjo6U3RyaW5nIGNvbnZlcnRlZFJlcGxhY2VtZW50ID0gV1RGOjpT
dHJpbmc6OmZyb21VVEY4KHJlcGxhY2VtZW50KTsKLSAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRT
ZWxlY3Rpb25Nb2RlID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KHNlbGVjdGlvbk1vZGUpOwotICAg
IFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGl0ZW0tPnNldFJhbmdlVGV4dChj
b252ZXJ0ZWRSZXBsYWNlbWVudCwgc3RhcnQsIGVuZCwgY29udmVydGVkU2VsZWN0aW9uTW9kZSwg
ZWMpOwotICAgIGlmIChlYykgewotICAgICAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlRGVzY3Jp
cHRpb24gZWNkZXNjKGVjKTsKLSAgICAgICAgZ19zZXRfZXJyb3JfbGl0ZXJhbChlcnJvciwgZ19x
dWFya19mcm9tX3N0cmluZygiV0VCS0lUX0RPTSIpLCBlY2Rlc2MuY29kZSwgZWNkZXNjLm5hbWUp
OwotICAgIH0KLX0KLQogdm9pZCB3ZWJraXRfZG9tX2h0bWxfdGV4dF9hcmVhX2VsZW1lbnRfc2V0
X3NlbGVjdGlvbl9yYW5nZShXZWJLaXRET01IVE1MVGV4dEFyZWFFbGVtZW50KiBzZWxmLCBnbG9u
ZyBzdGFydCwgZ2xvbmcgZW5kLCBjb25zdCBnY2hhciogZGlyZWN0aW9uKQogewogICAgIFdlYkNv
cmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKQEAgLTYzMSwyNSArMzgyLDYgQEAgdm9p
ZCB3ZWJraXRfZG9tX2h0bWxfdGV4dF9hcmVhX2VsZW1lbnRfc2V0X2F1dG9mb2N1cyhXZWJLaXRE
T01IVE1MVGV4dEFyZWFFbGVtZW4KICAgICBpdGVtLT5zZXRCb29sZWFuQXR0cmlidXRlKFdlYkNv
cmU6OkhUTUxOYW1lczo6YXV0b2ZvY3VzQXR0ciwgdmFsdWUpOwogfQogCi1nY2hhciogd2Via2l0
X2RvbV9odG1sX3RleHRfYXJlYV9lbGVtZW50X2dldF9kaXJfbmFtZShXZWJLaXRET01IVE1MVGV4
dEFyZWFFbGVtZW50KiBzZWxmKQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0
ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxfVEVY
VF9BUkVBX0VMRU1FTlQoc2VsZiksIDApOwotICAgIFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1l
bnQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ2NoYXIqIHJlc3VsdCA9IGNvbnZl
cnRUb1VURjhTdHJpbmcoaXRlbS0+YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihXZWJD
b3JlOjpIVE1MTmFtZXM6OmRpcm5hbWVBdHRyKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQot
dm9pZCB3ZWJraXRfZG9tX2h0bWxfdGV4dF9hcmVhX2VsZW1lbnRfc2V0X2Rpcl9uYW1lKFdlYktp
dERPTUhUTUxUZXh0QXJlYUVsZW1lbnQqIHNlbGYsIGNvbnN0IGdjaGFyKiB2YWx1ZSkKLXsKLSAg
ICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5faWZf
ZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxfVEVYVF9BUkVBX0VMRU1FTlQoc2VsZikpOwotICAgIGdf
cmV0dXJuX2lmX2ZhaWwodmFsdWUpOwotICAgIFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQq
IGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgV1RGOjpTdHJpbmcgY29udmVydGVkVmFs
dWUgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgodmFsdWUpOwotICAgIGl0ZW0tPnNldEF0dHJpYnV0
ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oV2ViQ29yZTo6SFRNTE5hbWVzOjpkaXJuYW1lQXR0ciwg
Y29udmVydGVkVmFsdWUpOwotfQotCiBnYm9vbGVhbiB3ZWJraXRfZG9tX2h0bWxfdGV4dF9hcmVh
X2VsZW1lbnRfZ2V0X2Rpc2FibGVkKFdlYktpdERPTUhUTUxUZXh0QXJlYUVsZW1lbnQqIHNlbGYp
CiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwpAQCAtNjc2LDI5
ICs0MDgsNiBAQCBXZWJLaXRET01IVE1MRm9ybUVsZW1lbnQqIHdlYmtpdF9kb21faHRtbF90ZXh0
X2FyZWFfZWxlbWVudF9nZXRfZm9ybShXZWJLaXRET01IVAogICAgIHJldHVybiBXZWJLaXQ6Omtp
dChnb2JqZWN0UmVzdWx0LmdldCgpKTsKIH0KIAotZ2xvbmcgd2Via2l0X2RvbV9odG1sX3RleHRf
YXJlYV9lbGVtZW50X2dldF9tYXhfbGVuZ3RoKFdlYktpdERPTUhUTUxUZXh0QXJlYUVsZW1lbnQq
IHNlbGYpCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAg
IGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfSFRNTF9URVhUX0FSRUFfRUxFTUVO
VChzZWxmKSwgMCk7Ci0gICAgV2ViQ29yZTo6SFRNTFRleHRBcmVhRWxlbWVudCogaXRlbSA9IFdl
YktpdDo6Y29yZShzZWxmKTsKLSAgICBnbG9uZyByZXN1bHQgPSBpdGVtLT5tYXhMZW5ndGgoKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotCi12b2lkIHdlYmtpdF9kb21faHRtbF90ZXh0X2FyZWFf
ZWxlbWVudF9zZXRfbWF4X2xlbmd0aChXZWJLaXRET01IVE1MVGV4dEFyZWFFbGVtZW50KiBzZWxm
LCBnbG9uZyB2YWx1ZSwgR0Vycm9yKiogZXJyb3IpCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhy
ZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19I
VE1MX1RFWFRfQVJFQV9FTEVNRU5UKHNlbGYpKTsKLSAgICBnX3JldHVybl9pZl9mYWlsKCFlcnJv
ciB8fCAhKmVycm9yKTsKLSAgICBXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50KiBpdGVtID0g
V2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwot
ICAgIGl0ZW0tPnNldE1heExlbmd0aCh2YWx1ZSwgZWMpOwotICAgIGlmIChlYykgewotICAgICAg
ICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24gZWNkZXNjKGVjKTsKLSAgICAgICAg
Z19zZXRfZXJyb3JfbGl0ZXJhbChlcnJvciwgZ19xdWFya19mcm9tX3N0cmluZygiV0VCS0lUX0RP
TSIpLCBlY2Rlc2MuY29kZSwgZWNkZXNjLm5hbWUpOwotICAgIH0KLX0KLQogZ2NoYXIqIHdlYmtp
dF9kb21faHRtbF90ZXh0X2FyZWFfZWxlbWVudF9nZXRfbmFtZShXZWJLaXRET01IVE1MVGV4dEFy
ZWFFbGVtZW50KiBzZWxmKQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBz
dGF0ZTsKQEAgLTcxOCwyNSArNDI3LDYgQEAgdm9pZCB3ZWJraXRfZG9tX2h0bWxfdGV4dF9hcmVh
X2VsZW1lbnRfc2V0X25hbWUoV2ViS2l0RE9NSFRNTFRleHRBcmVhRWxlbWVudCogc2UKICAgICBp
dGVtLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFdlYkNvcmU6OkhUTUxOYW1l
czo6bmFtZUF0dHIsIGNvbnZlcnRlZFZhbHVlKTsKIH0KIAotZ2NoYXIqIHdlYmtpdF9kb21faHRt
bF90ZXh0X2FyZWFfZWxlbWVudF9nZXRfcGxhY2Vob2xkZXIoV2ViS2l0RE9NSFRNTFRleHRBcmVh
RWxlbWVudCogc2VsZikKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3Rh
dGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19IVE1MX1RFWFRfQVJF
QV9FTEVNRU5UKHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50KiBp
dGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdjaGFyKiByZXN1bHQgPSBjb252ZXJ0VG9V
VEY4U3RyaW5nKGl0ZW0tPmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oV2ViQ29yZTo6
SFRNTE5hbWVzOjpwbGFjZWhvbGRlckF0dHIpKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi12
b2lkIHdlYmtpdF9kb21faHRtbF90ZXh0X2FyZWFfZWxlbWVudF9zZXRfcGxhY2Vob2xkZXIoV2Vi
S2l0RE9NSFRNTFRleHRBcmVhRWxlbWVudCogc2VsZiwgY29uc3QgZ2NoYXIqIHZhbHVlKQotewot
ICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl9p
Zl9mYWlsKFdFQktJVF9ET01fSVNfSFRNTF9URVhUX0FSRUFfRUxFTUVOVChzZWxmKSk7Ci0gICAg
Z19yZXR1cm5faWZfZmFpbCh2YWx1ZSk7Ci0gICAgV2ViQ29yZTo6SFRNTFRleHRBcmVhRWxlbWVu
dCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRW
YWx1ZSA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOCh2YWx1ZSk7Ci0gICAgaXRlbS0+c2V0QXR0cmli
dXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihXZWJDb3JlOjpIVE1MTmFtZXM6OnBsYWNlaG9sZGVy
QXR0ciwgY29udmVydGVkVmFsdWUpOwotfQotCiBnYm9vbGVhbiB3ZWJraXRfZG9tX2h0bWxfdGV4
dF9hcmVhX2VsZW1lbnRfZ2V0X3JlYWRfb25seShXZWJLaXRET01IVE1MVGV4dEFyZWFFbGVtZW50
KiBzZWxmKQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKQEAg
LTc1NCwyMyArNDQ0LDYgQEAgdm9pZCB3ZWJraXRfZG9tX2h0bWxfdGV4dF9hcmVhX2VsZW1lbnRf
c2V0X3JlYWRfb25seShXZWJLaXRET01IVE1MVGV4dEFyZWFFbGVtZW4KICAgICBpdGVtLT5zZXRC
b29sZWFuQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVhZG9ubHlBdHRyLCB2YWx1ZSk7
CiB9CiAKLWdib29sZWFuIHdlYmtpdF9kb21faHRtbF90ZXh0X2FyZWFfZWxlbWVudF9nZXRfcmVx
dWlyZWQoV2ViS2l0RE9NSFRNTFRleHRBcmVhRWxlbWVudCogc2VsZikKLXsKLSAgICBXZWJDb3Jl
OjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwo
V0VCS0lUX0RPTV9JU19IVE1MX1RFWFRfQVJFQV9FTEVNRU5UKHNlbGYpLCBGQUxTRSk7Ci0gICAg
V2ViQ29yZTo6SFRNTFRleHRBcmVhRWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsK
LSAgICBnYm9vbGVhbiByZXN1bHQgPSBpdGVtLT5oYXNBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25p
emF0aW9uKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVxdWlyZWRBdHRyKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotCi12b2lkIHdlYmtpdF9kb21faHRtbF90ZXh0X2FyZWFfZWxlbWVudF9zZXRfcmVx
dWlyZWQoV2ViS2l0RE9NSFRNTFRleHRBcmVhRWxlbWVudCogc2VsZiwgZ2Jvb2xlYW4gdmFsdWUp
Ci17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0
dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19IVE1MX1RFWFRfQVJFQV9FTEVNRU5UKHNlbGYpKTsK
LSAgICBXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNl
bGYpOwotICAgIGl0ZW0tPnNldEJvb2xlYW5BdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpy
ZXF1aXJlZEF0dHIsIHZhbHVlKTsKLX0KLQogZ2xvbmcgd2Via2l0X2RvbV9odG1sX3RleHRfYXJl
YV9lbGVtZW50X2dldF9yb3dzKFdlYktpdERPTUhUTUxUZXh0QXJlYUVsZW1lbnQqIHNlbGYpCiB7
CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwpAQCAtODA1LDI1ICs0
NzgsNiBAQCB2b2lkIHdlYmtpdF9kb21faHRtbF90ZXh0X2FyZWFfZWxlbWVudF9zZXRfY29scyhX
ZWJLaXRET01IVE1MVGV4dEFyZWFFbGVtZW50KiBzZQogICAgIGl0ZW0tPnNldENvbHModmFsdWUp
OwogfQogCi1nY2hhciogd2Via2l0X2RvbV9odG1sX3RleHRfYXJlYV9lbGVtZW50X2dldF93cmFw
KFdlYktpdERPTUhUTUxUZXh0QXJlYUVsZW1lbnQqIHNlbGYpCi17Ci0gICAgV2ViQ29yZTo6SlNN
YWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJ
VF9ET01fSVNfSFRNTF9URVhUX0FSRUFfRUxFTUVOVChzZWxmKSwgMCk7Ci0gICAgV2ViQ29yZTo6
SFRNTFRleHRBcmVhRWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBnY2hh
ciogcmVzdWx0ID0gY29udmVydFRvVVRGOFN0cmluZyhpdGVtLT5hdHRyaWJ1dGVXaXRob3V0U3lu
Y2hyb25pemF0aW9uKFdlYkNvcmU6OkhUTUxOYW1lczo6d3JhcEF0dHIpKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotCi12b2lkIHdlYmtpdF9kb21faHRtbF90ZXh0X2FyZWFfZWxlbWVudF9zZXRf
d3JhcChXZWJLaXRET01IVE1MVGV4dEFyZWFFbGVtZW50KiBzZWxmLCBjb25zdCBnY2hhciogdmFs
dWUpCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdf
cmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19IVE1MX1RFWFRfQVJFQV9FTEVNRU5UKHNlbGYp
KTsKLSAgICBnX3JldHVybl9pZl9mYWlsKHZhbHVlKTsKLSAgICBXZWJDb3JlOjpIVE1MVGV4dEFy
ZWFFbGVtZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIFdURjo6U3RyaW5nIGNv
bnZlcnRlZFZhbHVlID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KHZhbHVlKTsKLSAgICBpdGVtLT5z
ZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFdlYkNvcmU6OkhUTUxOYW1lczo6d3Jh
cEF0dHIsIGNvbnZlcnRlZFZhbHVlKTsKLX0KLQogZ2NoYXIqIHdlYmtpdF9kb21faHRtbF90ZXh0
X2FyZWFfZWxlbWVudF9nZXRfYXJlYV90eXBlKFdlYktpdERPTUhUTUxUZXh0QXJlYUVsZW1lbnQq
IHNlbGYpCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwpAQCAt
ODcxLDE1ICs1MjUsNiBAQCB2b2lkIHdlYmtpdF9kb21faHRtbF90ZXh0X2FyZWFfZWxlbWVudF9z
ZXRfdmFsdWUoV2ViS2l0RE9NSFRNTFRleHRBcmVhRWxlbWVudCogcwogICAgIGl0ZW0tPnNldFZh
bHVlKGNvbnZlcnRlZFZhbHVlKTsKIH0KIAotZ3Vsb25nIHdlYmtpdF9kb21faHRtbF90ZXh0X2Fy
ZWFfZWxlbWVudF9nZXRfdGV4dF9sZW5ndGgoV2ViS2l0RE9NSFRNTFRleHRBcmVhRWxlbWVudCog
c2VsZikKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAg
Z19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19IVE1MX1RFWFRfQVJFQV9FTEVNRU5U
KHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50KiBpdGVtID0gV2Vi
S2l0Ojpjb3JlKHNlbGYpOwotICAgIGd1bG9uZyByZXN1bHQgPSBpdGVtLT50ZXh0TGVuZ3RoKCk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQogZ2Jvb2xlYW4gd2Via2l0X2RvbV9odG1sX3RleHRf
YXJlYV9lbGVtZW50X2dldF93aWxsX3ZhbGlkYXRlKFdlYktpdERPTUhUTUxUZXh0QXJlYUVsZW1l
bnQqIHNlbGYpCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwpA
QCAtODg5LDMzICs1MzQsNiBAQCBnYm9vbGVhbiB3ZWJraXRfZG9tX2h0bWxfdGV4dF9hcmVhX2Vs
ZW1lbnRfZ2V0X3dpbGxfdmFsaWRhdGUoV2ViS2l0RE9NSFRNTFRleHRBcgogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKLVdlYktpdERPTVZhbGlkaXR5U3RhdGUqIHdlYmtpdF9kb21faHRtbF90ZXh0
X2FyZWFfZWxlbWVudF9nZXRfdmFsaWRpdHkoV2ViS2l0RE9NSFRNTFRleHRBcmVhRWxlbWVudCog
c2VsZikKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAg
Z19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19IVE1MX1RFWFRfQVJFQV9FTEVNRU5U
KHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50KiBpdGVtID0gV2Vi
S2l0Ojpjb3JlKHNlbGYpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpWYWxpZGl0eVN0YXRlPiBnb2Jq
ZWN0UmVzdWx0ID0gV1RGOjpnZXRQdHIoaXRlbS0+dmFsaWRpdHkoKSk7Ci0gICAgcmV0dXJuIFdl
YktpdDo6a2l0KGdvYmplY3RSZXN1bHQuZ2V0KCkpOwotfQotCi1nY2hhciogd2Via2l0X2RvbV9o
dG1sX3RleHRfYXJlYV9lbGVtZW50X2dldF92YWxpZGF0aW9uX21lc3NhZ2UoV2ViS2l0RE9NSFRN
TFRleHRBcmVhRWxlbWVudCogc2VsZikKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxs
U3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19IVE1M
X1RFWFRfQVJFQV9FTEVNRU5UKHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpIVE1MVGV4dEFyZWFF
bGVtZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdjaGFyKiByZXN1bHQgPSBj
b252ZXJ0VG9VVEY4U3RyaW5nKGl0ZW0tPnZhbGlkYXRpb25NZXNzYWdlKCkpOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci0KLVdlYktpdERPTU5vZGVMaXN0KiB3ZWJraXRfZG9tX2h0bWxfdGV4dF9h
cmVhX2VsZW1lbnRfZ2V0X2xhYmVscyhXZWJLaXRET01IVE1MVGV4dEFyZWFFbGVtZW50KiBzZWxm
KQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3Jl
dHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxfVEVYVF9BUkVBX0VMRU1FTlQoc2Vs
ZiksIDApOwotICAgIFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQqIGl0ZW0gPSBXZWJLaXQ6
OmNvcmUoc2VsZik7Ci0gICAgUmVmUHRyPFdlYkNvcmU6Ok5vZGVMaXN0PiBnb2JqZWN0UmVzdWx0
ID0gV1RGOjpnZXRQdHIoaXRlbS0+bGFiZWxzKCkpOwotICAgIHJldHVybiBXZWJLaXQ6OmtpdChn
b2JqZWN0UmVzdWx0LmdldCgpKTsKLX0KLQogZ2xvbmcgd2Via2l0X2RvbV9odG1sX3RleHRfYXJl
YV9lbGVtZW50X2dldF9zZWxlY3Rpb25fc3RhcnQoV2ViS2l0RE9NSFRNTFRleHRBcmVhRWxlbWVu
dCogc2VsZikKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CkBA
IC05NTAsMTA0ICs1NjgsNiBAQCB2b2lkIHdlYmtpdF9kb21faHRtbF90ZXh0X2FyZWFfZWxlbWVu
dF9zZXRfc2VsZWN0aW9uX2VuZChXZWJLaXRET01IVE1MVGV4dEFyZWFFbAogICAgIGl0ZW0tPnNl
dFNlbGVjdGlvbkVuZCh2YWx1ZSk7CiB9CiAKLWdjaGFyKiB3ZWJraXRfZG9tX2h0bWxfdGV4dF9h
cmVhX2VsZW1lbnRfZ2V0X3NlbGVjdGlvbl9kaXJlY3Rpb24oV2ViS2l0RE9NSFRNTFRleHRBcmVh
RWxlbWVudCogc2VsZikKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3Rh
dGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19IVE1MX1RFWFRfQVJF
QV9FTEVNRU5UKHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50KiBp
dGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdjaGFyKiByZXN1bHQgPSBjb252ZXJ0VG9V
VEY4U3RyaW5nKGl0ZW0tPnNlbGVjdGlvbkRpcmVjdGlvbigpKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotCi12b2lkIHdlYmtpdF9kb21faHRtbF90ZXh0X2FyZWFfZWxlbWVudF9zZXRfc2VsZWN0
aW9uX2RpcmVjdGlvbihXZWJLaXRET01IVE1MVGV4dEFyZWFFbGVtZW50KiBzZWxmLCBjb25zdCBn
Y2hhciogdmFsdWUpCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRl
OwotICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19IVE1MX1RFWFRfQVJFQV9FTEVN
RU5UKHNlbGYpKTsKLSAgICBnX3JldHVybl9pZl9mYWlsKHZhbHVlKTsKLSAgICBXZWJDb3JlOjpI
VE1MVGV4dEFyZWFFbGVtZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIFdURjo6
U3RyaW5nIGNvbnZlcnRlZFZhbHVlID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KHZhbHVlKTsKLSAg
ICBpdGVtLT5zZXRTZWxlY3Rpb25EaXJlY3Rpb24oY29udmVydGVkVmFsdWUpOwotfQotCi1nYm9v
bGVhbiB3ZWJraXRfZG9tX2h0bWxfdGV4dF9hcmVhX2VsZW1lbnRfZ2V0X2F1dG9jb3JyZWN0KFdl
YktpdERPTUhUTUxUZXh0QXJlYUVsZW1lbnQqIHNlbGYpCi17Ci0jaWYgRU5BQkxFKElPU19BVVRP
Q09SUkVDVF9BTkRfQVVUT0NBUElUQUxJWkUpCi0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVs
bFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfSFRN
TF9URVhUX0FSRUFfRUxFTUVOVChzZWxmKSwgRkFMU0UpOwotICAgIFdlYkNvcmU6OkhUTUxUZXh0
QXJlYUVsZW1lbnQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ2Jvb2xlYW4gcmVz
dWx0ID0gaXRlbS0+YXV0b2NvcnJlY3QoKTsKLSAgICByZXR1cm4gcmVzdWx0OwotI2Vsc2UKLSAg
ICBVTlVTRURfUEFSQU0oc2VsZik7Ci0gICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VO
VCgiSW9zIEF1dG9jb3JyZWN0IEFuZCBBdXRvY2FwaXRhbGl6ZSIpCi0gICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGdib29sZWFuPigwKTsKLSNlbmRpZiAvKiBFTkFCTEUoSU9TX0FVVE9DT1JSRUNUX0FO
RF9BVVRPQ0FQSVRBTElaRSkgKi8KLX0KLQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfdGV4dF9hcmVh
X2VsZW1lbnRfc2V0X2F1dG9jb3JyZWN0KFdlYktpdERPTUhUTUxUZXh0QXJlYUVsZW1lbnQqIHNl
bGYsIGdib29sZWFuIHZhbHVlKQotewotI2lmIEVOQUJMRShJT1NfQVVUT0NPUlJFQ1RfQU5EX0FV
VE9DQVBJVEFMSVpFKQotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsK
LSAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfSFRNTF9URVhUX0FSRUFfRUxFTUVO
VChzZWxmKSk7Ci0gICAgV2ViQ29yZTo6SFRNTFRleHRBcmVhRWxlbWVudCogaXRlbSA9IFdlYktp
dDo6Y29yZShzZWxmKTsKLSAgICBpdGVtLT5zZXRBdXRvY29ycmVjdCh2YWx1ZSk7Ci0jZWxzZQot
ICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKLSAgICBVTlVTRURfUEFSQU0odmFsdWUpOwotICAgIFdF
QktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIklvcyBBdXRvY29ycmVjdCBBbmQgQXV0b2Nh
cGl0YWxpemUiKQotI2VuZGlmIC8qIEVOQUJMRShJT1NfQVVUT0NPUlJFQ1RfQU5EX0FVVE9DQVBJ
VEFMSVpFKSAqLwotfQotCi1nY2hhciogd2Via2l0X2RvbV9odG1sX3RleHRfYXJlYV9lbGVtZW50
X2dldF9hdXRvY2FwaXRhbGl6ZShXZWJLaXRET01IVE1MVGV4dEFyZWFFbGVtZW50KiBzZWxmKQot
ewotI2lmIEVOQUJMRShJT1NfQVVUT0NPUlJFQ1RfQU5EX0FVVE9DQVBJVEFMSVpFKQotICAgIFdl
YkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZf
ZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxfVEVYVF9BUkVBX0VMRU1FTlQoc2VsZiksIDApOwotICAg
IFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7
Ci0gICAgZ2NoYXIqIHJlc3VsdCA9IGNvbnZlcnRUb1VURjhTdHJpbmcoaXRlbS0+YXV0b2NhcGl0
YWxpemUoKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHNl
bGYpOwotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIklvcyBBdXRvY29ycmVj
dCBBbmQgQXV0b2NhcGl0YWxpemUiKQotICAgIHJldHVybiAwOwotI2VuZGlmIC8qIEVOQUJMRShJ
T1NfQVVUT0NPUlJFQ1RfQU5EX0FVVE9DQVBJVEFMSVpFKSAqLwotfQotCi12b2lkIHdlYmtpdF9k
b21faHRtbF90ZXh0X2FyZWFfZWxlbWVudF9zZXRfYXV0b2NhcGl0YWxpemUoV2ViS2l0RE9NSFRN
TFRleHRBcmVhRWxlbWVudCogc2VsZiwgY29uc3QgZ2NoYXIqIHZhbHVlKQotewotI2lmIEVOQUJM
RShJT1NfQVVUT0NPUlJFQ1RfQU5EX0FVVE9DQVBJVEFMSVpFKQotICAgIFdlYkNvcmU6OkpTTWFp
blRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01f
SVNfSFRNTF9URVhUX0FSRUFfRUxFTUVOVChzZWxmKSk7Ci0gICAgZ19yZXR1cm5faWZfZmFpbCh2
YWx1ZSk7Ci0gICAgV2ViQ29yZTo6SFRNTFRleHRBcmVhRWxlbWVudCogaXRlbSA9IFdlYktpdDo6
Y29yZShzZWxmKTsKLSAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRWYWx1ZSA9IFdURjo6U3RyaW5n
Ojpmcm9tVVRGOCh2YWx1ZSk7Ci0gICAgaXRlbS0+c2V0QXV0b2NhcGl0YWxpemUoY29udmVydGVk
VmFsdWUpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc2VsZik7Ci0gICAgVU5VU0VEX1BBUkFN
KHZhbHVlKTsKLSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJJb3MgQXV0b2Nv
cnJlY3QgQW5kIEF1dG9jYXBpdGFsaXplIikKLSNlbmRpZiAvKiBFTkFCTEUoSU9TX0FVVE9DT1JS
RUNUX0FORF9BVVRPQ0FQSVRBTElaRSkgKi8KLX0KLQotZ2NoYXIqIHdlYmtpdF9kb21faHRtbF90
ZXh0X2FyZWFfZWxlbWVudF9nZXRfYXV0b2NvbXBsZXRlKFdlYktpdERPTUhUTUxUZXh0QXJlYUVs
ZW1lbnQqIHNlbGYpCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRl
OwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfSFRNTF9URVhUX0FSRUFf
RUxFTUVOVChzZWxmKSwgMCk7Ci0gICAgV2ViQ29yZTo6SFRNTFRleHRBcmVhRWxlbWVudCogaXRl
bSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBnY2hhciogcmVzdWx0ID0gY29udmVydFRvVVRG
OFN0cmluZyhpdGVtLT5hdXRvY29tcGxldGUoKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQot
dm9pZCB3ZWJraXRfZG9tX2h0bWxfdGV4dF9hcmVhX2VsZW1lbnRfc2V0X2F1dG9jb21wbGV0ZShX
ZWJLaXRET01IVE1MVGV4dEFyZWFFbGVtZW50KiBzZWxmLCBjb25zdCBnY2hhciogdmFsdWUpCi17
Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJu
X2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19IVE1MX1RFWFRfQVJFQV9FTEVNRU5UKHNlbGYpKTsKLSAg
ICBnX3JldHVybl9pZl9mYWlsKHZhbHVlKTsKLSAgICBXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVt
ZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIFdURjo6U3RyaW5nIGNvbnZlcnRl
ZFZhbHVlID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KHZhbHVlKTsKLSAgICBpdGVtLT5zZXRBdXRv
Y29tcGxldGUoY29udmVydGVkVmFsdWUpOwotfQotCiBnYm9vbGVhbiB3ZWJraXRfZG9tX2h0bWxf
dGV4dF9hcmVhX2VsZW1lbnRfaXNfZWRpdGVkKFdlYktpdERPTUhUTUxUZXh0QXJlYUVsZW1lbnQq
IGFyZWEpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19IVE1MX1RF
WFRfQVJFQV9FTEVNRU5UKGFyZWEpLCBGQUxTRSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxUZXh0
QXJlYUVsZW1lbnRVbnN0YWJsZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MVGV4dEFyZWFFbGVtZW50VW5zdGFibGUu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmNlZTVhMi4uMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktp
dERPTUhUTUxUZXh0QXJlYUVsZW1lbnRVbnN0YWJsZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMzAz
ICswLDAgQEAKLS8qCi0gKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNv
dXJjZSBwcm9qZWN0LgotICogIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJh
dGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICog
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgot
ICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgV2ViS2l0
RE9NSFRNTFRleHRBcmVhRWxlbWVudFVuc3RhYmxlX2gKLSNkZWZpbmUgV2ViS2l0RE9NSFRNTFRl
eHRBcmVhRWxlbWVudFVuc3RhYmxlX2gKLQotI2lmZGVmIFdFQktJVF9ET01fVVNFX1VOU1RBQkxF
X0FQSQotCi0jaW5jbHVkZSA8d2Via2l0ZG9tL3dlYmtpdGRvbWRlZmluZXMtdW5zdGFibGUuaD4K
LQotR19CRUdJTl9ERUNMUwotCi0vKioKLSAqIHdlYmtpdF9kb21faHRtbF90ZXh0X2FyZWFfZWxl
bWVudF9jaGVja192YWxpZGl0eToKLSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MVGV4dEFyZWFF
bGVtZW50Ci0gKgotICogUmV0dXJuczogQSAjZ2Jvb2xlYW4KLSAqCi0gKiBTdGFiaWxpdHk6IFVu
c3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgZ2Jvb2xlYW4KLXdlYmtpdF9kb21faHRtbF90ZXh0X2Fy
ZWFfZWxlbWVudF9jaGVja192YWxpZGl0eShXZWJLaXRET01IVE1MVGV4dEFyZWFFbGVtZW50KiBz
ZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0bWxfdGV4dF9hcmVhX2VsZW1lbnRfc2V0X2N1
c3RvbV92YWxpZGl0eToKLSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MVGV4dEFyZWFFbGVtZW50
Ci0gKiBAZXJyb3I6IEEgI2djaGFyCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1X
RUJLSVRfQVBJIHZvaWQKLXdlYmtpdF9kb21faHRtbF90ZXh0X2FyZWFfZWxlbWVudF9zZXRfY3Vz
dG9tX3ZhbGlkaXR5KFdlYktpdERPTUhUTUxUZXh0QXJlYUVsZW1lbnQqIHNlbGYsIGNvbnN0IGdj
aGFyKiBlcnJvcik7Ci0KLS8qKgotICogd2Via2l0X2RvbV9odG1sX3RleHRfYXJlYV9lbGVtZW50
X3NldF9yYW5nZV90ZXh0OgotICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxUZXh0QXJlYUVsZW1l
bnQKLSAqIEByZXBsYWNlbWVudDogQSAjZ2NoYXIKLSAqIEBzdGFydDogQSAjZ3Vsb25nCi0gKiBA
ZW5kOiBBICNndWxvbmcKLSAqIEBzZWxlY3Rpb25Nb2RlOiBBICNnY2hhcgotICogQGVycm9yOiAj
R0Vycm9yCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIHZvaWQK
LXdlYmtpdF9kb21faHRtbF90ZXh0X2FyZWFfZWxlbWVudF9zZXRfcmFuZ2VfdGV4dChXZWJLaXRE
T01IVE1MVGV4dEFyZWFFbGVtZW50KiBzZWxmLCBjb25zdCBnY2hhciogcmVwbGFjZW1lbnQsIGd1
bG9uZyBzdGFydCwgZ3Vsb25nIGVuZCwgY29uc3QgZ2NoYXIqIHNlbGVjdGlvbk1vZGUsIEdFcnJv
cioqIGVycm9yKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0bWxfdGV4dF9hcmVhX2VsZW1lbnRf
Z2V0X2Rpcl9uYW1lOgotICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxUZXh0QXJlYUVsZW1lbnQK
LSAqCi0gKiBSZXR1cm5zOiBBICNnY2hhcgotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoq
LwotV0VCS0lUX0FQSSBnY2hhcioKLXdlYmtpdF9kb21faHRtbF90ZXh0X2FyZWFfZWxlbWVudF9n
ZXRfZGlyX25hbWUoV2ViS2l0RE9NSFRNTFRleHRBcmVhRWxlbWVudCogc2VsZik7Ci0KLS8qKgot
ICogd2Via2l0X2RvbV9odG1sX3RleHRfYXJlYV9lbGVtZW50X3NldF9kaXJfbmFtZToKLSAqIEBz
ZWxmOiBBICNXZWJLaXRET01IVE1MVGV4dEFyZWFFbGVtZW50Ci0gKiBAdmFsdWU6IEEgI2djaGFy
Ci0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIHZvaWQKLXdlYmtp
dF9kb21faHRtbF90ZXh0X2FyZWFfZWxlbWVudF9zZXRfZGlyX25hbWUoV2ViS2l0RE9NSFRNTFRl
eHRBcmVhRWxlbWVudCogc2VsZiwgY29uc3QgZ2NoYXIqIHZhbHVlKTsKLQotLyoqCi0gKiB3ZWJr
aXRfZG9tX2h0bWxfdGV4dF9hcmVhX2VsZW1lbnRfZ2V0X21heF9sZW5ndGg6Ci0gKiBAc2VsZjog
QSAjV2ViS2l0RE9NSFRNTFRleHRBcmVhRWxlbWVudAotICoKLSAqIFJldHVybnM6IEEgI2dsb25n
Ci0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIGdsb25nCi13ZWJr
aXRfZG9tX2h0bWxfdGV4dF9hcmVhX2VsZW1lbnRfZ2V0X21heF9sZW5ndGgoV2ViS2l0RE9NSFRN
TFRleHRBcmVhRWxlbWVudCogc2VsZik7Ci0KLS8qKgotICogd2Via2l0X2RvbV9odG1sX3RleHRf
YXJlYV9lbGVtZW50X3NldF9tYXhfbGVuZ3RoOgotICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxU
ZXh0QXJlYUVsZW1lbnQKLSAqIEB2YWx1ZTogQSAjZ2xvbmcKLSAqIEBlcnJvcjogI0dFcnJvcgot
ICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSB2b2lkCi13ZWJraXRf
ZG9tX2h0bWxfdGV4dF9hcmVhX2VsZW1lbnRfc2V0X21heF9sZW5ndGgoV2ViS2l0RE9NSFRNTFRl
eHRBcmVhRWxlbWVudCogc2VsZiwgZ2xvbmcgdmFsdWUsIEdFcnJvcioqIGVycm9yKTsKLQotLyoq
Ci0gKiB3ZWJraXRfZG9tX2h0bWxfdGV4dF9hcmVhX2VsZW1lbnRfZ2V0X3BsYWNlaG9sZGVyOgot
ICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxUZXh0QXJlYUVsZW1lbnQKLSAqCi0gKiBSZXR1cm5z
OiBBICNnY2hhcgotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSBn
Y2hhcioKLXdlYmtpdF9kb21faHRtbF90ZXh0X2FyZWFfZWxlbWVudF9nZXRfcGxhY2Vob2xkZXIo
V2ViS2l0RE9NSFRNTFRleHRBcmVhRWxlbWVudCogc2VsZik7Ci0KLS8qKgotICogd2Via2l0X2Rv
bV9odG1sX3RleHRfYXJlYV9lbGVtZW50X3NldF9wbGFjZWhvbGRlcjoKLSAqIEBzZWxmOiBBICNX
ZWJLaXRET01IVE1MVGV4dEFyZWFFbGVtZW50Ci0gKiBAdmFsdWU6IEEgI2djaGFyCi0gKgotICog
U3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIHZvaWQKLXdlYmtpdF9kb21faHRt
bF90ZXh0X2FyZWFfZWxlbWVudF9zZXRfcGxhY2Vob2xkZXIoV2ViS2l0RE9NSFRNTFRleHRBcmVh
RWxlbWVudCogc2VsZiwgY29uc3QgZ2NoYXIqIHZhbHVlKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9t
X2h0bWxfdGV4dF9hcmVhX2VsZW1lbnRfZ2V0X3JlcXVpcmVkOgotICogQHNlbGY6IEEgI1dlYktp
dERPTUhUTUxUZXh0QXJlYUVsZW1lbnQKLSAqCi0gKiBSZXR1cm5zOiBBICNnYm9vbGVhbgotICoK
LSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSBnYm9vbGVhbgotd2Via2l0
X2RvbV9odG1sX3RleHRfYXJlYV9lbGVtZW50X2dldF9yZXF1aXJlZChXZWJLaXRET01IVE1MVGV4
dEFyZWFFbGVtZW50KiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0bWxfdGV4dF9hcmVh
X2VsZW1lbnRfc2V0X3JlcXVpcmVkOgotICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxUZXh0QXJl
YUVsZW1lbnQKLSAqIEB2YWx1ZTogQSAjZ2Jvb2xlYW4KLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3Rh
YmxlCi0qKi8KLVdFQktJVF9BUEkgdm9pZAotd2Via2l0X2RvbV9odG1sX3RleHRfYXJlYV9lbGVt
ZW50X3NldF9yZXF1aXJlZChXZWJLaXRET01IVE1MVGV4dEFyZWFFbGVtZW50KiBzZWxmLCBnYm9v
bGVhbiB2YWx1ZSk7Ci0KLS8qKgotICogd2Via2l0X2RvbV9odG1sX3RleHRfYXJlYV9lbGVtZW50
X2dldF93cmFwOgotICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxUZXh0QXJlYUVsZW1lbnQKLSAq
Ci0gKiBSZXR1cm5zOiBBICNnY2hhcgotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwot
V0VCS0lUX0FQSSBnY2hhcioKLXdlYmtpdF9kb21faHRtbF90ZXh0X2FyZWFfZWxlbWVudF9nZXRf
d3JhcChXZWJLaXRET01IVE1MVGV4dEFyZWFFbGVtZW50KiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJr
aXRfZG9tX2h0bWxfdGV4dF9hcmVhX2VsZW1lbnRfc2V0X3dyYXA6Ci0gKiBAc2VsZjogQSAjV2Vi
S2l0RE9NSFRNTFRleHRBcmVhRWxlbWVudAotICogQHZhbHVlOiBBICNnY2hhcgotICoKLSAqIFN0
YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSB2b2lkCi13ZWJraXRfZG9tX2h0bWxf
dGV4dF9hcmVhX2VsZW1lbnRfc2V0X3dyYXAoV2ViS2l0RE9NSFRNTFRleHRBcmVhRWxlbWVudCog
c2VsZiwgY29uc3QgZ2NoYXIqIHZhbHVlKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0bWxfdGV4
dF9hcmVhX2VsZW1lbnRfZ2V0X3RleHRfbGVuZ3RoOgotICogQHNlbGY6IEEgI1dlYktpdERPTUhU
TUxUZXh0QXJlYUVsZW1lbnQKLSAqCi0gKiBSZXR1cm5zOiBBICNndWxvbmcKLSAqCi0gKiBTdGFi
aWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgZ3Vsb25nCi13ZWJraXRfZG9tX2h0bWxf
dGV4dF9hcmVhX2VsZW1lbnRfZ2V0X3RleHRfbGVuZ3RoKFdlYktpdERPTUhUTUxUZXh0QXJlYUVs
ZW1lbnQqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9kb21faHRtbF90ZXh0X2FyZWFfZWxlbWVu
dF9nZXRfdmFsaWRpdHk6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTFRleHRBcmVhRWxlbWVu
dAotICoKLSAqIFJldHVybnM6ICh0cmFuc2ZlciBmdWxsKTogQSAjV2ViS2l0RE9NVmFsaWRpdHlT
dGF0ZQotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSBXZWJLaXRE
T01WYWxpZGl0eVN0YXRlKgotd2Via2l0X2RvbV9odG1sX3RleHRfYXJlYV9lbGVtZW50X2dldF92
YWxpZGl0eShXZWJLaXRET01IVE1MVGV4dEFyZWFFbGVtZW50KiBzZWxmKTsKLQotLyoqCi0gKiB3
ZWJraXRfZG9tX2h0bWxfdGV4dF9hcmVhX2VsZW1lbnRfZ2V0X3ZhbGlkYXRpb25fbWVzc2FnZToK
LSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MVGV4dEFyZWFFbGVtZW50Ci0gKgotICogUmV0dXJu
czogQSAjZ2NoYXIKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkg
Z2NoYXIqCi13ZWJraXRfZG9tX2h0bWxfdGV4dF9hcmVhX2VsZW1lbnRfZ2V0X3ZhbGlkYXRpb25f
bWVzc2FnZShXZWJLaXRET01IVE1MVGV4dEFyZWFFbGVtZW50KiBzZWxmKTsKLQotLyoqCi0gKiB3
ZWJraXRfZG9tX2h0bWxfdGV4dF9hcmVhX2VsZW1lbnRfZ2V0X2xhYmVsczoKLSAqIEBzZWxmOiBB
ICNXZWJLaXRET01IVE1MVGV4dEFyZWFFbGVtZW50Ci0gKgotICogUmV0dXJuczogKHRyYW5zZmVy
IGZ1bGwpOiBBICNXZWJLaXRET01Ob2RlTGlzdAotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUK
LSoqLwotV0VCS0lUX0FQSSBXZWJLaXRET01Ob2RlTGlzdCoKLXdlYmtpdF9kb21faHRtbF90ZXh0
X2FyZWFfZWxlbWVudF9nZXRfbGFiZWxzKFdlYktpdERPTUhUTUxUZXh0QXJlYUVsZW1lbnQqIHNl
bGYpOwotCi0vKioKLSAqIHdlYmtpdF9kb21faHRtbF90ZXh0X2FyZWFfZWxlbWVudF9nZXRfc2Vs
ZWN0aW9uX2RpcmVjdGlvbjoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MVGV4dEFyZWFFbGVt
ZW50Ci0gKgotICogUmV0dXJuczogQSAjZ2NoYXIKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxl
Ci0qKi8KLVdFQktJVF9BUEkgZ2NoYXIqCi13ZWJraXRfZG9tX2h0bWxfdGV4dF9hcmVhX2VsZW1l
bnRfZ2V0X3NlbGVjdGlvbl9kaXJlY3Rpb24oV2ViS2l0RE9NSFRNTFRleHRBcmVhRWxlbWVudCog
c2VsZik7Ci0KLS8qKgotICogd2Via2l0X2RvbV9odG1sX3RleHRfYXJlYV9lbGVtZW50X3NldF9z
ZWxlY3Rpb25fZGlyZWN0aW9uOgotICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxUZXh0QXJlYUVs
ZW1lbnQKLSAqIEB2YWx1ZTogQSAjZ2NoYXIKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0q
Ki8KLVdFQktJVF9BUEkgdm9pZAotd2Via2l0X2RvbV9odG1sX3RleHRfYXJlYV9lbGVtZW50X3Nl
dF9zZWxlY3Rpb25fZGlyZWN0aW9uKFdlYktpdERPTUhUTUxUZXh0QXJlYUVsZW1lbnQqIHNlbGYs
IGNvbnN0IGdjaGFyKiB2YWx1ZSk7Ci0KLS8qKgotICogd2Via2l0X2RvbV9odG1sX3RleHRfYXJl
YV9lbGVtZW50X2dldF9hdXRvY29ycmVjdDoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MVGV4
dEFyZWFFbGVtZW50Ci0gKgotICogUmV0dXJuczogQSAjZ2Jvb2xlYW4KLSAqCi0gKiBTdGFiaWxp
dHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgZ2Jvb2xlYW4KLXdlYmtpdF9kb21faHRtbF90
ZXh0X2FyZWFfZWxlbWVudF9nZXRfYXV0b2NvcnJlY3QoV2ViS2l0RE9NSFRNTFRleHRBcmVhRWxl
bWVudCogc2VsZik7Ci0KLS8qKgotICogd2Via2l0X2RvbV9odG1sX3RleHRfYXJlYV9lbGVtZW50
X3NldF9hdXRvY29ycmVjdDoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MVGV4dEFyZWFFbGVt
ZW50Ci0gKiBAdmFsdWU6IEEgI2dib29sZWFuCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQot
KiovCi1XRUJLSVRfQVBJIHZvaWQKLXdlYmtpdF9kb21faHRtbF90ZXh0X2FyZWFfZWxlbWVudF9z
ZXRfYXV0b2NvcnJlY3QoV2ViS2l0RE9NSFRNTFRleHRBcmVhRWxlbWVudCogc2VsZiwgZ2Jvb2xl
YW4gdmFsdWUpOwotCi0vKioKLSAqIHdlYmtpdF9kb21faHRtbF90ZXh0X2FyZWFfZWxlbWVudF9n
ZXRfYXV0b2NhcGl0YWxpemU6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTFRleHRBcmVhRWxl
bWVudAotICoKLSAqIFJldHVybnM6IEEgI2djaGFyCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJs
ZQotKiovCi1XRUJLSVRfQVBJIGdjaGFyKgotd2Via2l0X2RvbV9odG1sX3RleHRfYXJlYV9lbGVt
ZW50X2dldF9hdXRvY2FwaXRhbGl6ZShXZWJLaXRET01IVE1MVGV4dEFyZWFFbGVtZW50KiBzZWxm
KTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0bWxfdGV4dF9hcmVhX2VsZW1lbnRfc2V0X2F1dG9j
YXBpdGFsaXplOgotICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxUZXh0QXJlYUVsZW1lbnQKLSAq
IEB2YWx1ZTogQSAjZ2NoYXIKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJ
VF9BUEkgdm9pZAotd2Via2l0X2RvbV9odG1sX3RleHRfYXJlYV9lbGVtZW50X3NldF9hdXRvY2Fw
aXRhbGl6ZShXZWJLaXRET01IVE1MVGV4dEFyZWFFbGVtZW50KiBzZWxmLCBjb25zdCBnY2hhciog
dmFsdWUpOwotCi0vKioKLSAqIHdlYmtpdF9kb21faHRtbF90ZXh0X2FyZWFfZWxlbWVudF9nZXRf
YXV0b2NvbXBsZXRlOgotICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxUZXh0QXJlYUVsZW1lbnQK
LSAqCi0gKiBSZXR1cm5zOiBBICNnY2hhcgotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoq
LwotV0VCS0lUX0FQSSBnY2hhcioKLXdlYmtpdF9kb21faHRtbF90ZXh0X2FyZWFfZWxlbWVudF9n
ZXRfYXV0b2NvbXBsZXRlKFdlYktpdERPTUhUTUxUZXh0QXJlYUVsZW1lbnQqIHNlbGYpOwotCi0v
KioKLSAqIHdlYmtpdF9kb21faHRtbF90ZXh0X2FyZWFfZWxlbWVudF9zZXRfYXV0b2NvbXBsZXRl
OgotICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxUZXh0QXJlYUVsZW1lbnQKLSAqIEB2YWx1ZTog
QSAjZ2NoYXIKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgdm9p
ZAotd2Via2l0X2RvbV9odG1sX3RleHRfYXJlYV9lbGVtZW50X3NldF9hdXRvY29tcGxldGUoV2Vi
S2l0RE9NSFRNTFRleHRBcmVhRWxlbWVudCogc2VsZiwgY29uc3QgZ2NoYXIqIHZhbHVlKTsKLQot
Ci1HX0VORF9ERUNMUwotCi0jZW5kaWYgLyogV0VCS0lUX0RPTV9VU0VfVU5TVEFCTEVfQVBJICov
Ci0jZW5kaWYgLyogV2ViS2l0RE9NSFRNTFRleHRBcmVhRWxlbWVudFVuc3RhYmxlX2ggKi8KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0
ay9ET00vV2ViS2l0RE9NSFRNTFZpZGVvRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxWaWRlb0VsZW1l
bnQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YzY1MDE0Li4wMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00v
V2ViS2l0RE9NSFRNTFZpZGVvRWxlbWVudC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NjIgKzAs
MCBAQAotLyoKLSAqICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNl
IHByb2plY3QuCi0gKiAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1i
aW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiAgTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
Ci0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0g
KiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgot
ICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0g
KiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIldlYktpdERPTUhUTUxWaWRlb0VsZW1lbnQuaCIKLQotI2luY2x1ZGUgPFdl
YkNvcmUvQ1NTSW1wb3J0UnVsZS5oPgotI2luY2x1ZGUgIkRPTU9iamVjdENhY2hlLmgiCi0jaW5j
bHVkZSA8V2ViQ29yZS9Eb2N1bWVudC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRXhjZXB0aW9uQ29k
ZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uLmg+Ci0jaW5j
bHVkZSAiR09iamVjdEV2ZW50TGlzdGVuZXIuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0hUTUxOYW1l
cy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmg+Ci0jaW5jbHVk
ZSAiV2ViS2l0RE9NRXZlbnRQcml2YXRlLmgiCi0jaW5jbHVkZSAiV2ViS2l0RE9NRXZlbnRUYXJn
ZXQuaCIKLSNpbmNsdWRlICJXZWJLaXRET01IVE1MVmlkZW9FbGVtZW50UHJpdmF0ZS5oIgotI2lu
Y2x1ZGUgIldlYktpdERPTU5vZGVQcml2YXRlLmgiCi0jaW5jbHVkZSAiV2ViS2l0RE9NUHJpdmF0
ZS5oIgotI2luY2x1ZGUgIkNvbnZlcnRUb1VURjhTdHJpbmcuaCIKLSNpbmNsdWRlIDx3dGYvR2V0
UHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi0jaWYgRU5BQkxFKFZJREVPKQotCi1u
YW1lc3BhY2UgV2ViS2l0IHsKLQotV2ViS2l0RE9NSFRNTFZpZGVvRWxlbWVudCoga2l0KFdlYkNv
cmU6OkhUTUxWaWRlb0VsZW1lbnQqIG9iaikKLXsKLSAgICByZXR1cm4gV0VCS0lUX0RPTV9IVE1M
X1ZJREVPX0VMRU1FTlQoa2l0KHN0YXRpY19jYXN0PFdlYkNvcmU6Ok5vZGUqPihvYmopKSk7Ci19
Ci0KLVdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQqIGNvcmUoV2ViS2l0RE9NSFRNTFZpZGVvRWxl
bWVudCogcmVxdWVzdCkKLXsKLSAgICByZXR1cm4gcmVxdWVzdCA/IHN0YXRpY19jYXN0PFdlYkNv
cmU6OkhUTUxWaWRlb0VsZW1lbnQqPihXRUJLSVRfRE9NX09CSkVDVChyZXF1ZXN0KS0+Y29yZU9i
amVjdCkgOiAwOwotfQotCi1XZWJLaXRET01IVE1MVmlkZW9FbGVtZW50KiB3cmFwSFRNTFZpZGVv
RWxlbWVudChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50KiBjb3JlT2JqZWN0KQotewotICAgIEFT
U0VSVChjb3JlT2JqZWN0KTsKLSAgICByZXR1cm4gV0VCS0lUX0RPTV9IVE1MX1ZJREVPX0VMRU1F
TlQoZ19vYmplY3RfbmV3KFdFQktJVF9ET01fVFlQRV9IVE1MX1ZJREVPX0VMRU1FTlQsICJjb3Jl
LW9iamVjdCIsIGNvcmVPYmplY3QsIG51bGxwdHIpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoVklERU8pCi0KLXN0YXRpYyBnYm9vbGVhbiB3ZWJraXRf
ZG9tX2h0bWxfdmlkZW9fZWxlbWVudF9kaXNwYXRjaF9ldmVudChXZWJLaXRET01FdmVudFRhcmdl
dCogdGFyZ2V0LCBXZWJLaXRET01FdmVudCogZXZlbnQsIEdFcnJvcioqIGVycm9yKQotewotI2lm
IEVOQUJMRShWSURFTykKLSAgICBXZWJDb3JlOjpFdmVudCogY29yZUV2ZW50ID0gV2ViS2l0Ojpj
b3JlKGV2ZW50KTsKLSAgICBpZiAoIWNvcmVFdmVudCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQqIGNvcmVUYXJnZXQgPSBzdGF0aWNfY2FzdDxX
ZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50Kj4oV0VCS0lUX0RPTV9PQkpFQ1QodGFyZ2V0KS0+Y29y
ZU9iamVjdCk7Ci0KLSAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBnYm9v
bGVhbiByZXN1bHQgPSBjb3JlVGFyZ2V0LT5kaXNwYXRjaEV2ZW50Rm9yQmluZGluZ3MoKmNvcmVF
dmVudCwgZWMpOwotICAgIGlmIChlYykgewotICAgICAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2Rl
RGVzY3JpcHRpb24gZGVzY3JpcHRpb24oZWMpOwotICAgICAgICBnX3NldF9lcnJvcl9saXRlcmFs
KGVycm9yLCBnX3F1YXJrX2Zyb21fc3RyaW5nKCJXRUJLSVRfRE9NIiksIGRlc2NyaXB0aW9uLmNv
ZGUsIGRlc2NyaXB0aW9uLm5hbWUpOwotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OwotI2Vsc2UK
LSAgICBVTlVTRURfUEFSQU0odGFyZ2V0KTsKLSAgICBVTlVTRURfUEFSQU0oZXZlbnQpOwotICAg
IFVOVVNFRF9QQVJBTShlcnJvcik7Ci0gICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VO
VCgiVmlkZW8iKQotICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZiAvLyBFTkFCTEUoVklERU8pCi19
Ci0KLXN0YXRpYyBnYm9vbGVhbiB3ZWJraXRfZG9tX2h0bWxfdmlkZW9fZWxlbWVudF9hZGRfZXZl
bnRfbGlzdGVuZXIoV2ViS2l0RE9NRXZlbnRUYXJnZXQqIHRhcmdldCwgY29uc3QgY2hhciogZXZl
bnROYW1lLCBHQ2xvc3VyZSogaGFuZGxlciwgZ2Jvb2xlYW4gdXNlQ2FwdHVyZSkKLXsKLSNpZiBF
TkFCTEUoVklERU8pCi0gICAgV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudCogY29yZVRhcmdldCA9
IHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQqPihXRUJLSVRfRE9NX09CSkVD
VCh0YXJnZXQpLT5jb3JlT2JqZWN0KTsKLSAgICByZXR1cm4gV2ViS2l0OjpHT2JqZWN0RXZlbnRM
aXN0ZW5lcjo6YWRkRXZlbnRMaXN0ZW5lcihHX09CSkVDVCh0YXJnZXQpLCBjb3JlVGFyZ2V0LCBl
dmVudE5hbWUsIGhhbmRsZXIsIHVzZUNhcHR1cmUpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0o
dGFyZ2V0KTsKLSAgICBVTlVTRURfUEFSQU0oZXZlbnROYW1lKTsKLSAgICBVTlVTRURfUEFSQU0o
aGFuZGxlcik7Ci0gICAgVU5VU0VEX1BBUkFNKHVzZUNhcHR1cmUpOwotICAgIFdFQktJVF9XQVJO
X0ZFQVRVUkVfTk9UX1BSRVNFTlQoIlZpZGVvIikKLSAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYg
Ly8gRU5BQkxFKFZJREVPKQotfQotCi1zdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X2RvbV9odG1sX3Zp
ZGVvX2VsZW1lbnRfcmVtb3ZlX2V2ZW50X2xpc3RlbmVyKFdlYktpdERPTUV2ZW50VGFyZ2V0KiB0
YXJnZXQsIGNvbnN0IGNoYXIqIGV2ZW50TmFtZSwgR0Nsb3N1cmUqIGhhbmRsZXIsIGdib29sZWFu
IHVzZUNhcHR1cmUpCi17Ci0jaWYgRU5BQkxFKFZJREVPKQotICAgIFdlYkNvcmU6OkhUTUxWaWRl
b0VsZW1lbnQqIGNvcmVUYXJnZXQgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MVmlkZW9FbGVt
ZW50Kj4oV0VCS0lUX0RPTV9PQkpFQ1QodGFyZ2V0KS0+Y29yZU9iamVjdCk7Ci0gICAgcmV0dXJu
IFdlYktpdDo6R09iamVjdEV2ZW50TGlzdGVuZXI6OnJlbW92ZUV2ZW50TGlzdGVuZXIoR19PQkpF
Q1QodGFyZ2V0KSwgY29yZVRhcmdldCwgZXZlbnROYW1lLCBoYW5kbGVyLCB1c2VDYXB0dXJlKTsK
LSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7Ci0gICAgVU5VU0VEX1BBUkFNKGV2ZW50
TmFtZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGhhbmRsZXIpOwotICAgIFVOVVNFRF9QQVJBTSh1c2VD
YXB0dXJlKTsKLSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJWaWRlbyIpCi0g
ICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmIC8vIEVOQUJMRShWSURFTykKLX0KLQotc3RhdGljIHZv
aWQgd2Via2l0X2RvbV9ldmVudF90YXJnZXRfaW5pdChXZWJLaXRET01FdmVudFRhcmdldElmYWNl
KiBpZmFjZSkKLXsKLSAgICBpZmFjZS0+ZGlzcGF0Y2hfZXZlbnQgPSB3ZWJraXRfZG9tX2h0bWxf
dmlkZW9fZWxlbWVudF9kaXNwYXRjaF9ldmVudDsKLSAgICBpZmFjZS0+YWRkX2V2ZW50X2xpc3Rl
bmVyID0gd2Via2l0X2RvbV9odG1sX3ZpZGVvX2VsZW1lbnRfYWRkX2V2ZW50X2xpc3RlbmVyOwot
ICAgIGlmYWNlLT5yZW1vdmVfZXZlbnRfbGlzdGVuZXIgPSB3ZWJraXRfZG9tX2h0bWxfdmlkZW9f
ZWxlbWVudF9yZW1vdmVfZXZlbnRfbGlzdGVuZXI7Ci19Ci0KLUdfREVGSU5FX1RZUEVfV0lUSF9D
T0RFKFdlYktpdERPTUhUTUxWaWRlb0VsZW1lbnQsIHdlYmtpdF9kb21faHRtbF92aWRlb19lbGVt
ZW50LCBXRUJLSVRfRE9NX1RZUEVfSFRNTF9NRURJQV9FTEVNRU5ULCBHX0lNUExFTUVOVF9JTlRF
UkZBQ0UoV0VCS0lUX0RPTV9UWVBFX0VWRU5UX1RBUkdFVCwgd2Via2l0X2RvbV9ldmVudF90YXJn
ZXRfaW5pdCkpCi0KLWVudW0gewotICAgIFBST1BfMCwKLSAgICBQUk9QX1dJRFRILAotICAgIFBS
T1BfSEVJR0hULAotICAgIFBST1BfVklERU9fV0lEVEgsCi0gICAgUFJPUF9WSURFT19IRUlHSFQs
Ci0gICAgUFJPUF9QT1NURVIsCi0gICAgUFJPUF9QTEFZU19JTkxJTkUsCi0gICAgUFJPUF9XRUJL
SVRfU1VQUE9SVFNfRlVMTFNDUkVFTiwKLSAgICBQUk9QX1dFQktJVF9ESVNQTEFZSU5HX0ZVTExT
Q1JFRU4sCi0gICAgUFJPUF9XRUJLSVRfV0lSRUxFU1NfVklERU9fUExBWUJBQ0tfRElTQUJMRUQs
Ci0gICAgUFJPUF9XRUJLSVRfREVDT0RFRF9GUkFNRV9DT1VOVCwKLSAgICBQUk9QX1dFQktJVF9E
Uk9QUEVEX0ZSQU1FX0NPVU5ULAotfTsKLQotc3RhdGljIHZvaWQgd2Via2l0X2RvbV9odG1sX3Zp
ZGVvX2VsZW1lbnRfc2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcGVydHlJ
ZCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpCi17Ci0gICAgV2ViS2l0
RE9NSFRNTFZpZGVvRWxlbWVudCogc2VsZiA9IFdFQktJVF9ET01fSFRNTF9WSURFT19FTEVNRU5U
KG9iamVjdCk7Ci0KLSAgICBzd2l0Y2ggKHByb3BlcnR5SWQpIHsKLSAgICBjYXNlIFBST1BfV0lE
VEg6Ci0gICAgICAgIHdlYmtpdF9kb21faHRtbF92aWRlb19lbGVtZW50X3NldF93aWR0aChzZWxm
LCBnX3ZhbHVlX2dldF91bG9uZyh2YWx1ZSkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBS
T1BfSEVJR0hUOgotICAgICAgICB3ZWJraXRfZG9tX2h0bWxfdmlkZW9fZWxlbWVudF9zZXRfaGVp
Z2h0KHNlbGYsIGdfdmFsdWVfZ2V0X3Vsb25nKHZhbHVlKSk7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgUFJPUF9QT1NURVI6Ci0gICAgICAgIHdlYmtpdF9kb21faHRtbF92aWRlb19lbGVtZW50
X3NldF9wb3N0ZXIoc2VsZiwgZ192YWx1ZV9nZXRfc3RyaW5nKHZhbHVlKSk7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgUFJPUF9QTEFZU19JTkxJTkU6Ci0gICAgICAgIHdlYmtpdF9kb21faHRt
bF92aWRlb19lbGVtZW50X3NldF9wbGF5c19pbmxpbmUoc2VsZiwgZ192YWx1ZV9nZXRfYm9vbGVh
bih2YWx1ZSkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfV0VCS0lUX1dJUkVMRVNT
X1ZJREVPX1BMQVlCQUNLX0RJU0FCTEVEOgotICAgICAgICB3ZWJraXRfZG9tX2h0bWxfdmlkZW9f
ZWxlbWVudF9zZXRfd2Via2l0X3dpcmVsZXNzX3ZpZGVvX3BsYXliYWNrX2Rpc2FibGVkKHNlbGYs
IGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVs
dDoKLSAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJv
cGVydHlJZCwgcHNwZWMpOwotICAgICAgICBicmVhazsKLSAgICB9Ci19Ci0KLXN0YXRpYyB2b2lk
IHdlYmtpdF9kb21faHRtbF92aWRlb19lbGVtZW50X2dldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmpl
Y3QsIGd1aW50IHByb3BlcnR5SWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKQot
ewotICAgIFdlYktpdERPTUhUTUxWaWRlb0VsZW1lbnQqIHNlbGYgPSBXRUJLSVRfRE9NX0hUTUxf
VklERU9fRUxFTUVOVChvYmplY3QpOwotCi0gICAgc3dpdGNoIChwcm9wZXJ0eUlkKSB7Ci0gICAg
Y2FzZSBQUk9QX1dJRFRIOgotICAgICAgICBnX3ZhbHVlX3NldF91bG9uZyh2YWx1ZSwgd2Via2l0
X2RvbV9odG1sX3ZpZGVvX2VsZW1lbnRfZ2V0X3dpZHRoKHNlbGYpKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBQUk9QX0hFSUdIVDoKLSAgICAgICAgZ192YWx1ZV9zZXRfdWxvbmcodmFsdWUs
IHdlYmtpdF9kb21faHRtbF92aWRlb19lbGVtZW50X2dldF9oZWlnaHQoc2VsZikpOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIFBST1BfVklERU9fV0lEVEg6Ci0gICAgICAgIGdfdmFsdWVfc2V0
X3Vsb25nKHZhbHVlLCB3ZWJraXRfZG9tX2h0bWxfdmlkZW9fZWxlbWVudF9nZXRfdmlkZW9fd2lk
dGgoc2VsZikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfVklERU9fSEVJR0hUOgot
ICAgICAgICBnX3ZhbHVlX3NldF91bG9uZyh2YWx1ZSwgd2Via2l0X2RvbV9odG1sX3ZpZGVvX2Vs
ZW1lbnRfZ2V0X3ZpZGVvX2hlaWdodChzZWxmKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
UFJPUF9QT1NURVI6Ci0gICAgICAgIGdfdmFsdWVfdGFrZV9zdHJpbmcodmFsdWUsIHdlYmtpdF9k
b21faHRtbF92aWRlb19lbGVtZW50X2dldF9wb3N0ZXIoc2VsZikpOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIFBST1BfUExBWVNfSU5MSU5FOgotICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFu
KHZhbHVlLCB3ZWJraXRfZG9tX2h0bWxfdmlkZW9fZWxlbWVudF9nZXRfcGxheXNfaW5saW5lKHNl
bGYpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX1dFQktJVF9TVVBQT1JUU19GVUxM
U0NSRUVOOgotICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfZG9tX2h0
bWxfdmlkZW9fZWxlbWVudF9nZXRfd2Via2l0X3N1cHBvcnRzX2Z1bGxzY3JlZW4oc2VsZikpOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfV0VCS0lUX0RJU1BMQVlJTkdfRlVMTFNDUkVF
TjoKLSAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X2RvbV9odG1sX3Zp
ZGVvX2VsZW1lbnRfZ2V0X3dlYmtpdF9kaXNwbGF5aW5nX2Z1bGxzY3JlZW4oc2VsZikpOwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfV0VCS0lUX1dJUkVMRVNTX1ZJREVPX1BMQVlCQUNL
X0RJU0FCTEVEOgotICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfZG9t
X2h0bWxfdmlkZW9fZWxlbWVudF9nZXRfd2Via2l0X3dpcmVsZXNzX3ZpZGVvX3BsYXliYWNrX2Rp
c2FibGVkKHNlbGYpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX1dFQktJVF9ERUNP
REVEX0ZSQU1FX0NPVU5UOgotICAgICAgICBnX3ZhbHVlX3NldF91bG9uZyh2YWx1ZSwgd2Via2l0
X2RvbV9odG1sX3ZpZGVvX2VsZW1lbnRfZ2V0X3dlYmtpdF9kZWNvZGVkX2ZyYW1lX2NvdW50KHNl
bGYpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX1dFQktJVF9EUk9QUEVEX0ZSQU1F
X0NPVU5UOgotICAgICAgICBnX3ZhbHVlX3NldF91bG9uZyh2YWx1ZSwgd2Via2l0X2RvbV9odG1s
X3ZpZGVvX2VsZW1lbnRfZ2V0X3dlYmtpdF9kcm9wcGVkX2ZyYW1lX2NvdW50KHNlbGYpKTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElE
X1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcGVydHlJZCwgcHNwZWMpOwotICAgICAgICBicmVhazsK
LSAgICB9Ci19Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdF9kb21faHRtbF92aWRlb19lbGVtZW50X2Ns
YXNzX2luaXQoV2ViS2l0RE9NSFRNTFZpZGVvRWxlbWVudENsYXNzKiByZXF1ZXN0Q2xhc3MpCi17
Ci0gICAgR09iamVjdENsYXNzKiBnb2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhyZXF1ZXN0
Q2xhc3MpOwotICAgIGdvYmplY3RDbGFzcy0+c2V0X3Byb3BlcnR5ID0gd2Via2l0X2RvbV9odG1s
X3ZpZGVvX2VsZW1lbnRfc2V0X3Byb3BlcnR5OwotICAgIGdvYmplY3RDbGFzcy0+Z2V0X3Byb3Bl
cnR5ID0gd2Via2l0X2RvbV9odG1sX3ZpZGVvX2VsZW1lbnRfZ2V0X3Byb3BlcnR5OwotCi0gICAg
Z19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAgZ29iamVjdENsYXNzLAot
ICAgICAgICBQUk9QX1dJRFRILAotICAgICAgICBnX3BhcmFtX3NwZWNfdWxvbmcoCi0gICAgICAg
ICAgICAid2lkdGgiLAotICAgICAgICAgICAgIkhUTUxWaWRlb0VsZW1lbnQ6d2lkdGgiLAotICAg
ICAgICAgICAgInJlYWQtd3JpdGUgZ3Vsb25nIEhUTUxWaWRlb0VsZW1lbnQ6d2lkdGgiLAotICAg
ICAgICAgICAgMCwgR19NQVhVTE9ORywgMCwKLSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFE
V1JJVEUpKTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAg
IGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9IRUlHSFQsCi0gICAgICAgIGdfcGFyYW1fc3Bl
Y191bG9uZygKLSAgICAgICAgICAgICJoZWlnaHQiLAotICAgICAgICAgICAgIkhUTUxWaWRlb0Vs
ZW1lbnQ6aGVpZ2h0IiwKLSAgICAgICAgICAgICJyZWFkLXdyaXRlIGd1bG9uZyBIVE1MVmlkZW9F
bGVtZW50OmhlaWdodCIsCi0gICAgICAgICAgICAwLCBHX01BWFVMT05HLCAwLAotICAgICAgICAg
ICAgV0VCS0lUX1BBUkFNX1JFQURXUklURSkpOwotCi0gICAgZ19vYmplY3RfY2xhc3NfaW5zdGFs
bF9wcm9wZXJ0eSgKLSAgICAgICAgZ29iamVjdENsYXNzLAotICAgICAgICBQUk9QX1ZJREVPX1dJ
RFRILAotICAgICAgICBnX3BhcmFtX3NwZWNfdWxvbmcoCi0gICAgICAgICAgICAidmlkZW8td2lk
dGgiLAotICAgICAgICAgICAgIkhUTUxWaWRlb0VsZW1lbnQ6dmlkZW8td2lkdGgiLAotICAgICAg
ICAgICAgInJlYWQtb25seSBndWxvbmcgSFRNTFZpZGVvRWxlbWVudDp2aWRlby13aWR0aCIsCi0g
ICAgICAgICAgICAwLCBHX01BWFVMT05HLCAwLAotICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JF
QURBQkxFKSk7Ci0KLSAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAotICAgICAg
ICBnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBST1BfVklERU9fSEVJR0hULAotICAgICAgICBnX3Bh
cmFtX3NwZWNfdWxvbmcoCi0gICAgICAgICAgICAidmlkZW8taGVpZ2h0IiwKLSAgICAgICAgICAg
ICJIVE1MVmlkZW9FbGVtZW50OnZpZGVvLWhlaWdodCIsCi0gICAgICAgICAgICAicmVhZC1vbmx5
IGd1bG9uZyBIVE1MVmlkZW9FbGVtZW50OnZpZGVvLWhlaWdodCIsCi0gICAgICAgICAgICAwLCBH
X01BWFVMT05HLCAwLAotICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7Ci0KLSAg
ICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAotICAgICAgICBnb2JqZWN0Q2xhc3Ms
Ci0gICAgICAgIFBST1BfUE9TVEVSLAotICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nKAotICAg
ICAgICAgICAgInBvc3RlciIsCi0gICAgICAgICAgICAiSFRNTFZpZGVvRWxlbWVudDpwb3N0ZXIi
LAotICAgICAgICAgICAgInJlYWQtd3JpdGUgZ2NoYXIqIEhUTUxWaWRlb0VsZW1lbnQ6cG9zdGVy
IiwKLSAgICAgICAgICAgICIiLAotICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURXUklURSkp
OwotCi0gICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAgZ29iamVj
dENsYXNzLAotICAgICAgICBQUk9QX1BMQVlTX0lOTElORSwKLSAgICAgICAgZ19wYXJhbV9zcGVj
X2Jvb2xlYW4oCi0gICAgICAgICAgICAicGxheXMtaW5saW5lIiwKLSAgICAgICAgICAgICJIVE1M
VmlkZW9FbGVtZW50OnBsYXlzLWlubGluZSIsCi0gICAgICAgICAgICAicmVhZC13cml0ZSBnYm9v
bGVhbiBIVE1MVmlkZW9FbGVtZW50OnBsYXlzLWlubGluZSIsCi0gICAgICAgICAgICBGQUxTRSwK
LSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEV1JJVEUpKTsKLQotICAgIGdfb2JqZWN0X2Ns
YXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJP
UF9XRUJLSVRfU1VQUE9SVFNfRlVMTFNDUkVFTiwKLSAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xl
YW4oCi0gICAgICAgICAgICAid2Via2l0LXN1cHBvcnRzLWZ1bGxzY3JlZW4iLAotICAgICAgICAg
ICAgIkhUTUxWaWRlb0VsZW1lbnQ6d2Via2l0LXN1cHBvcnRzLWZ1bGxzY3JlZW4iLAotICAgICAg
ICAgICAgInJlYWQtb25seSBnYm9vbGVhbiBIVE1MVmlkZW9FbGVtZW50OndlYmtpdC1zdXBwb3J0
cy1mdWxsc2NyZWVuIiwKLSAgICAgICAgICAgIEZBTFNFLAotICAgICAgICAgICAgV0VCS0lUX1BB
UkFNX1JFQURBQkxFKSk7Ci0KLSAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAot
ICAgICAgICBnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBST1BfV0VCS0lUX0RJU1BMQVlJTkdfRlVM
TFNDUkVFTiwKLSAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oCi0gICAgICAgICAgICAid2Vi
a2l0LWRpc3BsYXlpbmctZnVsbHNjcmVlbiIsCi0gICAgICAgICAgICAiSFRNTFZpZGVvRWxlbWVu
dDp3ZWJraXQtZGlzcGxheWluZy1mdWxsc2NyZWVuIiwKLSAgICAgICAgICAgICJyZWFkLW9ubHkg
Z2Jvb2xlYW4gSFRNTFZpZGVvRWxlbWVudDp3ZWJraXQtZGlzcGxheWluZy1mdWxsc2NyZWVuIiwK
LSAgICAgICAgICAgIEZBTFNFLAotICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7
Ci0KLSAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAotICAgICAgICBnb2JqZWN0
Q2xhc3MsCi0gICAgICAgIFBST1BfV0VCS0lUX1dJUkVMRVNTX1ZJREVPX1BMQVlCQUNLX0RJU0FC
TEVELAotICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigKLSAgICAgICAgICAgICJ3ZWJraXQt
d2lyZWxlc3MtdmlkZW8tcGxheWJhY2stZGlzYWJsZWQiLAotICAgICAgICAgICAgIkhUTUxWaWRl
b0VsZW1lbnQ6d2Via2l0LXdpcmVsZXNzLXZpZGVvLXBsYXliYWNrLWRpc2FibGVkIiwKLSAgICAg
ICAgICAgICJyZWFkLXdyaXRlIGdib29sZWFuIEhUTUxWaWRlb0VsZW1lbnQ6d2Via2l0LXdpcmVs
ZXNzLXZpZGVvLXBsYXliYWNrLWRpc2FibGVkIiwKLSAgICAgICAgICAgIEZBTFNFLAotICAgICAg
ICAgICAgV0VCS0lUX1BBUkFNX1JFQURXUklURSkpOwotCi0gICAgZ19vYmplY3RfY2xhc3NfaW5z
dGFsbF9wcm9wZXJ0eSgKLSAgICAgICAgZ29iamVjdENsYXNzLAotICAgICAgICBQUk9QX1dFQktJ
VF9ERUNPREVEX0ZSQU1FX0NPVU5ULAotICAgICAgICBnX3BhcmFtX3NwZWNfdWxvbmcoCi0gICAg
ICAgICAgICAid2Via2l0LWRlY29kZWQtZnJhbWUtY291bnQiLAotICAgICAgICAgICAgIkhUTUxW
aWRlb0VsZW1lbnQ6d2Via2l0LWRlY29kZWQtZnJhbWUtY291bnQiLAotICAgICAgICAgICAgInJl
YWQtb25seSBndWxvbmcgSFRNTFZpZGVvRWxlbWVudDp3ZWJraXQtZGVjb2RlZC1mcmFtZS1jb3Vu
dCIsCi0gICAgICAgICAgICAwLCBHX01BWFVMT05HLCAwLAotICAgICAgICAgICAgV0VCS0lUX1BB
UkFNX1JFQURBQkxFKSk7Ci0KLSAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAot
ICAgICAgICBnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBST1BfV0VCS0lUX0RST1BQRURfRlJBTUVf
Q09VTlQsCi0gICAgICAgIGdfcGFyYW1fc3BlY191bG9uZygKLSAgICAgICAgICAgICJ3ZWJraXQt
ZHJvcHBlZC1mcmFtZS1jb3VudCIsCi0gICAgICAgICAgICAiSFRNTFZpZGVvRWxlbWVudDp3ZWJr
aXQtZHJvcHBlZC1mcmFtZS1jb3VudCIsCi0gICAgICAgICAgICAicmVhZC1vbmx5IGd1bG9uZyBI
VE1MVmlkZW9FbGVtZW50OndlYmtpdC1kcm9wcGVkLWZyYW1lLWNvdW50IiwKLSAgICAgICAgICAg
IDAsIEdfTUFYVUxPTkcsIDAsCi0gICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsK
LQotfQotCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX2h0bWxfdmlkZW9fZWxlbWVudF9pbml0KFdl
YktpdERPTUhUTUxWaWRlb0VsZW1lbnQqIHJlcXVlc3QpCi17Ci0gICAgVU5VU0VEX1BBUkFNKHJl
cXVlc3QpOwotfQotCi12b2lkIHdlYmtpdF9kb21faHRtbF92aWRlb19lbGVtZW50X3dlYmtpdF9l
bnRlcl9mdWxsc2NyZWVuKFdlYktpdERPTUhUTUxWaWRlb0VsZW1lbnQqIHNlbGYsIEdFcnJvcioq
IGVycm9yKQotewotI2lmIEVOQUJMRShWSURFTykKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWRO
dWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxf
VklERU9fRUxFTUVOVChzZWxmKSk7Ci0gICAgZ19yZXR1cm5faWZfZmFpbCghZXJyb3IgfHwgISpl
cnJvcik7Ci0gICAgV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29y
ZShzZWxmKTsKLSAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBpdGVtLT53
ZWJraXRFbnRlckZ1bGxzY3JlZW4oZWMpOwotICAgIGlmIChlYykgewotICAgICAgICBXZWJDb3Jl
OjpFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24gZWNkZXNjKGVjKTsKLSAgICAgICAgZ19zZXRfZXJy
b3JfbGl0ZXJhbChlcnJvciwgZ19xdWFya19mcm9tX3N0cmluZygiV0VCS0lUX0RPTSIpLCBlY2Rl
c2MuY29kZSwgZWNkZXNjLm5hbWUpOwotICAgIH0KLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHNl
bGYpOwotICAgIFVOVVNFRF9QQVJBTShlcnJvcik7Ci0gICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9O
T1RfUFJFU0VOVCgiVmlkZW8iKQotI2VuZGlmIC8qIEVOQUJMRShWSURFTykgKi8KLX0KLQotdm9p
ZCB3ZWJraXRfZG9tX2h0bWxfdmlkZW9fZWxlbWVudF93ZWJraXRfZXhpdF9mdWxsc2NyZWVuKFdl
YktpdERPTUhUTUxWaWRlb0VsZW1lbnQqIHNlbGYpCi17Ci0jaWYgRU5BQkxFKFZJREVPKQotICAg
IFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl9pZl9m
YWlsKFdFQktJVF9ET01fSVNfSFRNTF9WSURFT19FTEVNRU5UKHNlbGYpKTsKLSAgICBXZWJDb3Jl
OjpIVE1MVmlkZW9FbGVtZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGl0ZW0t
PndlYmtpdEV4aXRGdWxsc2NyZWVuKCk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShzZWxmKTsK
LSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJWaWRlbyIpCi0jZW5kaWYgLyog
RU5BQkxFKFZJREVPKSAqLwotfQotCi12b2lkIHdlYmtpdF9kb21faHRtbF92aWRlb19lbGVtZW50
X3dlYmtpdF9lbnRlcl9mdWxsX3NjcmVlbihXZWJLaXRET01IVE1MVmlkZW9FbGVtZW50KiBzZWxm
LCBHRXJyb3IqKiBlcnJvcikKLXsKLSNpZiBFTkFCTEUoVklERU8pCi0gICAgV2ViQ29yZTo6SlNN
YWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RP
TV9JU19IVE1MX1ZJREVPX0VMRU1FTlQoc2VsZikpOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwoIWVy
cm9yIHx8ICEqZXJyb3IpOwotICAgIFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQqIGl0ZW0gPSBX
ZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0g
ICAgaXRlbS0+d2Via2l0RW50ZXJGdWxsU2NyZWVuKGVjKTsKLSAgICBpZiAoZWMpIHsKLSAgICAg
ICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uIGVjZGVzYyhlYyk7Ci0gICAgICAg
IGdfc2V0X2Vycm9yX2xpdGVyYWwoZXJyb3IsIGdfcXVhcmtfZnJvbV9zdHJpbmcoIldFQktJVF9E
T00iKSwgZWNkZXNjLmNvZGUsIGVjZGVzYy5uYW1lKTsKLSAgICB9Ci0jZWxzZQotICAgIFVOVVNF
RF9QQVJBTShzZWxmKTsKLSAgICBVTlVTRURfUEFSQU0oZXJyb3IpOwotICAgIFdFQktJVF9XQVJO
X0ZFQVRVUkVfTk9UX1BSRVNFTlQoIlZpZGVvIikKLSNlbmRpZiAvKiBFTkFCTEUoVklERU8pICov
Ci19Ci0KLXZvaWQgd2Via2l0X2RvbV9odG1sX3ZpZGVvX2VsZW1lbnRfd2Via2l0X2V4aXRfZnVs
bF9zY3JlZW4oV2ViS2l0RE9NSFRNTFZpZGVvRWxlbWVudCogc2VsZikKLXsKLSNpZiBFTkFCTEUo
VklERU8pCi0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdf
cmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19IVE1MX1ZJREVPX0VMRU1FTlQoc2VsZikpOwot
ICAgIFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7
Ci0gICAgaXRlbS0+d2Via2l0RXhpdEZ1bGxTY3JlZW4oKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BB
UkFNKHNlbGYpOwotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIlZpZGVvIikK
LSNlbmRpZiAvKiBFTkFCTEUoVklERU8pICovCi19Ci0KLWd1bG9uZyB3ZWJraXRfZG9tX2h0bWxf
dmlkZW9fZWxlbWVudF9nZXRfd2lkdGgoV2ViS2l0RE9NSFRNTFZpZGVvRWxlbWVudCogc2VsZikK
LXsKLSNpZiBFTkFCTEUoVklERU8pCi0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRl
IHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfSFRNTF9WSURF
T19FTEVNRU5UKHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50KiBpdGVt
ID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGd1bG9uZyByZXN1bHQgPSBpdGVtLT5nZXRVbnNp
Z25lZEludGVncmFsQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6d2lkdGhBdHRyKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc2VsZik7Ci0gICAgV0VC
S0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiVmlkZW8iKQotICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxndWxvbmc+KDApOwotI2VuZGlmIC8qIEVOQUJMRShWSURFTykgKi8KLX0KLQotdm9pZCB3
ZWJraXRfZG9tX2h0bWxfdmlkZW9fZWxlbWVudF9zZXRfd2lkdGgoV2ViS2l0RE9NSFRNTFZpZGVv
RWxlbWVudCogc2VsZiwgZ3Vsb25nIHZhbHVlKQotewotI2lmIEVOQUJMRShWSURFTykKLSAgICBX
ZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5faWZfZmFp
bChXRUJLSVRfRE9NX0lTX0hUTUxfVklERU9fRUxFTUVOVChzZWxmKSk7Ci0gICAgV2ViQ29yZTo6
SFRNTFZpZGVvRWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBpdGVtLT5z
ZXRVbnNpZ25lZEludGVncmFsQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6d2lkdGhBdHRy
LCB2YWx1ZSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKLSAgICBVTlVTRURfUEFS
QU0odmFsdWUpOwotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIlZpZGVvIikK
LSNlbmRpZiAvKiBFTkFCTEUoVklERU8pICovCi19Ci0KLWd1bG9uZyB3ZWJraXRfZG9tX2h0bWxf
dmlkZW9fZWxlbWVudF9nZXRfaGVpZ2h0KFdlYktpdERPTUhUTUxWaWRlb0VsZW1lbnQqIHNlbGYp
Ci17Ci0jaWYgRU5BQkxFKFZJREVPKQotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0
ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxfVklE
RU9fRUxFTUVOVChzZWxmKSwgMCk7Ci0gICAgV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudCogaXRl
bSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBndWxvbmcgcmVzdWx0ID0gaXRlbS0+Z2V0VW5z
aWduZWRJbnRlZ3JhbEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OmhlaWdodEF0dHIpOwot
ICAgIHJldHVybiByZXN1bHQ7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKLSAgICBX
RUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJWaWRlbyIpCi0gICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGd1bG9uZz4oMCk7Ci0jZW5kaWYgLyogRU5BQkxFKFZJREVPKSAqLwotfQotCi12b2lk
IHdlYmtpdF9kb21faHRtbF92aWRlb19lbGVtZW50X3NldF9oZWlnaHQoV2ViS2l0RE9NSFRNTFZp
ZGVvRWxlbWVudCogc2VsZiwgZ3Vsb25nIHZhbHVlKQotewotI2lmIEVOQUJMRShWSURFTykKLSAg
ICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5faWZf
ZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxfVklERU9fRUxFTUVOVChzZWxmKSk7Ci0gICAgV2ViQ29y
ZTo6SFRNTFZpZGVvRWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBpdGVt
LT5zZXRVbnNpZ25lZEludGVncmFsQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6aGVpZ2h0
QXR0ciwgdmFsdWUpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc2VsZik7Ci0gICAgVU5VU0VE
X1BBUkFNKHZhbHVlKTsKLSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJWaWRl
byIpCi0jZW5kaWYgLyogRU5BQkxFKFZJREVPKSAqLwotfQotCi1ndWxvbmcgd2Via2l0X2RvbV9o
dG1sX3ZpZGVvX2VsZW1lbnRfZ2V0X3ZpZGVvX3dpZHRoKFdlYktpdERPTUhUTUxWaWRlb0VsZW1l
bnQqIHNlbGYpCi17Ci0jaWYgRU5BQkxFKFZJREVPKQotICAgIFdlYkNvcmU6OkpTTWFpblRocmVh
ZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lT
X0hUTUxfVklERU9fRUxFTUVOVChzZWxmKSwgMCk7Ci0gICAgV2ViQ29yZTo6SFRNTFZpZGVvRWxl
bWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBndWxvbmcgcmVzdWx0ID0gaXRl
bS0+dmlkZW9XaWR0aCgpOwotICAgIHJldHVybiByZXN1bHQ7Ci0jZWxzZQotICAgIFVOVVNFRF9Q
QVJBTShzZWxmKTsKLSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJWaWRlbyIp
Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGd1bG9uZz4oMCk7Ci0jZW5kaWYgLyogRU5BQkxFKFZJ
REVPKSAqLwotfQotCi1ndWxvbmcgd2Via2l0X2RvbV9odG1sX3ZpZGVvX2VsZW1lbnRfZ2V0X3Zp
ZGVvX2hlaWdodChXZWJLaXRET01IVE1MVmlkZW9FbGVtZW50KiBzZWxmKQotewotI2lmIEVOQUJM
RShWSURFTykKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAg
Z19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19IVE1MX1ZJREVPX0VMRU1FTlQoc2Vs
ZiksIDApOwotICAgIFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQqIGl0ZW0gPSBXZWJLaXQ6OmNv
cmUoc2VsZik7Ci0gICAgZ3Vsb25nIHJlc3VsdCA9IGl0ZW0tPnZpZGVvSGVpZ2h0KCk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHNlbGYpOwotICAgIFdFQktJ
VF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIlZpZGVvIikKLSAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8Z3Vsb25nPigwKTsKLSNlbmRpZiAvKiBFTkFCTEUoVklERU8pICovCi19Ci0KLWdjaGFyKiB3
ZWJraXRfZG9tX2h0bWxfdmlkZW9fZWxlbWVudF9nZXRfcG9zdGVyKFdlYktpdERPTUhUTUxWaWRl
b0VsZW1lbnQqIHNlbGYpCi17Ci0jaWYgRU5BQkxFKFZJREVPKQotICAgIFdlYkNvcmU6OkpTTWFp
blRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRf
RE9NX0lTX0hUTUxfVklERU9fRUxFTUVOVChzZWxmKSwgMCk7Ci0gICAgV2ViQ29yZTo6SFRNTFZp
ZGVvRWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBnY2hhciogcmVzdWx0
ID0gY29udmVydFRvVVRGOFN0cmluZyhpdGVtLT5nZXRVUkxBdHRyaWJ1dGUoV2ViQ29yZTo6SFRN
TE5hbWVzOjpwb3N0ZXJBdHRyKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSNlbHNlCi0gICAgVU5V
U0VEX1BBUkFNKHNlbGYpOwotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIlZp
ZGVvIikKLSAgICByZXR1cm4gMDsKLSNlbmRpZiAvKiBFTkFCTEUoVklERU8pICovCi19Ci0KLXZv
aWQgd2Via2l0X2RvbV9odG1sX3ZpZGVvX2VsZW1lbnRfc2V0X3Bvc3RlcihXZWJLaXRET01IVE1M
VmlkZW9FbGVtZW50KiBzZWxmLCBjb25zdCBnY2hhciogdmFsdWUpCi17Ci0jaWYgRU5BQkxFKFZJ
REVPKQotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3Jl
dHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfSFRNTF9WSURFT19FTEVNRU5UKHNlbGYpKTsKLSAg
ICBnX3JldHVybl9pZl9mYWlsKHZhbHVlKTsKLSAgICBXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50
KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIFdURjo6U3RyaW5nIGNvbnZlcnRlZFZh
bHVlID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KHZhbHVlKTsKLSAgICBpdGVtLT5zZXRBdHRyaWJ1
dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFdlYkNvcmU6OkhUTUxOYW1lczo6cG9zdGVyQXR0ciwg
Y29udmVydGVkVmFsdWUpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc2VsZik7Ci0gICAgVU5V
U0VEX1BBUkFNKHZhbHVlKTsKLSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJW
aWRlbyIpCi0jZW5kaWYgLyogRU5BQkxFKFZJREVPKSAqLwotfQotCi1nYm9vbGVhbiB3ZWJraXRf
ZG9tX2h0bWxfdmlkZW9fZWxlbWVudF9nZXRfcGxheXNfaW5saW5lKFdlYktpdERPTUhUTUxWaWRl
b0VsZW1lbnQqIHNlbGYpCi17Ci0jaWYgRU5BQkxFKFZJREVPKQotICAgIFdlYkNvcmU6OkpTTWFp
blRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRf
RE9NX0lTX0hUTUxfVklERU9fRUxFTUVOVChzZWxmKSwgRkFMU0UpOwotICAgIFdlYkNvcmU6OkhU
TUxWaWRlb0VsZW1lbnQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ2Jvb2xlYW4g
cmVzdWx0ID0gaXRlbS0+aGFzQXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihXZWJDb3Jl
OjpIVE1MTmFtZXM6OnBsYXlzaW5saW5lQXR0cik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSNlbHNl
Ci0gICAgVU5VU0VEX1BBUkFNKHNlbGYpOwotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BS
RVNFTlQoIlZpZGVvIikKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Z2Jvb2xlYW4+KDApOwotI2Vu
ZGlmIC8qIEVOQUJMRShWSURFTykgKi8KLX0KLQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfdmlkZW9f
ZWxlbWVudF9zZXRfcGxheXNfaW5saW5lKFdlYktpdERPTUhUTUxWaWRlb0VsZW1lbnQqIHNlbGYs
IGdib29sZWFuIHZhbHVlKQotewotI2lmIEVOQUJMRShWSURFTykKLSAgICBXZWJDb3JlOjpKU01h
aW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9N
X0lTX0hUTUxfVklERU9fRUxFTUVOVChzZWxmKSk7Ci0gICAgV2ViQ29yZTo6SFRNTFZpZGVvRWxl
bWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBpdGVtLT5zZXRCb29sZWFuQXR0
cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6cGxheXNpbmxpbmVBdHRyLCB2YWx1ZSk7Ci0jZWxz
ZQotICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKLSAgICBVTlVTRURfUEFSQU0odmFsdWUpOwotICAg
IFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIlZpZGVvIikKLSNlbmRpZiAvKiBFTkFC
TEUoVklERU8pICovCi19Ci0KLWdib29sZWFuIHdlYmtpdF9kb21faHRtbF92aWRlb19lbGVtZW50
X2dldF93ZWJraXRfc3VwcG9ydHNfZnVsbHNjcmVlbihXZWJLaXRET01IVE1MVmlkZW9FbGVtZW50
KiBzZWxmKQotewotI2lmIEVOQUJMRShWSURFTykKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWRO
dWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19I
VE1MX1ZJREVPX0VMRU1FTlQoc2VsZiksIEZBTFNFKTsKLSAgICBXZWJDb3JlOjpIVE1MVmlkZW9F
bGVtZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdib29sZWFuIHJlc3VsdCA9
IGl0ZW0tPndlYmtpdFN1cHBvcnRzRnVsbHNjcmVlbigpOwotICAgIHJldHVybiByZXN1bHQ7Ci0j
ZWxzZQotICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKLSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05P
VF9QUkVTRU5UKCJWaWRlbyIpCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGdib29sZWFuPigwKTsK
LSNlbmRpZiAvKiBFTkFCTEUoVklERU8pICovCi19Ci0KLWdib29sZWFuIHdlYmtpdF9kb21faHRt
bF92aWRlb19lbGVtZW50X2dldF93ZWJraXRfZGlzcGxheWluZ19mdWxsc2NyZWVuKFdlYktpdERP
TUhUTUxWaWRlb0VsZW1lbnQqIHNlbGYpCi17Ci0jaWYgRU5BQkxFKFZJREVPKQotICAgIFdlYkNv
cmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFp
bChXRUJLSVRfRE9NX0lTX0hUTUxfVklERU9fRUxFTUVOVChzZWxmKSwgRkFMU0UpOwotICAgIFdl
YkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAg
Z2Jvb2xlYW4gcmVzdWx0ID0gaXRlbS0+d2Via2l0RGlzcGxheWluZ0Z1bGxzY3JlZW4oKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc2VsZik7Ci0gICAgV0VC
S0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiVmlkZW8iKQotICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxnYm9vbGVhbj4oMCk7Ci0jZW5kaWYgLyogRU5BQkxFKFZJREVPKSAqLwotfQotCi1nYm9v
bGVhbiB3ZWJraXRfZG9tX2h0bWxfdmlkZW9fZWxlbWVudF9nZXRfd2Via2l0X3dpcmVsZXNzX3Zp
ZGVvX3BsYXliYWNrX2Rpc2FibGVkKFdlYktpdERPTUhUTUxWaWRlb0VsZW1lbnQqIHNlbGYpCi17
Ci0jaWYgRU5BQkxFKFZJREVPKQotI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQp
Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfSFRNTF9WSURFT19FTEVNRU5UKHNlbGYpLCBGQUxT
RSk7Ci0gICAgV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShz
ZWxmKTsKLSAgICBnYm9vbGVhbiByZXN1bHQgPSBpdGVtLT53ZWJraXRXaXJlbGVzc1ZpZGVvUGxh
eWJhY2tEaXNhYmxlZCgpOwotICAgIHJldHVybiByZXN1bHQ7Ci0jZWxzZQotICAgIFVOVVNFRF9Q
QVJBTShzZWxmKTsKLSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJXaXJlbGVz
cyBQbGF5YmFjayBUYXJnZXQiKQotICAgIHJldHVybiBzdGF0aWNfY2FzdDxnYm9vbGVhbj4oMCk7
Ci0jZW5kaWYgLyogRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgKi8KLSNlbHNlCi0g
ICAgVU5VU0VEX1BBUkFNKHNlbGYpOwotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNF
TlQoIlZpZGVvIikKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Z2Jvb2xlYW4+KDApOwotI2VuZGlm
IC8qIEVOQUJMRShWSURFTykgKi8KLX0KLQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfdmlkZW9fZWxl
bWVudF9zZXRfd2Via2l0X3dpcmVsZXNzX3ZpZGVvX3BsYXliYWNrX2Rpc2FibGVkKFdlYktpdERP
TUhUTUxWaWRlb0VsZW1lbnQqIHNlbGYsIGdib29sZWFuIHZhbHVlKQotewotI2lmIEVOQUJMRShW
SURFTykKLSNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQotICAgIFdlYkNvcmU6
OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJ
VF9ET01fSVNfSFRNTF9WSURFT19FTEVNRU5UKHNlbGYpKTsKLSAgICBXZWJDb3JlOjpIVE1MVmlk
ZW9FbGVtZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGl0ZW0tPnNldFdlYmtp
dFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKHZhbHVlKTsKLSNlbHNlCi0gICAgVU5VU0VE
X1BBUkFNKHNlbGYpOwotICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7Ci0gICAgV0VCS0lUX1dBUk5f
RkVBVFVSRV9OT1RfUFJFU0VOVCgiV2lyZWxlc3MgUGxheWJhY2sgVGFyZ2V0IikKLSNlbmRpZiAv
KiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAqLwotI2Vsc2UKLSAgICBVTlVTRURf
UEFSQU0oc2VsZik7Ci0gICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKLSAgICBXRUJLSVRfV0FSTl9G
RUFUVVJFX05PVF9QUkVTRU5UKCJWaWRlbyIpCi0jZW5kaWYgLyogRU5BQkxFKFZJREVPKSAqLwot
fQotCi1ndWxvbmcgd2Via2l0X2RvbV9odG1sX3ZpZGVvX2VsZW1lbnRfZ2V0X3dlYmtpdF9kZWNv
ZGVkX2ZyYW1lX2NvdW50KFdlYktpdERPTUhUTUxWaWRlb0VsZW1lbnQqIHNlbGYpCi17Ci0jaWYg
RU5BQkxFKFZJREVPKQotI2lmIEVOQUJMRShNRURJQV9TVEFUSVNUSUNTKQotICAgIFdlYkNvcmU6
OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChX
RUJLSVRfRE9NX0lTX0hUTUxfVklERU9fRUxFTUVOVChzZWxmKSwgMCk7Ci0gICAgV2ViQ29yZTo6
SFRNTFZpZGVvRWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBndWxvbmcg
cmVzdWx0ID0gaXRlbS0+d2Via2l0RGVjb2RlZEZyYW1lQ291bnQoKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc2VsZik7Ci0gICAgV0VCS0lUX1dBUk5fRkVB
VFVSRV9OT1RfUFJFU0VOVCgiTWVkaWEgU3RhdGlzdGljcyIpCi0gICAgcmV0dXJuIHN0YXRpY19j
YXN0PGd1bG9uZz4oMCk7Ci0jZW5kaWYgLyogRU5BQkxFKE1FRElBX1NUQVRJU1RJQ1MpICovCi0j
ZWxzZQotICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKLSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05P
VF9QUkVTRU5UKCJWaWRlbyIpCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGd1bG9uZz4oMCk7Ci0j
ZW5kaWYgLyogRU5BQkxFKFZJREVPKSAqLwotfQotCi1ndWxvbmcgd2Via2l0X2RvbV9odG1sX3Zp
ZGVvX2VsZW1lbnRfZ2V0X3dlYmtpdF9kcm9wcGVkX2ZyYW1lX2NvdW50KFdlYktpdERPTUhUTUxW
aWRlb0VsZW1lbnQqIHNlbGYpCi17Ci0jaWYgRU5BQkxFKFZJREVPKQotI2lmIEVOQUJMRShNRURJ
QV9TVEFUSVNUSUNTKQotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsK
LSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxfVklERU9fRUxFTUVO
VChzZWxmKSwgMCk7Ci0gICAgV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudCogaXRlbSA9IFdlYktp
dDo6Y29yZShzZWxmKTsKLSAgICBndWxvbmcgcmVzdWx0ID0gaXRlbS0+d2Via2l0RHJvcHBlZEZy
YW1lQ291bnQoKTsKLSAgICByZXR1cm4gcmVzdWx0OwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0o
c2VsZik7Ci0gICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiTWVkaWEgU3RhdGlz
dGljcyIpCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGd1bG9uZz4oMCk7Ci0jZW5kaWYgLyogRU5B
QkxFKE1FRElBX1NUQVRJU1RJQ1MpICovCi0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShzZWxmKTsK
LSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJWaWRlbyIpCi0gICAgcmV0dXJu
IHN0YXRpY19jYXN0PGd1bG9uZz4oMCk7Ci0jZW5kaWYgLyogRU5BQkxFKFZJREVPKSAqLwotfQot
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9ndGsvRE9NL1dlYktpdERPTUhUTUxWaWRlb0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTFZpZGVvRWxl
bWVudC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NjA4MWY2Li4wMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00v
V2ViS2l0RE9NSFRNTFZpZGVvRWxlbWVudC5oCisrKyAvZGV2L251bGwKQEAgLTEsMjYyICswLDAg
QEAKLS8qCi0gKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBw
cm9qZWN0LgotICogIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmlu
ZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgot
ICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICog
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAq
ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICog
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgV2ViS2l0RE9NSFRN
TFZpZGVvRWxlbWVudF9oCi0jZGVmaW5lIFdlYktpdERPTUhUTUxWaWRlb0VsZW1lbnRfaAotCi0j
aWZkZWYgV0VCS0lUX0RPTV9VU0VfVU5TVEFCTEVfQVBJCi0KLSNpbmNsdWRlIDxnbGliLW9iamVj
dC5oPgotI2luY2x1ZGUgPHdlYmtpdGRvbS9XZWJLaXRET01IVE1MTWVkaWFFbGVtZW50Lmg+Ci0j
aW5jbHVkZSA8d2Via2l0ZG9tL3dlYmtpdGRvbWRlZmluZXMtdW5zdGFibGUuaD4KLQotR19CRUdJ
Tl9ERUNMUwotCi0jZGVmaW5lIFdFQktJVF9ET01fVFlQRV9IVE1MX1ZJREVPX0VMRU1FTlQgICAg
ICAgICAgICAod2Via2l0X2RvbV9odG1sX3ZpZGVvX2VsZW1lbnRfZ2V0X3R5cGUoKSkKLSNkZWZp
bmUgV0VCS0lUX0RPTV9IVE1MX1ZJREVPX0VMRU1FTlQob2JqKSAgICAgICAgICAgIChHX1RZUEVf
Q0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwgV0VCS0lUX0RPTV9UWVBFX0hUTUxfVklERU9fRUxF
TUVOVCwgV2ViS2l0RE9NSFRNTFZpZGVvRWxlbWVudCkpCi0jZGVmaW5lIFdFQktJVF9ET01fSFRN
TF9WSURFT19FTEVNRU5UX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1Qo
KGtsYXNzKSwgIFdFQktJVF9ET01fVFlQRV9IVE1MX1ZJREVPX0VMRU1FTlQsIFdlYktpdERPTUhU
TUxWaWRlb0VsZW1lbnRDbGFzcykKLSNkZWZpbmUgV0VCS0lUX0RPTV9JU19IVE1MX1ZJREVPX0VM
RU1FTlQob2JqKSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VC
S0lUX0RPTV9UWVBFX0hUTUxfVklERU9fRUxFTUVOVCkpCi0jZGVmaW5lIFdFQktJVF9ET01fSVNf
SFRNTF9WSURFT19FTEVNRU5UX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUo
KGtsYXNzKSwgIFdFQktJVF9ET01fVFlQRV9IVE1MX1ZJREVPX0VMRU1FTlQpKQotI2RlZmluZSBX
RUJLSVRfRE9NX0hUTUxfVklERU9fRUxFTUVOVF9HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNU
QU5DRV9HRVRfQ0xBU1MoKG9iaiksICBXRUJLSVRfRE9NX1RZUEVfSFRNTF9WSURFT19FTEVNRU5U
LCBXZWJLaXRET01IVE1MVmlkZW9FbGVtZW50Q2xhc3MpKQotCi1zdHJ1Y3QgX1dlYktpdERPTUhU
TUxWaWRlb0VsZW1lbnQgewotICAgIFdlYktpdERPTUhUTUxNZWRpYUVsZW1lbnQgcGFyZW50X2lu
c3RhbmNlOwotfTsKLQotc3RydWN0IF9XZWJLaXRET01IVE1MVmlkZW9FbGVtZW50Q2xhc3Mgewot
ICAgIFdlYktpdERPTUhUTUxNZWRpYUVsZW1lbnRDbGFzcyBwYXJlbnRfY2xhc3M7Ci19OwotCi1X
RUJLSVRfQVBJIEdUeXBlCi13ZWJraXRfZG9tX2h0bWxfdmlkZW9fZWxlbWVudF9nZXRfdHlwZSh2
b2lkKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0bWxfdmlkZW9fZWxlbWVudF93ZWJraXRfZW50
ZXJfZnVsbHNjcmVlbjoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MVmlkZW9FbGVtZW50Ci0g
KiBAZXJyb3I6ICNHRXJyb3IKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJ
VF9BUEkgdm9pZAotd2Via2l0X2RvbV9odG1sX3ZpZGVvX2VsZW1lbnRfd2Via2l0X2VudGVyX2Z1
bGxzY3JlZW4oV2ViS2l0RE9NSFRNTFZpZGVvRWxlbWVudCogc2VsZiwgR0Vycm9yKiogZXJyb3Ip
OwotCi0vKioKLSAqIHdlYmtpdF9kb21faHRtbF92aWRlb19lbGVtZW50X3dlYmtpdF9leGl0X2Z1
bGxzY3JlZW46Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTFZpZGVvRWxlbWVudAotICoKLSAq
IFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSB2b2lkCi13ZWJraXRfZG9tX2h0
bWxfdmlkZW9fZWxlbWVudF93ZWJraXRfZXhpdF9mdWxsc2NyZWVuKFdlYktpdERPTUhUTUxWaWRl
b0VsZW1lbnQqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9kb21faHRtbF92aWRlb19lbGVtZW50
X3dlYmtpdF9lbnRlcl9mdWxsX3NjcmVlbjoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MVmlk
ZW9FbGVtZW50Ci0gKiBAZXJyb3I6ICNHRXJyb3IKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxl
Ci0qKi8KLVdFQktJVF9BUEkgdm9pZAotd2Via2l0X2RvbV9odG1sX3ZpZGVvX2VsZW1lbnRfd2Vi
a2l0X2VudGVyX2Z1bGxfc2NyZWVuKFdlYktpdERPTUhUTUxWaWRlb0VsZW1lbnQqIHNlbGYsIEdF
cnJvcioqIGVycm9yKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0bWxfdmlkZW9fZWxlbWVudF93
ZWJraXRfZXhpdF9mdWxsX3NjcmVlbjoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MVmlkZW9F
bGVtZW50Ci0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIHZvaWQK
LXdlYmtpdF9kb21faHRtbF92aWRlb19lbGVtZW50X3dlYmtpdF9leGl0X2Z1bGxfc2NyZWVuKFdl
YktpdERPTUhUTUxWaWRlb0VsZW1lbnQqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9kb21faHRt
bF92aWRlb19lbGVtZW50X2dldF93aWR0aDoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MVmlk
ZW9FbGVtZW50Ci0gKgotICogUmV0dXJuczogQSAjZ3Vsb25nCi0gKgotICogU3RhYmlsaXR5OiBV
bnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIGd1bG9uZwotd2Via2l0X2RvbV9odG1sX3ZpZGVvX2Vs
ZW1lbnRfZ2V0X3dpZHRoKFdlYktpdERPTUhUTUxWaWRlb0VsZW1lbnQqIHNlbGYpOwotCi0vKioK
LSAqIHdlYmtpdF9kb21faHRtbF92aWRlb19lbGVtZW50X3NldF93aWR0aDoKLSAqIEBzZWxmOiBB
ICNXZWJLaXRET01IVE1MVmlkZW9FbGVtZW50Ci0gKiBAdmFsdWU6IEEgI2d1bG9uZwotICoKLSAq
IFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSB2b2lkCi13ZWJraXRfZG9tX2h0
bWxfdmlkZW9fZWxlbWVudF9zZXRfd2lkdGgoV2ViS2l0RE9NSFRNTFZpZGVvRWxlbWVudCogc2Vs
ZiwgZ3Vsb25nIHZhbHVlKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0bWxfdmlkZW9fZWxlbWVu
dF9nZXRfaGVpZ2h0OgotICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxWaWRlb0VsZW1lbnQKLSAq
Ci0gKiBSZXR1cm5zOiBBICNndWxvbmcKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8K
LVdFQktJVF9BUEkgZ3Vsb25nCi13ZWJraXRfZG9tX2h0bWxfdmlkZW9fZWxlbWVudF9nZXRfaGVp
Z2h0KFdlYktpdERPTUhUTUxWaWRlb0VsZW1lbnQqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9k
b21faHRtbF92aWRlb19lbGVtZW50X3NldF9oZWlnaHQ6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9N
SFRNTFZpZGVvRWxlbWVudAotICogQHZhbHVlOiBBICNndWxvbmcKLSAqCi0gKiBTdGFiaWxpdHk6
IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgdm9pZAotd2Via2l0X2RvbV9odG1sX3ZpZGVvX2Vs
ZW1lbnRfc2V0X2hlaWdodChXZWJLaXRET01IVE1MVmlkZW9FbGVtZW50KiBzZWxmLCBndWxvbmcg
dmFsdWUpOwotCi0vKioKLSAqIHdlYmtpdF9kb21faHRtbF92aWRlb19lbGVtZW50X2dldF92aWRl
b193aWR0aDoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MVmlkZW9FbGVtZW50Ci0gKgotICog
UmV0dXJuczogQSAjZ3Vsb25nCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJL
SVRfQVBJIGd1bG9uZwotd2Via2l0X2RvbV9odG1sX3ZpZGVvX2VsZW1lbnRfZ2V0X3ZpZGVvX3dp
ZHRoKFdlYktpdERPTUhUTUxWaWRlb0VsZW1lbnQqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9k
b21faHRtbF92aWRlb19lbGVtZW50X2dldF92aWRlb19oZWlnaHQ6Ci0gKiBAc2VsZjogQSAjV2Vi
S2l0RE9NSFRNTFZpZGVvRWxlbWVudAotICoKLSAqIFJldHVybnM6IEEgI2d1bG9uZwotICoKLSAq
IFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSBndWxvbmcKLXdlYmtpdF9kb21f
aHRtbF92aWRlb19lbGVtZW50X2dldF92aWRlb19oZWlnaHQoV2ViS2l0RE9NSFRNTFZpZGVvRWxl
bWVudCogc2VsZik7Ci0KLS8qKgotICogd2Via2l0X2RvbV9odG1sX3ZpZGVvX2VsZW1lbnRfZ2V0
X3Bvc3RlcjoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MVmlkZW9FbGVtZW50Ci0gKgotICog
UmV0dXJuczogQSAjZ2NoYXIKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJ
VF9BUEkgZ2NoYXIqCi13ZWJraXRfZG9tX2h0bWxfdmlkZW9fZWxlbWVudF9nZXRfcG9zdGVyKFdl
YktpdERPTUhUTUxWaWRlb0VsZW1lbnQqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9kb21faHRt
bF92aWRlb19lbGVtZW50X3NldF9wb3N0ZXI6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTFZp
ZGVvRWxlbWVudAotICogQHZhbHVlOiBBICNnY2hhcgotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFi
bGUKLSoqLwotV0VCS0lUX0FQSSB2b2lkCi13ZWJraXRfZG9tX2h0bWxfdmlkZW9fZWxlbWVudF9z
ZXRfcG9zdGVyKFdlYktpdERPTUhUTUxWaWRlb0VsZW1lbnQqIHNlbGYsIGNvbnN0IGdjaGFyKiB2
YWx1ZSk7Ci0KLS8qKgotICogd2Via2l0X2RvbV9odG1sX3ZpZGVvX2VsZW1lbnRfZ2V0X3BsYXlz
X2lubGluZToKLSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MVmlkZW9FbGVtZW50Ci0gKgotICog
UmV0dXJuczogQSAjZ2Jvb2xlYW4KLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdF
QktJVF9BUEkgZ2Jvb2xlYW4KLXdlYmtpdF9kb21faHRtbF92aWRlb19lbGVtZW50X2dldF9wbGF5
c19pbmxpbmUoV2ViS2l0RE9NSFRNTFZpZGVvRWxlbWVudCogc2VsZik7Ci0KLS8qKgotICogd2Vi
a2l0X2RvbV9odG1sX3ZpZGVvX2VsZW1lbnRfc2V0X3BsYXlzX2lubGluZToKLSAqIEBzZWxmOiBB
ICNXZWJLaXRET01IVE1MVmlkZW9FbGVtZW50Ci0gKiBAdmFsdWU6IEEgI2dib29sZWFuCi0gKgot
ICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIHZvaWQKLXdlYmtpdF9kb21f
aHRtbF92aWRlb19lbGVtZW50X3NldF9wbGF5c19pbmxpbmUoV2ViS2l0RE9NSFRNTFZpZGVvRWxl
bWVudCogc2VsZiwgZ2Jvb2xlYW4gdmFsdWUpOwotCi0vKioKLSAqIHdlYmtpdF9kb21faHRtbF92
aWRlb19lbGVtZW50X2dldF93ZWJraXRfc3VwcG9ydHNfZnVsbHNjcmVlbjoKLSAqIEBzZWxmOiBB
ICNXZWJLaXRET01IVE1MVmlkZW9FbGVtZW50Ci0gKgotICogUmV0dXJuczogQSAjZ2Jvb2xlYW4K
LSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgZ2Jvb2xlYW4KLXdl
YmtpdF9kb21faHRtbF92aWRlb19lbGVtZW50X2dldF93ZWJraXRfc3VwcG9ydHNfZnVsbHNjcmVl
bihXZWJLaXRET01IVE1MVmlkZW9FbGVtZW50KiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9t
X2h0bWxfdmlkZW9fZWxlbWVudF9nZXRfd2Via2l0X2Rpc3BsYXlpbmdfZnVsbHNjcmVlbjoKLSAq
IEBzZWxmOiBBICNXZWJLaXRET01IVE1MVmlkZW9FbGVtZW50Ci0gKgotICogUmV0dXJuczogQSAj
Z2Jvb2xlYW4KLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgZ2Jv
b2xlYW4KLXdlYmtpdF9kb21faHRtbF92aWRlb19lbGVtZW50X2dldF93ZWJraXRfZGlzcGxheWlu
Z19mdWxsc2NyZWVuKFdlYktpdERPTUhUTUxWaWRlb0VsZW1lbnQqIHNlbGYpOwotCi0vKioKLSAq
IHdlYmtpdF9kb21faHRtbF92aWRlb19lbGVtZW50X2dldF93ZWJraXRfd2lyZWxlc3NfdmlkZW9f
cGxheWJhY2tfZGlzYWJsZWQ6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTFZpZGVvRWxlbWVu
dAotICoKLSAqIFJldHVybnM6IEEgI2dib29sZWFuCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJs
ZQotKiovCi1XRUJLSVRfQVBJIGdib29sZWFuCi13ZWJraXRfZG9tX2h0bWxfdmlkZW9fZWxlbWVu
dF9nZXRfd2Via2l0X3dpcmVsZXNzX3ZpZGVvX3BsYXliYWNrX2Rpc2FibGVkKFdlYktpdERPTUhU
TUxWaWRlb0VsZW1lbnQqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9kb21faHRtbF92aWRlb19l
bGVtZW50X3NldF93ZWJraXRfd2lyZWxlc3NfdmlkZW9fcGxheWJhY2tfZGlzYWJsZWQ6Ci0gKiBA
c2VsZjogQSAjV2ViS2l0RE9NSFRNTFZpZGVvRWxlbWVudAotICogQHZhbHVlOiBBICNnYm9vbGVh
bgotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSB2b2lkCi13ZWJr
aXRfZG9tX2h0bWxfdmlkZW9fZWxlbWVudF9zZXRfd2Via2l0X3dpcmVsZXNzX3ZpZGVvX3BsYXli
YWNrX2Rpc2FibGVkKFdlYktpdERPTUhUTUxWaWRlb0VsZW1lbnQqIHNlbGYsIGdib29sZWFuIHZh
bHVlKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0bWxfdmlkZW9fZWxlbWVudF9nZXRfd2Via2l0
X2RlY29kZWRfZnJhbWVfY291bnQ6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTFZpZGVvRWxl
bWVudAotICoKLSAqIFJldHVybnM6IEEgI2d1bG9uZwotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFi
bGUKLSoqLwotV0VCS0lUX0FQSSBndWxvbmcKLXdlYmtpdF9kb21faHRtbF92aWRlb19lbGVtZW50
X2dldF93ZWJraXRfZGVjb2RlZF9mcmFtZV9jb3VudChXZWJLaXRET01IVE1MVmlkZW9FbGVtZW50
KiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0bWxfdmlkZW9fZWxlbWVudF9nZXRfd2Vi
a2l0X2Ryb3BwZWRfZnJhbWVfY291bnQ6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTFZpZGVv
RWxlbWVudAotICoKLSAqIFJldHVybnM6IEEgI2d1bG9uZwotICoKLSAqIFN0YWJpbGl0eTogVW5z
dGFibGUKLSoqLwotV0VCS0lUX0FQSSBndWxvbmcKLXdlYmtpdF9kb21faHRtbF92aWRlb19lbGVt
ZW50X2dldF93ZWJraXRfZHJvcHBlZF9mcmFtZV9jb3VudChXZWJLaXRET01IVE1MVmlkZW9FbGVt
ZW50KiBzZWxmKTsKLQotR19FTkRfREVDTFMKLQotI2VuZGlmIC8qIFdFQktJVF9ET01fVVNFX1VO
U1RBQkxFX0FQSSAqLwotI2VuZGlmIC8qIFdlYktpdERPTUhUTUxWaWRlb0VsZW1lbnRfaCAqLwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z3RrL0RPTS9XZWJLaXRET01IVE1MVmlkZW9FbGVtZW50UHJpdmF0ZS5oIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MVmlk
ZW9FbGVtZW50UHJpdmF0ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YjcxZDAx
Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTFZpZGVvRWxlbWVudFByaXZhdGUuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDM2ICswLDAgQEAKLS8qCi0gKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdl
YktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICogIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0
ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICogIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
LSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
LSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAq
ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNp
Zm5kZWYgV2ViS2l0RE9NSFRNTFZpZGVvRWxlbWVudFByaXZhdGVfaAotI2RlZmluZSBXZWJLaXRE
T01IVE1MVmlkZW9FbGVtZW50UHJpdmF0ZV9oCi0KLSNpbmNsdWRlIDxXZWJDb3JlL0hUTUxWaWRl
b0VsZW1lbnQuaD4KLSNpbmNsdWRlIDx3ZWJraXRkb20vV2ViS2l0RE9NSFRNTFZpZGVvRWxlbWVu
dC5oPgotI2lmIEVOQUJMRShWSURFTykKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci1XZWJLaXRET01I
VE1MVmlkZW9FbGVtZW50KiB3cmFwSFRNTFZpZGVvRWxlbWVudChXZWJDb3JlOjpIVE1MVmlkZW9F
bGVtZW50Kik7Ci1XZWJLaXRET01IVE1MVmlkZW9FbGVtZW50KiBraXQoV2ViQ29yZTo6SFRNTFZp
ZGVvRWxlbWVudCopOwotV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudCogY29yZShXZWJLaXRET01I
VE1MVmlkZW9FbGVtZW50Kik7Ci19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8qIEVO
QUJMRShWSURFTykgKi8KLQotI2VuZGlmIC8qIFdlYktpdERPTUhUTUxWaWRlb0VsZW1lbnRQcml2
YXRlX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSGlzdG9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhpc3RvcnkuY3Bw
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNzhjYzgxLi4wMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0
RE9NSGlzdG9yeS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNjggKzAsMCBAQAotLyoKLSAqICBU
aGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCi0gKiAg
VGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8g
Tk9UIE1PRElGWSEKLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgot
ICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiAgQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldl
YktpdERPTUhpc3RvcnkuaCIKLQotI2luY2x1ZGUgPFdlYkNvcmUvQ1NTSW1wb3J0UnVsZS5oPgot
I2luY2x1ZGUgIkRPTU9iamVjdENhY2hlLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudC5o
PgotI2luY2x1ZGUgPFdlYkNvcmUvRXhjZXB0aW9uQ29kZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUv
RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9KU01haW5UaHJl
YWRFeGVjU3RhdGUuaD4KLSNpbmNsdWRlICJXZWJLaXRET01IaXN0b3J5UHJpdmF0ZS5oIgotI2lu
Y2x1ZGUgIldlYktpdERPTVByaXZhdGUuaCIKLSNpbmNsdWRlICJDb252ZXJ0VG9VVEY4U3RyaW5n
LmgiCi0jaW5jbHVkZSA8d3RmL0dldFB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQot
I2RlZmluZSBXRUJLSVRfRE9NX0hJU1RPUllfR0VUX1BSSVZBVEUob2JqKSBHX1RZUEVfSU5TVEFO
Q0VfR0VUX1BSSVZBVEUob2JqLCBXRUJLSVRfRE9NX1RZUEVfSElTVE9SWSwgV2ViS2l0RE9NSGlz
dG9yeVByaXZhdGUpCi0KLXR5cGVkZWYgc3RydWN0IF9XZWJLaXRET01IaXN0b3J5UHJpdmF0ZSB7
Ci0gICAgUmVmUHRyPFdlYkNvcmU6Okhpc3Rvcnk+IGNvcmVPYmplY3Q7Ci19IFdlYktpdERPTUhp
c3RvcnlQcml2YXRlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotV2ViS2l0RE9NSGlzdG9yeSog
a2l0KFdlYkNvcmU6Okhpc3RvcnkqIG9iaikKLXsKLSAgICBpZiAoIW9iaikKLSAgICAgICAgcmV0
dXJuIDA7Ci0KLSAgICBpZiAoZ3BvaW50ZXIgcmV0ID0gRE9NT2JqZWN0Q2FjaGU6OmdldChvYmop
KQotICAgICAgICByZXR1cm4gV0VCS0lUX0RPTV9ISVNUT1JZKHJldCk7Ci0KLSAgICByZXR1cm4g
d3JhcEhpc3Rvcnkob2JqKTsKLX0KLQotV2ViQ29yZTo6SGlzdG9yeSogY29yZShXZWJLaXRET01I
aXN0b3J5KiByZXF1ZXN0KQotewotICAgIHJldHVybiByZXF1ZXN0ID8gc3RhdGljX2Nhc3Q8V2Vi
Q29yZTo6SGlzdG9yeSo+KFdFQktJVF9ET01fT0JKRUNUKHJlcXVlc3QpLT5jb3JlT2JqZWN0KSA6
IDA7Ci19Ci0KLVdlYktpdERPTUhpc3RvcnkqIHdyYXBIaXN0b3J5KFdlYkNvcmU6Okhpc3Rvcnkq
IGNvcmVPYmplY3QpCi17Ci0gICAgQVNTRVJUKGNvcmVPYmplY3QpOwotICAgIHJldHVybiBXRUJL
SVRfRE9NX0hJU1RPUlkoZ19vYmplY3RfbmV3KFdFQktJVF9ET01fVFlQRV9ISVNUT1JZLCAiY29y
ZS1vYmplY3QiLCBjb3JlT2JqZWN0LCBudWxscHRyKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YktpdAotCi1HX0RFRklORV9UWVBFKFdlYktpdERPTUhpc3RvcnksIHdlYmtpdF9kb21faGlzdG9y
eSwgV0VCS0lUX0RPTV9UWVBFX09CSkVDVCkKLQotZW51bSB7Ci0gICAgUFJPUF8wLAotICAgIFBS
T1BfTEVOR1RILAotfTsKLQotc3RhdGljIHZvaWQgd2Via2l0X2RvbV9oaXN0b3J5X2ZpbmFsaXpl
KEdPYmplY3QqIG9iamVjdCkKLXsKLSAgICBXZWJLaXRET01IaXN0b3J5UHJpdmF0ZSogcHJpdiA9
IFdFQktJVF9ET01fSElTVE9SWV9HRVRfUFJJVkFURShvYmplY3QpOwotCi0gICAgV2ViS2l0OjpE
T01PYmplY3RDYWNoZTo6Zm9yZ2V0KHByaXYtPmNvcmVPYmplY3QuZ2V0KCkpOwotCi0gICAgcHJp
di0+fldlYktpdERPTUhpc3RvcnlQcml2YXRlKCk7Ci0gICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0
X2RvbV9oaXN0b3J5X3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7Ci19Ci0KLXN0YXRp
YyB2b2lkIHdlYmtpdF9kb21faGlzdG9yeV9nZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBn
dWludCBwcm9wZXJ0eUlkLCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3BlYykKLXsKLSAg
ICBXZWJLaXRET01IaXN0b3J5KiBzZWxmID0gV0VCS0lUX0RPTV9ISVNUT1JZKG9iamVjdCk7Ci0K
LSAgICBzd2l0Y2ggKHByb3BlcnR5SWQpIHsKLSAgICBjYXNlIFBST1BfTEVOR1RIOgotICAgICAg
ICBnX3ZhbHVlX3NldF91bG9uZyh2YWx1ZSwgd2Via2l0X2RvbV9oaXN0b3J5X2dldF9sZW5ndGgo
c2VsZikpOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBHX09CSkVDVF9X
QVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wZXJ0eUlkLCBwc3BlYyk7Ci0gICAg
ICAgIGJyZWFrOwotICAgIH0KLX0KLQotc3RhdGljIEdPYmplY3QqIHdlYmtpdF9kb21faGlzdG9y
eV9jb25zdHJ1Y3RvcihHVHlwZSB0eXBlLCBndWludCBjb25zdHJ1Y3RQcm9wZXJ0aWVzQ291bnQs
IEdPYmplY3RDb25zdHJ1Y3RQYXJhbSogY29uc3RydWN0UHJvcGVydGllcykKLXsKLSAgICBHT2Jq
ZWN0KiBvYmplY3QgPSBHX09CSkVDVF9DTEFTUyh3ZWJraXRfZG9tX2hpc3RvcnlfcGFyZW50X2Ns
YXNzKS0+Y29uc3RydWN0b3IodHlwZSwgY29uc3RydWN0UHJvcGVydGllc0NvdW50LCBjb25zdHJ1
Y3RQcm9wZXJ0aWVzKTsKLQotICAgIFdlYktpdERPTUhpc3RvcnlQcml2YXRlKiBwcml2ID0gV0VC
S0lUX0RPTV9ISVNUT1JZX0dFVF9QUklWQVRFKG9iamVjdCk7Ci0gICAgcHJpdi0+Y29yZU9iamVj
dCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6Okhpc3RvcnkqPihXRUJLSVRfRE9NX09CSkVDVChvYmpl
Y3QpLT5jb3JlT2JqZWN0KTsKLSAgICBXZWJLaXQ6OkRPTU9iamVjdENhY2hlOjpwdXQocHJpdi0+
Y29yZU9iamVjdC5nZXQoKSwgb2JqZWN0KTsKLQotICAgIHJldHVybiBvYmplY3Q7Ci19Ci0KLXN0
YXRpYyB2b2lkIHdlYmtpdF9kb21faGlzdG9yeV9jbGFzc19pbml0KFdlYktpdERPTUhpc3RvcnlD
bGFzcyogcmVxdWVzdENsYXNzKQotewotICAgIEdPYmplY3RDbGFzcyogZ29iamVjdENsYXNzID0g
R19PQkpFQ1RfQ0xBU1MocmVxdWVzdENsYXNzKTsKLSAgICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZh
dGUoZ29iamVjdENsYXNzLCBzaXplb2YoV2ViS2l0RE9NSGlzdG9yeVByaXZhdGUpKTsKLSAgICBn
b2JqZWN0Q2xhc3MtPmNvbnN0cnVjdG9yID0gd2Via2l0X2RvbV9oaXN0b3J5X2NvbnN0cnVjdG9y
OwotICAgIGdvYmplY3RDbGFzcy0+ZmluYWxpemUgPSB3ZWJraXRfZG9tX2hpc3RvcnlfZmluYWxp
emU7Ci0gICAgZ29iamVjdENsYXNzLT5nZXRfcHJvcGVydHkgPSB3ZWJraXRfZG9tX2hpc3Rvcnlf
Z2V0X3Byb3BlcnR5OwotCi0gICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAg
ICAgICAgZ29iamVjdENsYXNzLAotICAgICAgICBQUk9QX0xFTkdUSCwKLSAgICAgICAgZ19wYXJh
bV9zcGVjX3Vsb25nKAotICAgICAgICAgICAgImxlbmd0aCIsCi0gICAgICAgICAgICAiSGlzdG9y
eTpsZW5ndGgiLAotICAgICAgICAgICAgInJlYWQtb25seSBndWxvbmcgSGlzdG9yeTpsZW5ndGgi
LAotICAgICAgICAgICAgMCwgR19NQVhVTE9ORywgMCwKLSAgICAgICAgICAgIFdFQktJVF9QQVJB
TV9SRUFEQUJMRSkpOwotCi19Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdF9kb21faGlzdG9yeV9pbml0
KFdlYktpdERPTUhpc3RvcnkqIHJlcXVlc3QpCi17Ci0gICAgV2ViS2l0RE9NSGlzdG9yeVByaXZh
dGUqIHByaXYgPSBXRUJLSVRfRE9NX0hJU1RPUllfR0VUX1BSSVZBVEUocmVxdWVzdCk7Ci0gICAg
bmV3IChwcml2KSBXZWJLaXRET01IaXN0b3J5UHJpdmF0ZSgpOwotfQotCi12b2lkIHdlYmtpdF9k
b21faGlzdG9yeV9iYWNrKFdlYktpdERPTUhpc3RvcnkqIHNlbGYpCi17Ci0gICAgV2ViQ29yZTo6
SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lU
X0RPTV9JU19ISVNUT1JZKHNlbGYpKTsKLSAgICBXZWJDb3JlOjpIaXN0b3J5KiBpdGVtID0gV2Vi
S2l0Ojpjb3JlKHNlbGYpOwotICAgIGl0ZW0tPmJhY2soKTsKLX0KLQotdm9pZCB3ZWJraXRfZG9t
X2hpc3RvcnlfZm9yd2FyZChXZWJLaXRET01IaXN0b3J5KiBzZWxmKQotewotICAgIFdlYkNvcmU6
OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJ
VF9ET01fSVNfSElTVE9SWShzZWxmKSk7Ci0gICAgV2ViQ29yZTo6SGlzdG9yeSogaXRlbSA9IFdl
YktpdDo6Y29yZShzZWxmKTsKLSAgICBpdGVtLT5mb3J3YXJkKCk7Ci19Ci0KLXZvaWQgd2Via2l0
X2RvbV9oaXN0b3J5X2dvKFdlYktpdERPTUhpc3RvcnkqIHNlbGYsIGdsb25nIGRpc3RhbmNlKQot
ewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVy
bl9pZl9mYWlsKFdFQktJVF9ET01fSVNfSElTVE9SWShzZWxmKSk7Ci0gICAgV2ViQ29yZTo6SGlz
dG9yeSogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBpdGVtLT5nbyhkaXN0YW5jZSk7
Ci19Ci0KLWd1bG9uZyB3ZWJraXRfZG9tX2hpc3RvcnlfZ2V0X2xlbmd0aChXZWJLaXRET01IaXN0
b3J5KiBzZWxmKQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsK
LSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX0hJU1RPUlkoc2VsZiksIDAp
OwotICAgIFdlYkNvcmU6Okhpc3RvcnkqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAg
Z3Vsb25nIHJlc3VsdCA9IGl0ZW0tPmxlbmd0aCgpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2d0ay9ET00vV2ViS2l0RE9NSGlzdG9yeS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IaXN0b3J5LmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDE2N2M0M2UuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IaXN0b3J5LmgK
KysrIC9kZXYvbnVsbApAQCAtMSw5MiArMCwwIEBACi0vKgotICogIFRoaXMgZmlsZSBpcyBwYXJ0
IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAqICBUaGlzIGZpbGUgaGFzIGJl
ZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQotICoK
LSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAot
ICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
LSAqLwotCi0jaWZuZGVmIFdlYktpdERPTUhpc3RvcnlfaAotI2RlZmluZSBXZWJLaXRET01IaXN0
b3J5X2gKLQotI2lmZGVmIFdFQktJVF9ET01fVVNFX1VOU1RBQkxFX0FQSQotCi0jaW5jbHVkZSA8
Z2xpYi1vYmplY3QuaD4KLSNpbmNsdWRlIDx3ZWJraXRkb20vV2ViS2l0RE9NT2JqZWN0Lmg+Ci0j
aW5jbHVkZSA8d2Via2l0ZG9tL3dlYmtpdGRvbWRlZmluZXMtdW5zdGFibGUuaD4KLQotR19CRUdJ
Tl9ERUNMUwotCi0jZGVmaW5lIFdFQktJVF9ET01fVFlQRV9ISVNUT1JZICAgICAgICAgICAgKHdl
YmtpdF9kb21faGlzdG9yeV9nZXRfdHlwZSgpKQotI2RlZmluZSBXRUJLSVRfRE9NX0hJU1RPUlko
b2JqKSAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwgV0VCS0lU
X0RPTV9UWVBFX0hJU1RPUlksIFdlYktpdERPTUhpc3RvcnkpKQotI2RlZmluZSBXRUJLSVRfRE9N
X0hJU1RPUllfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3Mp
LCAgV0VCS0lUX0RPTV9UWVBFX0hJU1RPUlksIFdlYktpdERPTUhpc3RvcnlDbGFzcykKLSNkZWZp
bmUgV0VCS0lUX0RPTV9JU19ISVNUT1JZKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RB
TkNFX1RZUEUoKG9iaiksIFdFQktJVF9ET01fVFlQRV9ISVNUT1JZKSkKLSNkZWZpbmUgV0VCS0lU
X0RPTV9JU19ISVNUT1JZX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGts
YXNzKSwgIFdFQktJVF9ET01fVFlQRV9ISVNUT1JZKSkKLSNkZWZpbmUgV0VCS0lUX0RPTV9ISVNU
T1JZX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdF
QktJVF9ET01fVFlQRV9ISVNUT1JZLCBXZWJLaXRET01IaXN0b3J5Q2xhc3MpKQotCi1zdHJ1Y3Qg
X1dlYktpdERPTUhpc3RvcnkgewotICAgIFdlYktpdERPTU9iamVjdCBwYXJlbnRfaW5zdGFuY2U7
Ci19OwotCi1zdHJ1Y3QgX1dlYktpdERPTUhpc3RvcnlDbGFzcyB7Ci0gICAgV2ViS2l0RE9NT2Jq
ZWN0Q2xhc3MgcGFyZW50X2NsYXNzOwotfTsKLQotV0VCS0lUX0FQSSBHVHlwZQotd2Via2l0X2Rv
bV9oaXN0b3J5X2dldF90eXBlKHZvaWQpOwotCi0vKioKLSAqIHdlYmtpdF9kb21faGlzdG9yeV9i
YWNrOgotICogQHNlbGY6IEEgI1dlYktpdERPTUhpc3RvcnkKLSAqCi0gKiBTdGFiaWxpdHk6IFVu
c3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgdm9pZAotd2Via2l0X2RvbV9oaXN0b3J5X2JhY2soV2Vi
S2l0RE9NSGlzdG9yeSogc2VsZik7Ci0KLS8qKgotICogd2Via2l0X2RvbV9oaXN0b3J5X2Zvcndh
cmQ6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSGlzdG9yeQotICoKLSAqIFN0YWJpbGl0eTogVW5z
dGFibGUKLSoqLwotV0VCS0lUX0FQSSB2b2lkCi13ZWJraXRfZG9tX2hpc3RvcnlfZm9yd2FyZChX
ZWJLaXRET01IaXN0b3J5KiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2hpc3RvcnlfZ286
Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSGlzdG9yeQotICogQGRpc3RhbmNlOiBBICNnbG9uZwot
ICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSB2b2lkCi13ZWJraXRf
ZG9tX2hpc3RvcnlfZ28oV2ViS2l0RE9NSGlzdG9yeSogc2VsZiwgZ2xvbmcgZGlzdGFuY2UpOwot
Ci0vKioKLSAqIHdlYmtpdF9kb21faGlzdG9yeV9nZXRfbGVuZ3RoOgotICogQHNlbGY6IEEgI1dl
YktpdERPTUhpc3RvcnkKLSAqCi0gKiBSZXR1cm5zOiBBICNndWxvbmcKLSAqCi0gKiBTdGFiaWxp
dHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgZ3Vsb25nCi13ZWJraXRfZG9tX2hpc3Rvcnlf
Z2V0X2xlbmd0aChXZWJLaXRET01IaXN0b3J5KiBzZWxmKTsKLQotR19FTkRfREVDTFMKLQotI2Vu
ZGlmIC8qIFdFQktJVF9ET01fVVNFX1VOU1RBQkxFX0FQSSAqLwotI2VuZGlmIC8qIFdlYktpdERP
TUhpc3RvcnlfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IaXN0b3J5UHJpdmF0ZS5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01I
aXN0b3J5UHJpdmF0ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYzg4YThiLi4w
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2d0ay9ET00vV2ViS2l0RE9NSGlzdG9yeVByaXZhdGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDMz
ICswLDAgQEAKLS8qCi0gKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNv
dXJjZSBwcm9qZWN0LgotICogIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJh
dGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICog
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgot
ICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgV2ViS2l0
RE9NSGlzdG9yeVByaXZhdGVfaAotI2RlZmluZSBXZWJLaXRET01IaXN0b3J5UHJpdmF0ZV9oCi0K
LSNpbmNsdWRlIDxXZWJDb3JlL0hpc3RvcnkuaD4KLSNpbmNsdWRlIDx3ZWJraXRkb20vV2ViS2l0
RE9NSGlzdG9yeS5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLVdlYktpdERPTUhpc3RvcnkqIHdy
YXBIaXN0b3J5KFdlYkNvcmU6Okhpc3RvcnkqKTsKLVdlYktpdERPTUhpc3RvcnkqIGtpdChXZWJD
b3JlOjpIaXN0b3J5Kik7Ci1XZWJDb3JlOjpIaXN0b3J5KiBjb3JlKFdlYktpdERPTUhpc3Rvcnkq
KTsKLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLyogV2ViS2l0RE9NSGlzdG9yeVBy
aXZhdGVfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01LZXlmcmFtZUVmZmVjdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUtl
eWZyYW1lRWZmZWN0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGNmZTk0My4u
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9ndGsvRE9NL1dlYktpdERPTUtleWZyYW1lRWZmZWN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDc3ICswLDAgQEAKLS8qCi0gKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVu
IHNvdXJjZSBwcm9qZWN0LgotICogIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2Vu
ZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICogIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwot
ICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJXZWJLaXRET01LZXlmcmFtZUVmZmVjdC5oIgotCi0jaW5jbHVk
ZSA8V2ViQ29yZS9DU1NJbXBvcnRSdWxlLmg+Ci0jaW5jbHVkZSAiRE9NT2JqZWN0Q2FjaGUuaCIK
LSNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9FeGNlcHRp
b25Db2RlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9FeGNlcHRpb25Db2RlRGVzY3JpcHRpb24uaD4K
LSNpbmNsdWRlIDxXZWJDb3JlL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5oPgotI2luY2x1ZGUgIldl
YktpdERPTUtleWZyYW1lRWZmZWN0UHJpdmF0ZS5oIgotI2luY2x1ZGUgIldlYktpdERPTVByaXZh
dGUuaCIKLSNpbmNsdWRlICJDb252ZXJ0VG9VVEY4U3RyaW5nLmgiCi0jaW5jbHVkZSA8d3RmL0dl
dFB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotI2lmIEVOQUJMRShXRUJfQU5JTUFU
SU9OUykKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVdlYktpdERPTUtleWZyYW1lRWZmZWN0KiBr
aXQoV2ViQ29yZTo6S2V5ZnJhbWVFZmZlY3QqIG9iaikKLXsKLSAgICBpZiAoIW9iaikKLSAgICAg
ICAgcmV0dXJuIDA7Ci0KLSAgICBpZiAoZ3BvaW50ZXIgcmV0ID0gRE9NT2JqZWN0Q2FjaGU6Omdl
dChvYmopKQotICAgICAgICByZXR1cm4gV0VCS0lUX0RPTV9LRVlGUkFNRV9FRkZFQ1QocmV0KTsK
LQotICAgIHJldHVybiB3cmFwS2V5ZnJhbWVFZmZlY3Qob2JqKTsKLX0KLQotV2ViQ29yZTo6S2V5
ZnJhbWVFZmZlY3QqIGNvcmUoV2ViS2l0RE9NS2V5ZnJhbWVFZmZlY3QqIHJlcXVlc3QpCi17Ci0g
ICAgcmV0dXJuIHJlcXVlc3QgPyBzdGF0aWNfY2FzdDxXZWJDb3JlOjpLZXlmcmFtZUVmZmVjdCo+
KFdFQktJVF9ET01fT0JKRUNUKHJlcXVlc3QpLT5jb3JlT2JqZWN0KSA6IDA7Ci19Ci0KLVdlYktp
dERPTUtleWZyYW1lRWZmZWN0KiB3cmFwS2V5ZnJhbWVFZmZlY3QoV2ViQ29yZTo6S2V5ZnJhbWVF
ZmZlY3QqIGNvcmVPYmplY3QpCi17Ci0gICAgQVNTRVJUKGNvcmVPYmplY3QpOwotICAgIHJldHVy
biBXRUJLSVRfRE9NX0tFWUZSQU1FX0VGRkVDVChnX29iamVjdF9uZXcoV0VCS0lUX0RPTV9UWVBF
X0tFWUZSQU1FX0VGRkVDVCwgImNvcmUtb2JqZWN0IiwgY29yZU9iamVjdCwgbnVsbHB0cikpOwot
fQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJfQU5JTUFU
SU9OUykKLQotR19ERUZJTkVfVFlQRShXZWJLaXRET01LZXlmcmFtZUVmZmVjdCwgd2Via2l0X2Rv
bV9rZXlmcmFtZV9lZmZlY3QsIFdFQktJVF9ET01fVFlQRV9BTklNQVRJT05fRUZGRUNUKQotCi1z
dGF0aWMgdm9pZCB3ZWJraXRfZG9tX2tleWZyYW1lX2VmZmVjdF9jbGFzc19pbml0KFdlYktpdERP
TUtleWZyYW1lRWZmZWN0Q2xhc3MqIHJlcXVlc3RDbGFzcykKLXsKLSAgICBVTlVTRURfUEFSQU0o
cmVxdWVzdENsYXNzKTsKLX0KLQotc3RhdGljIHZvaWQgd2Via2l0X2RvbV9rZXlmcmFtZV9lZmZl
Y3RfaW5pdChXZWJLaXRET01LZXlmcmFtZUVmZmVjdCogcmVxdWVzdCkKLXsKLSAgICBVTlVTRURf
UEFSQU0ocmVxdWVzdCk7Ci19Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NS2V5ZnJhbWVFZmZlY3QuaCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2Vi
S2l0RE9NS2V5ZnJhbWVFZmZlY3QuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzlk
M2Q2MC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUtleWZyYW1lRWZmZWN0LmgKKysrIC9kZXYvbnVsbApA
QCAtMSw1MyArMCwwIEBACi0vKgotICogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQg
b3BlbiBzb3VyY2UgcHJvamVjdC4KLSAqICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5
IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQotICoKLSAqICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAg
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKLSAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiAgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKLSAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaWZuZGVm
IFdlYktpdERPTUtleWZyYW1lRWZmZWN0X2gKLSNkZWZpbmUgV2ViS2l0RE9NS2V5ZnJhbWVFZmZl
Y3RfaAotCi0jaWZkZWYgV0VCS0lUX0RPTV9VU0VfVU5TVEFCTEVfQVBJCi0KLSNpbmNsdWRlIDxn
bGliLW9iamVjdC5oPgotI2luY2x1ZGUgPHdlYmtpdGRvbS9XZWJLaXRET01BbmltYXRpb25FZmZl
Y3QuaD4KLSNpbmNsdWRlIDx3ZWJraXRkb20vd2Via2l0ZG9tZGVmaW5lcy11bnN0YWJsZS5oPgot
Ci1HX0JFR0lOX0RFQ0xTCi0KLSNkZWZpbmUgV0VCS0lUX0RPTV9UWVBFX0tFWUZSQU1FX0VGRkVD
VCAgICAgICAgICAgICh3ZWJraXRfZG9tX2tleWZyYW1lX2VmZmVjdF9nZXRfdHlwZSgpKQotI2Rl
ZmluZSBXRUJLSVRfRE9NX0tFWUZSQU1FX0VGRkVDVChvYmopICAgICAgICAgICAgKEdfVFlQRV9D
SEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBXRUJLSVRfRE9NX1RZUEVfS0VZRlJBTUVfRUZGRUNU
LCBXZWJLaXRET01LZXlmcmFtZUVmZmVjdCkpCi0jZGVmaW5lIFdFQktJVF9ET01fS0VZRlJBTUVf
RUZGRUNUX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwg
IFdFQktJVF9ET01fVFlQRV9LRVlGUkFNRV9FRkZFQ1QsIFdlYktpdERPTUtleWZyYW1lRWZmZWN0
Q2xhc3MpCi0jZGVmaW5lIFdFQktJVF9ET01fSVNfS0VZRlJBTUVfRUZGRUNUKG9iaikgICAgICAg
ICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksIFdFQktJVF9ET01fVFlQRV9LRVlG
UkFNRV9FRkZFQ1QpKQotI2RlZmluZSBXRUJLSVRfRE9NX0lTX0tFWUZSQU1FX0VGRkVDVF9DTEFT
UyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfRE9NX1RZ
UEVfS0VZRlJBTUVfRUZGRUNUKSkKLSNkZWZpbmUgV0VCS0lUX0RPTV9LRVlGUkFNRV9FRkZFQ1Rf
R0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgV0VCS0lU
X0RPTV9UWVBFX0tFWUZSQU1FX0VGRkVDVCwgV2ViS2l0RE9NS2V5ZnJhbWVFZmZlY3RDbGFzcykp
Ci0KLXN0cnVjdCBfV2ViS2l0RE9NS2V5ZnJhbWVFZmZlY3QgewotICAgIFdlYktpdERPTUFuaW1h
dGlvbkVmZmVjdCBwYXJlbnRfaW5zdGFuY2U7Ci19OwotCi1zdHJ1Y3QgX1dlYktpdERPTUtleWZy
YW1lRWZmZWN0Q2xhc3MgewotICAgIFdlYktpdERPTUFuaW1hdGlvbkVmZmVjdENsYXNzIHBhcmVu
dF9jbGFzczsKLX07Ci0KLVdFQktJVF9BUEkgR1R5cGUKLXdlYmtpdF9kb21fa2V5ZnJhbWVfZWZm
ZWN0X2dldF90eXBlKHZvaWQpOwotCi1HX0VORF9ERUNMUwotCi0jZW5kaWYgLyogV0VCS0lUX0RP
TV9VU0VfVU5TVEFCTEVfQVBJICovCi0jZW5kaWYgLyogV2ViS2l0RE9NS2V5ZnJhbWVFZmZlY3Rf
aCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01LZXlmcmFtZUVmZmVjdFByaXZhdGUuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NS2V5
ZnJhbWVFZmZlY3RQcml2YXRlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjOTZk
ZDcuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01LZXlmcmFtZUVmZmVjdFByaXZhdGUuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDM2ICswLDAgQEAKLS8qCi0gKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdl
YktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICogIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0
ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICogIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
LSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
LSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAq
ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNp
Zm5kZWYgV2ViS2l0RE9NS2V5ZnJhbWVFZmZlY3RQcml2YXRlX2gKLSNkZWZpbmUgV2ViS2l0RE9N
S2V5ZnJhbWVFZmZlY3RQcml2YXRlX2gKLQotI2luY2x1ZGUgPFdlYkNvcmUvS2V5ZnJhbWVFZmZl
Y3QuaD4KLSNpbmNsdWRlIDx3ZWJraXRkb20vV2ViS2l0RE9NS2V5ZnJhbWVFZmZlY3QuaD4KLSNp
ZiBFTkFCTEUoV0VCX0FOSU1BVElPTlMpCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotV2ViS2l0RE9N
S2V5ZnJhbWVFZmZlY3QqIHdyYXBLZXlmcmFtZUVmZmVjdChXZWJDb3JlOjpLZXlmcmFtZUVmZmVj
dCopOwotV2ViS2l0RE9NS2V5ZnJhbWVFZmZlY3QqIGtpdChXZWJDb3JlOjpLZXlmcmFtZUVmZmVj
dCopOwotV2ViQ29yZTo6S2V5ZnJhbWVFZmZlY3QqIGNvcmUoV2ViS2l0RE9NS2V5ZnJhbWVFZmZl
Y3QqKTsKLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLyogRU5BQkxFKFdFQl9BTklN
QVRJT05TKSAqLwotCi0jZW5kaWYgLyogV2ViS2l0RE9NS2V5ZnJhbWVFZmZlY3RQcml2YXRlX2gg
Ki8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2d0ay9ET00vV2ViS2l0RE9NTG9jYXRpb24uY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01Mb2NhdGlvbi5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcxY2IxNDYuLjAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01M
b2NhdGlvbi5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjggKzAsMCBAQAotLyoKLSAqICBUaGlz
IGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCi0gKiAgVGhp
cyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9U
IE1PRElGWSEKLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoK
LSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiAgQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYktp
dERPTUxvY2F0aW9uLmgiCi0KLSNpbmNsdWRlIDxXZWJDb3JlL0NTU0ltcG9ydFJ1bGUuaD4KLSNp
bmNsdWRlICJET01PYmplY3RDYWNoZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnQuaD4K
LSNpbmNsdWRlIDxXZWJDb3JlL0V4Y2VwdGlvbkNvZGUuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0V4
Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbi5oPgotI2luY2x1ZGUgPFdlYkNvcmUvSlNNYWluVGhyZWFk
RXhlY1N0YXRlLmg+Ci0jaW5jbHVkZSAiV2ViS2l0RE9NTG9jYXRpb25Qcml2YXRlLmgiCi0jaW5j
bHVkZSAiV2ViS2l0RE9NUHJpdmF0ZS5oIgotI2luY2x1ZGUgIkNvbnZlcnRUb1VURjhTdHJpbmcu
aCIKLSNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi0j
ZGVmaW5lIFdFQktJVF9ET01fTE9DQVRJT05fR0VUX1BSSVZBVEUob2JqKSBHX1RZUEVfSU5TVEFO
Q0VfR0VUX1BSSVZBVEUob2JqLCBXRUJLSVRfRE9NX1RZUEVfTE9DQVRJT04sIFdlYktpdERPTUxv
Y2F0aW9uUHJpdmF0ZSkKLQotdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdERPTUxvY2F0aW9uUHJpdmF0
ZSB7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkxvY2F0aW9uPiBjb3JlT2JqZWN0OwotfSBXZWJLaXRE
T01Mb2NhdGlvblByaXZhdGU7Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1XZWJLaXRET01Mb2Nh
dGlvbioga2l0KFdlYkNvcmU6OkxvY2F0aW9uKiBvYmopCi17Ci0gICAgaWYgKCFvYmopCi0gICAg
ICAgIHJldHVybiAwOwotCi0gICAgaWYgKGdwb2ludGVyIHJldCA9IERPTU9iamVjdENhY2hlOjpn
ZXQob2JqKSkKLSAgICAgICAgcmV0dXJuIFdFQktJVF9ET01fTE9DQVRJT04ocmV0KTsKLQotICAg
IHJldHVybiB3cmFwTG9jYXRpb24ob2JqKTsKLX0KLQotV2ViQ29yZTo6TG9jYXRpb24qIGNvcmUo
V2ViS2l0RE9NTG9jYXRpb24qIHJlcXVlc3QpCi17Ci0gICAgcmV0dXJuIHJlcXVlc3QgPyBzdGF0
aWNfY2FzdDxXZWJDb3JlOjpMb2NhdGlvbio+KFdFQktJVF9ET01fT0JKRUNUKHJlcXVlc3QpLT5j
b3JlT2JqZWN0KSA6IDA7Ci19Ci0KLVdlYktpdERPTUxvY2F0aW9uKiB3cmFwTG9jYXRpb24oV2Vi
Q29yZTo6TG9jYXRpb24qIGNvcmVPYmplY3QpCi17Ci0gICAgQVNTRVJUKGNvcmVPYmplY3QpOwot
ICAgIHJldHVybiBXRUJLSVRfRE9NX0xPQ0FUSU9OKGdfb2JqZWN0X25ldyhXRUJLSVRfRE9NX1RZ
UEVfTE9DQVRJT04sICJjb3JlLW9iamVjdCIsIGNvcmVPYmplY3QsIG51bGxwdHIpKTsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLUdfREVGSU5FX1RZUEUoV2ViS2l0RE9NTG9jYXRpb24s
IHdlYmtpdF9kb21fbG9jYXRpb24sIFdFQktJVF9ET01fVFlQRV9PQkpFQ1QpCi0KLWVudW0gewot
ICAgIFBST1BfMCwKLSAgICBQUk9QX0hSRUYsCi0gICAgUFJPUF9QUk9UT0NPTCwKLSAgICBQUk9Q
X0hPU1QsCi0gICAgUFJPUF9IT1NUTkFNRSwKLSAgICBQUk9QX1BPUlQsCi0gICAgUFJPUF9QQVRI
TkFNRSwKLSAgICBQUk9QX1NFQVJDSCwKLSAgICBQUk9QX0hBU0gsCi0gICAgUFJPUF9PUklHSU4s
Ci19OwotCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX2xvY2F0aW9uX2ZpbmFsaXplKEdPYmplY3Qq
IG9iamVjdCkKLXsKLSAgICBXZWJLaXRET01Mb2NhdGlvblByaXZhdGUqIHByaXYgPSBXRUJLSVRf
RE9NX0xPQ0FUSU9OX0dFVF9QUklWQVRFKG9iamVjdCk7Ci0KLSAgICBXZWJLaXQ6OkRPTU9iamVj
dENhY2hlOjpmb3JnZXQocHJpdi0+Y29yZU9iamVjdC5nZXQoKSk7Ci0KLSAgICBwcml2LT5+V2Vi
S2l0RE9NTG9jYXRpb25Qcml2YXRlKCk7Ci0gICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X2RvbV9s
b2NhdGlvbl9wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmplY3QpOwotfQotCi1zdGF0aWMgdm9p
ZCB3ZWJraXRfZG9tX2xvY2F0aW9uX2dldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50
IHByb3BlcnR5SWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKQotewotICAgIFdl
YktpdERPTUxvY2F0aW9uKiBzZWxmID0gV0VCS0lUX0RPTV9MT0NBVElPTihvYmplY3QpOwotCi0g
ICAgc3dpdGNoIChwcm9wZXJ0eUlkKSB7Ci0gICAgY2FzZSBQUk9QX0hSRUY6Ci0gICAgICAgIGdf
dmFsdWVfdGFrZV9zdHJpbmcodmFsdWUsIHdlYmtpdF9kb21fbG9jYXRpb25fZ2V0X2hyZWYoc2Vs
ZikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfUFJPVE9DT0w6Ci0gICAgICAgIGdf
dmFsdWVfdGFrZV9zdHJpbmcodmFsdWUsIHdlYmtpdF9kb21fbG9jYXRpb25fZ2V0X3Byb3RvY29s
KHNlbGYpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX0hPU1Q6Ci0gICAgICAgIGdf
dmFsdWVfdGFrZV9zdHJpbmcodmFsdWUsIHdlYmtpdF9kb21fbG9jYXRpb25fZ2V0X2hvc3Qoc2Vs
ZikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfSE9TVE5BTUU6Ci0gICAgICAgIGdf
dmFsdWVfdGFrZV9zdHJpbmcodmFsdWUsIHdlYmtpdF9kb21fbG9jYXRpb25fZ2V0X2hvc3RuYW1l
KHNlbGYpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX1BPUlQ6Ci0gICAgICAgIGdf
dmFsdWVfdGFrZV9zdHJpbmcodmFsdWUsIHdlYmtpdF9kb21fbG9jYXRpb25fZ2V0X3BvcnQoc2Vs
ZikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfUEFUSE5BTUU6Ci0gICAgICAgIGdf
dmFsdWVfdGFrZV9zdHJpbmcodmFsdWUsIHdlYmtpdF9kb21fbG9jYXRpb25fZ2V0X3BhdGhuYW1l
KHNlbGYpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX1NFQVJDSDoKLSAgICAgICAg
Z192YWx1ZV90YWtlX3N0cmluZyh2YWx1ZSwgd2Via2l0X2RvbV9sb2NhdGlvbl9nZXRfc2VhcmNo
KHNlbGYpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX0hBU0g6Ci0gICAgICAgIGdf
dmFsdWVfdGFrZV9zdHJpbmcodmFsdWUsIHdlYmtpdF9kb21fbG9jYXRpb25fZ2V0X2hhc2goc2Vs
ZikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfT1JJR0lOOgotICAgICAgICBnX3Zh
bHVlX3Rha2Vfc3RyaW5nKHZhbHVlLCB3ZWJraXRfZG9tX2xvY2F0aW9uX2dldF9vcmlnaW4oc2Vs
ZikpOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBHX09CSkVDVF9XQVJO
X0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wZXJ0eUlkLCBwc3BlYyk7Ci0gICAgICAg
IGJyZWFrOwotICAgIH0KLX0KLQotc3RhdGljIEdPYmplY3QqIHdlYmtpdF9kb21fbG9jYXRpb25f
Y29uc3RydWN0b3IoR1R5cGUgdHlwZSwgZ3VpbnQgY29uc3RydWN0UHJvcGVydGllc0NvdW50LCBH
T2JqZWN0Q29uc3RydWN0UGFyYW0qIGNvbnN0cnVjdFByb3BlcnRpZXMpCi17Ci0gICAgR09iamVj
dCogb2JqZWN0ID0gR19PQkpFQ1RfQ0xBU1Mod2Via2l0X2RvbV9sb2NhdGlvbl9wYXJlbnRfY2xh
c3MpLT5jb25zdHJ1Y3Rvcih0eXBlLCBjb25zdHJ1Y3RQcm9wZXJ0aWVzQ291bnQsIGNvbnN0cnVj
dFByb3BlcnRpZXMpOwotCi0gICAgV2ViS2l0RE9NTG9jYXRpb25Qcml2YXRlKiBwcml2ID0gV0VC
S0lUX0RPTV9MT0NBVElPTl9HRVRfUFJJVkFURShvYmplY3QpOwotICAgIHByaXYtPmNvcmVPYmpl
Y3QgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpMb2NhdGlvbio+KFdFQktJVF9ET01fT0JKRUNUKG9i
amVjdCktPmNvcmVPYmplY3QpOwotICAgIFdlYktpdDo6RE9NT2JqZWN0Q2FjaGU6OnB1dChwcml2
LT5jb3JlT2JqZWN0LmdldCgpLCBvYmplY3QpOwotCi0gICAgcmV0dXJuIG9iamVjdDsKLX0KLQot
c3RhdGljIHZvaWQgd2Via2l0X2RvbV9sb2NhdGlvbl9jbGFzc19pbml0KFdlYktpdERPTUxvY2F0
aW9uQ2xhc3MqIHJlcXVlc3RDbGFzcykKLXsKLSAgICBHT2JqZWN0Q2xhc3MqIGdvYmplY3RDbGFz
cyA9IEdfT0JKRUNUX0NMQVNTKHJlcXVlc3RDbGFzcyk7Ci0gICAgZ190eXBlX2NsYXNzX2FkZF9w
cml2YXRlKGdvYmplY3RDbGFzcywgc2l6ZW9mKFdlYktpdERPTUxvY2F0aW9uUHJpdmF0ZSkpOwot
ICAgIGdvYmplY3RDbGFzcy0+Y29uc3RydWN0b3IgPSB3ZWJraXRfZG9tX2xvY2F0aW9uX2NvbnN0
cnVjdG9yOwotICAgIGdvYmplY3RDbGFzcy0+ZmluYWxpemUgPSB3ZWJraXRfZG9tX2xvY2F0aW9u
X2ZpbmFsaXplOwotICAgIGdvYmplY3RDbGFzcy0+Z2V0X3Byb3BlcnR5ID0gd2Via2l0X2RvbV9s
b2NhdGlvbl9nZXRfcHJvcGVydHk7Ci0KLSAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3Bl
cnR5KAotICAgICAgICBnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBST1BfSFJFRiwKLSAgICAgICAg
Z19wYXJhbV9zcGVjX3N0cmluZygKLSAgICAgICAgICAgICJocmVmIiwKLSAgICAgICAgICAgICJM
b2NhdGlvbjpocmVmIiwKLSAgICAgICAgICAgICJyZWFkLW9ubHkgZ2NoYXIqIExvY2F0aW9uOmhy
ZWYiLAotICAgICAgICAgICAgIiIsCi0gICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUp
KTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmpl
Y3RDbGFzcywKLSAgICAgICAgUFJPUF9QUk9UT0NPTCwKLSAgICAgICAgZ19wYXJhbV9zcGVjX3N0
cmluZygKLSAgICAgICAgICAgICJwcm90b2NvbCIsCi0gICAgICAgICAgICAiTG9jYXRpb246cHJv
dG9jb2wiLAotICAgICAgICAgICAgInJlYWQtb25seSBnY2hhciogTG9jYXRpb246cHJvdG9jb2wi
LAotICAgICAgICAgICAgIiIsCi0gICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsK
LQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RD
bGFzcywKLSAgICAgICAgUFJPUF9IT1NULAotICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nKAot
ICAgICAgICAgICAgImhvc3QiLAotICAgICAgICAgICAgIkxvY2F0aW9uOmhvc3QiLAotICAgICAg
ICAgICAgInJlYWQtb25seSBnY2hhciogTG9jYXRpb246aG9zdCIsCi0gICAgICAgICAgICAiIiwK
LSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSkpOwotCi0gICAgZ19vYmplY3RfY2xh
c3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAgZ29iamVjdENsYXNzLAotICAgICAgICBQUk9Q
X0hPU1ROQU1FLAotICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nKAotICAgICAgICAgICAgImhv
c3RuYW1lIiwKLSAgICAgICAgICAgICJMb2NhdGlvbjpob3N0bmFtZSIsCi0gICAgICAgICAgICAi
cmVhZC1vbmx5IGdjaGFyKiBMb2NhdGlvbjpob3N0bmFtZSIsCi0gICAgICAgICAgICAiIiwKLSAg
ICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSkpOwotCi0gICAgZ19vYmplY3RfY2xhc3Nf
aW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAgZ29iamVjdENsYXNzLAotICAgICAgICBQUk9QX1BP
UlQsCi0gICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcoCi0gICAgICAgICAgICAicG9ydCIsCi0g
ICAgICAgICAgICAiTG9jYXRpb246cG9ydCIsCi0gICAgICAgICAgICAicmVhZC1vbmx5IGdjaGFy
KiBMb2NhdGlvbjpwb3J0IiwKLSAgICAgICAgICAgICIiLAotICAgICAgICAgICAgV0VCS0lUX1BB
UkFNX1JFQURBQkxFKSk7Ci0KLSAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAot
ICAgICAgICBnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBST1BfUEFUSE5BTUUsCi0gICAgICAgIGdf
cGFyYW1fc3BlY19zdHJpbmcoCi0gICAgICAgICAgICAicGF0aG5hbWUiLAotICAgICAgICAgICAg
IkxvY2F0aW9uOnBhdGhuYW1lIiwKLSAgICAgICAgICAgICJyZWFkLW9ubHkgZ2NoYXIqIExvY2F0
aW9uOnBhdGhuYW1lIiwKLSAgICAgICAgICAgICIiLAotICAgICAgICAgICAgV0VCS0lUX1BBUkFN
X1JFQURBQkxFKSk7Ci0KLSAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAotICAg
ICAgICBnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBST1BfU0VBUkNILAotICAgICAgICBnX3BhcmFt
X3NwZWNfc3RyaW5nKAotICAgICAgICAgICAgInNlYXJjaCIsCi0gICAgICAgICAgICAiTG9jYXRp
b246c2VhcmNoIiwKLSAgICAgICAgICAgICJyZWFkLW9ubHkgZ2NoYXIqIExvY2F0aW9uOnNlYXJj
aCIsCi0gICAgICAgICAgICAiIiwKLSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSkp
OwotCi0gICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAgZ29iamVj
dENsYXNzLAotICAgICAgICBQUk9QX0hBU0gsCi0gICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmco
Ci0gICAgICAgICAgICAiaGFzaCIsCi0gICAgICAgICAgICAiTG9jYXRpb246aGFzaCIsCi0gICAg
ICAgICAgICAicmVhZC1vbmx5IGdjaGFyKiBMb2NhdGlvbjpoYXNoIiwKLSAgICAgICAgICAgICIi
LAotICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7Ci0KLSAgICBnX29iamVjdF9j
bGFzc19pbnN0YWxsX3Byb3BlcnR5KAotICAgICAgICBnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBS
T1BfT1JJR0lOLAotICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nKAotICAgICAgICAgICAgIm9y
aWdpbiIsCi0gICAgICAgICAgICAiTG9jYXRpb246b3JpZ2luIiwKLSAgICAgICAgICAgICJyZWFk
LW9ubHkgZ2NoYXIqIExvY2F0aW9uOm9yaWdpbiIsCi0gICAgICAgICAgICAiIiwKLSAgICAgICAg
ICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSkpOwotCi19Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdF9k
b21fbG9jYXRpb25faW5pdChXZWJLaXRET01Mb2NhdGlvbiogcmVxdWVzdCkKLXsKLSAgICBXZWJL
aXRET01Mb2NhdGlvblByaXZhdGUqIHByaXYgPSBXRUJLSVRfRE9NX0xPQ0FUSU9OX0dFVF9QUklW
QVRFKHJlcXVlc3QpOwotICAgIG5ldyAocHJpdikgV2ViS2l0RE9NTG9jYXRpb25Qcml2YXRlKCk7
Ci19Ci0KLWdjaGFyKiB3ZWJraXRfZG9tX2xvY2F0aW9uX2dldF9ocmVmKFdlYktpdERPTUxvY2F0
aW9uKiBzZWxmKQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsK
LSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX0xPQ0FUSU9OKHNlbGYpLCAw
KTsKLSAgICBXZWJDb3JlOjpMb2NhdGlvbiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAg
ICBnY2hhciogcmVzdWx0ID0gY29udmVydFRvVVRGOFN0cmluZyhpdGVtLT5ocmVmKCkpOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci0KLWdjaGFyKiB3ZWJraXRfZG9tX2xvY2F0aW9uX2dldF9wcm90
b2NvbChXZWJLaXRET01Mb2NhdGlvbiogc2VsZikKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJl
YWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9J
U19MT0NBVElPTihzZWxmKSwgMCk7Ci0gICAgV2ViQ29yZTo6TG9jYXRpb24qIGl0ZW0gPSBXZWJL
aXQ6OmNvcmUoc2VsZik7Ci0gICAgZ2NoYXIqIHJlc3VsdCA9IGNvbnZlcnRUb1VURjhTdHJpbmco
aXRlbS0+cHJvdG9jb2woKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotZ2NoYXIqIHdlYmtp
dF9kb21fbG9jYXRpb25fZ2V0X2hvc3QoV2ViS2l0RE9NTG9jYXRpb24qIHNlbGYpCi17Ci0gICAg
V2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9p
Zl9mYWlsKFdFQktJVF9ET01fSVNfTE9DQVRJT04oc2VsZiksIDApOwotICAgIFdlYkNvcmU6Okxv
Y2F0aW9uKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdjaGFyKiByZXN1bHQgPSBj
b252ZXJ0VG9VVEY4U3RyaW5nKGl0ZW0tPmhvc3QoKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LQotZ2NoYXIqIHdlYmtpdF9kb21fbG9jYXRpb25fZ2V0X2hvc3RuYW1lKFdlYktpdERPTUxvY2F0
aW9uKiBzZWxmKQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsK
LSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX0xPQ0FUSU9OKHNlbGYpLCAw
KTsKLSAgICBXZWJDb3JlOjpMb2NhdGlvbiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAg
ICBnY2hhciogcmVzdWx0ID0gY29udmVydFRvVVRGOFN0cmluZyhpdGVtLT5ob3N0bmFtZSgpKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1nY2hhciogd2Via2l0X2RvbV9sb2NhdGlvbl9nZXRf
cG9ydChXZWJLaXRET01Mb2NhdGlvbiogc2VsZikKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJl
YWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9J
U19MT0NBVElPTihzZWxmKSwgMCk7Ci0gICAgV2ViQ29yZTo6TG9jYXRpb24qIGl0ZW0gPSBXZWJL
aXQ6OmNvcmUoc2VsZik7Ci0gICAgZ2NoYXIqIHJlc3VsdCA9IGNvbnZlcnRUb1VURjhTdHJpbmco
aXRlbS0+cG9ydCgpKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1nY2hhciogd2Via2l0X2Rv
bV9sb2NhdGlvbl9nZXRfcGF0aG5hbWUoV2ViS2l0RE9NTG9jYXRpb24qIHNlbGYpCi17Ci0gICAg
V2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9p
Zl9mYWlsKFdFQktJVF9ET01fSVNfTE9DQVRJT04oc2VsZiksIDApOwotICAgIFdlYkNvcmU6Okxv
Y2F0aW9uKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdjaGFyKiByZXN1bHQgPSBj
b252ZXJ0VG9VVEY4U3RyaW5nKGl0ZW0tPnBhdGhuYW1lKCkpOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci0KLWdjaGFyKiB3ZWJraXRfZG9tX2xvY2F0aW9uX2dldF9zZWFyY2goV2ViS2l0RE9NTG9j
YXRpb24qIHNlbGYpCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRl
OwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfTE9DQVRJT04oc2VsZiks
IDApOwotICAgIFdlYkNvcmU6OkxvY2F0aW9uKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwot
ICAgIGdjaGFyKiByZXN1bHQgPSBjb252ZXJ0VG9VVEY4U3RyaW5nKGl0ZW0tPnNlYXJjaCgpKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1nY2hhciogd2Via2l0X2RvbV9sb2NhdGlvbl9nZXRf
aGFzaChXZWJLaXRET01Mb2NhdGlvbiogc2VsZikKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJl
YWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9J
U19MT0NBVElPTihzZWxmKSwgMCk7Ci0gICAgV2ViQ29yZTo6TG9jYXRpb24qIGl0ZW0gPSBXZWJL
aXQ6OmNvcmUoc2VsZik7Ci0gICAgZ2NoYXIqIHJlc3VsdCA9IGNvbnZlcnRUb1VURjhTdHJpbmco
aXRlbS0+aGFzaCgpKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1nY2hhciogd2Via2l0X2Rv
bV9sb2NhdGlvbl9nZXRfb3JpZ2luKFdlYktpdERPTUxvY2F0aW9uKiBzZWxmKQotewotICAgIFdl
YkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZf
ZmFpbChXRUJLSVRfRE9NX0lTX0xPQ0FUSU9OKHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpMb2Nh
dGlvbiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBnY2hhciogcmVzdWx0ID0gY29u
dmVydFRvVVRGOFN0cmluZyhpdGVtLT5vcmlnaW4oKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ3RrL0RPTS9XZWJLaXRET01Mb2NhdGlvbi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01Mb2NhdGlvbi5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMzYzYjc1Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NTG9jYXRp
b24uaAorKysgL2Rldi9udWxsCkBAIC0xLDE1MiArMCwwIEBACi0vKgotICogIFRoaXMgZmlsZSBp
cyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAqICBUaGlzIGZpbGUg
aGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZ
IQotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICog
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KLSAqLwotCi0jaWZuZGVmIFdlYktpdERPTUxvY2F0aW9uX2gKLSNkZWZpbmUgV2ViS2l0
RE9NTG9jYXRpb25faAotCi0jaWZkZWYgV0VCS0lUX0RPTV9VU0VfVU5TVEFCTEVfQVBJCi0KLSNp
bmNsdWRlIDxnbGliLW9iamVjdC5oPgotI2luY2x1ZGUgPHdlYmtpdGRvbS9XZWJLaXRET01PYmpl
Y3QuaD4KLSNpbmNsdWRlIDx3ZWJraXRkb20vd2Via2l0ZG9tZGVmaW5lcy11bnN0YWJsZS5oPgot
Ci1HX0JFR0lOX0RFQ0xTCi0KLSNkZWZpbmUgV0VCS0lUX0RPTV9UWVBFX0xPQ0FUSU9OICAgICAg
ICAgICAgKHdlYmtpdF9kb21fbG9jYXRpb25fZ2V0X3R5cGUoKSkKLSNkZWZpbmUgV0VCS0lUX0RP
TV9MT0NBVElPTihvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChv
YmopLCBXRUJLSVRfRE9NX1RZUEVfTE9DQVRJT04sIFdlYktpdERPTUxvY2F0aW9uKSkKLSNkZWZp
bmUgV0VCS0lUX0RPTV9MT0NBVElPTl9DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFT
U19DQVNUKChrbGFzcyksICBXRUJLSVRfRE9NX1RZUEVfTE9DQVRJT04sIFdlYktpdERPTUxvY2F0
aW9uQ2xhc3MpCi0jZGVmaW5lIFdFQktJVF9ET01fSVNfTE9DQVRJT04ob2JqKSAgICAgICAgIChH
X1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX0RPTV9UWVBFX0xPQ0FUSU9O
KSkKLSNkZWZpbmUgV0VCS0lUX0RPTV9JU19MT0NBVElPTl9DTEFTUyhrbGFzcykgKEdfVFlQRV9D
SEVDS19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfRE9NX1RZUEVfTE9DQVRJT04pKQotI2Rl
ZmluZSBXRUJLSVRfRE9NX0xPQ0FUSU9OX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNF
X0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9ET01fVFlQRV9MT0NBVElPTiwgV2ViS2l0RE9NTG9j
YXRpb25DbGFzcykpCi0KLXN0cnVjdCBfV2ViS2l0RE9NTG9jYXRpb24gewotICAgIFdlYktpdERP
TU9iamVjdCBwYXJlbnRfaW5zdGFuY2U7Ci19OwotCi1zdHJ1Y3QgX1dlYktpdERPTUxvY2F0aW9u
Q2xhc3MgewotICAgIFdlYktpdERPTU9iamVjdENsYXNzIHBhcmVudF9jbGFzczsKLX07Ci0KLVdF
QktJVF9BUEkgR1R5cGUKLXdlYmtpdF9kb21fbG9jYXRpb25fZ2V0X3R5cGUodm9pZCk7Ci0KLS8q
KgotICogd2Via2l0X2RvbV9sb2NhdGlvbl9nZXRfaHJlZjoKLSAqIEBzZWxmOiBBICNXZWJLaXRE
T01Mb2NhdGlvbgotICoKLSAqIFJldHVybnM6IEEgI2djaGFyCi0gKgotICogU3RhYmlsaXR5OiBV
bnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIGdjaGFyKgotd2Via2l0X2RvbV9sb2NhdGlvbl9nZXRf
aHJlZihXZWJLaXRET01Mb2NhdGlvbiogc2VsZik7Ci0KLS8qKgotICogd2Via2l0X2RvbV9sb2Nh
dGlvbl9nZXRfcHJvdG9jb2w6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NTG9jYXRpb24KLSAqCi0g
KiBSZXR1cm5zOiBBICNnY2hhcgotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VC
S0lUX0FQSSBnY2hhcioKLXdlYmtpdF9kb21fbG9jYXRpb25fZ2V0X3Byb3RvY29sKFdlYktpdERP
TUxvY2F0aW9uKiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2xvY2F0aW9uX2dldF9ob3N0
OgotICogQHNlbGY6IEEgI1dlYktpdERPTUxvY2F0aW9uCi0gKgotICogUmV0dXJuczogQSAjZ2No
YXIKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgZ2NoYXIqCi13
ZWJraXRfZG9tX2xvY2F0aW9uX2dldF9ob3N0KFdlYktpdERPTUxvY2F0aW9uKiBzZWxmKTsKLQot
LyoqCi0gKiB3ZWJraXRfZG9tX2xvY2F0aW9uX2dldF9ob3N0bmFtZToKLSAqIEBzZWxmOiBBICNX
ZWJLaXRET01Mb2NhdGlvbgotICoKLSAqIFJldHVybnM6IEEgI2djaGFyCi0gKgotICogU3RhYmls
aXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIGdjaGFyKgotd2Via2l0X2RvbV9sb2NhdGlv
bl9nZXRfaG9zdG5hbWUoV2ViS2l0RE9NTG9jYXRpb24qIHNlbGYpOwotCi0vKioKLSAqIHdlYmtp
dF9kb21fbG9jYXRpb25fZ2V0X3BvcnQ6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NTG9jYXRpb24K
LSAqCi0gKiBSZXR1cm5zOiBBICNnY2hhcgotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoq
LwotV0VCS0lUX0FQSSBnY2hhcioKLXdlYmtpdF9kb21fbG9jYXRpb25fZ2V0X3BvcnQoV2ViS2l0
RE9NTG9jYXRpb24qIHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9kb21fbG9jYXRpb25fZ2V0X3Bh
dGhuYW1lOgotICogQHNlbGY6IEEgI1dlYktpdERPTUxvY2F0aW9uCi0gKgotICogUmV0dXJuczog
QSAjZ2NoYXIKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgZ2No
YXIqCi13ZWJraXRfZG9tX2xvY2F0aW9uX2dldF9wYXRobmFtZShXZWJLaXRET01Mb2NhdGlvbiog
c2VsZik7Ci0KLS8qKgotICogd2Via2l0X2RvbV9sb2NhdGlvbl9nZXRfc2VhcmNoOgotICogQHNl
bGY6IEEgI1dlYktpdERPTUxvY2F0aW9uCi0gKgotICogUmV0dXJuczogQSAjZ2NoYXIKLSAqCi0g
KiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgZ2NoYXIqCi13ZWJraXRfZG9t
X2xvY2F0aW9uX2dldF9zZWFyY2goV2ViS2l0RE9NTG9jYXRpb24qIHNlbGYpOwotCi0vKioKLSAq
IHdlYmtpdF9kb21fbG9jYXRpb25fZ2V0X2hhc2g6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NTG9j
YXRpb24KLSAqCi0gKiBSZXR1cm5zOiBBICNnY2hhcgotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFi
bGUKLSoqLwotV0VCS0lUX0FQSSBnY2hhcioKLXdlYmtpdF9kb21fbG9jYXRpb25fZ2V0X2hhc2go
V2ViS2l0RE9NTG9jYXRpb24qIHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9kb21fbG9jYXRpb25f
Z2V0X29yaWdpbjoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01Mb2NhdGlvbgotICoKLSAqIFJldHVy
bnM6IEEgI2djaGFyCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJ
IGdjaGFyKgotd2Via2l0X2RvbV9sb2NhdGlvbl9nZXRfb3JpZ2luKFdlYktpdERPTUxvY2F0aW9u
KiBzZWxmKTsKLQotR19FTkRfREVDTFMKLQotI2VuZGlmIC8qIFdFQktJVF9ET01fVVNFX1VOU1RB
QkxFX0FQSSAqLwotI2VuZGlmIC8qIFdlYktpdERPTUxvY2F0aW9uX2ggKi8KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2Vi
S2l0RE9NTG9jYXRpb25Qcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUxvY2F0aW9uUHJpdmF0ZS5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOTg3ZDU3Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NTG9jYXRp
b25Qcml2YXRlLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi0vKgotICogIFRoaXMg
ZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAqICBUaGlz
IGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1Qg
TU9ESUZZIQotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgot
ICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQotICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KLSAqLwotCi0jaWZuZGVmIFdlYktpdERPTUxvY2F0aW9uUHJpdmF0ZV9oCi0j
ZGVmaW5lIFdlYktpdERPTUxvY2F0aW9uUHJpdmF0ZV9oCi0KLSNpbmNsdWRlIDxXZWJDb3JlL0xv
Y2F0aW9uLmg+Ci0jaW5jbHVkZSA8d2Via2l0ZG9tL1dlYktpdERPTUxvY2F0aW9uLmg+Ci0KLW5h
bWVzcGFjZSBXZWJLaXQgewotV2ViS2l0RE9NTG9jYXRpb24qIHdyYXBMb2NhdGlvbihXZWJDb3Jl
OjpMb2NhdGlvbiopOwotV2ViS2l0RE9NTG9jYXRpb24qIGtpdChXZWJDb3JlOjpMb2NhdGlvbiop
OwotV2ViQ29yZTo6TG9jYXRpb24qIGNvcmUoV2ViS2l0RE9NTG9jYXRpb24qKTsKLX0gLy8gbmFt
ZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLyogV2ViS2l0RE9NTG9jYXRpb25Qcml2YXRlX2ggKi8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2d0ay9ET00vV2ViS2l0RE9NTWVkaWFDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NTWVkaWFDb250cm9s
bGVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWQ3NjBiOC4uMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9N
L1dlYktpdERPTU1lZGlhQ29udHJvbGxlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NTQgKzAs
MCBAQAotLyoKLSAqICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNl
IHByb2plY3QuCi0gKiAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1i
aW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiAgTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
Ci0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0g
KiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgot
ICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0g
KiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIldlYktpdERPTU1lZGlhQ29udHJvbGxlci5oIgotCi0jaW5jbHVkZSA8V2Vi
Q29yZS9DU1NJbXBvcnRSdWxlLmg+Ci0jaW5jbHVkZSAiRE9NT2JqZWN0Q2FjaGUuaCIKLSNpbmNs
dWRlIDxXZWJDb3JlL0RvY3VtZW50Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9FeGNlcHRpb25Db2Rl
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9FeGNlcHRpb25Db2RlRGVzY3JpcHRpb24uaD4KLSNpbmNs
dWRlICJHT2JqZWN0RXZlbnRMaXN0ZW5lci5oIgotI2luY2x1ZGUgPFdlYkNvcmUvSlNNYWluVGhy
ZWFkRXhlY1N0YXRlLmg+Ci0jaW5jbHVkZSAiV2ViS2l0RE9NRXZlbnRQcml2YXRlLmgiCi0jaW5j
bHVkZSAiV2ViS2l0RE9NRXZlbnRUYXJnZXQuaCIKLSNpbmNsdWRlICJXZWJLaXRET01NZWRpYUNv
bnRyb2xsZXJQcml2YXRlLmgiCi0jaW5jbHVkZSAiV2ViS2l0RE9NUHJpdmF0ZS5oIgotI2luY2x1
ZGUgIldlYktpdERPTVRpbWVSYW5nZXNQcml2YXRlLmgiCi0jaW5jbHVkZSAiQ29udmVydFRvVVRG
OFN0cmluZy5oIgotI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+Ci0KLSNkZWZpbmUgV0VCS0lUX0RPTV9NRURJQV9DT05UUk9MTEVSX0dFVF9QUklWQVRFKG9i
aikgR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKG9iaiwgV0VCS0lUX0RPTV9UWVBFX01FRElB
X0NPTlRST0xMRVIsIFdlYktpdERPTU1lZGlhQ29udHJvbGxlclByaXZhdGUpCi0KLXR5cGVkZWYg
c3RydWN0IF9XZWJLaXRET01NZWRpYUNvbnRyb2xsZXJQcml2YXRlIHsKLSNpZiBFTkFCTEUoVklE
RU8pCi0gICAgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhQ29udHJvbGxlcj4gY29yZU9iamVjdDsKLSNl
bmRpZiAvLyBFTkFCTEUoVklERU8pCi19IFdlYktpdERPTU1lZGlhQ29udHJvbGxlclByaXZhdGU7
Ci0KLSNpZiBFTkFCTEUoVklERU8pCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1XZWJLaXRET01N
ZWRpYUNvbnRyb2xsZXIqIGtpdChXZWJDb3JlOjpNZWRpYUNvbnRyb2xsZXIqIG9iaikKLXsKLSAg
ICBpZiAoIW9iaikKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBpZiAoZ3BvaW50ZXIgcmV0ID0g
RE9NT2JqZWN0Q2FjaGU6OmdldChvYmopKQotICAgICAgICByZXR1cm4gV0VCS0lUX0RPTV9NRURJ
QV9DT05UUk9MTEVSKHJldCk7Ci0KLSAgICByZXR1cm4gd3JhcE1lZGlhQ29udHJvbGxlcihvYmop
OwotfQotCi1XZWJDb3JlOjpNZWRpYUNvbnRyb2xsZXIqIGNvcmUoV2ViS2l0RE9NTWVkaWFDb250
cm9sbGVyKiByZXF1ZXN0KQotewotICAgIHJldHVybiByZXF1ZXN0ID8gc3RhdGljX2Nhc3Q8V2Vi
Q29yZTo6TWVkaWFDb250cm9sbGVyKj4oV0VCS0lUX0RPTV9PQkpFQ1QocmVxdWVzdCktPmNvcmVP
YmplY3QpIDogMDsKLX0KLQotV2ViS2l0RE9NTWVkaWFDb250cm9sbGVyKiB3cmFwTWVkaWFDb250
cm9sbGVyKFdlYkNvcmU6Ok1lZGlhQ29udHJvbGxlciogY29yZU9iamVjdCkKLXsKLSAgICBBU1NF
UlQoY29yZU9iamVjdCk7Ci0gICAgcmV0dXJuIFdFQktJVF9ET01fTUVESUFfQ09OVFJPTExFUihn
X29iamVjdF9uZXcoV0VCS0lUX0RPTV9UWVBFX01FRElBX0NPTlRST0xMRVIsICJjb3JlLW9iamVj
dCIsIGNvcmVPYmplY3QsIG51bGxwdHIpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0K
LSNlbmRpZiAvLyBFTkFCTEUoVklERU8pCi0KLXN0YXRpYyBnYm9vbGVhbiB3ZWJraXRfZG9tX21l
ZGlhX2NvbnRyb2xsZXJfZGlzcGF0Y2hfZXZlbnQoV2ViS2l0RE9NRXZlbnRUYXJnZXQqIHRhcmdl
dCwgV2ViS2l0RE9NRXZlbnQqIGV2ZW50LCBHRXJyb3IqKiBlcnJvcikKLXsKLSNpZiBFTkFCTEUo
VklERU8pCi0gICAgV2ViQ29yZTo6RXZlbnQqIGNvcmVFdmVudCA9IFdlYktpdDo6Y29yZShldmVu
dCk7Ci0gICAgaWYgKCFjb3JlRXZlbnQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBXZWJD
b3JlOjpNZWRpYUNvbnRyb2xsZXIqIGNvcmVUYXJnZXQgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpN
ZWRpYUNvbnRyb2xsZXIqPihXRUJLSVRfRE9NX09CSkVDVCh0YXJnZXQpLT5jb3JlT2JqZWN0KTsK
LQotICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGdib29sZWFuIHJlc3Vs
dCA9IGNvcmVUYXJnZXQtPmRpc3BhdGNoRXZlbnRGb3JCaW5kaW5ncygqY29yZUV2ZW50LCBlYyk7
Ci0gICAgaWYgKGVjKSB7Ci0gICAgICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlv
biBkZXNjcmlwdGlvbihlYyk7Ci0gICAgICAgIGdfc2V0X2Vycm9yX2xpdGVyYWwoZXJyb3IsIGdf
cXVhcmtfZnJvbV9zdHJpbmcoIldFQktJVF9ET00iKSwgZGVzY3JpcHRpb24uY29kZSwgZGVzY3Jp
cHRpb24ubmFtZSk7Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7Ci0jZWxzZQotICAgIFVOVVNF
RF9QQVJBTSh0YXJnZXQpOwotICAgIFVOVVNFRF9QQVJBTShldmVudCk7Ci0gICAgVU5VU0VEX1BB
UkFNKGVycm9yKTsKLSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJWaWRlbyIp
Ci0gICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmIC8vIEVOQUJMRShWSURFTykKLX0KLQotc3RhdGlj
IGdib29sZWFuIHdlYmtpdF9kb21fbWVkaWFfY29udHJvbGxlcl9hZGRfZXZlbnRfbGlzdGVuZXIo
V2ViS2l0RE9NRXZlbnRUYXJnZXQqIHRhcmdldCwgY29uc3QgY2hhciogZXZlbnROYW1lLCBHQ2xv
c3VyZSogaGFuZGxlciwgZ2Jvb2xlYW4gdXNlQ2FwdHVyZSkKLXsKLSNpZiBFTkFCTEUoVklERU8p
Ci0gICAgV2ViQ29yZTo6TWVkaWFDb250cm9sbGVyKiBjb3JlVGFyZ2V0ID0gc3RhdGljX2Nhc3Q8
V2ViQ29yZTo6TWVkaWFDb250cm9sbGVyKj4oV0VCS0lUX0RPTV9PQkpFQ1QodGFyZ2V0KS0+Y29y
ZU9iamVjdCk7Ci0gICAgcmV0dXJuIFdlYktpdDo6R09iamVjdEV2ZW50TGlzdGVuZXI6OmFkZEV2
ZW50TGlzdGVuZXIoR19PQkpFQ1QodGFyZ2V0KSwgY29yZVRhcmdldCwgZXZlbnROYW1lLCBoYW5k
bGVyLCB1c2VDYXB0dXJlKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7Ci0gICAg
VU5VU0VEX1BBUkFNKGV2ZW50TmFtZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGhhbmRsZXIpOwotICAg
IFVOVVNFRF9QQVJBTSh1c2VDYXB0dXJlKTsKLSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9Q
UkVTRU5UKCJWaWRlbyIpCi0gICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmIC8vIEVOQUJMRShWSURF
TykKLX0KLQotc3RhdGljIGdib29sZWFuIHdlYmtpdF9kb21fbWVkaWFfY29udHJvbGxlcl9yZW1v
dmVfZXZlbnRfbGlzdGVuZXIoV2ViS2l0RE9NRXZlbnRUYXJnZXQqIHRhcmdldCwgY29uc3QgY2hh
ciogZXZlbnROYW1lLCBHQ2xvc3VyZSogaGFuZGxlciwgZ2Jvb2xlYW4gdXNlQ2FwdHVyZSkKLXsK
LSNpZiBFTkFCTEUoVklERU8pCi0gICAgV2ViQ29yZTo6TWVkaWFDb250cm9sbGVyKiBjb3JlVGFy
Z2V0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6TWVkaWFDb250cm9sbGVyKj4oV0VCS0lUX0RPTV9P
QkpFQ1QodGFyZ2V0KS0+Y29yZU9iamVjdCk7Ci0gICAgcmV0dXJuIFdlYktpdDo6R09iamVjdEV2
ZW50TGlzdGVuZXI6OnJlbW92ZUV2ZW50TGlzdGVuZXIoR19PQkpFQ1QodGFyZ2V0KSwgY29yZVRh
cmdldCwgZXZlbnROYW1lLCBoYW5kbGVyLCB1c2VDYXB0dXJlKTsKLSNlbHNlCi0gICAgVU5VU0VE
X1BBUkFNKHRhcmdldCk7Ci0gICAgVU5VU0VEX1BBUkFNKGV2ZW50TmFtZSk7Ci0gICAgVU5VU0VE
X1BBUkFNKGhhbmRsZXIpOwotICAgIFVOVVNFRF9QQVJBTSh1c2VDYXB0dXJlKTsKLSAgICBXRUJL
SVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJWaWRlbyIpCi0gICAgcmV0dXJuIGZhbHNlOwot
I2VuZGlmIC8vIEVOQUJMRShWSURFTykKLX0KLQotc3RhdGljIHZvaWQgd2Via2l0X2RvbV9ldmVu
dF90YXJnZXRfaW5pdChXZWJLaXRET01FdmVudFRhcmdldElmYWNlKiBpZmFjZSkKLXsKLSAgICBp
ZmFjZS0+ZGlzcGF0Y2hfZXZlbnQgPSB3ZWJraXRfZG9tX21lZGlhX2NvbnRyb2xsZXJfZGlzcGF0
Y2hfZXZlbnQ7Ci0gICAgaWZhY2UtPmFkZF9ldmVudF9saXN0ZW5lciA9IHdlYmtpdF9kb21fbWVk
aWFfY29udHJvbGxlcl9hZGRfZXZlbnRfbGlzdGVuZXI7Ci0gICAgaWZhY2UtPnJlbW92ZV9ldmVu
dF9saXN0ZW5lciA9IHdlYmtpdF9kb21fbWVkaWFfY29udHJvbGxlcl9yZW1vdmVfZXZlbnRfbGlz
dGVuZXI7Ci19Ci0KLUdfREVGSU5FX1RZUEVfV0lUSF9DT0RFKFdlYktpdERPTU1lZGlhQ29udHJv
bGxlciwgd2Via2l0X2RvbV9tZWRpYV9jb250cm9sbGVyLCBXRUJLSVRfRE9NX1RZUEVfT0JKRUNU
LCBHX0lNUExFTUVOVF9JTlRFUkZBQ0UoV0VCS0lUX0RPTV9UWVBFX0VWRU5UX1RBUkdFVCwgd2Vi
a2l0X2RvbV9ldmVudF90YXJnZXRfaW5pdCkpCi0KLWVudW0gewotICAgIFBST1BfMCwKLSAgICBQ
Uk9QX0JVRkZFUkVELAotICAgIFBST1BfU0VFS0FCTEUsCi0gICAgUFJPUF9EVVJBVElPTiwKLSAg
ICBQUk9QX0NVUlJFTlRfVElNRSwKLSAgICBQUk9QX1BBVVNFRCwKLSAgICBQUk9QX1BMQVlFRCwK
LSAgICBQUk9QX1BMQVlCQUNLX1NUQVRFLAotICAgIFBST1BfREVGQVVMVF9QTEFZQkFDS19SQVRF
LAotICAgIFBST1BfUExBWUJBQ0tfUkFURSwKLSAgICBQUk9QX1ZPTFVNRSwKLSAgICBQUk9QX01V
VEVELAotfTsKLQotc3RhdGljIHZvaWQgd2Via2l0X2RvbV9tZWRpYV9jb250cm9sbGVyX2ZpbmFs
aXplKEdPYmplY3QqIG9iamVjdCkKLXsKLSAgICBXZWJLaXRET01NZWRpYUNvbnRyb2xsZXJQcml2
YXRlKiBwcml2ID0gV0VCS0lUX0RPTV9NRURJQV9DT05UUk9MTEVSX0dFVF9QUklWQVRFKG9iamVj
dCk7Ci0jaWYgRU5BQkxFKFZJREVPKQotICAgIFdlYktpdDo6RE9NT2JqZWN0Q2FjaGU6OmZvcmdl
dChwcml2LT5jb3JlT2JqZWN0LmdldCgpKTsKLSNlbmRpZiAvLyBFTkFCTEUoVklERU8pCi0gICAg
cHJpdi0+fldlYktpdERPTU1lZGlhQ29udHJvbGxlclByaXZhdGUoKTsKLSAgICBHX09CSkVDVF9D
TEFTUyh3ZWJraXRfZG9tX21lZGlhX2NvbnRyb2xsZXJfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUo
b2JqZWN0KTsKLX0KLQotc3RhdGljIHZvaWQgd2Via2l0X2RvbV9tZWRpYV9jb250cm9sbGVyX3Nl
dF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BlcnR5SWQsIGNvbnN0IEdWYWx1
ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKQotewotICAgIFdlYktpdERPTU1lZGlhQ29udHJv
bGxlciogc2VsZiA9IFdFQktJVF9ET01fTUVESUFfQ09OVFJPTExFUihvYmplY3QpOwotCi0gICAg
c3dpdGNoIChwcm9wZXJ0eUlkKSB7Ci0gICAgY2FzZSBQUk9QX0NVUlJFTlRfVElNRToKLSAgICAg
ICAgd2Via2l0X2RvbV9tZWRpYV9jb250cm9sbGVyX3NldF9jdXJyZW50X3RpbWUoc2VsZiwgZ192
YWx1ZV9nZXRfZG91YmxlKHZhbHVlKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9E
RUZBVUxUX1BMQVlCQUNLX1JBVEU6Ci0gICAgICAgIHdlYmtpdF9kb21fbWVkaWFfY29udHJvbGxl
cl9zZXRfZGVmYXVsdF9wbGF5YmFja19yYXRlKHNlbGYsIGdfdmFsdWVfZ2V0X2RvdWJsZSh2YWx1
ZSkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfUExBWUJBQ0tfUkFURToKLSAgICAg
ICAgd2Via2l0X2RvbV9tZWRpYV9jb250cm9sbGVyX3NldF9wbGF5YmFja19yYXRlKHNlbGYsIGdf
dmFsdWVfZ2V0X2RvdWJsZSh2YWx1ZSkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1Bf
Vk9MVU1FOgotICAgICAgICB3ZWJraXRfZG9tX21lZGlhX2NvbnRyb2xsZXJfc2V0X3ZvbHVtZShz
ZWxmLCBnX3ZhbHVlX2dldF9kb3VibGUodmFsdWUpLCBudWxscHRyKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBQUk9QX01VVEVEOgotICAgICAgICB3ZWJraXRfZG9tX21lZGlhX2NvbnRyb2xs
ZXJfc2V0X211dGVkKHNlbGYsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BF
UlRZX0lEKG9iamVjdCwgcHJvcGVydHlJZCwgcHNwZWMpOwotICAgICAgICBicmVhazsKLSAgICB9
Ci19Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdF9kb21fbWVkaWFfY29udHJvbGxlcl9nZXRfcHJvcGVy
dHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wZXJ0eUlkLCBHVmFsdWUqIHZhbHVlLCBHUGFy
YW1TcGVjKiBwc3BlYykKLXsKLSAgICBXZWJLaXRET01NZWRpYUNvbnRyb2xsZXIqIHNlbGYgPSBX
RUJLSVRfRE9NX01FRElBX0NPTlRST0xMRVIob2JqZWN0KTsKLQotICAgIHN3aXRjaCAocHJvcGVy
dHlJZCkgewotICAgIGNhc2UgUFJPUF9CVUZGRVJFRDoKLSAgICAgICAgZ192YWx1ZV9zZXRfb2Jq
ZWN0KHZhbHVlLCB3ZWJraXRfZG9tX21lZGlhX2NvbnRyb2xsZXJfZ2V0X2J1ZmZlcmVkKHNlbGYp
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX1NFRUtBQkxFOgotICAgICAgICBnX3Zh
bHVlX3NldF9vYmplY3QodmFsdWUsIHdlYmtpdF9kb21fbWVkaWFfY29udHJvbGxlcl9nZXRfc2Vl
a2FibGUoc2VsZikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfRFVSQVRJT046Ci0g
ICAgICAgIGdfdmFsdWVfc2V0X2RvdWJsZSh2YWx1ZSwgd2Via2l0X2RvbV9tZWRpYV9jb250cm9s
bGVyX2dldF9kdXJhdGlvbihzZWxmKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9D
VVJSRU5UX1RJTUU6Ci0gICAgICAgIGdfdmFsdWVfc2V0X2RvdWJsZSh2YWx1ZSwgd2Via2l0X2Rv
bV9tZWRpYV9jb250cm9sbGVyX2dldF9jdXJyZW50X3RpbWUoc2VsZikpOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIFBST1BfUEFVU0VEOgotICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZh
bHVlLCB3ZWJraXRfZG9tX21lZGlhX2NvbnRyb2xsZXJfZ2V0X3BhdXNlZChzZWxmKSk7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9QTEFZRUQ6Ci0gICAgICAgIGdfdmFsdWVfc2V0X29i
amVjdCh2YWx1ZSwgd2Via2l0X2RvbV9tZWRpYV9jb250cm9sbGVyX2dldF9wbGF5ZWQoc2VsZikp
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfUExBWUJBQ0tfU1RBVEU6Ci0gICAgICAg
IGdfdmFsdWVfdGFrZV9zdHJpbmcodmFsdWUsIHdlYmtpdF9kb21fbWVkaWFfY29udHJvbGxlcl9n
ZXRfcGxheWJhY2tfc3RhdGUoc2VsZikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1Bf
REVGQVVMVF9QTEFZQkFDS19SQVRFOgotICAgICAgICBnX3ZhbHVlX3NldF9kb3VibGUodmFsdWUs
IHdlYmtpdF9kb21fbWVkaWFfY29udHJvbGxlcl9nZXRfZGVmYXVsdF9wbGF5YmFja19yYXRlKHNl
bGYpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX1BMQVlCQUNLX1JBVEU6Ci0gICAg
ICAgIGdfdmFsdWVfc2V0X2RvdWJsZSh2YWx1ZSwgd2Via2l0X2RvbV9tZWRpYV9jb250cm9sbGVy
X2dldF9wbGF5YmFja19yYXRlKHNlbGYpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9Q
X1ZPTFVNRToKLSAgICAgICAgZ192YWx1ZV9zZXRfZG91YmxlKHZhbHVlLCB3ZWJraXRfZG9tX21l
ZGlhX2NvbnRyb2xsZXJfZ2V0X3ZvbHVtZShzZWxmKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgUFJPUF9NVVRFRDoKLSAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0
X2RvbV9tZWRpYV9jb250cm9sbGVyX2dldF9tdXRlZChzZWxmKSk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGRlZmF1bHQ6Ci0gICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChv
YmplY3QsIHByb3BlcnR5SWQsIHBzcGVjKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotfQotCi1z
dGF0aWMgR09iamVjdCogd2Via2l0X2RvbV9tZWRpYV9jb250cm9sbGVyX2NvbnN0cnVjdG9yKEdU
eXBlIHR5cGUsIGd1aW50IGNvbnN0cnVjdFByb3BlcnRpZXNDb3VudCwgR09iamVjdENvbnN0cnVj
dFBhcmFtKiBjb25zdHJ1Y3RQcm9wZXJ0aWVzKQotewotICAgIEdPYmplY3QqIG9iamVjdCA9IEdf
T0JKRUNUX0NMQVNTKHdlYmtpdF9kb21fbWVkaWFfY29udHJvbGxlcl9wYXJlbnRfY2xhc3MpLT5j
b25zdHJ1Y3Rvcih0eXBlLCBjb25zdHJ1Y3RQcm9wZXJ0aWVzQ291bnQsIGNvbnN0cnVjdFByb3Bl
cnRpZXMpOwotI2lmIEVOQUJMRShWSURFTykKLSAgICBXZWJLaXRET01NZWRpYUNvbnRyb2xsZXJQ
cml2YXRlKiBwcml2ID0gV0VCS0lUX0RPTV9NRURJQV9DT05UUk9MTEVSX0dFVF9QUklWQVRFKG9i
amVjdCk7Ci0gICAgcHJpdi0+Y29yZU9iamVjdCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6Ok1lZGlh
Q29udHJvbGxlcio+KFdFQktJVF9ET01fT0JKRUNUKG9iamVjdCktPmNvcmVPYmplY3QpOwotICAg
IFdlYktpdDo6RE9NT2JqZWN0Q2FjaGU6OnB1dChwcml2LT5jb3JlT2JqZWN0LmdldCgpLCBvYmpl
Y3QpOwotI2VuZGlmIC8vIEVOQUJMRShWSURFTykKLSAgICByZXR1cm4gb2JqZWN0OwotfQotCi1z
dGF0aWMgdm9pZCB3ZWJraXRfZG9tX21lZGlhX2NvbnRyb2xsZXJfY2xhc3NfaW5pdChXZWJLaXRE
T01NZWRpYUNvbnRyb2xsZXJDbGFzcyogcmVxdWVzdENsYXNzKQotewotICAgIEdPYmplY3RDbGFz
cyogZ29iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1MocmVxdWVzdENsYXNzKTsKLSAgICBnX3R5
cGVfY2xhc3NfYWRkX3ByaXZhdGUoZ29iamVjdENsYXNzLCBzaXplb2YoV2ViS2l0RE9NTWVkaWFD
b250cm9sbGVyUHJpdmF0ZSkpOwotICAgIGdvYmplY3RDbGFzcy0+Y29uc3RydWN0b3IgPSB3ZWJr
aXRfZG9tX21lZGlhX2NvbnRyb2xsZXJfY29uc3RydWN0b3I7Ci0gICAgZ29iamVjdENsYXNzLT5m
aW5hbGl6ZSA9IHdlYmtpdF9kb21fbWVkaWFfY29udHJvbGxlcl9maW5hbGl6ZTsKLSAgICBnb2Jq
ZWN0Q2xhc3MtPnNldF9wcm9wZXJ0eSA9IHdlYmtpdF9kb21fbWVkaWFfY29udHJvbGxlcl9zZXRf
cHJvcGVydHk7Ci0gICAgZ29iamVjdENsYXNzLT5nZXRfcHJvcGVydHkgPSB3ZWJraXRfZG9tX21l
ZGlhX2NvbnRyb2xsZXJfZ2V0X3Byb3BlcnR5OwotCi0gICAgZ19vYmplY3RfY2xhc3NfaW5zdGFs
bF9wcm9wZXJ0eSgKLSAgICAgICAgZ29iamVjdENsYXNzLAotICAgICAgICBQUk9QX0JVRkZFUkVE
LAotICAgICAgICBnX3BhcmFtX3NwZWNfb2JqZWN0KAotICAgICAgICAgICAgImJ1ZmZlcmVkIiwK
LSAgICAgICAgICAgICJNZWRpYUNvbnRyb2xsZXI6YnVmZmVyZWQiLAotICAgICAgICAgICAgInJl
YWQtb25seSBXZWJLaXRET01UaW1lUmFuZ2VzKiBNZWRpYUNvbnRyb2xsZXI6YnVmZmVyZWQiLAot
ICAgICAgICAgICAgV0VCS0lUX0RPTV9UWVBFX1RJTUVfUkFOR0VTLAotICAgICAgICAgICAgV0VC
S0lUX1BBUkFNX1JFQURBQkxFKSk7Ci0KLSAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3Bl
cnR5KAotICAgICAgICBnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBST1BfU0VFS0FCTEUsCi0gICAg
ICAgIGdfcGFyYW1fc3BlY19vYmplY3QoCi0gICAgICAgICAgICAic2Vla2FibGUiLAotICAgICAg
ICAgICAgIk1lZGlhQ29udHJvbGxlcjpzZWVrYWJsZSIsCi0gICAgICAgICAgICAicmVhZC1vbmx5
IFdlYktpdERPTVRpbWVSYW5nZXMqIE1lZGlhQ29udHJvbGxlcjpzZWVrYWJsZSIsCi0gICAgICAg
ICAgICBXRUJLSVRfRE9NX1RZUEVfVElNRV9SQU5HRVMsCi0gICAgICAgICAgICBXRUJLSVRfUEFS
QU1fUkVBREFCTEUpKTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0g
ICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9EVVJBVElPTiwKLSAgICAgICAgZ19w
YXJhbV9zcGVjX2RvdWJsZSgKLSAgICAgICAgICAgICJkdXJhdGlvbiIsCi0gICAgICAgICAgICAi
TWVkaWFDb250cm9sbGVyOmR1cmF0aW9uIiwKLSAgICAgICAgICAgICJyZWFkLW9ubHkgZ2RvdWJs
ZSBNZWRpYUNvbnRyb2xsZXI6ZHVyYXRpb24iLAotICAgICAgICAgICAgLUdfTUFYRE9VQkxFLCBH
X01BWERPVUJMRSwgMCwKLSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSkpOwotCi0g
ICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAgZ29iamVjdENsYXNz
LAotICAgICAgICBQUk9QX0NVUlJFTlRfVElNRSwKLSAgICAgICAgZ19wYXJhbV9zcGVjX2RvdWJs
ZSgKLSAgICAgICAgICAgICJjdXJyZW50LXRpbWUiLAotICAgICAgICAgICAgIk1lZGlhQ29udHJv
bGxlcjpjdXJyZW50LXRpbWUiLAotICAgICAgICAgICAgInJlYWQtd3JpdGUgZ2RvdWJsZSBNZWRp
YUNvbnRyb2xsZXI6Y3VycmVudC10aW1lIiwKLSAgICAgICAgICAgIC1HX01BWERPVUJMRSwgR19N
QVhET1VCTEUsIDAsCi0gICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBRFdSSVRFKSk7Ci0KLSAg
ICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAotICAgICAgICBnb2JqZWN0Q2xhc3Ms
Ci0gICAgICAgIFBST1BfUEFVU0VELAotICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigKLSAg
ICAgICAgICAgICJwYXVzZWQiLAotICAgICAgICAgICAgIk1lZGlhQ29udHJvbGxlcjpwYXVzZWQi
LAotICAgICAgICAgICAgInJlYWQtb25seSBnYm9vbGVhbiBNZWRpYUNvbnRyb2xsZXI6cGF1c2Vk
IiwKLSAgICAgICAgICAgIEZBTFNFLAotICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxF
KSk7Ci0KLSAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAotICAgICAgICBnb2Jq
ZWN0Q2xhc3MsCi0gICAgICAgIFBST1BfUExBWUVELAotICAgICAgICBnX3BhcmFtX3NwZWNfb2Jq
ZWN0KAotICAgICAgICAgICAgInBsYXllZCIsCi0gICAgICAgICAgICAiTWVkaWFDb250cm9sbGVy
OnBsYXllZCIsCi0gICAgICAgICAgICAicmVhZC1vbmx5IFdlYktpdERPTVRpbWVSYW5nZXMqIE1l
ZGlhQ29udHJvbGxlcjpwbGF5ZWQiLAotICAgICAgICAgICAgV0VCS0lUX0RPTV9UWVBFX1RJTUVf
UkFOR0VTLAotICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7Ci0KLSAgICBnX29i
amVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAotICAgICAgICBnb2JqZWN0Q2xhc3MsCi0gICAg
ICAgIFBST1BfUExBWUJBQ0tfU1RBVEUsCi0gICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcoCi0g
ICAgICAgICAgICAicGxheWJhY2stc3RhdGUiLAotICAgICAgICAgICAgIk1lZGlhQ29udHJvbGxl
cjpwbGF5YmFjay1zdGF0ZSIsCi0gICAgICAgICAgICAicmVhZC1vbmx5IGdjaGFyKiBNZWRpYUNv
bnRyb2xsZXI6cGxheWJhY2stc3RhdGUiLAotICAgICAgICAgICAgIiIsCi0gICAgICAgICAgICBX
RUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJv
cGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9ERUZBVUxUX1BMQVlC
QUNLX1JBVEUsCi0gICAgICAgIGdfcGFyYW1fc3BlY19kb3VibGUoCi0gICAgICAgICAgICAiZGVm
YXVsdC1wbGF5YmFjay1yYXRlIiwKLSAgICAgICAgICAgICJNZWRpYUNvbnRyb2xsZXI6ZGVmYXVs
dC1wbGF5YmFjay1yYXRlIiwKLSAgICAgICAgICAgICJyZWFkLXdyaXRlIGdkb3VibGUgTWVkaWFD
b250cm9sbGVyOmRlZmF1bHQtcGxheWJhY2stcmF0ZSIsCi0gICAgICAgICAgICAtR19NQVhET1VC
TEUsIEdfTUFYRE9VQkxFLCAwLAotICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURXUklURSkp
OwotCi0gICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAgZ29iamVj
dENsYXNzLAotICAgICAgICBQUk9QX1BMQVlCQUNLX1JBVEUsCi0gICAgICAgIGdfcGFyYW1fc3Bl
Y19kb3VibGUoCi0gICAgICAgICAgICAicGxheWJhY2stcmF0ZSIsCi0gICAgICAgICAgICAiTWVk
aWFDb250cm9sbGVyOnBsYXliYWNrLXJhdGUiLAotICAgICAgICAgICAgInJlYWQtd3JpdGUgZ2Rv
dWJsZSBNZWRpYUNvbnRyb2xsZXI6cGxheWJhY2stcmF0ZSIsCi0gICAgICAgICAgICAtR19NQVhE
T1VCTEUsIEdfTUFYRE9VQkxFLCAwLAotICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURXUklU
RSkpOwotCi0gICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAgZ29i
amVjdENsYXNzLAotICAgICAgICBQUk9QX1ZPTFVNRSwKLSAgICAgICAgZ19wYXJhbV9zcGVjX2Rv
dWJsZSgKLSAgICAgICAgICAgICJ2b2x1bWUiLAotICAgICAgICAgICAgIk1lZGlhQ29udHJvbGxl
cjp2b2x1bWUiLAotICAgICAgICAgICAgInJlYWQtd3JpdGUgZ2RvdWJsZSBNZWRpYUNvbnRyb2xs
ZXI6dm9sdW1lIiwKLSAgICAgICAgICAgIC1HX01BWERPVUJMRSwgR19NQVhET1VCTEUsIDAsCi0g
ICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBRFdSSVRFKSk7Ci0KLSAgICBnX29iamVjdF9jbGFz
c19pbnN0YWxsX3Byb3BlcnR5KAotICAgICAgICBnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBST1Bf
TVVURUQsCi0gICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKAotICAgICAgICAgICAgIm11dGVk
IiwKLSAgICAgICAgICAgICJNZWRpYUNvbnRyb2xsZXI6bXV0ZWQiLAotICAgICAgICAgICAgInJl
YWQtd3JpdGUgZ2Jvb2xlYW4gTWVkaWFDb250cm9sbGVyOm11dGVkIiwKLSAgICAgICAgICAgIEZB
TFNFLAotICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURXUklURSkpOwotCi19Ci0KLXN0YXRp
YyB2b2lkIHdlYmtpdF9kb21fbWVkaWFfY29udHJvbGxlcl9pbml0KFdlYktpdERPTU1lZGlhQ29u
dHJvbGxlciogcmVxdWVzdCkKLXsKLSAgICBXZWJLaXRET01NZWRpYUNvbnRyb2xsZXJQcml2YXRl
KiBwcml2ID0gV0VCS0lUX0RPTV9NRURJQV9DT05UUk9MTEVSX0dFVF9QUklWQVRFKHJlcXVlc3Qp
OwotICAgIG5ldyAocHJpdikgV2ViS2l0RE9NTWVkaWFDb250cm9sbGVyUHJpdmF0ZSgpOwotfQot
Ci12b2lkIHdlYmtpdF9kb21fbWVkaWFfY29udHJvbGxlcl9wbGF5KFdlYktpdERPTU1lZGlhQ29u
dHJvbGxlciogc2VsZikKLXsKLSNpZiBFTkFCTEUoVklERU8pCi0gICAgV2ViQ29yZTo6SlNNYWlu
VGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9J
U19NRURJQV9DT05UUk9MTEVSKHNlbGYpKTsKLSAgICBXZWJDb3JlOjpNZWRpYUNvbnRyb2xsZXIq
IGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgaXRlbS0+cGxheSgpOwotI2Vsc2UKLSAg
ICBVTlVTRURfUEFSQU0oc2VsZik7Ci0gICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VO
VCgiVmlkZW8iKQotI2VuZGlmIC8qIEVOQUJMRShWSURFTykgKi8KLX0KLQotdm9pZCB3ZWJraXRf
ZG9tX21lZGlhX2NvbnRyb2xsZXJfcGF1c2UoV2ViS2l0RE9NTWVkaWFDb250cm9sbGVyKiBzZWxm
KQotewotI2lmIEVOQUJMRShWSURFTykKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3Rh
dGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX01FRElBX0NPTlRS
T0xMRVIoc2VsZikpOwotICAgIFdlYkNvcmU6Ok1lZGlhQ29udHJvbGxlciogaXRlbSA9IFdlYktp
dDo6Y29yZShzZWxmKTsKLSAgICBpdGVtLT5wYXVzZSgpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFS
QU0oc2VsZik7Ci0gICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiVmlkZW8iKQot
I2VuZGlmIC8qIEVOQUJMRShWSURFTykgKi8KLX0KLQotdm9pZCB3ZWJraXRfZG9tX21lZGlhX2Nv
bnRyb2xsZXJfdW5wYXVzZShXZWJLaXRET01NZWRpYUNvbnRyb2xsZXIqIHNlbGYpCi17Ci0jaWYg
RU5BQkxFKFZJREVPKQotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsK
LSAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfTUVESUFfQ09OVFJPTExFUihzZWxm
KSk7Ci0gICAgV2ViQ29yZTo6TWVkaWFDb250cm9sbGVyKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNl
bGYpOwotICAgIGl0ZW0tPnVucGF1c2UoKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHNlbGYp
OwotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIlZpZGVvIikKLSNlbmRpZiAv
KiBFTkFCTEUoVklERU8pICovCi19Ci0KLVdlYktpdERPTVRpbWVSYW5nZXMqIHdlYmtpdF9kb21f
bWVkaWFfY29udHJvbGxlcl9nZXRfYnVmZmVyZWQoV2ViS2l0RE9NTWVkaWFDb250cm9sbGVyKiBz
ZWxmKQotewotI2lmIEVOQUJMRShWSURFTykKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxs
U3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19NRURJ
QV9DT05UUk9MTEVSKHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpNZWRpYUNvbnRyb2xsZXIqIGl0
ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlRpbWVSYW5nZXM+
IGdvYmplY3RSZXN1bHQgPSBXVEY6OmdldFB0cihpdGVtLT5idWZmZXJlZCgpKTsKLSAgICByZXR1
cm4gV2ViS2l0OjpraXQoZ29iamVjdFJlc3VsdC5nZXQoKSk7Ci0jZWxzZQotICAgIFVOVVNFRF9Q
QVJBTShzZWxmKTsKLSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJWaWRlbyIp
Ci0gICAgcmV0dXJuIDA7Ci0jZW5kaWYgLyogRU5BQkxFKFZJREVPKSAqLwotfQotCi1XZWJLaXRE
T01UaW1lUmFuZ2VzKiB3ZWJraXRfZG9tX21lZGlhX2NvbnRyb2xsZXJfZ2V0X3NlZWthYmxlKFdl
YktpdERPTU1lZGlhQ29udHJvbGxlciogc2VsZikKLXsKLSNpZiBFTkFCTEUoVklERU8pCi0gICAg
V2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9p
Zl9mYWlsKFdFQktJVF9ET01fSVNfTUVESUFfQ09OVFJPTExFUihzZWxmKSwgMCk7Ci0gICAgV2Vi
Q29yZTo6TWVkaWFDb250cm9sbGVyKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIFJl
ZlB0cjxXZWJDb3JlOjpUaW1lUmFuZ2VzPiBnb2JqZWN0UmVzdWx0ID0gV1RGOjpnZXRQdHIoaXRl
bS0+c2Vla2FibGUoKSk7Ci0gICAgcmV0dXJuIFdlYktpdDo6a2l0KGdvYmplY3RSZXN1bHQuZ2V0
KCkpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc2VsZik7Ci0gICAgV0VCS0lUX1dBUk5fRkVB
VFVSRV9OT1RfUFJFU0VOVCgiVmlkZW8iKQotICAgIHJldHVybiAwOwotI2VuZGlmIC8qIEVOQUJM
RShWSURFTykgKi8KLX0KLQotZ2RvdWJsZSB3ZWJraXRfZG9tX21lZGlhX2NvbnRyb2xsZXJfZ2V0
X2R1cmF0aW9uKFdlYktpdERPTU1lZGlhQ29udHJvbGxlciogc2VsZikKLXsKLSNpZiBFTkFCTEUo
VklERU8pCi0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdf
cmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfTUVESUFfQ09OVFJPTExFUihzZWxmKSwg
MCk7Ci0gICAgV2ViQ29yZTo6TWVkaWFDb250cm9sbGVyKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNl
bGYpOwotICAgIGdkb3VibGUgcmVzdWx0ID0gaXRlbS0+ZHVyYXRpb24oKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc2VsZik7Ci0gICAgV0VCS0lUX1dBUk5f
RkVBVFVSRV9OT1RfUFJFU0VOVCgiVmlkZW8iKQotICAgIHJldHVybiBzdGF0aWNfY2FzdDxnZG91
YmxlPigwKTsKLSNlbmRpZiAvKiBFTkFCTEUoVklERU8pICovCi19Ci0KLWdkb3VibGUgd2Via2l0
X2RvbV9tZWRpYV9jb250cm9sbGVyX2dldF9jdXJyZW50X3RpbWUoV2ViS2l0RE9NTWVkaWFDb250
cm9sbGVyKiBzZWxmKQotewotI2lmIEVOQUJMRShWSURFTykKLSAgICBXZWJDb3JlOjpKU01haW5U
aHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RP
TV9JU19NRURJQV9DT05UUk9MTEVSKHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpNZWRpYUNvbnRy
b2xsZXIqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ2RvdWJsZSByZXN1bHQgPSBp
dGVtLT5jdXJyZW50VGltZSgpOwotICAgIHJldHVybiByZXN1bHQ7Ci0jZWxzZQotICAgIFVOVVNF
RF9QQVJBTShzZWxmKTsKLSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJWaWRl
byIpCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGdkb3VibGU+KDApOwotI2VuZGlmIC8qIEVOQUJM
RShWSURFTykgKi8KLX0KLQotdm9pZCB3ZWJraXRfZG9tX21lZGlhX2NvbnRyb2xsZXJfc2V0X2N1
cnJlbnRfdGltZShXZWJLaXRET01NZWRpYUNvbnRyb2xsZXIqIHNlbGYsIGdkb3VibGUgdmFsdWUp
Ci17Ci0jaWYgRU5BQkxFKFZJREVPKQotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0
ZSBzdGF0ZTsKLSAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfTUVESUFfQ09OVFJP
TExFUihzZWxmKSk7Ci0gICAgV2ViQ29yZTo6TWVkaWFDb250cm9sbGVyKiBpdGVtID0gV2ViS2l0
Ojpjb3JlKHNlbGYpOwotICAgIGl0ZW0tPnNldEN1cnJlbnRUaW1lKHZhbHVlKTsKLSNlbHNlCi0g
ICAgVU5VU0VEX1BBUkFNKHNlbGYpOwotICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7Ci0gICAgV0VC
S0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiVmlkZW8iKQotI2VuZGlmIC8qIEVOQUJMRShW
SURFTykgKi8KLX0KLQotZ2Jvb2xlYW4gd2Via2l0X2RvbV9tZWRpYV9jb250cm9sbGVyX2dldF9w
YXVzZWQoV2ViS2l0RE9NTWVkaWFDb250cm9sbGVyKiBzZWxmKQotewotI2lmIEVOQUJMRShWSURF
TykKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1
cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19NRURJQV9DT05UUk9MTEVSKHNlbGYpLCBGQUxT
RSk7Ci0gICAgV2ViQ29yZTo6TWVkaWFDb250cm9sbGVyKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNl
bGYpOwotICAgIGdib29sZWFuIHJlc3VsdCA9IGl0ZW0tPnBhdXNlZCgpOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKLSAgICBXRUJLSVRfV0FSTl9G
RUFUVVJFX05PVF9QUkVTRU5UKCJWaWRlbyIpCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGdib29s
ZWFuPigwKTsKLSNlbmRpZiAvKiBFTkFCTEUoVklERU8pICovCi19Ci0KLVdlYktpdERPTVRpbWVS
YW5nZXMqIHdlYmtpdF9kb21fbWVkaWFfY29udHJvbGxlcl9nZXRfcGxheWVkKFdlYktpdERPTU1l
ZGlhQ29udHJvbGxlciogc2VsZikKLXsKLSNpZiBFTkFCTEUoVklERU8pCi0gICAgV2ViQ29yZTo6
SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdF
QktJVF9ET01fSVNfTUVESUFfQ09OVFJPTExFUihzZWxmKSwgMCk7Ci0gICAgV2ViQ29yZTo6TWVk
aWFDb250cm9sbGVyKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIFJlZlB0cjxXZWJD
b3JlOjpUaW1lUmFuZ2VzPiBnb2JqZWN0UmVzdWx0ID0gV1RGOjpnZXRQdHIoaXRlbS0+cGxheWVk
KCkpOwotICAgIHJldHVybiBXZWJLaXQ6OmtpdChnb2JqZWN0UmVzdWx0LmdldCgpKTsKLSNlbHNl
Ci0gICAgVU5VU0VEX1BBUkFNKHNlbGYpOwotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BS
RVNFTlQoIlZpZGVvIikKLSAgICByZXR1cm4gMDsKLSNlbmRpZiAvKiBFTkFCTEUoVklERU8pICov
Ci19Ci0KLWdjaGFyKiB3ZWJraXRfZG9tX21lZGlhX2NvbnRyb2xsZXJfZ2V0X3BsYXliYWNrX3N0
YXRlKFdlYktpdERPTU1lZGlhQ29udHJvbGxlciogc2VsZikKLXsKLSNpZiBFTkFCTEUoVklERU8p
Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfTUVESUFfQ09OVFJPTExFUihzZWxmKSwgMCk7Ci0g
ICAgV2ViQ29yZTo6TWVkaWFDb250cm9sbGVyKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwot
ICAgIGdjaGFyKiByZXN1bHQgPSBjb252ZXJ0VG9VVEY4U3RyaW5nKGl0ZW0tPnBsYXliYWNrU3Rh
dGUoKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHNlbGYp
OwotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIlZpZGVvIikKLSAgICByZXR1
cm4gMDsKLSNlbmRpZiAvKiBFTkFCTEUoVklERU8pICovCi19Ci0KLWdkb3VibGUgd2Via2l0X2Rv
bV9tZWRpYV9jb250cm9sbGVyX2dldF9kZWZhdWx0X3BsYXliYWNrX3JhdGUoV2ViS2l0RE9NTWVk
aWFDb250cm9sbGVyKiBzZWxmKQotewotI2lmIEVOQUJMRShWSURFTykKLSAgICBXZWJDb3JlOjpK
U01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VC
S0lUX0RPTV9JU19NRURJQV9DT05UUk9MTEVSKHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpNZWRp
YUNvbnRyb2xsZXIqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ2RvdWJsZSByZXN1
bHQgPSBpdGVtLT5kZWZhdWx0UGxheWJhY2tSYXRlKCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSNl
bHNlCi0gICAgVU5VU0VEX1BBUkFNKHNlbGYpOwotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9U
X1BSRVNFTlQoIlZpZGVvIikKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Z2RvdWJsZT4oMCk7Ci0j
ZW5kaWYgLyogRU5BQkxFKFZJREVPKSAqLwotfQotCi12b2lkIHdlYmtpdF9kb21fbWVkaWFfY29u
dHJvbGxlcl9zZXRfZGVmYXVsdF9wbGF5YmFja19yYXRlKFdlYktpdERPTU1lZGlhQ29udHJvbGxl
ciogc2VsZiwgZ2RvdWJsZSB2YWx1ZSkKLXsKLSNpZiBFTkFCTEUoVklERU8pCi0gICAgV2ViQ29y
ZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VC
S0lUX0RPTV9JU19NRURJQV9DT05UUk9MTEVSKHNlbGYpKTsKLSAgICBXZWJDb3JlOjpNZWRpYUNv
bnRyb2xsZXIqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgaXRlbS0+c2V0RGVmYXVs
dFBsYXliYWNrUmF0ZSh2YWx1ZSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKLSAg
ICBVTlVTRURfUEFSQU0odmFsdWUpOwotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNF
TlQoIlZpZGVvIikKLSNlbmRpZiAvKiBFTkFCTEUoVklERU8pICovCi19Ci0KLWdkb3VibGUgd2Vi
a2l0X2RvbV9tZWRpYV9jb250cm9sbGVyX2dldF9wbGF5YmFja19yYXRlKFdlYktpdERPTU1lZGlh
Q29udHJvbGxlciogc2VsZikKLXsKLSNpZiBFTkFCTEUoVklERU8pCi0gICAgV2ViQ29yZTo6SlNN
YWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJ
VF9ET01fSVNfTUVESUFfQ09OVFJPTExFUihzZWxmKSwgMCk7Ci0gICAgV2ViQ29yZTo6TWVkaWFD
b250cm9sbGVyKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdkb3VibGUgcmVzdWx0
ID0gaXRlbS0+cGxheWJhY2tSYXRlKCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSNlbHNlCi0gICAg
VU5VU0VEX1BBUkFNKHNlbGYpOwotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQo
IlZpZGVvIikKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Z2RvdWJsZT4oMCk7Ci0jZW5kaWYgLyog
RU5BQkxFKFZJREVPKSAqLwotfQotCi12b2lkIHdlYmtpdF9kb21fbWVkaWFfY29udHJvbGxlcl9z
ZXRfcGxheWJhY2tfcmF0ZShXZWJLaXRET01NZWRpYUNvbnRyb2xsZXIqIHNlbGYsIGdkb3VibGUg
dmFsdWUpCi17Ci0jaWYgRU5BQkxFKFZJREVPKQotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51
bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfTUVESUFf
Q09OVFJPTExFUihzZWxmKSk7Ci0gICAgV2ViQ29yZTo6TWVkaWFDb250cm9sbGVyKiBpdGVtID0g
V2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGl0ZW0tPnNldFBsYXliYWNrUmF0ZSh2YWx1ZSk7Ci0j
ZWxzZQotICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKLSAgICBVTlVTRURfUEFSQU0odmFsdWUpOwot
ICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIlZpZGVvIikKLSNlbmRpZiAvKiBF
TkFCTEUoVklERU8pICovCi19Ci0KLWdkb3VibGUgd2Via2l0X2RvbV9tZWRpYV9jb250cm9sbGVy
X2dldF92b2x1bWUoV2ViS2l0RE9NTWVkaWFDb250cm9sbGVyKiBzZWxmKQotewotI2lmIEVOQUJM
RShWSURFTykKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAg
Z19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19NRURJQV9DT05UUk9MTEVSKHNlbGYp
LCAwKTsKLSAgICBXZWJDb3JlOjpNZWRpYUNvbnRyb2xsZXIqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUo
c2VsZik7Ci0gICAgZ2RvdWJsZSByZXN1bHQgPSBpdGVtLT52b2x1bWUoKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc2VsZik7Ci0gICAgV0VCS0lUX1dBUk5f
RkVBVFVSRV9OT1RfUFJFU0VOVCgiVmlkZW8iKQotICAgIHJldHVybiBzdGF0aWNfY2FzdDxnZG91
YmxlPigwKTsKLSNlbmRpZiAvKiBFTkFCTEUoVklERU8pICovCi19Ci0KLXZvaWQgd2Via2l0X2Rv
bV9tZWRpYV9jb250cm9sbGVyX3NldF92b2x1bWUoV2ViS2l0RE9NTWVkaWFDb250cm9sbGVyKiBz
ZWxmLCBnZG91YmxlIHZhbHVlLCBHRXJyb3IqKiBlcnJvcikKLXsKLSNpZiBFTkFCTEUoVklERU8p
Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJu
X2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19NRURJQV9DT05UUk9MTEVSKHNlbGYpKTsKLSAgICBnX3Jl
dHVybl9pZl9mYWlsKCFlcnJvciB8fCAhKmVycm9yKTsKLSAgICBXZWJDb3JlOjpNZWRpYUNvbnRy
b2xsZXIqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgV2ViQ29yZTo6RXhjZXB0aW9u
Q29kZSBlYyA9IDA7Ci0gICAgaXRlbS0+c2V0Vm9sdW1lKHZhbHVlLCBlYyk7Ci0gICAgaWYgKGVj
KSB7Ci0gICAgICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiBlY2Rlc2MoZWMp
OwotICAgICAgICBnX3NldF9lcnJvcl9saXRlcmFsKGVycm9yLCBnX3F1YXJrX2Zyb21fc3RyaW5n
KCJXRUJLSVRfRE9NIiksIGVjZGVzYy5jb2RlLCBlY2Rlc2MubmFtZSk7Ci0gICAgfQotI2Vsc2UK
LSAgICBVTlVTRURfUEFSQU0oc2VsZik7Ci0gICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKLSAgICBV
TlVTRURfUEFSQU0oZXJyb3IpOwotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQo
IlZpZGVvIikKLSNlbmRpZiAvKiBFTkFCTEUoVklERU8pICovCi19Ci0KLWdib29sZWFuIHdlYmtp
dF9kb21fbWVkaWFfY29udHJvbGxlcl9nZXRfbXV0ZWQoV2ViS2l0RE9NTWVkaWFDb250cm9sbGVy
KiBzZWxmKQotewotI2lmIEVOQUJMRShWSURFTykKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWRO
dWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19N
RURJQV9DT05UUk9MTEVSKHNlbGYpLCBGQUxTRSk7Ci0gICAgV2ViQ29yZTo6TWVkaWFDb250cm9s
bGVyKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdib29sZWFuIHJlc3VsdCA9IGl0
ZW0tPm11dGVkKCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFN
KHNlbGYpOwotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIlZpZGVvIikKLSAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8Z2Jvb2xlYW4+KDApOwotI2VuZGlmIC8qIEVOQUJMRShWSURF
TykgKi8KLX0KLQotdm9pZCB3ZWJraXRfZG9tX21lZGlhX2NvbnRyb2xsZXJfc2V0X211dGVkKFdl
YktpdERPTU1lZGlhQ29udHJvbGxlciogc2VsZiwgZ2Jvb2xlYW4gdmFsdWUpCi17Ci0jaWYgRU5B
QkxFKFZJREVPKQotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAg
ICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfTUVESUFfQ09OVFJPTExFUihzZWxmKSk7
Ci0gICAgV2ViQ29yZTo6TWVkaWFDb250cm9sbGVyKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYp
OwotICAgIGl0ZW0tPnNldE11dGVkKHZhbHVlKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHNl
bGYpOwotICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7Ci0gICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9O
T1RfUFJFU0VOVCgiVmlkZW8iKQotI2VuZGlmIC8qIEVOQUJMRShWSURFTykgKi8KLX0KLQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3Rr
L0RPTS9XZWJLaXRET01NZWRpYUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NTWVkaWFDb250cm9sbGVyLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDljNDkxNzYuLjAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRE
T01NZWRpYUNvbnRyb2xsZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDI1MiArMCwwIEBACi0vKgot
ICogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4K
LSAqICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBs
LiBETyBOT1QgTU9ESUZZIQotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQotICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaWZuZGVmIFdlYktpdERPTU1lZGlhQ29udHJv
bGxlcl9oCi0jZGVmaW5lIFdlYktpdERPTU1lZGlhQ29udHJvbGxlcl9oCi0KLSNpZmRlZiBXRUJL
SVRfRE9NX1VTRV9VTlNUQUJMRV9BUEkKLQotI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+Ci0jaW5j
bHVkZSA8d2Via2l0ZG9tL1dlYktpdERPTU9iamVjdC5oPgotI2luY2x1ZGUgPHdlYmtpdGRvbS93
ZWJraXRkb21kZWZpbmVzLXVuc3RhYmxlLmg+Ci0KLUdfQkVHSU5fREVDTFMKLQotI2RlZmluZSBX
RUJLSVRfRE9NX1RZUEVfTUVESUFfQ09OVFJPTExFUiAgICAgICAgICAgICh3ZWJraXRfZG9tX21l
ZGlhX2NvbnRyb2xsZXJfZ2V0X3R5cGUoKSkKLSNkZWZpbmUgV0VCS0lUX0RPTV9NRURJQV9DT05U
Uk9MTEVSKG9iaikgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiks
IFdFQktJVF9ET01fVFlQRV9NRURJQV9DT05UUk9MTEVSLCBXZWJLaXRET01NZWRpYUNvbnRyb2xs
ZXIpKQotI2RlZmluZSBXRUJLSVRfRE9NX01FRElBX0NPTlRST0xMRVJfQ0xBU1Moa2xhc3MpICAg
IChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLCAgV0VCS0lUX0RPTV9UWVBFX01FRElB
X0NPTlRST0xMRVIsIFdlYktpdERPTU1lZGlhQ29udHJvbGxlckNsYXNzKQotI2RlZmluZSBXRUJL
SVRfRE9NX0lTX01FRElBX0NPTlRST0xMRVIob2JqKSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5T
VEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX0RPTV9UWVBFX01FRElBX0NPTlRST0xMRVIpKQotI2Rl
ZmluZSBXRUJLSVRfRE9NX0lTX01FRElBX0NPTlRST0xMRVJfQ0xBU1Moa2xhc3MpIChHX1RZUEVf
Q0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX0RPTV9UWVBFX01FRElBX0NPTlRST0xM
RVIpKQotI2RlZmluZSBXRUJLSVRfRE9NX01FRElBX0NPTlRST0xMRVJfR0VUX0NMQVNTKG9iaikg
IChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgV0VCS0lUX0RPTV9UWVBFX01FRElB
X0NPTlRST0xMRVIsIFdlYktpdERPTU1lZGlhQ29udHJvbGxlckNsYXNzKSkKLQotc3RydWN0IF9X
ZWJLaXRET01NZWRpYUNvbnRyb2xsZXIgewotICAgIFdlYktpdERPTU9iamVjdCBwYXJlbnRfaW5z
dGFuY2U7Ci19OwotCi1zdHJ1Y3QgX1dlYktpdERPTU1lZGlhQ29udHJvbGxlckNsYXNzIHsKLSAg
ICBXZWJLaXRET01PYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7Ci19OwotCi1XRUJLSVRfQVBJIEdU
eXBlCi13ZWJraXRfZG9tX21lZGlhX2NvbnRyb2xsZXJfZ2V0X3R5cGUodm9pZCk7Ci0KLS8qKgot
ICogd2Via2l0X2RvbV9tZWRpYV9jb250cm9sbGVyX3BsYXk6Ci0gKiBAc2VsZjogQSAjV2ViS2l0
RE9NTWVkaWFDb250cm9sbGVyCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJL
SVRfQVBJIHZvaWQKLXdlYmtpdF9kb21fbWVkaWFfY29udHJvbGxlcl9wbGF5KFdlYktpdERPTU1l
ZGlhQ29udHJvbGxlciogc2VsZik7Ci0KLS8qKgotICogd2Via2l0X2RvbV9tZWRpYV9jb250cm9s
bGVyX3BhdXNlOgotICogQHNlbGY6IEEgI1dlYktpdERPTU1lZGlhQ29udHJvbGxlcgotICoKLSAq
IFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSB2b2lkCi13ZWJraXRfZG9tX21l
ZGlhX2NvbnRyb2xsZXJfcGF1c2UoV2ViS2l0RE9NTWVkaWFDb250cm9sbGVyKiBzZWxmKTsKLQot
LyoqCi0gKiB3ZWJraXRfZG9tX21lZGlhX2NvbnRyb2xsZXJfdW5wYXVzZToKLSAqIEBzZWxmOiBB
ICNXZWJLaXRET01NZWRpYUNvbnRyb2xsZXIKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0q
Ki8KLVdFQktJVF9BUEkgdm9pZAotd2Via2l0X2RvbV9tZWRpYV9jb250cm9sbGVyX3VucGF1c2Uo
V2ViS2l0RE9NTWVkaWFDb250cm9sbGVyKiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX21l
ZGlhX2NvbnRyb2xsZXJfZ2V0X2J1ZmZlcmVkOgotICogQHNlbGY6IEEgI1dlYktpdERPTU1lZGlh
Q29udHJvbGxlcgotICoKLSAqIFJldHVybnM6ICh0cmFuc2ZlciBmdWxsKTogQSAjV2ViS2l0RE9N
VGltZVJhbmdlcwotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSBX
ZWJLaXRET01UaW1lUmFuZ2VzKgotd2Via2l0X2RvbV9tZWRpYV9jb250cm9sbGVyX2dldF9idWZm
ZXJlZChXZWJLaXRET01NZWRpYUNvbnRyb2xsZXIqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9k
b21fbWVkaWFfY29udHJvbGxlcl9nZXRfc2Vla2FibGU6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9N
TWVkaWFDb250cm9sbGVyCi0gKgotICogUmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiBBICNXZWJL
aXRET01UaW1lUmFuZ2VzCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRf
QVBJIFdlYktpdERPTVRpbWVSYW5nZXMqCi13ZWJraXRfZG9tX21lZGlhX2NvbnRyb2xsZXJfZ2V0
X3NlZWthYmxlKFdlYktpdERPTU1lZGlhQ29udHJvbGxlciogc2VsZik7Ci0KLS8qKgotICogd2Vi
a2l0X2RvbV9tZWRpYV9jb250cm9sbGVyX2dldF9kdXJhdGlvbjoKLSAqIEBzZWxmOiBBICNXZWJL
aXRET01NZWRpYUNvbnRyb2xsZXIKLSAqCi0gKiBSZXR1cm5zOiBBICNnZG91YmxlCi0gKgotICog
U3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIGdkb3VibGUKLXdlYmtpdF9kb21f
bWVkaWFfY29udHJvbGxlcl9nZXRfZHVyYXRpb24oV2ViS2l0RE9NTWVkaWFDb250cm9sbGVyKiBz
ZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX21lZGlhX2NvbnRyb2xsZXJfZ2V0X2N1cnJlbnRf
dGltZToKLSAqIEBzZWxmOiBBICNXZWJLaXRET01NZWRpYUNvbnRyb2xsZXIKLSAqCi0gKiBSZXR1
cm5zOiBBICNnZG91YmxlCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRf
QVBJIGdkb3VibGUKLXdlYmtpdF9kb21fbWVkaWFfY29udHJvbGxlcl9nZXRfY3VycmVudF90aW1l
KFdlYktpdERPTU1lZGlhQ29udHJvbGxlciogc2VsZik7Ci0KLS8qKgotICogd2Via2l0X2RvbV9t
ZWRpYV9jb250cm9sbGVyX3NldF9jdXJyZW50X3RpbWU6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9N
TWVkaWFDb250cm9sbGVyCi0gKiBAdmFsdWU6IEEgI2dkb3VibGUKLSAqCi0gKiBTdGFiaWxpdHk6
IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgdm9pZAotd2Via2l0X2RvbV9tZWRpYV9jb250cm9s
bGVyX3NldF9jdXJyZW50X3RpbWUoV2ViS2l0RE9NTWVkaWFDb250cm9sbGVyKiBzZWxmLCBnZG91
YmxlIHZhbHVlKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX21lZGlhX2NvbnRyb2xsZXJfZ2V0X3Bh
dXNlZDoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01NZWRpYUNvbnRyb2xsZXIKLSAqCi0gKiBSZXR1
cm5zOiBBICNnYm9vbGVhbgotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lU
X0FQSSBnYm9vbGVhbgotd2Via2l0X2RvbV9tZWRpYV9jb250cm9sbGVyX2dldF9wYXVzZWQoV2Vi
S2l0RE9NTWVkaWFDb250cm9sbGVyKiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX21lZGlh
X2NvbnRyb2xsZXJfZ2V0X3BsYXllZDoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01NZWRpYUNvbnRy
b2xsZXIKLSAqCi0gKiBSZXR1cm5zOiAodHJhbnNmZXIgZnVsbCk6IEEgI1dlYktpdERPTVRpbWVS
YW5nZXMKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgV2ViS2l0
RE9NVGltZVJhbmdlcyoKLXdlYmtpdF9kb21fbWVkaWFfY29udHJvbGxlcl9nZXRfcGxheWVkKFdl
YktpdERPTU1lZGlhQ29udHJvbGxlciogc2VsZik7Ci0KLS8qKgotICogd2Via2l0X2RvbV9tZWRp
YV9jb250cm9sbGVyX2dldF9wbGF5YmFja19zdGF0ZToKLSAqIEBzZWxmOiBBICNXZWJLaXRET01N
ZWRpYUNvbnRyb2xsZXIKLSAqCi0gKiBSZXR1cm5zOiBBICNnY2hhcgotICoKLSAqIFN0YWJpbGl0
eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSBnY2hhcioKLXdlYmtpdF9kb21fbWVkaWFfY29u
dHJvbGxlcl9nZXRfcGxheWJhY2tfc3RhdGUoV2ViS2l0RE9NTWVkaWFDb250cm9sbGVyKiBzZWxm
KTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX21lZGlhX2NvbnRyb2xsZXJfZ2V0X2RlZmF1bHRfcGxh
eWJhY2tfcmF0ZToKLSAqIEBzZWxmOiBBICNXZWJLaXRET01NZWRpYUNvbnRyb2xsZXIKLSAqCi0g
KiBSZXR1cm5zOiBBICNnZG91YmxlCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1X
RUJLSVRfQVBJIGdkb3VibGUKLXdlYmtpdF9kb21fbWVkaWFfY29udHJvbGxlcl9nZXRfZGVmYXVs
dF9wbGF5YmFja19yYXRlKFdlYktpdERPTU1lZGlhQ29udHJvbGxlciogc2VsZik7Ci0KLS8qKgot
ICogd2Via2l0X2RvbV9tZWRpYV9jb250cm9sbGVyX3NldF9kZWZhdWx0X3BsYXliYWNrX3JhdGU6
Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NTWVkaWFDb250cm9sbGVyCi0gKiBAdmFsdWU6IEEgI2dk
b3VibGUKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgdm9pZAot
d2Via2l0X2RvbV9tZWRpYV9jb250cm9sbGVyX3NldF9kZWZhdWx0X3BsYXliYWNrX3JhdGUoV2Vi
S2l0RE9NTWVkaWFDb250cm9sbGVyKiBzZWxmLCBnZG91YmxlIHZhbHVlKTsKLQotLyoqCi0gKiB3
ZWJraXRfZG9tX21lZGlhX2NvbnRyb2xsZXJfZ2V0X3BsYXliYWNrX3JhdGU6Ci0gKiBAc2VsZjog
QSAjV2ViS2l0RE9NTWVkaWFDb250cm9sbGVyCi0gKgotICogUmV0dXJuczogQSAjZ2RvdWJsZQot
ICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSBnZG91YmxlCi13ZWJr
aXRfZG9tX21lZGlhX2NvbnRyb2xsZXJfZ2V0X3BsYXliYWNrX3JhdGUoV2ViS2l0RE9NTWVkaWFD
b250cm9sbGVyKiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX21lZGlhX2NvbnRyb2xsZXJf
c2V0X3BsYXliYWNrX3JhdGU6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NTWVkaWFDb250cm9sbGVy
Ci0gKiBAdmFsdWU6IEEgI2dkb3VibGUKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8K
LVdFQktJVF9BUEkgdm9pZAotd2Via2l0X2RvbV9tZWRpYV9jb250cm9sbGVyX3NldF9wbGF5YmFj
a19yYXRlKFdlYktpdERPTU1lZGlhQ29udHJvbGxlciogc2VsZiwgZ2RvdWJsZSB2YWx1ZSk7Ci0K
LS8qKgotICogd2Via2l0X2RvbV9tZWRpYV9jb250cm9sbGVyX2dldF92b2x1bWU6Ci0gKiBAc2Vs
ZjogQSAjV2ViS2l0RE9NTWVkaWFDb250cm9sbGVyCi0gKgotICogUmV0dXJuczogQSAjZ2RvdWJs
ZQotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSBnZG91YmxlCi13
ZWJraXRfZG9tX21lZGlhX2NvbnRyb2xsZXJfZ2V0X3ZvbHVtZShXZWJLaXRET01NZWRpYUNvbnRy
b2xsZXIqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9kb21fbWVkaWFfY29udHJvbGxlcl9zZXRf
dm9sdW1lOgotICogQHNlbGY6IEEgI1dlYktpdERPTU1lZGlhQ29udHJvbGxlcgotICogQHZhbHVl
OiBBICNnZG91YmxlCi0gKiBAZXJyb3I6ICNHRXJyb3IKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3Rh
YmxlCi0qKi8KLVdFQktJVF9BUEkgdm9pZAotd2Via2l0X2RvbV9tZWRpYV9jb250cm9sbGVyX3Nl
dF92b2x1bWUoV2ViS2l0RE9NTWVkaWFDb250cm9sbGVyKiBzZWxmLCBnZG91YmxlIHZhbHVlLCBH
RXJyb3IqKiBlcnJvcik7Ci0KLS8qKgotICogd2Via2l0X2RvbV9tZWRpYV9jb250cm9sbGVyX2dl
dF9tdXRlZDoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01NZWRpYUNvbnRyb2xsZXIKLSAqCi0gKiBS
ZXR1cm5zOiBBICNnYm9vbGVhbgotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VC
S0lUX0FQSSBnYm9vbGVhbgotd2Via2l0X2RvbV9tZWRpYV9jb250cm9sbGVyX2dldF9tdXRlZChX
ZWJLaXRET01NZWRpYUNvbnRyb2xsZXIqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9kb21fbWVk
aWFfY29udHJvbGxlcl9zZXRfbXV0ZWQ6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NTWVkaWFDb250
cm9sbGVyCi0gKiBAdmFsdWU6IEEgI2dib29sZWFuCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJs
ZQotKiovCi1XRUJLSVRfQVBJIHZvaWQKLXdlYmtpdF9kb21fbWVkaWFfY29udHJvbGxlcl9zZXRf
bXV0ZWQoV2ViS2l0RE9NTWVkaWFDb250cm9sbGVyKiBzZWxmLCBnYm9vbGVhbiB2YWx1ZSk7Ci0K
LUdfRU5EX0RFQ0xTCi0KLSNlbmRpZiAvKiBXRUJLSVRfRE9NX1VTRV9VTlNUQUJMRV9BUEkgKi8K
LSNlbmRpZiAvKiBXZWJLaXRET01NZWRpYUNvbnRyb2xsZXJfaCAqLwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRE
T01NZWRpYUNvbnRyb2xsZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTU1lZGlhQ29udHJvbGxlclByaXZhdGUu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjBkYTI3Zi4uMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktp
dERPTU1lZGlhQ29udHJvbGxlclByaXZhdGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAg
QEAKLS8qCi0gKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBw
cm9qZWN0LgotICogIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmlu
ZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgot
ICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICog
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAq
ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICog
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgV2ViS2l0RE9NTWVk
aWFDb250cm9sbGVyUHJpdmF0ZV9oCi0jZGVmaW5lIFdlYktpdERPTU1lZGlhQ29udHJvbGxlclBy
aXZhdGVfaAotCi0jaW5jbHVkZSA8V2ViQ29yZS9NZWRpYUNvbnRyb2xsZXIuaD4KLSNpbmNsdWRl
IDx3ZWJraXRkb20vV2ViS2l0RE9NTWVkaWFDb250cm9sbGVyLmg+Ci0jaWYgRU5BQkxFKFZJREVP
KQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLVdlYktpdERPTU1lZGlhQ29udHJvbGxlciogd3JhcE1l
ZGlhQ29udHJvbGxlcihXZWJDb3JlOjpNZWRpYUNvbnRyb2xsZXIqKTsKLVdlYktpdERPTU1lZGlh
Q29udHJvbGxlcioga2l0KFdlYkNvcmU6Ok1lZGlhQ29udHJvbGxlciopOwotV2ViQ29yZTo6TWVk
aWFDb250cm9sbGVyKiBjb3JlKFdlYktpdERPTU1lZGlhQ29udHJvbGxlciopOwotfSAvLyBuYW1l
c3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvKiBFTkFCTEUoVklERU8pICovCi0KLSNlbmRpZiAvKiBX
ZWJLaXRET01NZWRpYUNvbnRyb2xsZXJQcml2YXRlX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NTWVk
aWFEZXZpY2VzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2d0ay9ET00vV2ViS2l0RE9NTWVkaWFEZXZpY2VzLmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggOTUwNzc4Yy4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTU1lZGlhRGV2aWNlcy5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSwxMjYgKzAsMCBAQAotLyoKLSAqICBUaGlzIGZpbGUgaXMgcGFy
dCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCi0gKiAgVGhpcyBmaWxlIGhhcyBi
ZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKLSAq
Ci0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
LSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqICBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYktpdERPTU1lZGlhRGV2
aWNlcy5oIgotCi0jaW5jbHVkZSA8V2ViQ29yZS9DU1NJbXBvcnRSdWxlLmg+Ci0jaW5jbHVkZSAi
RE9NT2JqZWN0Q2FjaGUuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50Lmg+Ci0jaW5jbHVk
ZSA8V2ViQ29yZS9FeGNlcHRpb25Db2RlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9FeGNlcHRpb25D
b2RlRGVzY3JpcHRpb24uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0pTTWFpblRocmVhZEV4ZWNTdGF0
ZS5oPgotI2luY2x1ZGUgIldlYktpdERPTU1lZGlhRGV2aWNlc1ByaXZhdGUuaCIKLSNpbmNsdWRl
ICJXZWJLaXRET01NZWRpYVRyYWNrU3VwcG9ydGVkQ29uc3RyYWludHNQcml2YXRlLmgiCi0jaW5j
bHVkZSAiV2ViS2l0RE9NUHJpdmF0ZS5oIgotI2luY2x1ZGUgIkNvbnZlcnRUb1VURjhTdHJpbmcu
aCIKLSNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi0j
ZGVmaW5lIFdFQktJVF9ET01fTUVESUFfREVWSUNFU19HRVRfUFJJVkFURShvYmopIEdfVFlQRV9J
TlNUQU5DRV9HRVRfUFJJVkFURShvYmosIFdFQktJVF9ET01fVFlQRV9NRURJQV9ERVZJQ0VTLCBX
ZWJLaXRET01NZWRpYURldmljZXNQcml2YXRlKQotCi10eXBlZGVmIHN0cnVjdCBfV2ViS2l0RE9N
TWVkaWFEZXZpY2VzUHJpdmF0ZSB7Ci0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICBSZWZQ
dHI8V2ViQ29yZTo6TWVkaWFEZXZpY2VzPiBjb3JlT2JqZWN0OwotI2VuZGlmIC8vIEVOQUJMRShN
RURJQV9TVFJFQU0pCi19IFdlYktpdERPTU1lZGlhRGV2aWNlc1ByaXZhdGU7Ci0KLSNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotV2ViS2l0RE9NTWVkaWFE
ZXZpY2VzKiBraXQoV2ViQ29yZTo6TWVkaWFEZXZpY2VzKiBvYmopCi17Ci0gICAgaWYgKCFvYmop
Ci0gICAgICAgIHJldHVybiAwOwotCi0gICAgaWYgKGdwb2ludGVyIHJldCA9IERPTU9iamVjdENh
Y2hlOjpnZXQob2JqKSkKLSAgICAgICAgcmV0dXJuIFdFQktJVF9ET01fTUVESUFfREVWSUNFUyhy
ZXQpOwotCi0gICAgcmV0dXJuIHdyYXBNZWRpYURldmljZXMob2JqKTsKLX0KLQotV2ViQ29yZTo6
TWVkaWFEZXZpY2VzKiBjb3JlKFdlYktpdERPTU1lZGlhRGV2aWNlcyogcmVxdWVzdCkKLXsKLSAg
ICByZXR1cm4gcmVxdWVzdCA/IHN0YXRpY19jYXN0PFdlYkNvcmU6Ok1lZGlhRGV2aWNlcyo+KFdF
QktJVF9ET01fT0JKRUNUKHJlcXVlc3QpLT5jb3JlT2JqZWN0KSA6IDA7Ci19Ci0KLVdlYktpdERP
TU1lZGlhRGV2aWNlcyogd3JhcE1lZGlhRGV2aWNlcyhXZWJDb3JlOjpNZWRpYURldmljZXMqIGNv
cmVPYmplY3QpCi17Ci0gICAgQVNTRVJUKGNvcmVPYmplY3QpOwotICAgIHJldHVybiBXRUJLSVRf
RE9NX01FRElBX0RFVklDRVMoZ19vYmplY3RfbmV3KFdFQktJVF9ET01fVFlQRV9NRURJQV9ERVZJ
Q0VTLCAiY29yZS1vYmplY3QiLCBjb3JlT2JqZWN0LCBudWxscHRyKSk7Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKLQotR19ERUZJ
TkVfVFlQRShXZWJLaXRET01NZWRpYURldmljZXMsIHdlYmtpdF9kb21fbWVkaWFfZGV2aWNlcywg
V0VCS0lUX0RPTV9UWVBFX09CSkVDVCkKLQotc3RhdGljIHZvaWQgd2Via2l0X2RvbV9tZWRpYV9k
ZXZpY2VzX2ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKLXsKLSAgICBXZWJLaXRET01NZWRpYURl
dmljZXNQcml2YXRlKiBwcml2ID0gV0VCS0lUX0RPTV9NRURJQV9ERVZJQ0VTX0dFVF9QUklWQVRF
KG9iamVjdCk7Ci0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICBXZWJLaXQ6OkRPTU9iamVj
dENhY2hlOjpmb3JnZXQocHJpdi0+Y29yZU9iamVjdC5nZXQoKSk7Ci0jZW5kaWYgLy8gRU5BQkxF
KE1FRElBX1NUUkVBTSkKLSAgICBwcml2LT5+V2ViS2l0RE9NTWVkaWFEZXZpY2VzUHJpdmF0ZSgp
OwotICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9kb21fbWVkaWFfZGV2aWNlc19wYXJlbnRfY2xh
c3MpLT5maW5hbGl6ZShvYmplY3QpOwotfQotCi1zdGF0aWMgR09iamVjdCogd2Via2l0X2RvbV9t
ZWRpYV9kZXZpY2VzX2NvbnN0cnVjdG9yKEdUeXBlIHR5cGUsIGd1aW50IGNvbnN0cnVjdFByb3Bl
cnRpZXNDb3VudCwgR09iamVjdENvbnN0cnVjdFBhcmFtKiBjb25zdHJ1Y3RQcm9wZXJ0aWVzKQot
ewotICAgIEdPYmplY3QqIG9iamVjdCA9IEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9kb21fbWVkaWFf
ZGV2aWNlc19wYXJlbnRfY2xhc3MpLT5jb25zdHJ1Y3Rvcih0eXBlLCBjb25zdHJ1Y3RQcm9wZXJ0
aWVzQ291bnQsIGNvbnN0cnVjdFByb3BlcnRpZXMpOwotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0p
Ci0gICAgV2ViS2l0RE9NTWVkaWFEZXZpY2VzUHJpdmF0ZSogcHJpdiA9IFdFQktJVF9ET01fTUVE
SUFfREVWSUNFU19HRVRfUFJJVkFURShvYmplY3QpOwotICAgIHByaXYtPmNvcmVPYmplY3QgPSBz
dGF0aWNfY2FzdDxXZWJDb3JlOjpNZWRpYURldmljZXMqPihXRUJLSVRfRE9NX09CSkVDVChvYmpl
Y3QpLT5jb3JlT2JqZWN0KTsKLSAgICBXZWJLaXQ6OkRPTU9iamVjdENhY2hlOjpwdXQocHJpdi0+
Y29yZU9iamVjdC5nZXQoKSwgb2JqZWN0KTsKLSNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFN
KQotICAgIHJldHVybiBvYmplY3Q7Ci19Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdF9kb21fbWVkaWFf
ZGV2aWNlc19jbGFzc19pbml0KFdlYktpdERPTU1lZGlhRGV2aWNlc0NsYXNzKiByZXF1ZXN0Q2xh
c3MpCi17Ci0gICAgR09iamVjdENsYXNzKiBnb2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhy
ZXF1ZXN0Q2xhc3MpOwotICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShnb2JqZWN0Q2xhc3Ms
IHNpemVvZihXZWJLaXRET01NZWRpYURldmljZXNQcml2YXRlKSk7Ci0gICAgZ29iamVjdENsYXNz
LT5jb25zdHJ1Y3RvciA9IHdlYmtpdF9kb21fbWVkaWFfZGV2aWNlc19jb25zdHJ1Y3RvcjsKLSAg
ICBnb2JqZWN0Q2xhc3MtPmZpbmFsaXplID0gd2Via2l0X2RvbV9tZWRpYV9kZXZpY2VzX2ZpbmFs
aXplOwotfQotCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX21lZGlhX2RldmljZXNfaW5pdChXZWJL
aXRET01NZWRpYURldmljZXMqIHJlcXVlc3QpCi17Ci0gICAgV2ViS2l0RE9NTWVkaWFEZXZpY2Vz
UHJpdmF0ZSogcHJpdiA9IFdFQktJVF9ET01fTUVESUFfREVWSUNFU19HRVRfUFJJVkFURShyZXF1
ZXN0KTsKLSAgICBuZXcgKHByaXYpIFdlYktpdERPTU1lZGlhRGV2aWNlc1ByaXZhdGUoKTsKLX0K
LQotV2ViS2l0RE9NTWVkaWFUcmFja1N1cHBvcnRlZENvbnN0cmFpbnRzKiB3ZWJraXRfZG9tX21l
ZGlhX2RldmljZXNfZ2V0X3N1cHBvcnRlZF9jb25zdHJhaW50cyhXZWJLaXRET01NZWRpYURldmlj
ZXMqIHNlbGYpCi17Ci0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICBXZWJDb3JlOjpKU01h
aW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lU
X0RPTV9JU19NRURJQV9ERVZJQ0VTKHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpNZWRpYURldmlj
ZXMqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgUmVmUHRyPFdlYkNvcmU6Ok1lZGlh
VHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50cz4gZ29iamVjdFJlc3VsdCA9IFdURjo6Z2V0UHRyKGl0
ZW0tPmdldFN1cHBvcnRlZENvbnN0cmFpbnRzKCkpOwotICAgIHJldHVybiBXZWJLaXQ6OmtpdChn
b2JqZWN0UmVzdWx0LmdldCgpKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHNlbGYpOwotICAg
IFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIk1lZGlhIFN0cmVhbSIpCi0gICAgcmV0
dXJuIDA7Ci0jZW5kaWYgLyogRU5BQkxFKE1FRElBX1NUUkVBTSkgKi8KLX0KLQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9X
ZWJLaXRET01NZWRpYURldmljZXMuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NTWVkaWFEZXZpY2VzLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGU5MWM1ODYuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01NZWRpYURldmlj
ZXMuaAorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLS8qCi0gKiAgVGhpcyBmaWxlIGlz
IHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICogIFRoaXMgZmlsZSBo
YXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkh
Ci0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAg
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgotICovCi0KLSNpZm5kZWYgV2ViS2l0RE9NTWVkaWFEZXZpY2VzX2gKLSNkZWZpbmUgV2Vi
S2l0RE9NTWVkaWFEZXZpY2VzX2gKLQotI2lmZGVmIFdFQktJVF9ET01fVVNFX1VOU1RBQkxFX0FQ
SQotCi0jaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KLSNpbmNsdWRlIDx3ZWJraXRkb20vV2ViS2l0
RE9NT2JqZWN0Lmg+Ci0jaW5jbHVkZSA8d2Via2l0ZG9tL3dlYmtpdGRvbWRlZmluZXMtdW5zdGFi
bGUuaD4KLQotR19CRUdJTl9ERUNMUwotCi0jZGVmaW5lIFdFQktJVF9ET01fVFlQRV9NRURJQV9E
RVZJQ0VTICAgICAgICAgICAgKHdlYmtpdF9kb21fbWVkaWFfZGV2aWNlc19nZXRfdHlwZSgpKQot
I2RlZmluZSBXRUJLSVRfRE9NX01FRElBX0RFVklDRVMob2JqKSAgICAgICAgICAgIChHX1RZUEVf
Q0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwgV0VCS0lUX0RPTV9UWVBFX01FRElBX0RFVklDRVMs
IFdlYktpdERPTU1lZGlhRGV2aWNlcykpCi0jZGVmaW5lIFdFQktJVF9ET01fTUVESUFfREVWSUNF
U19DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksICBXRUJL
SVRfRE9NX1RZUEVfTUVESUFfREVWSUNFUywgV2ViS2l0RE9NTWVkaWFEZXZpY2VzQ2xhc3MpCi0j
ZGVmaW5lIFdFQktJVF9ET01fSVNfTUVESUFfREVWSUNFUyhvYmopICAgICAgICAgKEdfVFlQRV9D
SEVDS19JTlNUQU5DRV9UWVBFKChvYmopLCBXRUJLSVRfRE9NX1RZUEVfTUVESUFfREVWSUNFUykp
Ci0jZGVmaW5lIFdFQktJVF9ET01fSVNfTUVESUFfREVWSUNFU19DTEFTUyhrbGFzcykgKEdfVFlQ
RV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfRE9NX1RZUEVfTUVESUFfREVWSUNF
UykpCi0jZGVmaW5lIFdFQktJVF9ET01fTUVESUFfREVWSUNFU19HRVRfQ0xBU1Mob2JqKSAgKEdf
VFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksICBXRUJLSVRfRE9NX1RZUEVfTUVESUFfREVW
SUNFUywgV2ViS2l0RE9NTWVkaWFEZXZpY2VzQ2xhc3MpKQotCi1zdHJ1Y3QgX1dlYktpdERPTU1l
ZGlhRGV2aWNlcyB7Ci0gICAgV2ViS2l0RE9NT2JqZWN0IHBhcmVudF9pbnN0YW5jZTsKLX07Ci0K
LXN0cnVjdCBfV2ViS2l0RE9NTWVkaWFEZXZpY2VzQ2xhc3MgewotICAgIFdlYktpdERPTU9iamVj
dENsYXNzIHBhcmVudF9jbGFzczsKLX07Ci0KLVdFQktJVF9BUEkgR1R5cGUKLXdlYmtpdF9kb21f
bWVkaWFfZGV2aWNlc19nZXRfdHlwZSh2b2lkKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX21lZGlh
X2RldmljZXNfZ2V0X3N1cHBvcnRlZF9jb25zdHJhaW50czoKLSAqIEBzZWxmOiBBICNXZWJLaXRE
T01NZWRpYURldmljZXMKLSAqCi0gKiBSZXR1cm5zOiAodHJhbnNmZXIgbm9uZSk6IEEgI1dlYktp
dERPTU1lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50cwotICoKLSAqIFN0YWJpbGl0eTogVW5z
dGFibGUKLSoqLwotV0VCS0lUX0FQSSBXZWJLaXRET01NZWRpYVRyYWNrU3VwcG9ydGVkQ29uc3Ry
YWludHMqCi13ZWJraXRfZG9tX21lZGlhX2RldmljZXNfZ2V0X3N1cHBvcnRlZF9jb25zdHJhaW50
cyhXZWJLaXRET01NZWRpYURldmljZXMqIHNlbGYpOwotCi1HX0VORF9ERUNMUwotCi0jZW5kaWYg
LyogV0VCS0lUX0RPTV9VU0VfVU5TVEFCTEVfQVBJICovCi0jZW5kaWYgLyogV2ViS2l0RE9NTWVk
aWFEZXZpY2VzX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NTWVkaWFEZXZpY2VzUHJpdmF0ZS5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJL
aXRET01NZWRpYURldmljZXNQcml2YXRlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDdmYzE2MTEuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01NZWRpYURldmljZXNQcml2YXRlLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi0vKgotICogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRo
ZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAqICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2Vu
ZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQotICoKLSAqICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
Ci0gKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwot
Ci0jaWZuZGVmIFdlYktpdERPTU1lZGlhRGV2aWNlc1ByaXZhdGVfaAotI2RlZmluZSBXZWJLaXRE
T01NZWRpYURldmljZXNQcml2YXRlX2gKLQotI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFEZXZpY2Vz
Lmg+Ci0jaW5jbHVkZSA8d2Via2l0ZG9tL1dlYktpdERPTU1lZGlhRGV2aWNlcy5oPgotI2lmIEVO
QUJMRShNRURJQV9TVFJFQU0pCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotV2ViS2l0RE9NTWVkaWFE
ZXZpY2VzKiB3cmFwTWVkaWFEZXZpY2VzKFdlYkNvcmU6Ok1lZGlhRGV2aWNlcyopOwotV2ViS2l0
RE9NTWVkaWFEZXZpY2VzKiBraXQoV2ViQ29yZTo6TWVkaWFEZXZpY2VzKik7Ci1XZWJDb3JlOjpN
ZWRpYURldmljZXMqIGNvcmUoV2ViS2l0RE9NTWVkaWFEZXZpY2VzKik7Ci19IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKLQotI2VuZGlmIC8qIEVOQUJMRShNRURJQV9TVFJFQU0pICovCi0KLSNlbmRpZiAv
KiBXZWJLaXRET01NZWRpYURldmljZXNQcml2YXRlX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NTWVk
aWFFcnJvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9ndGsvRE9NL1dlYktpdERPTU1lZGlhRXJyb3IuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA5YzBkYjc5Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NTWVkaWFFcnJvci5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSwxNTYgKzAsMCBAQAotLyoKLSAqICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0
aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCi0gKiAgVGhpcyBmaWxlIGhhcyBiZWVuIGdl
bmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKLSAqCi0gKiAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqICBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bwotICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCi0gKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYktpdERPTU1lZGlhRXJyb3IuaCIK
LQotI2luY2x1ZGUgPFdlYkNvcmUvQ1NTSW1wb3J0UnVsZS5oPgotI2luY2x1ZGUgIkRPTU9iamVj
dENhY2hlLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudC5oPgotI2luY2x1ZGUgPFdlYkNv
cmUvRXhjZXB0aW9uQ29kZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRXhjZXB0aW9uQ29kZURlc2Ny
aXB0aW9uLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9KU01haW5UaHJlYWRFeGVjU3RhdGUuaD4KLSNp
bmNsdWRlICJXZWJLaXRET01NZWRpYUVycm9yUHJpdmF0ZS5oIgotI2luY2x1ZGUgIldlYktpdERP
TVByaXZhdGUuaCIKLSNpbmNsdWRlICJDb252ZXJ0VG9VVEY4U3RyaW5nLmgiCi0jaW5jbHVkZSA8
d3RmL0dldFB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotI2RlZmluZSBXRUJLSVRf
RE9NX01FRElBX0VSUk9SX0dFVF9QUklWQVRFKG9iaikgR19UWVBFX0lOU1RBTkNFX0dFVF9QUklW
QVRFKG9iaiwgV0VCS0lUX0RPTV9UWVBFX01FRElBX0VSUk9SLCBXZWJLaXRET01NZWRpYUVycm9y
UHJpdmF0ZSkKLQotdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdERPTU1lZGlhRXJyb3JQcml2YXRlIHsK
LSNpZiBFTkFCTEUoVklERU8pCi0gICAgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhRXJyb3I+IGNvcmVP
YmplY3Q7Ci0jZW5kaWYgLy8gRU5BQkxFKFZJREVPKQotfSBXZWJLaXRET01NZWRpYUVycm9yUHJp
dmF0ZTsKLQotI2lmIEVOQUJMRShWSURFTykKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVdlYktp
dERPTU1lZGlhRXJyb3IqIGtpdChXZWJDb3JlOjpNZWRpYUVycm9yKiBvYmopCi17Ci0gICAgaWYg
KCFvYmopCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgaWYgKGdwb2ludGVyIHJldCA9IERPTU9i
amVjdENhY2hlOjpnZXQob2JqKSkKLSAgICAgICAgcmV0dXJuIFdFQktJVF9ET01fTUVESUFfRVJS
T1IocmV0KTsKLQotICAgIHJldHVybiB3cmFwTWVkaWFFcnJvcihvYmopOwotfQotCi1XZWJDb3Jl
OjpNZWRpYUVycm9yKiBjb3JlKFdlYktpdERPTU1lZGlhRXJyb3IqIHJlcXVlc3QpCi17Ci0gICAg
cmV0dXJuIHJlcXVlc3QgPyBzdGF0aWNfY2FzdDxXZWJDb3JlOjpNZWRpYUVycm9yKj4oV0VCS0lU
X0RPTV9PQkpFQ1QocmVxdWVzdCktPmNvcmVPYmplY3QpIDogMDsKLX0KLQotV2ViS2l0RE9NTWVk
aWFFcnJvciogd3JhcE1lZGlhRXJyb3IoV2ViQ29yZTo6TWVkaWFFcnJvciogY29yZU9iamVjdCkK
LXsKLSAgICBBU1NFUlQoY29yZU9iamVjdCk7Ci0gICAgcmV0dXJuIFdFQktJVF9ET01fTUVESUFf
RVJST1IoZ19vYmplY3RfbmV3KFdFQktJVF9ET01fVFlQRV9NRURJQV9FUlJPUiwgImNvcmUtb2Jq
ZWN0IiwgY29yZU9iamVjdCwgbnVsbHB0cikpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQK
LQotI2VuZGlmIC8vIEVOQUJMRShWSURFTykKLQotR19ERUZJTkVfVFlQRShXZWJLaXRET01NZWRp
YUVycm9yLCB3ZWJraXRfZG9tX21lZGlhX2Vycm9yLCBXRUJLSVRfRE9NX1RZUEVfT0JKRUNUKQot
Ci1lbnVtIHsKLSAgICBQUk9QXzAsCi0gICAgUFJPUF9DT0RFLAotfTsKLQotc3RhdGljIHZvaWQg
d2Via2l0X2RvbV9tZWRpYV9lcnJvcl9maW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCi17Ci0gICAg
V2ViS2l0RE9NTWVkaWFFcnJvclByaXZhdGUqIHByaXYgPSBXRUJLSVRfRE9NX01FRElBX0VSUk9S
X0dFVF9QUklWQVRFKG9iamVjdCk7Ci0jaWYgRU5BQkxFKFZJREVPKQotICAgIFdlYktpdDo6RE9N
T2JqZWN0Q2FjaGU6OmZvcmdldChwcml2LT5jb3JlT2JqZWN0LmdldCgpKTsKLSNlbmRpZiAvLyBF
TkFCTEUoVklERU8pCi0gICAgcHJpdi0+fldlYktpdERPTU1lZGlhRXJyb3JQcml2YXRlKCk7Ci0g
ICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X2RvbV9tZWRpYV9lcnJvcl9wYXJlbnRfY2xhc3MpLT5m
aW5hbGl6ZShvYmplY3QpOwotfQotCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX21lZGlhX2Vycm9y
X2dldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BlcnR5SWQsIEdWYWx1ZSog
dmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKQotewotICAgIFdlYktpdERPTU1lZGlhRXJyb3IqIHNl
bGYgPSBXRUJLSVRfRE9NX01FRElBX0VSUk9SKG9iamVjdCk7Ci0KLSAgICBzd2l0Y2ggKHByb3Bl
cnR5SWQpIHsKLSAgICBjYXNlIFBST1BfQ09ERToKLSAgICAgICAgZ192YWx1ZV9zZXRfdWludCh2
YWx1ZSwgd2Via2l0X2RvbV9tZWRpYV9lcnJvcl9nZXRfY29kZShzZWxmKSk7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJU
WV9JRChvYmplY3QsIHByb3BlcnR5SWQsIHBzcGVjKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQot
fQotCi1zdGF0aWMgR09iamVjdCogd2Via2l0X2RvbV9tZWRpYV9lcnJvcl9jb25zdHJ1Y3RvcihH
VHlwZSB0eXBlLCBndWludCBjb25zdHJ1Y3RQcm9wZXJ0aWVzQ291bnQsIEdPYmplY3RDb25zdHJ1
Y3RQYXJhbSogY29uc3RydWN0UHJvcGVydGllcykKLXsKLSAgICBHT2JqZWN0KiBvYmplY3QgPSBH
X09CSkVDVF9DTEFTUyh3ZWJraXRfZG9tX21lZGlhX2Vycm9yX3BhcmVudF9jbGFzcyktPmNvbnN0
cnVjdG9yKHR5cGUsIGNvbnN0cnVjdFByb3BlcnRpZXNDb3VudCwgY29uc3RydWN0UHJvcGVydGll
cyk7Ci0jaWYgRU5BQkxFKFZJREVPKQotICAgIFdlYktpdERPTU1lZGlhRXJyb3JQcml2YXRlKiBw
cml2ID0gV0VCS0lUX0RPTV9NRURJQV9FUlJPUl9HRVRfUFJJVkFURShvYmplY3QpOwotICAgIHBy
aXYtPmNvcmVPYmplY3QgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpNZWRpYUVycm9yKj4oV0VCS0lU
X0RPTV9PQkpFQ1Qob2JqZWN0KS0+Y29yZU9iamVjdCk7Ci0gICAgV2ViS2l0OjpET01PYmplY3RD
YWNoZTo6cHV0KHByaXYtPmNvcmVPYmplY3QuZ2V0KCksIG9iamVjdCk7Ci0jZW5kaWYgLy8gRU5B
QkxFKFZJREVPKQotICAgIHJldHVybiBvYmplY3Q7Ci19Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdF9k
b21fbWVkaWFfZXJyb3JfY2xhc3NfaW5pdChXZWJLaXRET01NZWRpYUVycm9yQ2xhc3MqIHJlcXVl
c3RDbGFzcykKLXsKLSAgICBHT2JqZWN0Q2xhc3MqIGdvYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NM
QVNTKHJlcXVlc3RDbGFzcyk7Ci0gICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKGdvYmplY3RD
bGFzcywgc2l6ZW9mKFdlYktpdERPTU1lZGlhRXJyb3JQcml2YXRlKSk7Ci0gICAgZ29iamVjdENs
YXNzLT5jb25zdHJ1Y3RvciA9IHdlYmtpdF9kb21fbWVkaWFfZXJyb3JfY29uc3RydWN0b3I7Ci0g
ICAgZ29iamVjdENsYXNzLT5maW5hbGl6ZSA9IHdlYmtpdF9kb21fbWVkaWFfZXJyb3JfZmluYWxp
emU7Ci0gICAgZ29iamVjdENsYXNzLT5nZXRfcHJvcGVydHkgPSB3ZWJraXRfZG9tX21lZGlhX2Vy
cm9yX2dldF9wcm9wZXJ0eTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHko
Ci0gICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9DT0RFLAotICAgICAgICBnX3Bh
cmFtX3NwZWNfdWludCgKLSAgICAgICAgICAgICJjb2RlIiwKLSAgICAgICAgICAgICJNZWRpYUVy
cm9yOmNvZGUiLAotICAgICAgICAgICAgInJlYWQtb25seSBndXNob3J0IE1lZGlhRXJyb3I6Y29k
ZSIsCi0gICAgICAgICAgICAwLCBHX01BWFVJTlQsIDAsCi0gICAgICAgICAgICBXRUJLSVRfUEFS
QU1fUkVBREFCTEUpKTsKLQotfQotCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX21lZGlhX2Vycm9y
X2luaXQoV2ViS2l0RE9NTWVkaWFFcnJvciogcmVxdWVzdCkKLXsKLSAgICBXZWJLaXRET01NZWRp
YUVycm9yUHJpdmF0ZSogcHJpdiA9IFdFQktJVF9ET01fTUVESUFfRVJST1JfR0VUX1BSSVZBVEUo
cmVxdWVzdCk7Ci0gICAgbmV3IChwcml2KSBXZWJLaXRET01NZWRpYUVycm9yUHJpdmF0ZSgpOwot
fQotCi1ndXNob3J0IHdlYmtpdF9kb21fbWVkaWFfZXJyb3JfZ2V0X2NvZGUoV2ViS2l0RE9NTWVk
aWFFcnJvciogc2VsZikKLXsKLSNpZiBFTkFCTEUoVklERU8pCi0gICAgV2ViQ29yZTo6SlNNYWlu
VGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9E
T01fSVNfTUVESUFfRVJST1Ioc2VsZiksIDApOwotICAgIFdlYkNvcmU6Ok1lZGlhRXJyb3IqIGl0
ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ3VzaG9ydCByZXN1bHQgPSBpdGVtLT5jb2Rl
KCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHNlbGYpOwot
ICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIlZpZGVvIikKLSAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Z3VzaG9ydD4oMCk7Ci0jZW5kaWYgLyogRU5BQkxFKFZJREVPKSAqLwotfQot
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9ndGsvRE9NL1dlYktpdERPTU1lZGlhRXJyb3IuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NTWVkaWFFcnJvci5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZTZlNTI0Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NTWVk
aWFFcnJvci5oCisrKyAvZGV2L251bGwKQEAgLTEsODQgKzAsMCBAQAotLyoKLSAqICBUaGlzIGZp
bGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCi0gKiAgVGhpcyBm
aWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1P
RElGWSEKLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAq
ICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
LSAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiAgQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBXZWJLaXRET01NZWRpYUVycm9yX2gKLSNkZWZpbmUg
V2ViS2l0RE9NTWVkaWFFcnJvcl9oCi0KLSNpZmRlZiBXRUJLSVRfRE9NX1VTRV9VTlNUQUJMRV9B
UEkKLQotI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+Ci0jaW5jbHVkZSA8d2Via2l0ZG9tL1dlYktp
dERPTU9iamVjdC5oPgotI2luY2x1ZGUgPHdlYmtpdGRvbS93ZWJraXRkb21kZWZpbmVzLXVuc3Rh
YmxlLmg+Ci0KLUdfQkVHSU5fREVDTFMKLQotI2RlZmluZSBXRUJLSVRfRE9NX1RZUEVfTUVESUFf
RVJST1IgICAgICAgICAgICAod2Via2l0X2RvbV9tZWRpYV9lcnJvcl9nZXRfdHlwZSgpKQotI2Rl
ZmluZSBXRUJLSVRfRE9NX01FRElBX0VSUk9SKG9iaikgICAgICAgICAgICAoR19UWVBFX0NIRUNL
X0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9ET01fVFlQRV9NRURJQV9FUlJPUiwgV2ViS2l0
RE9NTWVkaWFFcnJvcikpCi0jZGVmaW5lIFdFQktJVF9ET01fTUVESUFfRVJST1JfQ0xBU1Moa2xh
c3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLCAgV0VCS0lUX0RPTV9UWVBF
X01FRElBX0VSUk9SLCBXZWJLaXRET01NZWRpYUVycm9yQ2xhc3MpCi0jZGVmaW5lIFdFQktJVF9E
T01fSVNfTUVESUFfRVJST1Iob2JqKSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQ
RSgob2JqKSwgV0VCS0lUX0RPTV9UWVBFX01FRElBX0VSUk9SKSkKLSNkZWZpbmUgV0VCS0lUX0RP
TV9JU19NRURJQV9FUlJPUl9DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChr
bGFzcyksICBXRUJLSVRfRE9NX1RZUEVfTUVESUFfRVJST1IpKQotI2RlZmluZSBXRUJLSVRfRE9N
X01FRElBX0VSUk9SX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygo
b2JqKSwgIFdFQktJVF9ET01fVFlQRV9NRURJQV9FUlJPUiwgV2ViS2l0RE9NTWVkaWFFcnJvckNs
YXNzKSkKLQotLyoqCi0gKiBXRUJLSVRfRE9NX01FRElBX0VSUk9SX01FRElBX0VSUl9BQk9SVEVE
OgotICovCi0jZGVmaW5lIFdFQktJVF9ET01fTUVESUFfRVJST1JfTUVESUFfRVJSX0FCT1JURUQg
MQotCi0vKioKLSAqIFdFQktJVF9ET01fTUVESUFfRVJST1JfTUVESUFfRVJSX05FVFdPUks6Ci0g
Ki8KLSNkZWZpbmUgV0VCS0lUX0RPTV9NRURJQV9FUlJPUl9NRURJQV9FUlJfTkVUV09SSyAyCi0K
LS8qKgotICogV0VCS0lUX0RPTV9NRURJQV9FUlJPUl9NRURJQV9FUlJfREVDT0RFOgotICovCi0j
ZGVmaW5lIFdFQktJVF9ET01fTUVESUFfRVJST1JfTUVESUFfRVJSX0RFQ09ERSAzCi0KLS8qKgot
ICogV0VCS0lUX0RPTV9NRURJQV9FUlJPUl9NRURJQV9FUlJfU1JDX05PVF9TVVBQT1JURUQ6Ci0g
Ki8KLSNkZWZpbmUgV0VCS0lUX0RPTV9NRURJQV9FUlJPUl9NRURJQV9FUlJfU1JDX05PVF9TVVBQ
T1JURUQgNAotCi1zdHJ1Y3QgX1dlYktpdERPTU1lZGlhRXJyb3IgewotICAgIFdlYktpdERPTU9i
amVjdCBwYXJlbnRfaW5zdGFuY2U7Ci19OwotCi1zdHJ1Y3QgX1dlYktpdERPTU1lZGlhRXJyb3JD
bGFzcyB7Ci0gICAgV2ViS2l0RE9NT2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOwotfTsKLQotV0VC
S0lUX0FQSSBHVHlwZQotd2Via2l0X2RvbV9tZWRpYV9lcnJvcl9nZXRfdHlwZSh2b2lkKTsKLQot
LyoqCi0gKiB3ZWJraXRfZG9tX21lZGlhX2Vycm9yX2dldF9jb2RlOgotICogQHNlbGY6IEEgI1dl
YktpdERPTU1lZGlhRXJyb3IKLSAqCi0gKiBSZXR1cm5zOiBBICNndXNob3J0Ci0gKgotICogU3Rh
YmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIGd1c2hvcnQKLXdlYmtpdF9kb21fbWVk
aWFfZXJyb3JfZ2V0X2NvZGUoV2ViS2l0RE9NTWVkaWFFcnJvciogc2VsZik7Ci0KLUdfRU5EX0RF
Q0xTCi0KLSNlbmRpZiAvKiBXRUJLSVRfRE9NX1VTRV9VTlNUQUJMRV9BUEkgKi8KLSNlbmRpZiAv
KiBXZWJLaXRET01NZWRpYUVycm9yX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NTWVkaWFFcnJvclBy
aXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0
ay9ET00vV2ViS2l0RE9NTWVkaWFFcnJvclByaXZhdGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggYTBjYmUwYi4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTU1lZGlhRXJyb3JQcml2YXRlLmgK
KysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi0vKgotICogIFRoaXMgZmlsZSBpcyBwYXJ0
IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAqICBUaGlzIGZpbGUgaGFzIGJl
ZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQotICoK
LSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAot
ICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
LSAqLwotCi0jaWZuZGVmIFdlYktpdERPTU1lZGlhRXJyb3JQcml2YXRlX2gKLSNkZWZpbmUgV2Vi
S2l0RE9NTWVkaWFFcnJvclByaXZhdGVfaAotCi0jaW5jbHVkZSA8V2ViQ29yZS9NZWRpYUVycm9y
Lmg+Ci0jaW5jbHVkZSA8d2Via2l0ZG9tL1dlYktpdERPTU1lZGlhRXJyb3IuaD4KLSNpZiBFTkFC
TEUoVklERU8pCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotV2ViS2l0RE9NTWVkaWFFcnJvciogd3Jh
cE1lZGlhRXJyb3IoV2ViQ29yZTo6TWVkaWFFcnJvciopOwotV2ViS2l0RE9NTWVkaWFFcnJvciog
a2l0KFdlYkNvcmU6Ok1lZGlhRXJyb3IqKTsKLVdlYkNvcmU6Ok1lZGlhRXJyb3IqIGNvcmUoV2Vi
S2l0RE9NTWVkaWFFcnJvciopOwotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvKiBF
TkFCTEUoVklERU8pICovCi0KLSNlbmRpZiAvKiBXZWJLaXRET01NZWRpYUVycm9yUHJpdmF0ZV9o
ICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9ndGsvRE9NL1dlYktpdERPTU1lZGlhUXVlcnlMaXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NTWVkaWFRdWVy
eUxpc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNDg1MmM5Li4wMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9E
T00vV2ViS2l0RE9NTWVkaWFRdWVyeUxpc3QuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTY3ICsw
LDAgQEAKLS8qCi0gKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJj
ZSBwcm9qZWN0LgotICogIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUt
YmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQot
ICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoK
LSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAot
ICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJXZWJLaXRET01NZWRpYVF1ZXJ5TGlzdC5oIgotCi0jaW5jbHVkZSA8V2Vi
Q29yZS9DU1NJbXBvcnRSdWxlLmg+Ci0jaW5jbHVkZSAiRE9NT2JqZWN0Q2FjaGUuaCIKLSNpbmNs
dWRlIDxXZWJDb3JlL0RvY3VtZW50Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9FeGNlcHRpb25Db2Rl
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9FeGNlcHRpb25Db2RlRGVzY3JpcHRpb24uaD4KLSNpbmNs
dWRlIDxXZWJDb3JlL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5oPgotI2luY2x1ZGUgIldlYktpdERP
TU1lZGlhUXVlcnlMaXN0UHJpdmF0ZS5oIgotI2luY2x1ZGUgIldlYktpdERPTVByaXZhdGUuaCIK
LSNpbmNsdWRlICJDb252ZXJ0VG9VVEY4U3RyaW5nLmgiCi0jaW5jbHVkZSA8d3RmL0dldFB0ci5o
PgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotI2RlZmluZSBXRUJLSVRfRE9NX01FRElBX1FV
RVJZX0xJU1RfR0VUX1BSSVZBVEUob2JqKSBHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUob2Jq
LCBXRUJLSVRfRE9NX1RZUEVfTUVESUFfUVVFUllfTElTVCwgV2ViS2l0RE9NTWVkaWFRdWVyeUxp
c3RQcml2YXRlKQotCi10eXBlZGVmIHN0cnVjdCBfV2ViS2l0RE9NTWVkaWFRdWVyeUxpc3RQcml2
YXRlIHsKLSAgICBSZWZQdHI8V2ViQ29yZTo6TWVkaWFRdWVyeUxpc3Q+IGNvcmVPYmplY3Q7Ci19
IFdlYktpdERPTU1lZGlhUXVlcnlMaXN0UHJpdmF0ZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0K
LVdlYktpdERPTU1lZGlhUXVlcnlMaXN0KiBraXQoV2ViQ29yZTo6TWVkaWFRdWVyeUxpc3QqIG9i
aikKLXsKLSAgICBpZiAoIW9iaikKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBpZiAoZ3BvaW50
ZXIgcmV0ID0gRE9NT2JqZWN0Q2FjaGU6OmdldChvYmopKQotICAgICAgICByZXR1cm4gV0VCS0lU
X0RPTV9NRURJQV9RVUVSWV9MSVNUKHJldCk7Ci0KLSAgICByZXR1cm4gd3JhcE1lZGlhUXVlcnlM
aXN0KG9iaik7Ci19Ci0KLVdlYkNvcmU6Ok1lZGlhUXVlcnlMaXN0KiBjb3JlKFdlYktpdERPTU1l
ZGlhUXVlcnlMaXN0KiByZXF1ZXN0KQotewotICAgIHJldHVybiByZXF1ZXN0ID8gc3RhdGljX2Nh
c3Q8V2ViQ29yZTo6TWVkaWFRdWVyeUxpc3QqPihXRUJLSVRfRE9NX09CSkVDVChyZXF1ZXN0KS0+
Y29yZU9iamVjdCkgOiAwOwotfQotCi1XZWJLaXRET01NZWRpYVF1ZXJ5TGlzdCogd3JhcE1lZGlh
UXVlcnlMaXN0KFdlYkNvcmU6Ok1lZGlhUXVlcnlMaXN0KiBjb3JlT2JqZWN0KQotewotICAgIEFT
U0VSVChjb3JlT2JqZWN0KTsKLSAgICByZXR1cm4gV0VCS0lUX0RPTV9NRURJQV9RVUVSWV9MSVNU
KGdfb2JqZWN0X25ldyhXRUJLSVRfRE9NX1RZUEVfTUVESUFfUVVFUllfTElTVCwgImNvcmUtb2Jq
ZWN0IiwgY29yZU9iamVjdCwgbnVsbHB0cikpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQK
LQotR19ERUZJTkVfVFlQRShXZWJLaXRET01NZWRpYVF1ZXJ5TGlzdCwgd2Via2l0X2RvbV9tZWRp
YV9xdWVyeV9saXN0LCBXRUJLSVRfRE9NX1RZUEVfT0JKRUNUKQotCi1lbnVtIHsKLSAgICBQUk9Q
XzAsCi0gICAgUFJPUF9NRURJQSwKLSAgICBQUk9QX01BVENIRVMsCi19OwotCi1zdGF0aWMgdm9p
ZCB3ZWJraXRfZG9tX21lZGlhX3F1ZXJ5X2xpc3RfZmluYWxpemUoR09iamVjdCogb2JqZWN0KQot
ewotICAgIFdlYktpdERPTU1lZGlhUXVlcnlMaXN0UHJpdmF0ZSogcHJpdiA9IFdFQktJVF9ET01f
TUVESUFfUVVFUllfTElTVF9HRVRfUFJJVkFURShvYmplY3QpOwotCi0gICAgV2ViS2l0OjpET01P
YmplY3RDYWNoZTo6Zm9yZ2V0KHByaXYtPmNvcmVPYmplY3QuZ2V0KCkpOwotCi0gICAgcHJpdi0+
fldlYktpdERPTU1lZGlhUXVlcnlMaXN0UHJpdmF0ZSgpOwotICAgIEdfT0JKRUNUX0NMQVNTKHdl
YmtpdF9kb21fbWVkaWFfcXVlcnlfbGlzdF9wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmplY3Qp
OwotfQotCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX21lZGlhX3F1ZXJ5X2xpc3RfZ2V0X3Byb3Bl
cnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcGVydHlJZCwgR1ZhbHVlKiB2YWx1ZSwgR1Bh
cmFtU3BlYyogcHNwZWMpCi17Ci0gICAgV2ViS2l0RE9NTWVkaWFRdWVyeUxpc3QqIHNlbGYgPSBX
RUJLSVRfRE9NX01FRElBX1FVRVJZX0xJU1Qob2JqZWN0KTsKLQotICAgIHN3aXRjaCAocHJvcGVy
dHlJZCkgewotICAgIGNhc2UgUFJPUF9NRURJQToKLSAgICAgICAgZ192YWx1ZV90YWtlX3N0cmlu
Zyh2YWx1ZSwgd2Via2l0X2RvbV9tZWRpYV9xdWVyeV9saXN0X2dldF9tZWRpYShzZWxmKSk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9NQVRDSEVTOgotICAgICAgICBnX3ZhbHVlX3Nl
dF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfZG9tX21lZGlhX3F1ZXJ5X2xpc3RfZ2V0X21hdGNoZXMo
c2VsZikpOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBHX09CSkVDVF9X
QVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wZXJ0eUlkLCBwc3BlYyk7Ci0gICAg
ICAgIGJyZWFrOwotICAgIH0KLX0KLQotc3RhdGljIEdPYmplY3QqIHdlYmtpdF9kb21fbWVkaWFf
cXVlcnlfbGlzdF9jb25zdHJ1Y3RvcihHVHlwZSB0eXBlLCBndWludCBjb25zdHJ1Y3RQcm9wZXJ0
aWVzQ291bnQsIEdPYmplY3RDb25zdHJ1Y3RQYXJhbSogY29uc3RydWN0UHJvcGVydGllcykKLXsK
LSAgICBHT2JqZWN0KiBvYmplY3QgPSBHX09CSkVDVF9DTEFTUyh3ZWJraXRfZG9tX21lZGlhX3F1
ZXJ5X2xpc3RfcGFyZW50X2NsYXNzKS0+Y29uc3RydWN0b3IodHlwZSwgY29uc3RydWN0UHJvcGVy
dGllc0NvdW50LCBjb25zdHJ1Y3RQcm9wZXJ0aWVzKTsKLQotICAgIFdlYktpdERPTU1lZGlhUXVl
cnlMaXN0UHJpdmF0ZSogcHJpdiA9IFdFQktJVF9ET01fTUVESUFfUVVFUllfTElTVF9HRVRfUFJJ
VkFURShvYmplY3QpOwotICAgIHByaXYtPmNvcmVPYmplY3QgPSBzdGF0aWNfY2FzdDxXZWJDb3Jl
OjpNZWRpYVF1ZXJ5TGlzdCo+KFdFQktJVF9ET01fT0JKRUNUKG9iamVjdCktPmNvcmVPYmplY3Qp
OwotICAgIFdlYktpdDo6RE9NT2JqZWN0Q2FjaGU6OnB1dChwcml2LT5jb3JlT2JqZWN0LmdldCgp
LCBvYmplY3QpOwotCi0gICAgcmV0dXJuIG9iamVjdDsKLX0KLQotc3RhdGljIHZvaWQgd2Via2l0
X2RvbV9tZWRpYV9xdWVyeV9saXN0X2NsYXNzX2luaXQoV2ViS2l0RE9NTWVkaWFRdWVyeUxpc3RD
bGFzcyogcmVxdWVzdENsYXNzKQotewotICAgIEdPYmplY3RDbGFzcyogZ29iamVjdENsYXNzID0g
R19PQkpFQ1RfQ0xBU1MocmVxdWVzdENsYXNzKTsKLSAgICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZh
dGUoZ29iamVjdENsYXNzLCBzaXplb2YoV2ViS2l0RE9NTWVkaWFRdWVyeUxpc3RQcml2YXRlKSk7
Ci0gICAgZ29iamVjdENsYXNzLT5jb25zdHJ1Y3RvciA9IHdlYmtpdF9kb21fbWVkaWFfcXVlcnlf
bGlzdF9jb25zdHJ1Y3RvcjsKLSAgICBnb2JqZWN0Q2xhc3MtPmZpbmFsaXplID0gd2Via2l0X2Rv
bV9tZWRpYV9xdWVyeV9saXN0X2ZpbmFsaXplOwotICAgIGdvYmplY3RDbGFzcy0+Z2V0X3Byb3Bl
cnR5ID0gd2Via2l0X2RvbV9tZWRpYV9xdWVyeV9saXN0X2dldF9wcm9wZXJ0eTsKLQotICAgIGdf
b2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKLSAg
ICAgICAgUFJPUF9NRURJQSwKLSAgICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZygKLSAgICAgICAg
ICAgICJtZWRpYSIsCi0gICAgICAgICAgICAiTWVkaWFRdWVyeUxpc3Q6bWVkaWEiLAotICAgICAg
ICAgICAgInJlYWQtb25seSBnY2hhciogTWVkaWFRdWVyeUxpc3Q6bWVkaWEiLAotICAgICAgICAg
ICAgIiIsCi0gICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKLQotICAgIGdfb2Jq
ZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAg
ICAgUFJPUF9NQVRDSEVTLAotICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigKLSAgICAgICAg
ICAgICJtYXRjaGVzIiwKLSAgICAgICAgICAgICJNZWRpYVF1ZXJ5TGlzdDptYXRjaGVzIiwKLSAg
ICAgICAgICAgICJyZWFkLW9ubHkgZ2Jvb2xlYW4gTWVkaWFRdWVyeUxpc3Q6bWF0Y2hlcyIsCi0g
ICAgICAgICAgICBGQUxTRSwKLSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSkpOwot
Ci19Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdF9kb21fbWVkaWFfcXVlcnlfbGlzdF9pbml0KFdlYktp
dERPTU1lZGlhUXVlcnlMaXN0KiByZXF1ZXN0KQotewotICAgIFdlYktpdERPTU1lZGlhUXVlcnlM
aXN0UHJpdmF0ZSogcHJpdiA9IFdFQktJVF9ET01fTUVESUFfUVVFUllfTElTVF9HRVRfUFJJVkFU
RShyZXF1ZXN0KTsKLSAgICBuZXcgKHByaXYpIFdlYktpdERPTU1lZGlhUXVlcnlMaXN0UHJpdmF0
ZSgpOwotfQotCi1nY2hhciogd2Via2l0X2RvbV9tZWRpYV9xdWVyeV9saXN0X2dldF9tZWRpYShX
ZWJLaXRET01NZWRpYVF1ZXJ5TGlzdCogc2VsZikKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJl
YWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9J
U19NRURJQV9RVUVSWV9MSVNUKHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpNZWRpYVF1ZXJ5TGlz
dCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBnY2hhciogcmVzdWx0ID0gY29udmVy
dFRvVVRGOFN0cmluZyhpdGVtLT5tZWRpYSgpKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1n
Ym9vbGVhbiB3ZWJraXRfZG9tX21lZGlhX3F1ZXJ5X2xpc3RfZ2V0X21hdGNoZXMoV2ViS2l0RE9N
TWVkaWFRdWVyeUxpc3QqIHNlbGYpCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0
YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfTUVESUFf
UVVFUllfTElTVChzZWxmKSwgRkFMU0UpOwotICAgIFdlYkNvcmU6Ok1lZGlhUXVlcnlMaXN0KiBp
dGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdib29sZWFuIHJlc3VsdCA9IGl0ZW0tPm1h
dGNoZXMoKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTU1lZGlh
UXVlcnlMaXN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9ndGsvRE9NL1dlYktpdERPTU1lZGlhUXVlcnlMaXN0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDc0MWI1MzcuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01NZWRpYVF1ZXJ5TGlzdC5oCisr
KyAvZGV2L251bGwKQEAgLTEsNzUgKzAsMCBAQAotLyoKLSAqICBUaGlzIGZpbGUgaXMgcGFydCBv
ZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCi0gKiAgVGhpcyBmaWxlIGhhcyBiZWVu
IGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKLSAqCi0g
KiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAq
ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqICBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0g
Ki8KLQotI2lmbmRlZiBXZWJLaXRET01NZWRpYVF1ZXJ5TGlzdF9oCi0jZGVmaW5lIFdlYktpdERP
TU1lZGlhUXVlcnlMaXN0X2gKLQotI2lmZGVmIFdFQktJVF9ET01fVVNFX1VOU1RBQkxFX0FQSQot
Ci0jaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KLSNpbmNsdWRlIDx3ZWJraXRkb20vV2ViS2l0RE9N
T2JqZWN0Lmg+Ci0jaW5jbHVkZSA8d2Via2l0ZG9tL3dlYmtpdGRvbWRlZmluZXMtdW5zdGFibGUu
aD4KLQotR19CRUdJTl9ERUNMUwotCi0jZGVmaW5lIFdFQktJVF9ET01fVFlQRV9NRURJQV9RVUVS
WV9MSVNUICAgICAgICAgICAgKHdlYmtpdF9kb21fbWVkaWFfcXVlcnlfbGlzdF9nZXRfdHlwZSgp
KQotI2RlZmluZSBXRUJLSVRfRE9NX01FRElBX1FVRVJZX0xJU1Qob2JqKSAgICAgICAgICAgIChH
X1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwgV0VCS0lUX0RPTV9UWVBFX01FRElBX1FV
RVJZX0xJU1QsIFdlYktpdERPTU1lZGlhUXVlcnlMaXN0KSkKLSNkZWZpbmUgV0VCS0lUX0RPTV9N
RURJQV9RVUVSWV9MSVNUX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1Qo
KGtsYXNzKSwgIFdFQktJVF9ET01fVFlQRV9NRURJQV9RVUVSWV9MSVNULCBXZWJLaXRET01NZWRp
YVF1ZXJ5TGlzdENsYXNzKQotI2RlZmluZSBXRUJLSVRfRE9NX0lTX01FRElBX1FVRVJZX0xJU1Qo
b2JqKSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX0RP
TV9UWVBFX01FRElBX1FVRVJZX0xJU1QpKQotI2RlZmluZSBXRUJLSVRfRE9NX0lTX01FRElBX1FV
RVJZX0xJU1RfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAg
V0VCS0lUX0RPTV9UWVBFX01FRElBX1FVRVJZX0xJU1QpKQotI2RlZmluZSBXRUJLSVRfRE9NX01F
RElBX1FVRVJZX0xJU1RfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNT
KChvYmopLCAgV0VCS0lUX0RPTV9UWVBFX01FRElBX1FVRVJZX0xJU1QsIFdlYktpdERPTU1lZGlh
UXVlcnlMaXN0Q2xhc3MpKQotCi1zdHJ1Y3QgX1dlYktpdERPTU1lZGlhUXVlcnlMaXN0IHsKLSAg
ICBXZWJLaXRET01PYmplY3QgcGFyZW50X2luc3RhbmNlOwotfTsKLQotc3RydWN0IF9XZWJLaXRE
T01NZWRpYVF1ZXJ5TGlzdENsYXNzIHsKLSAgICBXZWJLaXRET01PYmplY3RDbGFzcyBwYXJlbnRf
Y2xhc3M7Ci19OwotCi1XRUJLSVRfQVBJIEdUeXBlCi13ZWJraXRfZG9tX21lZGlhX3F1ZXJ5X2xp
c3RfZ2V0X3R5cGUodm9pZCk7Ci0KLS8qKgotICogd2Via2l0X2RvbV9tZWRpYV9xdWVyeV9saXN0
X2dldF9tZWRpYToKLSAqIEBzZWxmOiBBICNXZWJLaXRET01NZWRpYVF1ZXJ5TGlzdAotICoKLSAq
IFJldHVybnM6IEEgI2djaGFyCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJL
SVRfQVBJIGdjaGFyKgotd2Via2l0X2RvbV9tZWRpYV9xdWVyeV9saXN0X2dldF9tZWRpYShXZWJL
aXRET01NZWRpYVF1ZXJ5TGlzdCogc2VsZik7Ci0KLS8qKgotICogd2Via2l0X2RvbV9tZWRpYV9x
dWVyeV9saXN0X2dldF9tYXRjaGVzOgotICogQHNlbGY6IEEgI1dlYktpdERPTU1lZGlhUXVlcnlM
aXN0Ci0gKgotICogUmV0dXJuczogQSAjZ2Jvb2xlYW4KLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3Rh
YmxlCi0qKi8KLVdFQktJVF9BUEkgZ2Jvb2xlYW4KLXdlYmtpdF9kb21fbWVkaWFfcXVlcnlfbGlz
dF9nZXRfbWF0Y2hlcyhXZWJLaXRET01NZWRpYVF1ZXJ5TGlzdCogc2VsZik7Ci0KLUdfRU5EX0RF
Q0xTCi0KLSNlbmRpZiAvKiBXRUJLSVRfRE9NX1VTRV9VTlNUQUJMRV9BUEkgKi8KLSNlbmRpZiAv
KiBXZWJLaXRET01NZWRpYVF1ZXJ5TGlzdF9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTU1lZGlhUXVl
cnlMaXN0UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01NZWRpYVF1ZXJ5TGlzdFByaXZhdGUuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggODU1MzY5Yi4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTU1lZGlhUXVl
cnlMaXN0UHJpdmF0ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotLyoKLSAqICBU
aGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCi0gKiAg
VGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8g
Tk9UIE1PRElGWSEKLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgot
ICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiAgQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBXZWJLaXRET01NZWRpYVF1ZXJ5TGlzdFBy
aXZhdGVfaAotI2RlZmluZSBXZWJLaXRET01NZWRpYVF1ZXJ5TGlzdFByaXZhdGVfaAotCi0jaW5j
bHVkZSA8V2ViQ29yZS9NZWRpYVF1ZXJ5TGlzdC5oPgotI2luY2x1ZGUgPHdlYmtpdGRvbS9XZWJL
aXRET01NZWRpYVF1ZXJ5TGlzdC5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLVdlYktpdERPTU1l
ZGlhUXVlcnlMaXN0KiB3cmFwTWVkaWFRdWVyeUxpc3QoV2ViQ29yZTo6TWVkaWFRdWVyeUxpc3Qq
KTsKLVdlYktpdERPTU1lZGlhUXVlcnlMaXN0KiBraXQoV2ViQ29yZTo6TWVkaWFRdWVyeUxpc3Qq
KTsKLVdlYkNvcmU6Ok1lZGlhUXVlcnlMaXN0KiBjb3JlKFdlYktpdERPTU1lZGlhUXVlcnlMaXN0
Kik7Ci19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8qIFdlYktpdERPTU1lZGlhUXVl
cnlMaXN0UHJpdmF0ZV9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTU1lZGlhVHJhY2tTdXBwb3J0ZWRD
b25zdHJhaW50cy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9ndGsvRE9NL1dlYktpdERPTU1lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50cy5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBhZGNhYWMuLjAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRE
T01NZWRpYVRyYWNrU3VwcG9ydGVkQ29uc3RyYWludHMuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
MTEwICswLDAgQEAKLS8qCi0gKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVu
IHNvdXJjZSBwcm9qZWN0LgotICogIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2Vu
ZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICogIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwot
ICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJXZWJLaXRET01NZWRpYVRyYWNrU3VwcG9ydGVkQ29uc3RyYWlu
dHMuaCIKLQotI2luY2x1ZGUgPFdlYkNvcmUvQ1NTSW1wb3J0UnVsZS5oPgotI2luY2x1ZGUgIkRP
TU9iamVjdENhY2hlLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudC5oPgotI2luY2x1ZGUg
PFdlYkNvcmUvRXhjZXB0aW9uQ29kZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRXhjZXB0aW9uQ29k
ZURlc2NyaXB0aW9uLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9KU01haW5UaHJlYWRFeGVjU3RhdGUu
aD4KLSNpbmNsdWRlICJXZWJLaXRET01NZWRpYVRyYWNrU3VwcG9ydGVkQ29uc3RyYWludHNQcml2
YXRlLmgiCi0jaW5jbHVkZSAiV2ViS2l0RE9NUHJpdmF0ZS5oIgotI2luY2x1ZGUgIkNvbnZlcnRU
b1VURjhTdHJpbmcuaCIKLSNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgotCi0jZGVmaW5lIFdFQktJVF9ET01fTUVESUFfVFJBQ0tfU1VQUE9SVEVEX0NPTlNU
UkFJTlRTX0dFVF9QUklWQVRFKG9iaikgR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKG9iaiwg
V0VCS0lUX0RPTV9UWVBFX01FRElBX1RSQUNLX1NVUFBPUlRFRF9DT05TVFJBSU5UUywgV2ViS2l0
RE9NTWVkaWFUcmFja1N1cHBvcnRlZENvbnN0cmFpbnRzUHJpdmF0ZSkKLQotdHlwZWRlZiBzdHJ1
Y3QgX1dlYktpdERPTU1lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50c1ByaXZhdGUgewotI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhVHJhY2tTdXBw
b3J0ZWRDb25zdHJhaW50cz4gY29yZU9iamVjdDsKLSNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RS
RUFNKQotfSBXZWJLaXRET01NZWRpYVRyYWNrU3VwcG9ydGVkQ29uc3RyYWludHNQcml2YXRlOwot
Ci0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVdlYktp
dERPTU1lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50cyoga2l0KFdlYkNvcmU6Ok1lZGlhVHJh
Y2tTdXBwb3J0ZWRDb25zdHJhaW50cyogb2JqKQotewotICAgIGlmICghb2JqKQotICAgICAgICBy
ZXR1cm4gMDsKLQotICAgIGlmIChncG9pbnRlciByZXQgPSBET01PYmplY3RDYWNoZTo6Z2V0KG9i
aikpCi0gICAgICAgIHJldHVybiBXRUJLSVRfRE9NX01FRElBX1RSQUNLX1NVUFBPUlRFRF9DT05T
VFJBSU5UUyhyZXQpOwotCi0gICAgcmV0dXJuIHdyYXBNZWRpYVRyYWNrU3VwcG9ydGVkQ29uc3Ry
YWludHMob2JqKTsKLX0KLQotV2ViQ29yZTo6TWVkaWFUcmFja1N1cHBvcnRlZENvbnN0cmFpbnRz
KiBjb3JlKFdlYktpdERPTU1lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50cyogcmVxdWVzdCkK
LXsKLSAgICByZXR1cm4gcmVxdWVzdCA/IHN0YXRpY19jYXN0PFdlYkNvcmU6Ok1lZGlhVHJhY2tT
dXBwb3J0ZWRDb25zdHJhaW50cyo+KFdFQktJVF9ET01fT0JKRUNUKHJlcXVlc3QpLT5jb3JlT2Jq
ZWN0KSA6IDA7Ci19Ci0KLVdlYktpdERPTU1lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50cyog
d3JhcE1lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50cyhXZWJDb3JlOjpNZWRpYVRyYWNrU3Vw
cG9ydGVkQ29uc3RyYWludHMqIGNvcmVPYmplY3QpCi17Ci0gICAgQVNTRVJUKGNvcmVPYmplY3Qp
OwotICAgIHJldHVybiBXRUJLSVRfRE9NX01FRElBX1RSQUNLX1NVUFBPUlRFRF9DT05TVFJBSU5U
UyhnX29iamVjdF9uZXcoV0VCS0lUX0RPTV9UWVBFX01FRElBX1RSQUNLX1NVUFBPUlRFRF9DT05T
VFJBSU5UUywgImNvcmUtb2JqZWN0IiwgY29yZU9iamVjdCwgbnVsbHB0cikpOwotfQotCi19IC8v
IG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCi0KLUdf
REVGSU5FX1RZUEUoV2ViS2l0RE9NTWVkaWFUcmFja1N1cHBvcnRlZENvbnN0cmFpbnRzLCB3ZWJr
aXRfZG9tX21lZGlhX3RyYWNrX3N1cHBvcnRlZF9jb25zdHJhaW50cywgV0VCS0lUX0RPTV9UWVBF
X09CSkVDVCkKLQotc3RhdGljIHZvaWQgd2Via2l0X2RvbV9tZWRpYV90cmFja19zdXBwb3J0ZWRf
Y29uc3RyYWludHNfZmluYWxpemUoR09iamVjdCogb2JqZWN0KQotewotICAgIFdlYktpdERPTU1l
ZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50c1ByaXZhdGUqIHByaXYgPSBXRUJLSVRfRE9NX01F
RElBX1RSQUNLX1NVUFBPUlRFRF9DT05TVFJBSU5UU19HRVRfUFJJVkFURShvYmplY3QpOwotI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgV2ViS2l0OjpET01PYmplY3RDYWNoZTo6Zm9yZ2V0
KHByaXYtPmNvcmVPYmplY3QuZ2V0KCkpOwotI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0p
Ci0gICAgcHJpdi0+fldlYktpdERPTU1lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50c1ByaXZh
dGUoKTsKLSAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfZG9tX21lZGlhX3RyYWNrX3N1cHBvcnRl
ZF9jb25zdHJhaW50c19wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmplY3QpOwotfQotCi1zdGF0
aWMgR09iamVjdCogd2Via2l0X2RvbV9tZWRpYV90cmFja19zdXBwb3J0ZWRfY29uc3RyYWludHNf
Y29uc3RydWN0b3IoR1R5cGUgdHlwZSwgZ3VpbnQgY29uc3RydWN0UHJvcGVydGllc0NvdW50LCBH
T2JqZWN0Q29uc3RydWN0UGFyYW0qIGNvbnN0cnVjdFByb3BlcnRpZXMpCi17Ci0gICAgR09iamVj
dCogb2JqZWN0ID0gR19PQkpFQ1RfQ0xBU1Mod2Via2l0X2RvbV9tZWRpYV90cmFja19zdXBwb3J0
ZWRfY29uc3RyYWludHNfcGFyZW50X2NsYXNzKS0+Y29uc3RydWN0b3IodHlwZSwgY29uc3RydWN0
UHJvcGVydGllc0NvdW50LCBjb25zdHJ1Y3RQcm9wZXJ0aWVzKTsKLSNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQotICAgIFdlYktpdERPTU1lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50c1ByaXZh
dGUqIHByaXYgPSBXRUJLSVRfRE9NX01FRElBX1RSQUNLX1NVUFBPUlRFRF9DT05TVFJBSU5UU19H
RVRfUFJJVkFURShvYmplY3QpOwotICAgIHByaXYtPmNvcmVPYmplY3QgPSBzdGF0aWNfY2FzdDxX
ZWJDb3JlOjpNZWRpYVRyYWNrU3VwcG9ydGVkQ29uc3RyYWludHMqPihXRUJLSVRfRE9NX09CSkVD
VChvYmplY3QpLT5jb3JlT2JqZWN0KTsKLSAgICBXZWJLaXQ6OkRPTU9iamVjdENhY2hlOjpwdXQo
cHJpdi0+Y29yZU9iamVjdC5nZXQoKSwgb2JqZWN0KTsKLSNlbmRpZiAvLyBFTkFCTEUoTUVESUFf
U1RSRUFNKQotICAgIHJldHVybiBvYmplY3Q7Ci19Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdF9kb21f
bWVkaWFfdHJhY2tfc3VwcG9ydGVkX2NvbnN0cmFpbnRzX2NsYXNzX2luaXQoV2ViS2l0RE9NTWVk
aWFUcmFja1N1cHBvcnRlZENvbnN0cmFpbnRzQ2xhc3MqIHJlcXVlc3RDbGFzcykKLXsKLSAgICBH
T2JqZWN0Q2xhc3MqIGdvYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKHJlcXVlc3RDbGFzcyk7
Ci0gICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKGdvYmplY3RDbGFzcywgc2l6ZW9mKFdlYktp
dERPTU1lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50c1ByaXZhdGUpKTsKLSAgICBnb2JqZWN0
Q2xhc3MtPmNvbnN0cnVjdG9yID0gd2Via2l0X2RvbV9tZWRpYV90cmFja19zdXBwb3J0ZWRfY29u
c3RyYWludHNfY29uc3RydWN0b3I7Ci0gICAgZ29iamVjdENsYXNzLT5maW5hbGl6ZSA9IHdlYmtp
dF9kb21fbWVkaWFfdHJhY2tfc3VwcG9ydGVkX2NvbnN0cmFpbnRzX2ZpbmFsaXplOwotfQotCi1z
dGF0aWMgdm9pZCB3ZWJraXRfZG9tX21lZGlhX3RyYWNrX3N1cHBvcnRlZF9jb25zdHJhaW50c19p
bml0KFdlYktpdERPTU1lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50cyogcmVxdWVzdCkKLXsK
LSAgICBXZWJLaXRET01NZWRpYVRyYWNrU3VwcG9ydGVkQ29uc3RyYWludHNQcml2YXRlKiBwcml2
ID0gV0VCS0lUX0RPTV9NRURJQV9UUkFDS19TVVBQT1JURURfQ09OU1RSQUlOVFNfR0VUX1BSSVZB
VEUocmVxdWVzdCk7Ci0gICAgbmV3IChwcml2KSBXZWJLaXRET01NZWRpYVRyYWNrU3VwcG9ydGVk
Q29uc3RyYWludHNQcml2YXRlKCk7Ci19Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NTWVkaWFUcmFja1N1
cHBvcnRlZENvbnN0cmFpbnRzLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTU1lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50
cy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYTMwNDhmLi4wMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2Vi
S2l0RE9NTWVkaWFUcmFja1N1cHBvcnRlZENvbnN0cmFpbnRzLmgKKysrIC9kZXYvbnVsbApAQCAt
MSw1MyArMCwwIEBACi0vKgotICogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3Bl
biBzb3VyY2UgcHJvamVjdC4KLSAqICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdl
bmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQotICoKLSAqICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
LSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKLSAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiAgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKLSAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaWZuZGVmIFdl
YktpdERPTU1lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50c19oCi0jZGVmaW5lIFdlYktpdERP
TU1lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50c19oCi0KLSNpZmRlZiBXRUJLSVRfRE9NX1VT
RV9VTlNUQUJMRV9BUEkKLQotI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+Ci0jaW5jbHVkZSA8d2Vi
a2l0ZG9tL1dlYktpdERPTU9iamVjdC5oPgotI2luY2x1ZGUgPHdlYmtpdGRvbS93ZWJraXRkb21k
ZWZpbmVzLXVuc3RhYmxlLmg+Ci0KLUdfQkVHSU5fREVDTFMKLQotI2RlZmluZSBXRUJLSVRfRE9N
X1RZUEVfTUVESUFfVFJBQ0tfU1VQUE9SVEVEX0NPTlNUUkFJTlRTICAgICAgICAgICAgKHdlYmtp
dF9kb21fbWVkaWFfdHJhY2tfc3VwcG9ydGVkX2NvbnN0cmFpbnRzX2dldF90eXBlKCkpCi0jZGVm
aW5lIFdFQktJVF9ET01fTUVESUFfVFJBQ0tfU1VQUE9SVEVEX0NPTlNUUkFJTlRTKG9iaikgICAg
ICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9ET01fVFlQ
RV9NRURJQV9UUkFDS19TVVBQT1JURURfQ09OU1RSQUlOVFMsIFdlYktpdERPTU1lZGlhVHJhY2tT
dXBwb3J0ZWRDb25zdHJhaW50cykpCi0jZGVmaW5lIFdFQktJVF9ET01fTUVESUFfVFJBQ0tfU1VQ
UE9SVEVEX0NPTlNUUkFJTlRTX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NB
U1QoKGtsYXNzKSwgIFdFQktJVF9ET01fVFlQRV9NRURJQV9UUkFDS19TVVBQT1JURURfQ09OU1RS
QUlOVFMsIFdlYktpdERPTU1lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50c0NsYXNzKQotI2Rl
ZmluZSBXRUJLSVRfRE9NX0lTX01FRElBX1RSQUNLX1NVUFBPUlRFRF9DT05TVFJBSU5UUyhvYmop
ICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLCBXRUJLSVRfRE9NX1RZ
UEVfTUVESUFfVFJBQ0tfU1VQUE9SVEVEX0NPTlNUUkFJTlRTKSkKLSNkZWZpbmUgV0VCS0lUX0RP
TV9JU19NRURJQV9UUkFDS19TVVBQT1JURURfQ09OU1RSQUlOVFNfQ0xBU1Moa2xhc3MpIChHX1RZ
UEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX0RPTV9UWVBFX01FRElBX1RSQUNL
X1NVUFBPUlRFRF9DT05TVFJBSU5UUykpCi0jZGVmaW5lIFdFQktJVF9ET01fTUVESUFfVFJBQ0tf
U1VQUE9SVEVEX0NPTlNUUkFJTlRTX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dF
VF9DTEFTUygob2JqKSwgIFdFQktJVF9ET01fVFlQRV9NRURJQV9UUkFDS19TVVBQT1JURURfQ09O
U1RSQUlOVFMsIFdlYktpdERPTU1lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50c0NsYXNzKSkK
LQotc3RydWN0IF9XZWJLaXRET01NZWRpYVRyYWNrU3VwcG9ydGVkQ29uc3RyYWludHMgewotICAg
IFdlYktpdERPTU9iamVjdCBwYXJlbnRfaW5zdGFuY2U7Ci19OwotCi1zdHJ1Y3QgX1dlYktpdERP
TU1lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50c0NsYXNzIHsKLSAgICBXZWJLaXRET01PYmpl
Y3RDbGFzcyBwYXJlbnRfY2xhc3M7Ci19OwotCi1XRUJLSVRfQVBJIEdUeXBlCi13ZWJraXRfZG9t
X21lZGlhX3RyYWNrX3N1cHBvcnRlZF9jb25zdHJhaW50c19nZXRfdHlwZSh2b2lkKTsKLQotR19F
TkRfREVDTFMKLQotI2VuZGlmIC8qIFdFQktJVF9ET01fVVNFX1VOU1RBQkxFX0FQSSAqLwotI2Vu
ZGlmIC8qIFdlYktpdERPTU1lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50c19oICovCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsv
RE9NL1dlYktpdERPTU1lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50c1ByaXZhdGUuaCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0
RE9NTWVkaWFUcmFja1N1cHBvcnRlZENvbnN0cmFpbnRzUHJpdmF0ZS5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA3NDE2ZWVjLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NTWVkaWFUcmFja1N1
cHBvcnRlZENvbnN0cmFpbnRzUHJpdmF0ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBA
QAotLyoKLSAqICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHBy
b2plY3QuCi0gKiAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5k
aW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0g
KiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICog
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiAg
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBXZWJLaXRET01NZWRp
YVRyYWNrU3VwcG9ydGVkQ29uc3RyYWludHNQcml2YXRlX2gKLSNkZWZpbmUgV2ViS2l0RE9NTWVk
aWFUcmFja1N1cHBvcnRlZENvbnN0cmFpbnRzUHJpdmF0ZV9oCi0KLSNpbmNsdWRlIDxXZWJDb3Jl
L01lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50cy5oPgotI2luY2x1ZGUgPHdlYmtpdGRvbS9X
ZWJLaXRET01NZWRpYVRyYWNrU3VwcG9ydGVkQ29uc3RyYWludHMuaD4KLSNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLVdlYktpdERPTU1lZGlhVHJhY2tTdXBw
b3J0ZWRDb25zdHJhaW50cyogd3JhcE1lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50cyhXZWJD
b3JlOjpNZWRpYVRyYWNrU3VwcG9ydGVkQ29uc3RyYWludHMqKTsKLVdlYktpdERPTU1lZGlhVHJh
Y2tTdXBwb3J0ZWRDb25zdHJhaW50cyoga2l0KFdlYkNvcmU6Ok1lZGlhVHJhY2tTdXBwb3J0ZWRD
b25zdHJhaW50cyopOwotV2ViQ29yZTo6TWVkaWFUcmFja1N1cHBvcnRlZENvbnN0cmFpbnRzKiBj
b3JlKFdlYktpdERPTU1lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50cyopOwotfSAvLyBuYW1l
c3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvKiBFTkFCTEUoTUVESUFfU1RSRUFNKSAqLwotCi0jZW5k
aWYgLyogV2ViS2l0RE9NTWVkaWFUcmFja1N1cHBvcnRlZENvbnN0cmFpbnRzUHJpdmF0ZV9oICov
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9ndGsvRE9NL1dlYktpdERPTU1lc3NhZ2VQb3J0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NTWVzc2FnZVBvcnQuY3Bw
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOWUwN2ZkLi4wMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0
RE9NTWVzc2FnZVBvcnQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTQyICswLDAgQEAKLS8qCi0g
KiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0Lgot
ICogIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwu
IERPIE5PVCBNT0RJRlkhCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJXZWJLaXRET01NZXNzYWdlUG9ydC5oIgotCi0jaW5jbHVkZSA8V2ViQ29yZS9DU1NJbXBvcnRS
dWxlLmg+Ci0jaW5jbHVkZSAiRE9NT2JqZWN0Q2FjaGUuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0Rv
Y3VtZW50Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9FeGNlcHRpb25Db2RlLmg+Ci0jaW5jbHVkZSA8
V2ViQ29yZS9FeGNlcHRpb25Db2RlRGVzY3JpcHRpb24uaD4KLSNpbmNsdWRlICJHT2JqZWN0RXZl
bnRMaXN0ZW5lci5oIgotI2luY2x1ZGUgPFdlYkNvcmUvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmg+
Ci0jaW5jbHVkZSAiV2ViS2l0RE9NRXZlbnRQcml2YXRlLmgiCi0jaW5jbHVkZSAiV2ViS2l0RE9N
RXZlbnRUYXJnZXQuaCIKLSNpbmNsdWRlICJXZWJLaXRET01NZXNzYWdlUG9ydFByaXZhdGUuaCIK
LSNpbmNsdWRlICJXZWJLaXRET01Qcml2YXRlLmgiCi0jaW5jbHVkZSAiQ29udmVydFRvVVRGOFN0
cmluZy5oIgotI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
Ci0KLSNkZWZpbmUgV0VCS0lUX0RPTV9NRVNTQUdFX1BPUlRfR0VUX1BSSVZBVEUob2JqKSBHX1RZ
UEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUob2JqLCBXRUJLSVRfRE9NX1RZUEVfTUVTU0FHRV9QT1JU
LCBXZWJLaXRET01NZXNzYWdlUG9ydFByaXZhdGUpCi0KLXR5cGVkZWYgc3RydWN0IF9XZWJLaXRE
T01NZXNzYWdlUG9ydFByaXZhdGUgewotICAgIFJlZlB0cjxXZWJDb3JlOjpNZXNzYWdlUG9ydD4g
Y29yZU9iamVjdDsKLX0gV2ViS2l0RE9NTWVzc2FnZVBvcnRQcml2YXRlOwotCi1uYW1lc3BhY2Ug
V2ViS2l0IHsKLQotV2ViS2l0RE9NTWVzc2FnZVBvcnQqIGtpdChXZWJDb3JlOjpNZXNzYWdlUG9y
dCogb2JqKQotewotICAgIGlmICghb2JqKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIGlmIChn
cG9pbnRlciByZXQgPSBET01PYmplY3RDYWNoZTo6Z2V0KG9iaikpCi0gICAgICAgIHJldHVybiBX
RUJLSVRfRE9NX01FU1NBR0VfUE9SVChyZXQpOwotCi0gICAgcmV0dXJuIHdyYXBNZXNzYWdlUG9y
dChvYmopOwotfQotCi1XZWJDb3JlOjpNZXNzYWdlUG9ydCogY29yZShXZWJLaXRET01NZXNzYWdl
UG9ydCogcmVxdWVzdCkKLXsKLSAgICByZXR1cm4gcmVxdWVzdCA/IHN0YXRpY19jYXN0PFdlYkNv
cmU6Ok1lc3NhZ2VQb3J0Kj4oV0VCS0lUX0RPTV9PQkpFQ1QocmVxdWVzdCktPmNvcmVPYmplY3Qp
IDogMDsKLX0KLQotV2ViS2l0RE9NTWVzc2FnZVBvcnQqIHdyYXBNZXNzYWdlUG9ydChXZWJDb3Jl
OjpNZXNzYWdlUG9ydCogY29yZU9iamVjdCkKLXsKLSAgICBBU1NFUlQoY29yZU9iamVjdCk7Ci0g
ICAgcmV0dXJuIFdFQktJVF9ET01fTUVTU0FHRV9QT1JUKGdfb2JqZWN0X25ldyhXRUJLSVRfRE9N
X1RZUEVfTUVTU0FHRV9QT1JULCAiY29yZS1vYmplY3QiLCBjb3JlT2JqZWN0LCBudWxscHRyKSk7
Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi1zdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X2Rv
bV9tZXNzYWdlX3BvcnRfZGlzcGF0Y2hfZXZlbnQoV2ViS2l0RE9NRXZlbnRUYXJnZXQqIHRhcmdl
dCwgV2ViS2l0RE9NRXZlbnQqIGV2ZW50LCBHRXJyb3IqKiBlcnJvcikKLXsKLSAgICBXZWJDb3Jl
OjpFdmVudCogY29yZUV2ZW50ID0gV2ViS2l0Ojpjb3JlKGV2ZW50KTsKLSAgICBpZiAoIWNvcmVF
dmVudCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIFdlYkNvcmU6Ok1lc3NhZ2VQb3J0KiBj
b3JlVGFyZ2V0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6TWVzc2FnZVBvcnQqPihXRUJLSVRfRE9N
X09CSkVDVCh0YXJnZXQpLT5jb3JlT2JqZWN0KTsKLQotICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOwotICAgIGdib29sZWFuIHJlc3VsdCA9IGNvcmVUYXJnZXQtPmRpc3BhdGNoRXZl
bnRGb3JCaW5kaW5ncygqY29yZUV2ZW50LCBlYyk7Ci0gICAgaWYgKGVjKSB7Ci0gICAgICAgIFdl
YkNvcmU6OkV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiBkZXNjcmlwdGlvbihlYyk7Ci0gICAgICAg
IGdfc2V0X2Vycm9yX2xpdGVyYWwoZXJyb3IsIGdfcXVhcmtfZnJvbV9zdHJpbmcoIldFQktJVF9E
T00iKSwgZGVzY3JpcHRpb24uY29kZSwgZGVzY3JpcHRpb24ubmFtZSk7Ci0gICAgfQotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci0KLXN0YXRpYyBnYm9vbGVhbiB3ZWJraXRfZG9tX21lc3NhZ2VfcG9y
dF9hZGRfZXZlbnRfbGlzdGVuZXIoV2ViS2l0RE9NRXZlbnRUYXJnZXQqIHRhcmdldCwgY29uc3Qg
Y2hhciogZXZlbnROYW1lLCBHQ2xvc3VyZSogaGFuZGxlciwgZ2Jvb2xlYW4gdXNlQ2FwdHVyZSkK
LXsKLSAgICBXZWJDb3JlOjpNZXNzYWdlUG9ydCogY29yZVRhcmdldCA9IHN0YXRpY19jYXN0PFdl
YkNvcmU6Ok1lc3NhZ2VQb3J0Kj4oV0VCS0lUX0RPTV9PQkpFQ1QodGFyZ2V0KS0+Y29yZU9iamVj
dCk7Ci0gICAgcmV0dXJuIFdlYktpdDo6R09iamVjdEV2ZW50TGlzdGVuZXI6OmFkZEV2ZW50TGlz
dGVuZXIoR19PQkpFQ1QodGFyZ2V0KSwgY29yZVRhcmdldCwgZXZlbnROYW1lLCBoYW5kbGVyLCB1
c2VDYXB0dXJlKTsKLX0KLQotc3RhdGljIGdib29sZWFuIHdlYmtpdF9kb21fbWVzc2FnZV9wb3J0
X3JlbW92ZV9ldmVudF9saXN0ZW5lcihXZWJLaXRET01FdmVudFRhcmdldCogdGFyZ2V0LCBjb25z
dCBjaGFyKiBldmVudE5hbWUsIEdDbG9zdXJlKiBoYW5kbGVyLCBnYm9vbGVhbiB1c2VDYXB0dXJl
KQotewotICAgIFdlYkNvcmU6Ok1lc3NhZ2VQb3J0KiBjb3JlVGFyZ2V0ID0gc3RhdGljX2Nhc3Q8
V2ViQ29yZTo6TWVzc2FnZVBvcnQqPihXRUJLSVRfRE9NX09CSkVDVCh0YXJnZXQpLT5jb3JlT2Jq
ZWN0KTsKLSAgICByZXR1cm4gV2ViS2l0OjpHT2JqZWN0RXZlbnRMaXN0ZW5lcjo6cmVtb3ZlRXZl
bnRMaXN0ZW5lcihHX09CSkVDVCh0YXJnZXQpLCBjb3JlVGFyZ2V0LCBldmVudE5hbWUsIGhhbmRs
ZXIsIHVzZUNhcHR1cmUpOwotfQotCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX2V2ZW50X3Rhcmdl
dF9pbml0KFdlYktpdERPTUV2ZW50VGFyZ2V0SWZhY2UqIGlmYWNlKQotewotICAgIGlmYWNlLT5k
aXNwYXRjaF9ldmVudCA9IHdlYmtpdF9kb21fbWVzc2FnZV9wb3J0X2Rpc3BhdGNoX2V2ZW50Owot
ICAgIGlmYWNlLT5hZGRfZXZlbnRfbGlzdGVuZXIgPSB3ZWJraXRfZG9tX21lc3NhZ2VfcG9ydF9h
ZGRfZXZlbnRfbGlzdGVuZXI7Ci0gICAgaWZhY2UtPnJlbW92ZV9ldmVudF9saXN0ZW5lciA9IHdl
YmtpdF9kb21fbWVzc2FnZV9wb3J0X3JlbW92ZV9ldmVudF9saXN0ZW5lcjsKLX0KLQotR19ERUZJ
TkVfVFlQRV9XSVRIX0NPREUoV2ViS2l0RE9NTWVzc2FnZVBvcnQsIHdlYmtpdF9kb21fbWVzc2Fn
ZV9wb3J0LCBXRUJLSVRfRE9NX1RZUEVfT0JKRUNULCBHX0lNUExFTUVOVF9JTlRFUkZBQ0UoV0VC
S0lUX0RPTV9UWVBFX0VWRU5UX1RBUkdFVCwgd2Via2l0X2RvbV9ldmVudF90YXJnZXRfaW5pdCkp
Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdF9kb21fbWVzc2FnZV9wb3J0X2ZpbmFsaXplKEdPYmplY3Qq
IG9iamVjdCkKLXsKLSAgICBXZWJLaXRET01NZXNzYWdlUG9ydFByaXZhdGUqIHByaXYgPSBXRUJL
SVRfRE9NX01FU1NBR0VfUE9SVF9HRVRfUFJJVkFURShvYmplY3QpOwotCi0gICAgV2ViS2l0OjpE
T01PYmplY3RDYWNoZTo6Zm9yZ2V0KHByaXYtPmNvcmVPYmplY3QuZ2V0KCkpOwotCi0gICAgcHJp
di0+fldlYktpdERPTU1lc3NhZ2VQb3J0UHJpdmF0ZSgpOwotICAgIEdfT0JKRUNUX0NMQVNTKHdl
YmtpdF9kb21fbWVzc2FnZV9wb3J0X3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7Ci19
Ci0KLXN0YXRpYyBHT2JqZWN0KiB3ZWJraXRfZG9tX21lc3NhZ2VfcG9ydF9jb25zdHJ1Y3RvcihH
VHlwZSB0eXBlLCBndWludCBjb25zdHJ1Y3RQcm9wZXJ0aWVzQ291bnQsIEdPYmplY3RDb25zdHJ1
Y3RQYXJhbSogY29uc3RydWN0UHJvcGVydGllcykKLXsKLSAgICBHT2JqZWN0KiBvYmplY3QgPSBH
X09CSkVDVF9DTEFTUyh3ZWJraXRfZG9tX21lc3NhZ2VfcG9ydF9wYXJlbnRfY2xhc3MpLT5jb25z
dHJ1Y3Rvcih0eXBlLCBjb25zdHJ1Y3RQcm9wZXJ0aWVzQ291bnQsIGNvbnN0cnVjdFByb3BlcnRp
ZXMpOwotCi0gICAgV2ViS2l0RE9NTWVzc2FnZVBvcnRQcml2YXRlKiBwcml2ID0gV0VCS0lUX0RP
TV9NRVNTQUdFX1BPUlRfR0VUX1BSSVZBVEUob2JqZWN0KTsKLSAgICBwcml2LT5jb3JlT2JqZWN0
ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6TWVzc2FnZVBvcnQqPihXRUJLSVRfRE9NX09CSkVDVChv
YmplY3QpLT5jb3JlT2JqZWN0KTsKLSAgICBXZWJLaXQ6OkRPTU9iamVjdENhY2hlOjpwdXQocHJp
di0+Y29yZU9iamVjdC5nZXQoKSwgb2JqZWN0KTsKLQotICAgIHJldHVybiBvYmplY3Q7Ci19Ci0K
LXN0YXRpYyB2b2lkIHdlYmtpdF9kb21fbWVzc2FnZV9wb3J0X2NsYXNzX2luaXQoV2ViS2l0RE9N
TWVzc2FnZVBvcnRDbGFzcyogcmVxdWVzdENsYXNzKQotewotICAgIEdPYmplY3RDbGFzcyogZ29i
amVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1MocmVxdWVzdENsYXNzKTsKLSAgICBnX3R5cGVfY2xh
c3NfYWRkX3ByaXZhdGUoZ29iamVjdENsYXNzLCBzaXplb2YoV2ViS2l0RE9NTWVzc2FnZVBvcnRQ
cml2YXRlKSk7Ci0gICAgZ29iamVjdENsYXNzLT5jb25zdHJ1Y3RvciA9IHdlYmtpdF9kb21fbWVz
c2FnZV9wb3J0X2NvbnN0cnVjdG9yOwotICAgIGdvYmplY3RDbGFzcy0+ZmluYWxpemUgPSB3ZWJr
aXRfZG9tX21lc3NhZ2VfcG9ydF9maW5hbGl6ZTsKLX0KLQotc3RhdGljIHZvaWQgd2Via2l0X2Rv
bV9tZXNzYWdlX3BvcnRfaW5pdChXZWJLaXRET01NZXNzYWdlUG9ydCogcmVxdWVzdCkKLXsKLSAg
ICBXZWJLaXRET01NZXNzYWdlUG9ydFByaXZhdGUqIHByaXYgPSBXRUJLSVRfRE9NX01FU1NBR0Vf
UE9SVF9HRVRfUFJJVkFURShyZXF1ZXN0KTsKLSAgICBuZXcgKHByaXYpIFdlYktpdERPTU1lc3Nh
Z2VQb3J0UHJpdmF0ZSgpOwotfQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTU1lc3NhZ2VQb3J0LmggYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktp
dERPTU1lc3NhZ2VQb3J0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzMWNkMmIu
LjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ3RrL0RPTS9XZWJLaXRET01NZXNzYWdlUG9ydC5oCisrKyAvZGV2L251bGwKQEAgLTEsNTMg
KzAsMCBAQAotLyoKLSAqICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291
cmNlIHByb2plY3QuCi0gKiAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0
ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiAg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
Ci0gKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0g
KgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
Ci0gKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBXZWJLaXRE
T01NZXNzYWdlUG9ydF9oCi0jZGVmaW5lIFdlYktpdERPTU1lc3NhZ2VQb3J0X2gKLQotI2lmZGVm
IFdFQktJVF9ET01fVVNFX1VOU1RBQkxFX0FQSQotCi0jaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4K
LSNpbmNsdWRlIDx3ZWJraXRkb20vV2ViS2l0RE9NT2JqZWN0Lmg+Ci0jaW5jbHVkZSA8d2Via2l0
ZG9tL3dlYmtpdGRvbWRlZmluZXMtdW5zdGFibGUuaD4KLQotR19CRUdJTl9ERUNMUwotCi0jZGVm
aW5lIFdFQktJVF9ET01fVFlQRV9NRVNTQUdFX1BPUlQgICAgICAgICAgICAod2Via2l0X2RvbV9t
ZXNzYWdlX3BvcnRfZ2V0X3R5cGUoKSkKLSNkZWZpbmUgV0VCS0lUX0RPTV9NRVNTQUdFX1BPUlQo
b2JqKSAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwgV0VCS0lU
X0RPTV9UWVBFX01FU1NBR0VfUE9SVCwgV2ViS2l0RE9NTWVzc2FnZVBvcnQpKQotI2RlZmluZSBX
RUJLSVRfRE9NX01FU1NBR0VfUE9SVF9DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFT
U19DQVNUKChrbGFzcyksICBXRUJLSVRfRE9NX1RZUEVfTUVTU0FHRV9QT1JULCBXZWJLaXRET01N
ZXNzYWdlUG9ydENsYXNzKQotI2RlZmluZSBXRUJLSVRfRE9NX0lTX01FU1NBR0VfUE9SVChvYmop
ICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLCBXRUJLSVRfRE9NX1RZ
UEVfTUVTU0FHRV9QT1JUKSkKLSNkZWZpbmUgV0VCS0lUX0RPTV9JU19NRVNTQUdFX1BPUlRfQ0xB
U1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX0RPTV9U
WVBFX01FU1NBR0VfUE9SVCkpCi0jZGVmaW5lIFdFQktJVF9ET01fTUVTU0FHRV9QT1JUX0dFVF9D
TEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9ET01f
VFlQRV9NRVNTQUdFX1BPUlQsIFdlYktpdERPTU1lc3NhZ2VQb3J0Q2xhc3MpKQotCi1zdHJ1Y3Qg
X1dlYktpdERPTU1lc3NhZ2VQb3J0IHsKLSAgICBXZWJLaXRET01PYmplY3QgcGFyZW50X2luc3Rh
bmNlOwotfTsKLQotc3RydWN0IF9XZWJLaXRET01NZXNzYWdlUG9ydENsYXNzIHsKLSAgICBXZWJL
aXRET01PYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7Ci19OwotCi1XRUJLSVRfQVBJIEdUeXBlCi13
ZWJraXRfZG9tX21lc3NhZ2VfcG9ydF9nZXRfdHlwZSh2b2lkKTsKLQotR19FTkRfREVDTFMKLQot
I2VuZGlmIC8qIFdFQktJVF9ET01fVVNFX1VOU1RBQkxFX0FQSSAqLwotI2VuZGlmIC8qIFdlYktp
dERPTU1lc3NhZ2VQb3J0X2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NTWVzc2FnZVBvcnRQcml2YXRl
LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9N
L1dlYktpdERPTU1lc3NhZ2VQb3J0UHJpdmF0ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBlNmVhMTRkLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NTWVzc2FnZVBvcnRQcml2YXRlLmgKKysr
IC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi0vKgotICogIFRoaXMgZmlsZSBpcyBwYXJ0IG9m
IHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAqICBUaGlzIGZpbGUgaGFzIGJlZW4g
Z2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQotICoKLSAq
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICog
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAq
LwotCi0jaWZuZGVmIFdlYktpdERPTU1lc3NhZ2VQb3J0UHJpdmF0ZV9oCi0jZGVmaW5lIFdlYktp
dERPTU1lc3NhZ2VQb3J0UHJpdmF0ZV9oCi0KLSNpbmNsdWRlIDxXZWJDb3JlL01lc3NhZ2VQb3J0
Lmg+Ci0jaW5jbHVkZSA8d2Via2l0ZG9tL1dlYktpdERPTU1lc3NhZ2VQb3J0Lmg+Ci0KLW5hbWVz
cGFjZSBXZWJLaXQgewotV2ViS2l0RE9NTWVzc2FnZVBvcnQqIHdyYXBNZXNzYWdlUG9ydChXZWJD
b3JlOjpNZXNzYWdlUG9ydCopOwotV2ViS2l0RE9NTWVzc2FnZVBvcnQqIGtpdChXZWJDb3JlOjpN
ZXNzYWdlUG9ydCopOwotV2ViQ29yZTo6TWVzc2FnZVBvcnQqIGNvcmUoV2ViS2l0RE9NTWVzc2Fn
ZVBvcnQqKTsKLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLyogV2ViS2l0RE9NTWVz
c2FnZVBvcnRQcml2YXRlX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NTW91c2VFdmVudC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktp
dERPTU1vdXNlRXZlbnQuY3BwCmluZGV4IDljNzAzZDQuLmI3NjIzZjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0
RE9NTW91c2VFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01Nb3VzZUV2ZW50LmNwcApAQCAtMzQsNyArMzQs
NiBAQAogI2luY2x1ZGUgIldlYktpdERPTU5vZGVQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0
RE9NUHJpdmF0ZS5oIgogI2luY2x1ZGUgIkNvbnZlcnRUb1VURjhTdHJpbmcuaCIKLSNpbmNsdWRl
ICJXZWJLaXRET01Nb3VzZUV2ZW50VW5zdGFibGUuaCIKICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCkBAIC03Miw4ICs3MSw2IEBAIGVudW0gewogICAg
IFBST1BfTUVUQV9LRVksCiAgICAgUFJPUF9CVVRUT04sCiAgICAgUFJPUF9SRUxBVEVEX1RBUkdF
VCwKLSAgICBQUk9QX01PVkVNRU5UX1gsCi0gICAgUFJPUF9NT1ZFTUVOVF9ZLAogICAgIFBST1Bf
T0ZGU0VUX1gsCiAgICAgUFJPUF9PRkZTRVRfWSwKICAgICBQUk9QX1gsCkBAIC0xMTcsMTIgKzEx
NCw2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21fbW91c2VfZXZlbnRfZ2V0X3Byb3BlcnR5KEdP
YmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcGVydHlJCiAgICAgY2FzZSBQUk9QX1JFTEFURURfVEFS
R0VUOgogICAgICAgICBnX3ZhbHVlX3NldF9vYmplY3QodmFsdWUsIHdlYmtpdF9kb21fbW91c2Vf
ZXZlbnRfZ2V0X3JlbGF0ZWRfdGFyZ2V0KHNlbGYpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBQUk9QX01PVkVNRU5UX1g6Ci0gICAgICAgIGdfdmFsdWVfc2V0X2xvbmcodmFsdWUsIHdlYmtp
dF9kb21fbW91c2VfZXZlbnRfZ2V0X21vdmVtZW50X3goc2VsZikpOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIFBST1BfTU9WRU1FTlRfWToKLSAgICAgICAgZ192YWx1ZV9zZXRfbG9uZyh2YWx1
ZSwgd2Via2l0X2RvbV9tb3VzZV9ldmVudF9nZXRfbW92ZW1lbnRfeShzZWxmKSk7Ci0gICAgICAg
IGJyZWFrOwogICAgIGNhc2UgUFJPUF9PRkZTRVRfWDoKICAgICAgICAgZ192YWx1ZV9zZXRfbG9u
Zyh2YWx1ZSwgd2Via2l0X2RvbV9tb3VzZV9ldmVudF9nZXRfb2Zmc2V0X3goc2VsZikpOwogICAg
ICAgICBicmVhazsKQEAgLTI1NCwyNiArMjQ1LDYgQEAgc3RhdGljIHZvaWQgd2Via2l0X2RvbV9t
b3VzZV9ldmVudF9jbGFzc19pbml0KFdlYktpdERPTU1vdXNlRXZlbnRDbGFzcyogcmVxdWVzdEMK
IAogICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCiAgICAgICAgIGdvYmplY3RD
bGFzcywKLSAgICAgICAgUFJPUF9NT1ZFTUVOVF9YLAotICAgICAgICBnX3BhcmFtX3NwZWNfbG9u
ZygKLSAgICAgICAgICAgICJtb3ZlbWVudC14IiwKLSAgICAgICAgICAgICJNb3VzZUV2ZW50Om1v
dmVtZW50LXgiLAotICAgICAgICAgICAgInJlYWQtb25seSBnbG9uZyBNb3VzZUV2ZW50Om1vdmVt
ZW50LXgiLAotICAgICAgICAgICAgR19NSU5MT05HLCBHX01BWExPTkcsIDAsCi0gICAgICAgICAg
ICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxf
cHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9NT1ZFTUVOVF9Z
LAotICAgICAgICBnX3BhcmFtX3NwZWNfbG9uZygKLSAgICAgICAgICAgICJtb3ZlbWVudC15IiwK
LSAgICAgICAgICAgICJNb3VzZUV2ZW50Om1vdmVtZW50LXkiLAotICAgICAgICAgICAgInJlYWQt
b25seSBnbG9uZyBNb3VzZUV2ZW50Om1vdmVtZW50LXkiLAotICAgICAgICAgICAgR19NSU5MT05H
LCBHX01BWExPTkcsIDAsCi0gICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKLQot
ICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFz
cywKICAgICAgICAgUFJPUF9PRkZTRVRfWCwKICAgICAgICAgZ19wYXJhbV9zcGVjX2xvbmcoCiAg
ICAgICAgICAgICAib2Zmc2V0LXgiLApAQCAtNDQzLDM2ICs0MTQsNiBAQCBXZWJLaXRET01FdmVu
dFRhcmdldCogd2Via2l0X2RvbV9tb3VzZV9ldmVudF9nZXRfcmVsYXRlZF90YXJnZXQoV2ViS2l0
RE9NTW91c2VFdgogICAgIHJldHVybiBXZWJLaXQ6OmtpdChnb2JqZWN0UmVzdWx0LmdldCgpKTsK
IH0KIAotZ2xvbmcgd2Via2l0X2RvbV9tb3VzZV9ldmVudF9nZXRfbW92ZW1lbnRfeChXZWJLaXRE
T01Nb3VzZUV2ZW50KiBzZWxmKQotewotI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCi0gICAgV2Vi
Q29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKFdFQktJVF9ET01fSVNfTU9VU0VfRVZFTlQoc2VsZiksIDApOwotICAgIFdlYkNvcmU6Ok1v
dXNlRXZlbnQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ2xvbmcgcmVzdWx0ID0g
aXRlbS0+bW92ZW1lbnRYKCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSNlbHNlCi0gICAgVU5VU0VE
X1BBUkFNKHNlbGYpOwotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIlBvaW50
ZXIgTG9jayIpCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGdsb25nPigwKTsKLSNlbmRpZiAvKiBF
TkFCTEUoUE9JTlRFUl9MT0NLKSAqLwotfQotCi1nbG9uZyB3ZWJraXRfZG9tX21vdXNlX2V2ZW50
X2dldF9tb3ZlbWVudF95KFdlYktpdERPTU1vdXNlRXZlbnQqIHNlbGYpCi17Ci0jaWYgRU5BQkxF
KFBPSU5URVJfTE9DSykKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7
Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19NT1VTRV9FVkVOVChzZWxm
KSwgMCk7Ci0gICAgV2ViQ29yZTo6TW91c2VFdmVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxm
KTsKLSAgICBnbG9uZyByZXN1bHQgPSBpdGVtLT5tb3ZlbWVudFkoKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc2VsZik7Ci0gICAgV0VCS0lUX1dBUk5fRkVB
VFVSRV9OT1RfUFJFU0VOVCgiUG9pbnRlciBMb2NrIikKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
Z2xvbmc+KDApOwotI2VuZGlmIC8qIEVOQUJMRShQT0lOVEVSX0xPQ0spICovCi19Ci0KIGdsb25n
IHdlYmtpdF9kb21fbW91c2VfZXZlbnRfZ2V0X29mZnNldF94KFdlYktpdERPTU1vdXNlRXZlbnQq
IHNlbGYpCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3Rr
L0RPTS9XZWJLaXRET01Nb3VzZUV2ZW50VW5zdGFibGUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NTW91c2VFdmVudFVuc3Rh
YmxlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNlYjA3NjYuLjAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9X
ZWJLaXRET01Nb3VzZUV2ZW50VW5zdGFibGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAg
QEAKLS8qCi0gKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBw
cm9qZWN0LgotICogIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmlu
ZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgot
ICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICog
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAq
ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICog
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgV2ViS2l0RE9NTW91
c2VFdmVudFVuc3RhYmxlX2gKLSNkZWZpbmUgV2ViS2l0RE9NTW91c2VFdmVudFVuc3RhYmxlX2gK
LQotI2lmZGVmIFdFQktJVF9ET01fVVNFX1VOU1RBQkxFX0FQSQotCi0jaW5jbHVkZSA8d2Via2l0
ZG9tL3dlYmtpdGRvbWRlZmluZXMtdW5zdGFibGUuaD4KLQotR19CRUdJTl9ERUNMUwotCi0vKioK
LSAqIHdlYmtpdF9kb21fbW91c2VfZXZlbnRfZ2V0X21vdmVtZW50X3g6Ci0gKiBAc2VsZjogQSAj
V2ViS2l0RE9NTW91c2VFdmVudAotICoKLSAqIFJldHVybnM6IEEgI2dsb25nCi0gKgotICogU3Rh
YmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIGdsb25nCi13ZWJraXRfZG9tX21vdXNl
X2V2ZW50X2dldF9tb3ZlbWVudF94KFdlYktpdERPTU1vdXNlRXZlbnQqIHNlbGYpOwotCi0vKioK
LSAqIHdlYmtpdF9kb21fbW91c2VfZXZlbnRfZ2V0X21vdmVtZW50X3k6Ci0gKiBAc2VsZjogQSAj
V2ViS2l0RE9NTW91c2VFdmVudAotICoKLSAqIFJldHVybnM6IEEgI2dsb25nCi0gKgotICogU3Rh
YmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIGdsb25nCi13ZWJraXRfZG9tX21vdXNl
X2V2ZW50X2dldF9tb3ZlbWVudF95KFdlYktpdERPTU1vdXNlRXZlbnQqIHNlbGYpOwotCi0KLUdf
RU5EX0RFQ0xTCi0KLSNlbmRpZiAvKiBXRUJLSVRfRE9NX1VTRV9VTlNUQUJMRV9BUEkgKi8KLSNl
bmRpZiAvKiBXZWJLaXRET01Nb3VzZUV2ZW50VW5zdGFibGVfaCAqLwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRE
T01OYXZpZ2F0b3IuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01OYXZpZ2F0b3IuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBmMWIyZmUxLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NTmF2aWdhdG9yLmNwcAorKysg
L2Rldi9udWxsCkBAIC0xLDY5MSArMCwwIEBACi0vKgotICogIFRoaXMgZmlsZSBpcyBwYXJ0IG9m
IHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAqICBUaGlzIGZpbGUgaGFzIGJlZW4g
Z2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQotICoKLSAq
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICog
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViS2l0RE9NTmF2aWdhdG9yLmgi
Ci0KLSNpbmNsdWRlIDxXZWJDb3JlL0NTU0ltcG9ydFJ1bGUuaD4KLSNpbmNsdWRlICJET01PYmpl
Y3RDYWNoZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnQuaD4KLSNpbmNsdWRlIDxXZWJD
b3JlL0V4Y2VwdGlvbkNvZGUuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0V4Y2VwdGlvbkNvZGVEZXNj
cmlwdGlvbi5oPgotI2luY2x1ZGUgPFdlYkNvcmUvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmg+Ci0j
aW5jbHVkZSA8V2ViQ29yZS9OYXZpZ2F0b3JCYXR0ZXJ5Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9O
YXZpZ2F0b3JDb250ZW50VXRpbHMuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL05hdmlnYXRvckdlb2xv
Y2F0aW9uLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9OYXZpZ2F0b3JNZWRpYURldmljZXMuaD4KLSNp
bmNsdWRlIDxXZWJDb3JlL05hdmlnYXRvclZpYnJhdGlvbi5oPgotI2luY2x1ZGUgIldlYktpdERP
TUJhdHRlcnlNYW5hZ2VyUHJpdmF0ZS5oIgotI2luY2x1ZGUgIldlYktpdERPTURPTU1pbWVUeXBl
QXJyYXlQcml2YXRlLmgiCi0jaW5jbHVkZSAiV2ViS2l0RE9NRE9NUGx1Z2luQXJyYXlQcml2YXRl
LmgiCi0jaW5jbHVkZSAiV2ViS2l0RE9NR2VvbG9jYXRpb25Qcml2YXRlLmgiCi0jaW5jbHVkZSAi
V2ViS2l0RE9NTWVkaWFEZXZpY2VzUHJpdmF0ZS5oIgotI2luY2x1ZGUgIldlYktpdERPTU5hdmln
YXRvclByaXZhdGUuaCIKLSNpbmNsdWRlICJXZWJLaXRET01Qcml2YXRlLmgiCi0jaW5jbHVkZSAi
Q29udmVydFRvVVRGOFN0cmluZy5oIgotI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KLSNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+Ci0KLSNkZWZpbmUgV0VCS0lUX0RPTV9OQVZJR0FUT1JfR0VUX1BSSVZB
VEUob2JqKSBHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUob2JqLCBXRUJLSVRfRE9NX1RZUEVf
TkFWSUdBVE9SLCBXZWJLaXRET01OYXZpZ2F0b3JQcml2YXRlKQotCi10eXBlZGVmIHN0cnVjdCBf
V2ViS2l0RE9NTmF2aWdhdG9yUHJpdmF0ZSB7Ci0gICAgUmVmUHRyPFdlYkNvcmU6Ok5hdmlnYXRv
cj4gY29yZU9iamVjdDsKLX0gV2ViS2l0RE9NTmF2aWdhdG9yUHJpdmF0ZTsKLQotbmFtZXNwYWNl
IFdlYktpdCB7Ci0KLVdlYktpdERPTU5hdmlnYXRvcioga2l0KFdlYkNvcmU6Ok5hdmlnYXRvciog
b2JqKQotewotICAgIGlmICghb2JqKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIGlmIChncG9p
bnRlciByZXQgPSBET01PYmplY3RDYWNoZTo6Z2V0KG9iaikpCi0gICAgICAgIHJldHVybiBXRUJL
SVRfRE9NX05BVklHQVRPUihyZXQpOwotCi0gICAgcmV0dXJuIHdyYXBOYXZpZ2F0b3Iob2JqKTsK
LX0KLQotV2ViQ29yZTo6TmF2aWdhdG9yKiBjb3JlKFdlYktpdERPTU5hdmlnYXRvciogcmVxdWVz
dCkKLXsKLSAgICByZXR1cm4gcmVxdWVzdCA/IHN0YXRpY19jYXN0PFdlYkNvcmU6Ok5hdmlnYXRv
cio+KFdFQktJVF9ET01fT0JKRUNUKHJlcXVlc3QpLT5jb3JlT2JqZWN0KSA6IDA7Ci19Ci0KLVdl
YktpdERPTU5hdmlnYXRvciogd3JhcE5hdmlnYXRvcihXZWJDb3JlOjpOYXZpZ2F0b3IqIGNvcmVP
YmplY3QpCi17Ci0gICAgQVNTRVJUKGNvcmVPYmplY3QpOwotICAgIHJldHVybiBXRUJLSVRfRE9N
X05BVklHQVRPUihnX29iamVjdF9uZXcoV0VCS0lUX0RPTV9UWVBFX05BVklHQVRPUiwgImNvcmUt
b2JqZWN0IiwgY29yZU9iamVjdCwgbnVsbHB0cikpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJL
aXQKLQotR19ERUZJTkVfVFlQRShXZWJLaXRET01OYXZpZ2F0b3IsIHdlYmtpdF9kb21fbmF2aWdh
dG9yLCBXRUJLSVRfRE9NX1RZUEVfT0JKRUNUKQotCi1lbnVtIHsKLSAgICBQUk9QXzAsCi0gICAg
UFJPUF9QTFVHSU5TLAotICAgIFBST1BfTUlNRV9UWVBFUywKLSAgICBQUk9QX0NPT0tJRV9FTkFC
TEVELAotICAgIFBST1BfV0VCS0lUX0JBVFRFUlksCi0gICAgUFJPUF9HRU9MT0NBVElPTiwKLSAg
ICBQUk9QX01FRElBX0RFVklDRVMsCi0gICAgUFJPUF9IQVJEV0FSRV9DT05DVVJSRU5DWSwKLSAg
ICBQUk9QX0FQUF9DT0RFX05BTUUsCi0gICAgUFJPUF9BUFBfTkFNRSwKLSAgICBQUk9QX0FQUF9W
RVJTSU9OLAotICAgIFBST1BfUExBVEZPUk0sCi0gICAgUFJPUF9QUk9EVUNULAotICAgIFBST1Bf
UFJPRFVDVF9TVUIsCi0gICAgUFJPUF9VU0VSX0FHRU5ULAotICAgIFBST1BfVkVORE9SLAotICAg
IFBST1BfVkVORE9SX1NVQiwKLSAgICBQUk9QX0xBTkdVQUdFLAotICAgIFBST1BfT05fTElORSwK
LX07Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdF9kb21fbmF2aWdhdG9yX2ZpbmFsaXplKEdPYmplY3Qq
IG9iamVjdCkKLXsKLSAgICBXZWJLaXRET01OYXZpZ2F0b3JQcml2YXRlKiBwcml2ID0gV0VCS0lU
X0RPTV9OQVZJR0FUT1JfR0VUX1BSSVZBVEUob2JqZWN0KTsKLQotICAgIFdlYktpdDo6RE9NT2Jq
ZWN0Q2FjaGU6OmZvcmdldChwcml2LT5jb3JlT2JqZWN0LmdldCgpKTsKLQotICAgIHByaXYtPn5X
ZWJLaXRET01OYXZpZ2F0b3JQcml2YXRlKCk7Ci0gICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X2Rv
bV9uYXZpZ2F0b3JfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKLX0KLQotc3RhdGlj
IHZvaWQgd2Via2l0X2RvbV9uYXZpZ2F0b3JfZ2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwg
Z3VpbnQgcHJvcGVydHlJZCwgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpCi17Ci0g
ICAgV2ViS2l0RE9NTmF2aWdhdG9yKiBzZWxmID0gV0VCS0lUX0RPTV9OQVZJR0FUT1Iob2JqZWN0
KTsKLQotICAgIHN3aXRjaCAocHJvcGVydHlJZCkgewotICAgIGNhc2UgUFJPUF9QTFVHSU5TOgot
ICAgICAgICBnX3ZhbHVlX3NldF9vYmplY3QodmFsdWUsIHdlYmtpdF9kb21fbmF2aWdhdG9yX2dl
dF9wbHVnaW5zKHNlbGYpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX01JTUVfVFlQ
RVM6Ci0gICAgICAgIGdfdmFsdWVfc2V0X29iamVjdCh2YWx1ZSwgd2Via2l0X2RvbV9uYXZpZ2F0
b3JfZ2V0X21pbWVfdHlwZXMoc2VsZikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1Bf
Q09PS0lFX0VOQUJMRUQ6Ci0gICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtp
dF9kb21fbmF2aWdhdG9yX2dldF9jb29raWVfZW5hYmxlZChzZWxmKSk7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgUFJPUF9XRUJLSVRfQkFUVEVSWToKLSAgICAgICAgZ192YWx1ZV9zZXRfb2Jq
ZWN0KHZhbHVlLCB3ZWJraXRfZG9tX25hdmlnYXRvcl9nZXRfd2Via2l0X2JhdHRlcnkoc2VsZikp
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfR0VPTE9DQVRJT046Ci0gICAgICAgIGdf
dmFsdWVfc2V0X29iamVjdCh2YWx1ZSwgd2Via2l0X2RvbV9uYXZpZ2F0b3JfZ2V0X2dlb2xvY2F0
aW9uKHNlbGYpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX01FRElBX0RFVklDRVM6
Ci0gICAgICAgIGdfdmFsdWVfc2V0X29iamVjdCh2YWx1ZSwgd2Via2l0X2RvbV9uYXZpZ2F0b3Jf
Z2V0X21lZGlhX2RldmljZXMoc2VsZikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1Bf
SEFSRFdBUkVfQ09OQ1VSUkVOQ1k6Ci0gICAgICAgIGdfdmFsdWVfc2V0X3VpbnQ2NCh2YWx1ZSwg
d2Via2l0X2RvbV9uYXZpZ2F0b3JfZ2V0X2hhcmR3YXJlX2NvbmN1cnJlbmN5KHNlbGYpKTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX0FQUF9DT0RFX05BTUU6Ci0gICAgICAgIGdfdmFs
dWVfdGFrZV9zdHJpbmcodmFsdWUsIHdlYmtpdF9kb21fbmF2aWdhdG9yX2dldF9hcHBfY29kZV9u
YW1lKHNlbGYpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX0FQUF9OQU1FOgotICAg
ICAgICBnX3ZhbHVlX3Rha2Vfc3RyaW5nKHZhbHVlLCB3ZWJraXRfZG9tX25hdmlnYXRvcl9nZXRf
YXBwX25hbWUoc2VsZikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfQVBQX1ZFUlNJ
T046Ci0gICAgICAgIGdfdmFsdWVfdGFrZV9zdHJpbmcodmFsdWUsIHdlYmtpdF9kb21fbmF2aWdh
dG9yX2dldF9hcHBfdmVyc2lvbihzZWxmKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJP
UF9QTEFURk9STToKLSAgICAgICAgZ192YWx1ZV90YWtlX3N0cmluZyh2YWx1ZSwgd2Via2l0X2Rv
bV9uYXZpZ2F0b3JfZ2V0X3BsYXRmb3JtKHNlbGYpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBQUk9QX1BST0RVQ1Q6Ci0gICAgICAgIGdfdmFsdWVfdGFrZV9zdHJpbmcodmFsdWUsIHdlYmtp
dF9kb21fbmF2aWdhdG9yX2dldF9wcm9kdWN0KHNlbGYpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBQUk9QX1BST0RVQ1RfU1VCOgotICAgICAgICBnX3ZhbHVlX3Rha2Vfc3RyaW5nKHZhbHVl
LCB3ZWJraXRfZG9tX25hdmlnYXRvcl9nZXRfcHJvZHVjdF9zdWIoc2VsZikpOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIFBST1BfVVNFUl9BR0VOVDoKLSAgICAgICAgZ192YWx1ZV90YWtlX3N0
cmluZyh2YWx1ZSwgd2Via2l0X2RvbV9uYXZpZ2F0b3JfZ2V0X3VzZXJfYWdlbnQoc2VsZikpOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfVkVORE9SOgotICAgICAgICBnX3ZhbHVlX3Rh
a2Vfc3RyaW5nKHZhbHVlLCB3ZWJraXRfZG9tX25hdmlnYXRvcl9nZXRfdmVuZG9yKHNlbGYpKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX1ZFTkRPUl9TVUI6Ci0gICAgICAgIGdfdmFs
dWVfdGFrZV9zdHJpbmcodmFsdWUsIHdlYmtpdF9kb21fbmF2aWdhdG9yX2dldF92ZW5kb3Jfc3Vi
KHNlbGYpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX0xBTkdVQUdFOgotICAgICAg
ICBnX3ZhbHVlX3Rha2Vfc3RyaW5nKHZhbHVlLCB3ZWJraXRfZG9tX25hdmlnYXRvcl9nZXRfbGFu
Z3VhZ2Uoc2VsZikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfT05fTElORToKLSAg
ICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X2RvbV9uYXZpZ2F0b3JfZ2V0
X29uX2xpbmUoc2VsZikpOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBH
X09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wZXJ0eUlkLCBwc3Bl
Yyk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLX0KLQotc3RhdGljIEdPYmplY3QqIHdlYmtpdF9k
b21fbmF2aWdhdG9yX2NvbnN0cnVjdG9yKEdUeXBlIHR5cGUsIGd1aW50IGNvbnN0cnVjdFByb3Bl
cnRpZXNDb3VudCwgR09iamVjdENvbnN0cnVjdFBhcmFtKiBjb25zdHJ1Y3RQcm9wZXJ0aWVzKQot
ewotICAgIEdPYmplY3QqIG9iamVjdCA9IEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9kb21fbmF2aWdh
dG9yX3BhcmVudF9jbGFzcyktPmNvbnN0cnVjdG9yKHR5cGUsIGNvbnN0cnVjdFByb3BlcnRpZXND
b3VudCwgY29uc3RydWN0UHJvcGVydGllcyk7Ci0KLSAgICBXZWJLaXRET01OYXZpZ2F0b3JQcml2
YXRlKiBwcml2ID0gV0VCS0lUX0RPTV9OQVZJR0FUT1JfR0VUX1BSSVZBVEUob2JqZWN0KTsKLSAg
ICBwcml2LT5jb3JlT2JqZWN0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6TmF2aWdhdG9yKj4oV0VC
S0lUX0RPTV9PQkpFQ1Qob2JqZWN0KS0+Y29yZU9iamVjdCk7Ci0gICAgV2ViS2l0OjpET01PYmpl
Y3RDYWNoZTo6cHV0KHByaXYtPmNvcmVPYmplY3QuZ2V0KCksIG9iamVjdCk7Ci0KLSAgICByZXR1
cm4gb2JqZWN0OwotfQotCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX25hdmlnYXRvcl9jbGFzc19p
bml0KFdlYktpdERPTU5hdmlnYXRvckNsYXNzKiByZXF1ZXN0Q2xhc3MpCi17Ci0gICAgR09iamVj
dENsYXNzKiBnb2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhyZXF1ZXN0Q2xhc3MpOwotICAg
IGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShnb2JqZWN0Q2xhc3MsIHNpemVvZihXZWJLaXRET01O
YXZpZ2F0b3JQcml2YXRlKSk7Ci0gICAgZ29iamVjdENsYXNzLT5jb25zdHJ1Y3RvciA9IHdlYmtp
dF9kb21fbmF2aWdhdG9yX2NvbnN0cnVjdG9yOwotICAgIGdvYmplY3RDbGFzcy0+ZmluYWxpemUg
PSB3ZWJraXRfZG9tX25hdmlnYXRvcl9maW5hbGl6ZTsKLSAgICBnb2JqZWN0Q2xhc3MtPmdldF9w
cm9wZXJ0eSA9IHdlYmtpdF9kb21fbmF2aWdhdG9yX2dldF9wcm9wZXJ0eTsKLQotICAgIGdfb2Jq
ZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAg
ICAgUFJPUF9QTFVHSU5TLAotICAgICAgICBnX3BhcmFtX3NwZWNfb2JqZWN0KAotICAgICAgICAg
ICAgInBsdWdpbnMiLAotICAgICAgICAgICAgIk5hdmlnYXRvcjpwbHVnaW5zIiwKLSAgICAgICAg
ICAgICJyZWFkLW9ubHkgV2ViS2l0RE9NRE9NUGx1Z2luQXJyYXkqIE5hdmlnYXRvcjpwbHVnaW5z
IiwKLSAgICAgICAgICAgIFdFQktJVF9ET01fVFlQRV9ET01fUExVR0lOX0FSUkFZLAotICAgICAg
ICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7Ci0KLSAgICBnX29iamVjdF9jbGFzc19pbnN0
YWxsX3Byb3BlcnR5KAotICAgICAgICBnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBST1BfTUlNRV9U
WVBFUywKLSAgICAgICAgZ19wYXJhbV9zcGVjX29iamVjdCgKLSAgICAgICAgICAgICJtaW1lLXR5
cGVzIiwKLSAgICAgICAgICAgICJOYXZpZ2F0b3I6bWltZS10eXBlcyIsCi0gICAgICAgICAgICAi
cmVhZC1vbmx5IFdlYktpdERPTURPTU1pbWVUeXBlQXJyYXkqIE5hdmlnYXRvcjptaW1lLXR5cGVz
IiwKLSAgICAgICAgICAgIFdFQktJVF9ET01fVFlQRV9ET01fTUlNRV9UWVBFX0FSUkFZLAotICAg
ICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7Ci0KLSAgICBnX29iamVjdF9jbGFzc19p
bnN0YWxsX3Byb3BlcnR5KAotICAgICAgICBnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBST1BfQ09P
S0lFX0VOQUJMRUQsCi0gICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKAotICAgICAgICAgICAg
ImNvb2tpZS1lbmFibGVkIiwKLSAgICAgICAgICAgICJOYXZpZ2F0b3I6Y29va2llLWVuYWJsZWQi
LAotICAgICAgICAgICAgInJlYWQtb25seSBnYm9vbGVhbiBOYXZpZ2F0b3I6Y29va2llLWVuYWJs
ZWQiLAotICAgICAgICAgICAgRkFMU0UsCi0gICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFC
TEUpKTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdv
YmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9XRUJLSVRfQkFUVEVSWSwKLSAgICAgICAgZ19wYXJh
bV9zcGVjX29iamVjdCgKLSAgICAgICAgICAgICJ3ZWJraXQtYmF0dGVyeSIsCi0gICAgICAgICAg
ICAiTmF2aWdhdG9yOndlYmtpdC1iYXR0ZXJ5IiwKLSAgICAgICAgICAgICJyZWFkLW9ubHkgV2Vi
S2l0RE9NQmF0dGVyeU1hbmFnZXIqIE5hdmlnYXRvcjp3ZWJraXQtYmF0dGVyeSIsCi0gICAgICAg
ICAgICBXRUJLSVRfRE9NX1RZUEVfQkFUVEVSWV9NQU5BR0VSLAotICAgICAgICAgICAgV0VCS0lU
X1BBUkFNX1JFQURBQkxFKSk7Ci0KLSAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5
KAotICAgICAgICBnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBST1BfR0VPTE9DQVRJT04sCi0gICAg
ICAgIGdfcGFyYW1fc3BlY19vYmplY3QoCi0gICAgICAgICAgICAiZ2VvbG9jYXRpb24iLAotICAg
ICAgICAgICAgIk5hdmlnYXRvcjpnZW9sb2NhdGlvbiIsCi0gICAgICAgICAgICAicmVhZC1vbmx5
IFdlYktpdERPTUdlb2xvY2F0aW9uKiBOYXZpZ2F0b3I6Z2VvbG9jYXRpb24iLAotICAgICAgICAg
ICAgV0VCS0lUX0RPTV9UWVBFX0dFT0xPQ0FUSU9OLAotICAgICAgICAgICAgV0VCS0lUX1BBUkFN
X1JFQURBQkxFKSk7Ci0KLSAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAotICAg
ICAgICBnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBST1BfTUVESUFfREVWSUNFUywKLSAgICAgICAg
Z19wYXJhbV9zcGVjX29iamVjdCgKLSAgICAgICAgICAgICJtZWRpYS1kZXZpY2VzIiwKLSAgICAg
ICAgICAgICJOYXZpZ2F0b3I6bWVkaWEtZGV2aWNlcyIsCi0gICAgICAgICAgICAicmVhZC1vbmx5
IFdlYktpdERPTU1lZGlhRGV2aWNlcyogTmF2aWdhdG9yOm1lZGlhLWRldmljZXMiLAotICAgICAg
ICAgICAgV0VCS0lUX0RPTV9UWVBFX01FRElBX0RFVklDRVMsCi0gICAgICAgICAgICBXRUJLSVRf
UEFSQU1fUkVBREFCTEUpKTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHko
Ci0gICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9IQVJEV0FSRV9DT05DVVJSRU5D
WSwKLSAgICAgICAgZ19wYXJhbV9zcGVjX3VpbnQ2NCgKLSAgICAgICAgICAgICJoYXJkd2FyZS1j
b25jdXJyZW5jeSIsCi0gICAgICAgICAgICAiTmF2aWdhdG9yOmhhcmR3YXJlLWNvbmN1cnJlbmN5
IiwKLSAgICAgICAgICAgICJyZWFkLW9ubHkgZ3VpbnQ2NCBOYXZpZ2F0b3I6aGFyZHdhcmUtY29u
Y3VycmVuY3kiLAotICAgICAgICAgICAgMCwgR19NQVhVSU5UNjQsIDAsCi0gICAgICAgICAgICBX
RUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJv
cGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9BUFBfQ09ERV9OQU1F
LAotICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nKAotICAgICAgICAgICAgImFwcC1jb2RlLW5h
bWUiLAotICAgICAgICAgICAgIk5hdmlnYXRvcjphcHAtY29kZS1uYW1lIiwKLSAgICAgICAgICAg
ICJyZWFkLW9ubHkgZ2NoYXIqIE5hdmlnYXRvcjphcHAtY29kZS1uYW1lIiwKLSAgICAgICAgICAg
ICIiLAotICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7Ci0KLSAgICBnX29iamVj
dF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAotICAgICAgICBnb2JqZWN0Q2xhc3MsCi0gICAgICAg
IFBST1BfQVBQX05BTUUsCi0gICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcoCi0gICAgICAgICAg
ICAiYXBwLW5hbWUiLAotICAgICAgICAgICAgIk5hdmlnYXRvcjphcHAtbmFtZSIsCi0gICAgICAg
ICAgICAicmVhZC1vbmx5IGdjaGFyKiBOYXZpZ2F0b3I6YXBwLW5hbWUiLAotICAgICAgICAgICAg
IiIsCi0gICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKLQotICAgIGdfb2JqZWN0
X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAg
UFJPUF9BUFBfVkVSU0lPTiwKLSAgICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZygKLSAgICAgICAg
ICAgICJhcHAtdmVyc2lvbiIsCi0gICAgICAgICAgICAiTmF2aWdhdG9yOmFwcC12ZXJzaW9uIiwK
LSAgICAgICAgICAgICJyZWFkLW9ubHkgZ2NoYXIqIE5hdmlnYXRvcjphcHAtdmVyc2lvbiIsCi0g
ICAgICAgICAgICAiIiwKLSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSkpOwotCi0g
ICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAgZ29iamVjdENsYXNz
LAotICAgICAgICBQUk9QX1BMQVRGT1JNLAotICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nKAot
ICAgICAgICAgICAgInBsYXRmb3JtIiwKLSAgICAgICAgICAgICJOYXZpZ2F0b3I6cGxhdGZvcm0i
LAotICAgICAgICAgICAgInJlYWQtb25seSBnY2hhciogTmF2aWdhdG9yOnBsYXRmb3JtIiwKLSAg
ICAgICAgICAgICIiLAotICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7Ci0KLSAg
ICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAotICAgICAgICBnb2JqZWN0Q2xhc3Ms
Ci0gICAgICAgIFBST1BfUFJPRFVDVCwKLSAgICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZygKLSAg
ICAgICAgICAgICJwcm9kdWN0IiwKLSAgICAgICAgICAgICJOYXZpZ2F0b3I6cHJvZHVjdCIsCi0g
ICAgICAgICAgICAicmVhZC1vbmx5IGdjaGFyKiBOYXZpZ2F0b3I6cHJvZHVjdCIsCi0gICAgICAg
ICAgICAiIiwKLSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSkpOwotCi0gICAgZ19v
YmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAgZ29iamVjdENsYXNzLAotICAg
ICAgICBQUk9QX1BST0RVQ1RfU1VCLAotICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nKAotICAg
ICAgICAgICAgInByb2R1Y3Qtc3ViIiwKLSAgICAgICAgICAgICJOYXZpZ2F0b3I6cHJvZHVjdC1z
dWIiLAotICAgICAgICAgICAgInJlYWQtb25seSBnY2hhciogTmF2aWdhdG9yOnByb2R1Y3Qtc3Vi
IiwKLSAgICAgICAgICAgICIiLAotICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7
Ci0KLSAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAotICAgICAgICBnb2JqZWN0
Q2xhc3MsCi0gICAgICAgIFBST1BfVVNFUl9BR0VOVCwKLSAgICAgICAgZ19wYXJhbV9zcGVjX3N0
cmluZygKLSAgICAgICAgICAgICJ1c2VyLWFnZW50IiwKLSAgICAgICAgICAgICJOYXZpZ2F0b3I6
dXNlci1hZ2VudCIsCi0gICAgICAgICAgICAicmVhZC1vbmx5IGdjaGFyKiBOYXZpZ2F0b3I6dXNl
ci1hZ2VudCIsCi0gICAgICAgICAgICAiIiwKLSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFE
QUJMRSkpOwotCi0gICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAg
Z29iamVjdENsYXNzLAotICAgICAgICBQUk9QX1ZFTkRPUiwKLSAgICAgICAgZ19wYXJhbV9zcGVj
X3N0cmluZygKLSAgICAgICAgICAgICJ2ZW5kb3IiLAotICAgICAgICAgICAgIk5hdmlnYXRvcjp2
ZW5kb3IiLAotICAgICAgICAgICAgInJlYWQtb25seSBnY2hhciogTmF2aWdhdG9yOnZlbmRvciIs
Ci0gICAgICAgICAgICAiIiwKLSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSkpOwot
Ci0gICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAgZ29iamVjdENs
YXNzLAotICAgICAgICBQUk9QX1ZFTkRPUl9TVUIsCi0gICAgICAgIGdfcGFyYW1fc3BlY19zdHJp
bmcoCi0gICAgICAgICAgICAidmVuZG9yLXN1YiIsCi0gICAgICAgICAgICAiTmF2aWdhdG9yOnZl
bmRvci1zdWIiLAotICAgICAgICAgICAgInJlYWQtb25seSBnY2hhciogTmF2aWdhdG9yOnZlbmRv
ci1zdWIiLAotICAgICAgICAgICAgIiIsCi0gICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFC
TEUpKTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdv
YmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9MQU5HVUFHRSwKLSAgICAgICAgZ19wYXJhbV9zcGVj
X3N0cmluZygKLSAgICAgICAgICAgICJsYW5ndWFnZSIsCi0gICAgICAgICAgICAiTmF2aWdhdG9y
Omxhbmd1YWdlIiwKLSAgICAgICAgICAgICJyZWFkLW9ubHkgZ2NoYXIqIE5hdmlnYXRvcjpsYW5n
dWFnZSIsCi0gICAgICAgICAgICAiIiwKLSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJM
RSkpOwotCi0gICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAgZ29i
amVjdENsYXNzLAotICAgICAgICBQUk9QX09OX0xJTkUsCi0gICAgICAgIGdfcGFyYW1fc3BlY19i
b29sZWFuKAotICAgICAgICAgICAgIm9uLWxpbmUiLAotICAgICAgICAgICAgIk5hdmlnYXRvcjpv
bi1saW5lIiwKLSAgICAgICAgICAgICJyZWFkLW9ubHkgZ2Jvb2xlYW4gTmF2aWdhdG9yOm9uLWxp
bmUiLAotICAgICAgICAgICAgRkFMU0UsCi0gICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFC
TEUpKTsKLQotfQotCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX25hdmlnYXRvcl9pbml0KFdlYktp
dERPTU5hdmlnYXRvciogcmVxdWVzdCkKLXsKLSAgICBXZWJLaXRET01OYXZpZ2F0b3JQcml2YXRl
KiBwcml2ID0gV0VCS0lUX0RPTV9OQVZJR0FUT1JfR0VUX1BSSVZBVEUocmVxdWVzdCk7Ci0gICAg
bmV3IChwcml2KSBXZWJLaXRET01OYXZpZ2F0b3JQcml2YXRlKCk7Ci19Ci0KLWdib29sZWFuIHdl
YmtpdF9kb21fbmF2aWdhdG9yX2phdmFfZW5hYmxlZChXZWJLaXRET01OYXZpZ2F0b3IqIHNlbGYp
Ci17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0
dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfTkFWSUdBVE9SKHNlbGYpLCBGQUxTRSk7Ci0g
ICAgV2ViQ29yZTo6TmF2aWdhdG9yKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdi
b29sZWFuIHJlc3VsdCA9IGl0ZW0tPmphdmFFbmFibGVkKCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLQotdm9pZCB3ZWJraXRfZG9tX25hdmlnYXRvcl9nZXRfc3RvcmFnZV91cGRhdGVzKFdlYktp
dERPTU5hdmlnYXRvciogc2VsZikKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3Rh
dGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX05BVklHQVRPUihz
ZWxmKSk7Ci0gICAgV2ViQ29yZTo6TmF2aWdhdG9yKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYp
OwotICAgIGl0ZW0tPmdldFN0b3JhZ2VVcGRhdGVzKCk7Ci19Ci0KLXZvaWQgd2Via2l0X2RvbV9u
YXZpZ2F0b3JfcmVnaXN0ZXJfcHJvdG9jb2xfaGFuZGxlcihXZWJLaXRET01OYXZpZ2F0b3IqIHNl
bGYsIGNvbnN0IGdjaGFyKiBzY2hlbWUsIGNvbnN0IGdjaGFyKiB1cmwsIGNvbnN0IGdjaGFyKiB0
aXRsZSwgR0Vycm9yKiogZXJyb3IpCi17Ci0jaWYgRU5BQkxFKE5BVklHQVRPUl9DT05URU5UX1VU
SUxTKQotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3Jl
dHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfTkFWSUdBVE9SKHNlbGYpKTsKLSAgICBnX3JldHVy
bl9pZl9mYWlsKHNjaGVtZSk7Ci0gICAgZ19yZXR1cm5faWZfZmFpbCh1cmwpOwotICAgIGdfcmV0
dXJuX2lmX2ZhaWwodGl0bGUpOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwoIWVycm9yIHx8ICEqZXJy
b3IpOwotICAgIFdlYkNvcmU6Ok5hdmlnYXRvciogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsK
LSAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRTY2hlbWUgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgo
c2NoZW1lKTsKLSAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRVcmwgPSBXVEY6OlN0cmluZzo6ZnJv
bVVURjgodXJsKTsKLSAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRUaXRsZSA9IFdURjo6U3RyaW5n
Ojpmcm9tVVRGOCh0aXRsZSk7Ci0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0g
ICAgV2ViQ29yZTo6TmF2aWdhdG9yQ29udGVudFV0aWxzOjpyZWdpc3RlclByb3RvY29sSGFuZGxl
cigqaXRlbSwgY29udmVydGVkU2NoZW1lLCBjb252ZXJ0ZWRVcmwsIGNvbnZlcnRlZFRpdGxlLCBl
Yyk7Ci0gICAgaWYgKGVjKSB7Ci0gICAgICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGVEZXNjcmlw
dGlvbiBlY2Rlc2MoZWMpOwotICAgICAgICBnX3NldF9lcnJvcl9saXRlcmFsKGVycm9yLCBnX3F1
YXJrX2Zyb21fc3RyaW5nKCJXRUJLSVRfRE9NIiksIGVjZGVzYy5jb2RlLCBlY2Rlc2MubmFtZSk7
Ci0gICAgfQotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc2VsZik7Ci0gICAgVU5VU0VEX1BBUkFN
KHNjaGVtZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHVybCk7Ci0gICAgVU5VU0VEX1BBUkFNKHRpdGxl
KTsKLSAgICBVTlVTRURfUEFSQU0oZXJyb3IpOwotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9U
X1BSRVNFTlQoIk5hdmlnYXRvciBDb250ZW50IFV0aWxzIikKLSNlbmRpZiAvKiBFTkFCTEUoTkFW
SUdBVE9SX0NPTlRFTlRfVVRJTFMpICovCi19Ci0KLWdjaGFyKiB3ZWJraXRfZG9tX25hdmlnYXRv
cl9pc19wcm90b2NvbF9oYW5kbGVyX3JlZ2lzdGVyZWQoV2ViS2l0RE9NTmF2aWdhdG9yKiBzZWxm
LCBjb25zdCBnY2hhciogc2NoZW1lLCBjb25zdCBnY2hhciogdXJsLCBHRXJyb3IqKiBlcnJvcikK
LXsKLSNpZiBFTkFCTEUoQ1VTVE9NX1NDSEVNRV9IQU5ETEVSKSAmJiBFTkFCTEUoTkFWSUdBVE9S
X0NPTlRFTlRfVVRJTFMpCi0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRl
OwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfTkFWSUdBVE9SKHNlbGYp
LCAwKTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChzY2hlbWUsIDApOwotICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKHVybCwgMCk7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoIWVycm9yIHx8
ICEqZXJyb3IsIDApOwotICAgIFdlYkNvcmU6Ok5hdmlnYXRvciogaXRlbSA9IFdlYktpdDo6Y29y
ZShzZWxmKTsKLSAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRTY2hlbWUgPSBXVEY6OlN0cmluZzo6
ZnJvbVVURjgoc2NoZW1lKTsKLSAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRVcmwgPSBXVEY6OlN0
cmluZzo6ZnJvbVVURjgodXJsKTsKLSAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsK
LSAgICBnY2hhciogcmVzdWx0ID0gY29udmVydFRvVVRGOFN0cmluZyhXZWJDb3JlOjpOYXZpZ2F0
b3JDb250ZW50VXRpbHM6OmlzUHJvdG9jb2xIYW5kbGVyUmVnaXN0ZXJlZChpdGVtLCBjb252ZXJ0
ZWRTY2hlbWUsIGNvbnZlcnRlZFVybCwgZWMpKTsKLSAgICByZXR1cm4gcmVzdWx0OwotI2Vsc2UK
LSAgICBVTlVTRURfUEFSQU0oc2VsZik7Ci0gICAgVU5VU0VEX1BBUkFNKHNjaGVtZSk7Ci0gICAg
VU5VU0VEX1BBUkFNKHVybCk7Ci0gICAgVU5VU0VEX1BBUkFNKGVycm9yKTsKLSNpZiAhRU5BQkxF
KE5BVklHQVRPUl9DT05URU5UX1VUSUxTKQotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BS
RVNFTlQoIk5hdmlnYXRvciBDb250ZW50IFV0aWxzIikKLSNlbmRpZgotI2lmICFFTkFCTEUoQ1VT
VE9NX1NDSEVNRV9IQU5ETEVSKQotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQo
IkN1c3RvbSBTY2hlbWUgSGFuZGxlciIpCi0jZW5kaWYKLSAgICByZXR1cm4gMDsKLSNlbmRpZiAv
KiBFTkFCTEUoQ1VTVE9NX1NDSEVNRV9IQU5ETEVSKSAmJiBFTkFCTEUoTkFWSUdBVE9SX0NPTlRF
TlRfVVRJTFMpICovCi19Ci0KLXZvaWQgd2Via2l0X2RvbV9uYXZpZ2F0b3JfdW5yZWdpc3Rlcl9w
cm90b2NvbF9oYW5kbGVyKFdlYktpdERPTU5hdmlnYXRvciogc2VsZiwgY29uc3QgZ2NoYXIqIHNj
aGVtZSwgY29uc3QgZ2NoYXIqIHVybCwgR0Vycm9yKiogZXJyb3IpCi17Ci0jaWYgRU5BQkxFKENV
U1RPTV9TQ0hFTUVfSEFORExFUikgJiYgRU5BQkxFKE5BVklHQVRPUl9DT05URU5UX1VUSUxTKQot
ICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl9p
Zl9mYWlsKFdFQktJVF9ET01fSVNfTkFWSUdBVE9SKHNlbGYpKTsKLSAgICBnX3JldHVybl9pZl9m
YWlsKHNjaGVtZSk7Ci0gICAgZ19yZXR1cm5faWZfZmFpbCh1cmwpOwotICAgIGdfcmV0dXJuX2lm
X2ZhaWwoIWVycm9yIHx8ICEqZXJyb3IpOwotICAgIFdlYkNvcmU6Ok5hdmlnYXRvciogaXRlbSA9
IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRTY2hlbWUgPSBX
VEY6OlN0cmluZzo6ZnJvbVVURjgoc2NoZW1lKTsKLSAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRV
cmwgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgodXJsKTsKLSAgICBXZWJDb3JlOjpFeGNlcHRpb25D
b2RlIGVjID0gMDsKLSAgICBXZWJDb3JlOjpOYXZpZ2F0b3JDb250ZW50VXRpbHM6OnVucmVnaXN0
ZXJQcm90b2NvbEhhbmRsZXIoKml0ZW0sIGNvbnZlcnRlZFNjaGVtZSwgY29udmVydGVkVXJsLCBl
Yyk7Ci0gICAgaWYgKGVjKSB7Ci0gICAgICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGVEZXNjcmlw
dGlvbiBlY2Rlc2MoZWMpOwotICAgICAgICBnX3NldF9lcnJvcl9saXRlcmFsKGVycm9yLCBnX3F1
YXJrX2Zyb21fc3RyaW5nKCJXRUJLSVRfRE9NIiksIGVjZGVzYy5jb2RlLCBlY2Rlc2MubmFtZSk7
Ci0gICAgfQotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc2VsZik7Ci0gICAgVU5VU0VEX1BBUkFN
KHNjaGVtZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHVybCk7Ci0gICAgVU5VU0VEX1BBUkFNKGVycm9y
KTsKLSNpZiAhRU5BQkxFKE5BVklHQVRPUl9DT05URU5UX1VUSUxTKQotICAgIFdFQktJVF9XQVJO
X0ZFQVRVUkVfTk9UX1BSRVNFTlQoIk5hdmlnYXRvciBDb250ZW50IFV0aWxzIikKLSNlbmRpZgot
I2lmICFFTkFCTEUoQ1VTVE9NX1NDSEVNRV9IQU5ETEVSKQotICAgIFdFQktJVF9XQVJOX0ZFQVRV
UkVfTk9UX1BSRVNFTlQoIkN1c3RvbSBTY2hlbWUgSGFuZGxlciIpCi0jZW5kaWYKLSNlbmRpZiAv
KiBFTkFCTEUoQ1VTVE9NX1NDSEVNRV9IQU5ETEVSKSAmJiBFTkFCTEUoTkFWSUdBVE9SX0NPTlRF
TlRfVVRJTFMpICovCi19Ci0KLWdib29sZWFuIHdlYmtpdF9kb21fbmF2aWdhdG9yX3ZpYnJhdGUo
V2ViS2l0RE9NTmF2aWdhdG9yKiBzZWxmLCBndWxvbmcgdGltZSkKLXsKLSNpZiBFTkFCTEUoVklC
UkFUSU9OKQotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBn
X3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX05BVklHQVRPUihzZWxmKSwgRkFMU0Up
OwotICAgIFdlYkNvcmU6Ok5hdmlnYXRvciogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAg
ICBnYm9vbGVhbiByZXN1bHQgPSBXZWJDb3JlOjpOYXZpZ2F0b3JWaWJyYXRpb246OnZpYnJhdGUo
Kml0ZW0sIHRpbWUpOwotICAgIHJldHVybiByZXN1bHQ7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJB
TShzZWxmKTsKLSAgICBVTlVTRURfUEFSQU0odGltZSk7Ci0gICAgV0VCS0lUX1dBUk5fRkVBVFVS
RV9OT1RfUFJFU0VOVCgiVmlicmF0aW9uIikKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Z2Jvb2xl
YW4+KDApOwotI2VuZGlmIC8qIEVOQUJMRShWSUJSQVRJT04pICovCi19Ci0KLVdlYktpdERPTURP
TVBsdWdpbkFycmF5KiB3ZWJraXRfZG9tX25hdmlnYXRvcl9nZXRfcGx1Z2lucyhXZWJLaXRET01O
YXZpZ2F0b3IqIHNlbGYpCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0
YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfTkFWSUdBVE9SKHNl
bGYpLCAwKTsKLSAgICBXZWJDb3JlOjpOYXZpZ2F0b3IqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2Vs
Zik7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkRPTVBsdWdpbkFycmF5PiBnb2JqZWN0UmVzdWx0ID0g
V1RGOjpnZXRQdHIoaXRlbS0+cGx1Z2lucygpKTsKLSAgICByZXR1cm4gV2ViS2l0OjpraXQoZ29i
amVjdFJlc3VsdC5nZXQoKSk7Ci19Ci0KLVdlYktpdERPTURPTU1pbWVUeXBlQXJyYXkqIHdlYmtp
dF9kb21fbmF2aWdhdG9yX2dldF9taW1lX3R5cGVzKFdlYktpdERPTU5hdmlnYXRvciogc2VsZikK
LXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1
cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19OQVZJR0FUT1Ioc2VsZiksIDApOwotICAgIFdl
YkNvcmU6Ok5hdmlnYXRvciogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBSZWZQdHI8
V2ViQ29yZTo6RE9NTWltZVR5cGVBcnJheT4gZ29iamVjdFJlc3VsdCA9IFdURjo6Z2V0UHRyKGl0
ZW0tPm1pbWVUeXBlcygpKTsKLSAgICByZXR1cm4gV2ViS2l0OjpraXQoZ29iamVjdFJlc3VsdC5n
ZXQoKSk7Ci19Ci0KLWdib29sZWFuIHdlYmtpdF9kb21fbmF2aWdhdG9yX2dldF9jb29raWVfZW5h
YmxlZChXZWJLaXRET01OYXZpZ2F0b3IqIHNlbGYpCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhy
ZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01f
SVNfTkFWSUdBVE9SKHNlbGYpLCBGQUxTRSk7Ci0gICAgV2ViQ29yZTo6TmF2aWdhdG9yKiBpdGVt
ID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdib29sZWFuIHJlc3VsdCA9IGl0ZW0tPmNvb2tp
ZUVuYWJsZWQoKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1XZWJLaXRET01CYXR0ZXJ5TWFu
YWdlciogd2Via2l0X2RvbV9uYXZpZ2F0b3JfZ2V0X3dlYmtpdF9iYXR0ZXJ5KFdlYktpdERPTU5h
dmlnYXRvciogc2VsZikKLXsKLSNpZiBFTkFCTEUoQkFUVEVSWV9TVEFUVVMpCi0gICAgV2ViQ29y
ZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWls
KFdFQktJVF9ET01fSVNfTkFWSUdBVE9SKHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpOYXZpZ2F0
b3IqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkJhdHRl
cnlNYW5hZ2VyPiBnb2JqZWN0UmVzdWx0ID0gV1RGOjpnZXRQdHIoV2ViQ29yZTo6TmF2aWdhdG9y
QmF0dGVyeTo6d2Via2l0QmF0dGVyeSgqaXRlbSkpOwotICAgIHJldHVybiBXZWJLaXQ6OmtpdChn
b2JqZWN0UmVzdWx0LmdldCgpKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHNlbGYpOwotICAg
IFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIkJhdHRlcnkgU3RhdHVzIikKLSAgICBy
ZXR1cm4gMDsKLSNlbmRpZiAvKiBFTkFCTEUoQkFUVEVSWV9TVEFUVVMpICovCi19Ci0KLVdlYktp
dERPTUdlb2xvY2F0aW9uKiB3ZWJraXRfZG9tX25hdmlnYXRvcl9nZXRfZ2VvbG9jYXRpb24oV2Vi
S2l0RE9NTmF2aWdhdG9yKiBzZWxmKQotewotI2lmIEVOQUJMRShHRU9MT0NBVElPTikKLSAgICBX
ZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoV0VCS0lUX0RPTV9JU19OQVZJR0FUT1Ioc2VsZiksIDApOwotICAgIFdlYkNvcmU6Ok5h
dmlnYXRvciogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6
R2VvbG9jYXRpb24+IGdvYmplY3RSZXN1bHQgPSBXVEY6OmdldFB0cihXZWJDb3JlOjpOYXZpZ2F0
b3JHZW9sb2NhdGlvbjo6Z2VvbG9jYXRpb24oKml0ZW0pKTsKLSAgICByZXR1cm4gV2ViS2l0Ojpr
aXQoZ29iamVjdFJlc3VsdC5nZXQoKSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShzZWxmKTsK
LSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJHZW9sb2NhdGlvbiIpCi0gICAg
cmV0dXJuIDA7Ci0jZW5kaWYgLyogRU5BQkxFKEdFT0xPQ0FUSU9OKSAqLwotfQotCi1XZWJLaXRE
T01NZWRpYURldmljZXMqIHdlYmtpdF9kb21fbmF2aWdhdG9yX2dldF9tZWRpYV9kZXZpY2VzKFdl
YktpdERPTU5hdmlnYXRvciogc2VsZikKLXsKLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAg
IFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxf
aWZfZmFpbChXRUJLSVRfRE9NX0lTX05BVklHQVRPUihzZWxmKSwgMCk7Ci0gICAgV2ViQ29yZTo6
TmF2aWdhdG9yKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIFJlZlB0cjxXZWJDb3Jl
OjpNZWRpYURldmljZXM+IGdvYmplY3RSZXN1bHQgPSBXVEY6OmdldFB0cihXZWJDb3JlOjpOYXZp
Z2F0b3JNZWRpYURldmljZXM6Om1lZGlhRGV2aWNlcygqaXRlbSkpOwotICAgIHJldHVybiBXZWJL
aXQ6OmtpdChnb2JqZWN0UmVzdWx0LmdldCgpKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHNl
bGYpOwotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIk1lZGlhIFN0cmVhbSIp
Ci0gICAgcmV0dXJuIDA7Ci0jZW5kaWYgLyogRU5BQkxFKE1FRElBX1NUUkVBTSkgKi8KLX0KLQot
Z3VpbnQ2NCB3ZWJraXRfZG9tX25hdmlnYXRvcl9nZXRfaGFyZHdhcmVfY29uY3VycmVuY3koV2Vi
S2l0RE9NTmF2aWdhdG9yKiBzZWxmKQotewotI2lmIEVOQUJMRShOQVZJR0FUT1JfSFdDT05DVVJS
RU5DWSkKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19OQVZJR0FUT1Ioc2VsZiksIDApOwotICAg
IFdlYkNvcmU6Ok5hdmlnYXRvciogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBndWlu
dDY0IHJlc3VsdCA9IGl0ZW0tPmhhcmR3YXJlQ29uY3VycmVuY3koKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc2VsZik7Ci0gICAgV0VCS0lUX1dBUk5fRkVB
VFVSRV9OT1RfUFJFU0VOVCgiTmF2aWdhdG9yIEh3Y29uY3VycmVuY3kiKQotICAgIHJldHVybiBz
dGF0aWNfY2FzdDxndWludDY0PigwKTsKLSNlbmRpZiAvKiBFTkFCTEUoTkFWSUdBVE9SX0hXQ09O
Q1VSUkVOQ1kpICovCi19Ci0KLWdjaGFyKiB3ZWJraXRfZG9tX25hdmlnYXRvcl9nZXRfYXBwX2Nv
ZGVfbmFtZShXZWJLaXRET01OYXZpZ2F0b3IqIHNlbGYpCi17Ci0gICAgV2ViQ29yZTo6SlNNYWlu
VGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9E
T01fSVNfTkFWSUdBVE9SKHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpOYXZpZ2F0b3IqIGl0ZW0g
PSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ2NoYXIqIHJlc3VsdCA9IGNvbnZlcnRUb1VURjhT
dHJpbmcoaXRlbS0+YXBwQ29kZU5hbWUoKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotZ2No
YXIqIHdlYmtpdF9kb21fbmF2aWdhdG9yX2dldF9hcHBfbmFtZShXZWJLaXRET01OYXZpZ2F0b3Iq
IHNlbGYpCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAg
IGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfTkFWSUdBVE9SKHNlbGYpLCAwKTsK
LSAgICBXZWJDb3JlOjpOYXZpZ2F0b3IqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAg
Z2NoYXIqIHJlc3VsdCA9IGNvbnZlcnRUb1VURjhTdHJpbmcoaXRlbS0+YXBwTmFtZSgpKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotCi1nY2hhciogd2Via2l0X2RvbV9uYXZpZ2F0b3JfZ2V0X2Fw
cF92ZXJzaW9uKFdlYktpdERPTU5hdmlnYXRvciogc2VsZikKLXsKLSAgICBXZWJDb3JlOjpKU01h
aW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lU
X0RPTV9JU19OQVZJR0FUT1Ioc2VsZiksIDApOwotICAgIFdlYkNvcmU6Ok5hdmlnYXRvciogaXRl
bSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBnY2hhciogcmVzdWx0ID0gY29udmVydFRvVVRG
OFN0cmluZyhpdGVtLT5hcHBWZXJzaW9uKCkpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLWdj
aGFyKiB3ZWJraXRfZG9tX25hdmlnYXRvcl9nZXRfcGxhdGZvcm0oV2ViS2l0RE9NTmF2aWdhdG9y
KiBzZWxmKQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX05BVklHQVRPUihzZWxmKSwgMCk7
Ci0gICAgV2ViQ29yZTo6TmF2aWdhdG9yKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAg
IGdjaGFyKiByZXN1bHQgPSBjb252ZXJ0VG9VVEY4U3RyaW5nKGl0ZW0tPnBsYXRmb3JtKCkpOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLWdjaGFyKiB3ZWJraXRfZG9tX25hdmlnYXRvcl9nZXRf
cHJvZHVjdChXZWJLaXRET01OYXZpZ2F0b3IqIHNlbGYpCi17Ci0gICAgV2ViQ29yZTo6SlNNYWlu
VGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9E
T01fSVNfTkFWSUdBVE9SKHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpOYXZpZ2F0b3IqIGl0ZW0g
PSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ2NoYXIqIHJlc3VsdCA9IGNvbnZlcnRUb1VURjhT
dHJpbmcoaXRlbS0+cHJvZHVjdCgpKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1nY2hhciog
d2Via2l0X2RvbV9uYXZpZ2F0b3JfZ2V0X3Byb2R1Y3Rfc3ViKFdlYktpdERPTU5hdmlnYXRvciog
c2VsZikKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAg
Z19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19OQVZJR0FUT1Ioc2VsZiksIDApOwot
ICAgIFdlYkNvcmU6Ok5hdmlnYXRvciogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBn
Y2hhciogcmVzdWx0ID0gY29udmVydFRvVVRGOFN0cmluZyhpdGVtLT5wcm9kdWN0U3ViKCkpOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLWdjaGFyKiB3ZWJraXRfZG9tX25hdmlnYXRvcl9nZXRf
dXNlcl9hZ2VudChXZWJLaXRET01OYXZpZ2F0b3IqIHNlbGYpCi17Ci0gICAgV2ViQ29yZTo6SlNN
YWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJ
VF9ET01fSVNfTkFWSUdBVE9SKHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpOYXZpZ2F0b3IqIGl0
ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ2NoYXIqIHJlc3VsdCA9IGNvbnZlcnRUb1VU
RjhTdHJpbmcoaXRlbS0+dXNlckFnZW50KCkpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLWdj
aGFyKiB3ZWJraXRfZG9tX25hdmlnYXRvcl9nZXRfdmVuZG9yKFdlYktpdERPTU5hdmlnYXRvciog
c2VsZikKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAg
Z19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19OQVZJR0FUT1Ioc2VsZiksIDApOwot
ICAgIFdlYkNvcmU6Ok5hdmlnYXRvciogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBn
Y2hhciogcmVzdWx0ID0gY29udmVydFRvVVRGOFN0cmluZyhpdGVtLT52ZW5kb3IoKSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLQotZ2NoYXIqIHdlYmtpdF9kb21fbmF2aWdhdG9yX2dldF92ZW5k
b3Jfc3ViKFdlYktpdERPTU5hdmlnYXRvciogc2VsZikKLXsKLSAgICBXZWJDb3JlOjpKU01haW5U
aHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RP
TV9JU19OQVZJR0FUT1Ioc2VsZiksIDApOwotICAgIFdlYkNvcmU6Ok5hdmlnYXRvciogaXRlbSA9
IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBnY2hhciogcmVzdWx0ID0gY29udmVydFRvVVRGOFN0
cmluZyhpdGVtLT52ZW5kb3JTdWIoKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotZ2NoYXIq
IHdlYmtpdF9kb21fbmF2aWdhdG9yX2dldF9sYW5ndWFnZShXZWJLaXRET01OYXZpZ2F0b3IqIHNl
bGYpCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdf
cmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfTkFWSUdBVE9SKHNlbGYpLCAwKTsKLSAg
ICBXZWJDb3JlOjpOYXZpZ2F0b3IqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ2No
YXIqIHJlc3VsdCA9IGNvbnZlcnRUb1VURjhTdHJpbmcoaXRlbS0+bGFuZ3VhZ2UoKSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLQotZ2Jvb2xlYW4gd2Via2l0X2RvbV9uYXZpZ2F0b3JfZ2V0X29u
X2xpbmUoV2ViS2l0RE9NTmF2aWdhdG9yKiBzZWxmKQotewotICAgIFdlYkNvcmU6OkpTTWFpblRo
cmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9N
X0lTX05BVklHQVRPUihzZWxmKSwgRkFMU0UpOwotICAgIFdlYkNvcmU6Ok5hdmlnYXRvciogaXRl
bSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBnYm9vbGVhbiByZXN1bHQgPSBpdGVtLT5vbkxp
bmUoKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTU5hdmlnYXRv
ci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RP
TS9XZWJLaXRET01OYXZpZ2F0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzBj
MjAzMS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTU5hdmlnYXRvci5oCisrKyAvZGV2L251bGwKQEAgLTEs
MzIyICswLDAgQEAKLS8qCi0gKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVu
IHNvdXJjZSBwcm9qZWN0LgotICogIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2Vu
ZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICogIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwot
ICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgV2Vi
S2l0RE9NTmF2aWdhdG9yX2gKLSNkZWZpbmUgV2ViS2l0RE9NTmF2aWdhdG9yX2gKLQotI2lmZGVm
IFdFQktJVF9ET01fVVNFX1VOU1RBQkxFX0FQSQotCi0jaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4K
LSNpbmNsdWRlIDx3ZWJraXRkb20vV2ViS2l0RE9NT2JqZWN0Lmg+Ci0jaW5jbHVkZSA8d2Via2l0
ZG9tL3dlYmtpdGRvbWRlZmluZXMtdW5zdGFibGUuaD4KLQotR19CRUdJTl9ERUNMUwotCi0jZGVm
aW5lIFdFQktJVF9ET01fVFlQRV9OQVZJR0FUT1IgICAgICAgICAgICAod2Via2l0X2RvbV9uYXZp
Z2F0b3JfZ2V0X3R5cGUoKSkKLSNkZWZpbmUgV0VCS0lUX0RPTV9OQVZJR0FUT1Iob2JqKSAgICAg
ICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwgV0VCS0lUX0RPTV9UWVBF
X05BVklHQVRPUiwgV2ViS2l0RE9NTmF2aWdhdG9yKSkKLSNkZWZpbmUgV0VCS0lUX0RPTV9OQVZJ
R0FUT1JfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLCAg
V0VCS0lUX0RPTV9UWVBFX05BVklHQVRPUiwgV2ViS2l0RE9NTmF2aWdhdG9yQ2xhc3MpCi0jZGVm
aW5lIFdFQktJVF9ET01fSVNfTkFWSUdBVE9SKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lO
U1RBTkNFX1RZUEUoKG9iaiksIFdFQktJVF9ET01fVFlQRV9OQVZJR0FUT1IpKQotI2RlZmluZSBX
RUJLSVRfRE9NX0lTX05BVklHQVRPUl9DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19U
WVBFKChrbGFzcyksICBXRUJLSVRfRE9NX1RZUEVfTkFWSUdBVE9SKSkKLSNkZWZpbmUgV0VCS0lU
X0RPTV9OQVZJR0FUT1JfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNT
KChvYmopLCAgV0VCS0lUX0RPTV9UWVBFX05BVklHQVRPUiwgV2ViS2l0RE9NTmF2aWdhdG9yQ2xh
c3MpKQotCi1zdHJ1Y3QgX1dlYktpdERPTU5hdmlnYXRvciB7Ci0gICAgV2ViS2l0RE9NT2JqZWN0
IHBhcmVudF9pbnN0YW5jZTsKLX07Ci0KLXN0cnVjdCBfV2ViS2l0RE9NTmF2aWdhdG9yQ2xhc3Mg
ewotICAgIFdlYktpdERPTU9iamVjdENsYXNzIHBhcmVudF9jbGFzczsKLX07Ci0KLVdFQktJVF9B
UEkgR1R5cGUKLXdlYmtpdF9kb21fbmF2aWdhdG9yX2dldF90eXBlKHZvaWQpOwotCi0vKioKLSAq
IHdlYmtpdF9kb21fbmF2aWdhdG9yX2phdmFfZW5hYmxlZDoKLSAqIEBzZWxmOiBBICNXZWJLaXRE
T01OYXZpZ2F0b3IKLSAqCi0gKiBSZXR1cm5zOiBBICNnYm9vbGVhbgotICoKLSAqIFN0YWJpbGl0
eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSBnYm9vbGVhbgotd2Via2l0X2RvbV9uYXZpZ2F0
b3JfamF2YV9lbmFibGVkKFdlYktpdERPTU5hdmlnYXRvciogc2VsZik7Ci0KLS8qKgotICogd2Vi
a2l0X2RvbV9uYXZpZ2F0b3JfZ2V0X3N0b3JhZ2VfdXBkYXRlczoKLSAqIEBzZWxmOiBBICNXZWJL
aXRET01OYXZpZ2F0b3IKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9B
UEkgdm9pZAotd2Via2l0X2RvbV9uYXZpZ2F0b3JfZ2V0X3N0b3JhZ2VfdXBkYXRlcyhXZWJLaXRE
T01OYXZpZ2F0b3IqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9kb21fbmF2aWdhdG9yX3JlZ2lz
dGVyX3Byb3RvY29sX2hhbmRsZXI6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NTmF2aWdhdG9yCi0g
KiBAc2NoZW1lOiBBICNnY2hhcgotICogQHVybDogQSAjZ2NoYXIKLSAqIEB0aXRsZTogQSAjZ2No
YXIKLSAqIEBlcnJvcjogI0dFcnJvcgotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwot
V0VCS0lUX0FQSSB2b2lkCi13ZWJraXRfZG9tX25hdmlnYXRvcl9yZWdpc3Rlcl9wcm90b2NvbF9o
YW5kbGVyKFdlYktpdERPTU5hdmlnYXRvciogc2VsZiwgY29uc3QgZ2NoYXIqIHNjaGVtZSwgY29u
c3QgZ2NoYXIqIHVybCwgY29uc3QgZ2NoYXIqIHRpdGxlLCBHRXJyb3IqKiBlcnJvcik7Ci0KLS8q
KgotICogd2Via2l0X2RvbV9uYXZpZ2F0b3JfaXNfcHJvdG9jb2xfaGFuZGxlcl9yZWdpc3RlcmVk
OgotICogQHNlbGY6IEEgI1dlYktpdERPTU5hdmlnYXRvcgotICogQHNjaGVtZTogQSAjZ2NoYXIK
LSAqIEB1cmw6IEEgI2djaGFyCi0gKiBAZXJyb3I6ICNHRXJyb3IKLSAqCi0gKiBSZXR1cm5zOiBB
ICNnY2hhcgotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSBnY2hh
cioKLXdlYmtpdF9kb21fbmF2aWdhdG9yX2lzX3Byb3RvY29sX2hhbmRsZXJfcmVnaXN0ZXJlZChX
ZWJLaXRET01OYXZpZ2F0b3IqIHNlbGYsIGNvbnN0IGdjaGFyKiBzY2hlbWUsIGNvbnN0IGdjaGFy
KiB1cmwsIEdFcnJvcioqIGVycm9yKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX25hdmlnYXRvcl91
bnJlZ2lzdGVyX3Byb3RvY29sX2hhbmRsZXI6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NTmF2aWdh
dG9yCi0gKiBAc2NoZW1lOiBBICNnY2hhcgotICogQHVybDogQSAjZ2NoYXIKLSAqIEBlcnJvcjog
I0dFcnJvcgotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSB2b2lk
Ci13ZWJraXRfZG9tX25hdmlnYXRvcl91bnJlZ2lzdGVyX3Byb3RvY29sX2hhbmRsZXIoV2ViS2l0
RE9NTmF2aWdhdG9yKiBzZWxmLCBjb25zdCBnY2hhciogc2NoZW1lLCBjb25zdCBnY2hhciogdXJs
LCBHRXJyb3IqKiBlcnJvcik7Ci0KLS8qKgotICogd2Via2l0X2RvbV9uYXZpZ2F0b3JfdmlicmF0
ZToKLSAqIEBzZWxmOiBBICNXZWJLaXRET01OYXZpZ2F0b3IKLSAqIEB0aW1lOiBBICNndWxvbmcK
LSAqCi0gKiBSZXR1cm5zOiBBICNnYm9vbGVhbgotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUK
LSoqLwotV0VCS0lUX0FQSSBnYm9vbGVhbgotd2Via2l0X2RvbV9uYXZpZ2F0b3JfdmlicmF0ZShX
ZWJLaXRET01OYXZpZ2F0b3IqIHNlbGYsIGd1bG9uZyB0aW1lKTsKLQotLyoqCi0gKiB3ZWJraXRf
ZG9tX25hdmlnYXRvcl9nZXRfcGx1Z2luczoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01OYXZpZ2F0
b3IKLSAqCi0gKiBSZXR1cm5zOiAodHJhbnNmZXIgZnVsbCk6IEEgI1dlYktpdERPTURPTVBsdWdp
bkFycmF5Ci0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIFdlYktp
dERPTURPTVBsdWdpbkFycmF5Kgotd2Via2l0X2RvbV9uYXZpZ2F0b3JfZ2V0X3BsdWdpbnMoV2Vi
S2l0RE9NTmF2aWdhdG9yKiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX25hdmlnYXRvcl9n
ZXRfbWltZV90eXBlczoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01OYXZpZ2F0b3IKLSAqCi0gKiBS
ZXR1cm5zOiAodHJhbnNmZXIgZnVsbCk6IEEgI1dlYktpdERPTURPTU1pbWVUeXBlQXJyYXkKLSAq
Ci0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgV2ViS2l0RE9NRE9NTWlt
ZVR5cGVBcnJheSoKLXdlYmtpdF9kb21fbmF2aWdhdG9yX2dldF9taW1lX3R5cGVzKFdlYktpdERP
TU5hdmlnYXRvciogc2VsZik7Ci0KLS8qKgotICogd2Via2l0X2RvbV9uYXZpZ2F0b3JfZ2V0X2Nv
b2tpZV9lbmFibGVkOgotICogQHNlbGY6IEEgI1dlYktpdERPTU5hdmlnYXRvcgotICoKLSAqIFJl
dHVybnM6IEEgI2dib29sZWFuCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJL
SVRfQVBJIGdib29sZWFuCi13ZWJraXRfZG9tX25hdmlnYXRvcl9nZXRfY29va2llX2VuYWJsZWQo
V2ViS2l0RE9NTmF2aWdhdG9yKiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX25hdmlnYXRv
cl9nZXRfd2Via2l0X2JhdHRlcnk6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NTmF2aWdhdG9yCi0g
KgotICogUmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiBBICNXZWJLaXRET01CYXR0ZXJ5TWFuYWdl
cgotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSBXZWJLaXRET01C
YXR0ZXJ5TWFuYWdlcioKLXdlYmtpdF9kb21fbmF2aWdhdG9yX2dldF93ZWJraXRfYmF0dGVyeShX
ZWJLaXRET01OYXZpZ2F0b3IqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9kb21fbmF2aWdhdG9y
X2dldF9nZW9sb2NhdGlvbjoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01OYXZpZ2F0b3IKLSAqCi0g
KiBSZXR1cm5zOiAodHJhbnNmZXIgZnVsbCk6IEEgI1dlYktpdERPTUdlb2xvY2F0aW9uCi0gKgot
ICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIFdlYktpdERPTUdlb2xvY2F0
aW9uKgotd2Via2l0X2RvbV9uYXZpZ2F0b3JfZ2V0X2dlb2xvY2F0aW9uKFdlYktpdERPTU5hdmln
YXRvciogc2VsZik7Ci0KLS8qKgotICogd2Via2l0X2RvbV9uYXZpZ2F0b3JfZ2V0X21lZGlhX2Rl
dmljZXM6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NTmF2aWdhdG9yCi0gKgotICogUmV0dXJuczog
KHRyYW5zZmVyIG5vbmUpOiBBICNXZWJLaXRET01NZWRpYURldmljZXMKLSAqCi0gKiBTdGFiaWxp
dHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgV2ViS2l0RE9NTWVkaWFEZXZpY2VzKgotd2Vi
a2l0X2RvbV9uYXZpZ2F0b3JfZ2V0X21lZGlhX2RldmljZXMoV2ViS2l0RE9NTmF2aWdhdG9yKiBz
ZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX25hdmlnYXRvcl9nZXRfaGFyZHdhcmVfY29uY3Vy
cmVuY3k6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NTmF2aWdhdG9yCi0gKgotICogUmV0dXJuczog
QSAjZ3VpbnQ2NAotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSBn
dWludDY0Ci13ZWJraXRfZG9tX25hdmlnYXRvcl9nZXRfaGFyZHdhcmVfY29uY3VycmVuY3koV2Vi
S2l0RE9NTmF2aWdhdG9yKiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX25hdmlnYXRvcl9n
ZXRfYXBwX2NvZGVfbmFtZToKLSAqIEBzZWxmOiBBICNXZWJLaXRET01OYXZpZ2F0b3IKLSAqCi0g
KiBSZXR1cm5zOiBBICNnY2hhcgotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VC
S0lUX0FQSSBnY2hhcioKLXdlYmtpdF9kb21fbmF2aWdhdG9yX2dldF9hcHBfY29kZV9uYW1lKFdl
YktpdERPTU5hdmlnYXRvciogc2VsZik7Ci0KLS8qKgotICogd2Via2l0X2RvbV9uYXZpZ2F0b3Jf
Z2V0X2FwcF9uYW1lOgotICogQHNlbGY6IEEgI1dlYktpdERPTU5hdmlnYXRvcgotICoKLSAqIFJl
dHVybnM6IEEgI2djaGFyCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRf
QVBJIGdjaGFyKgotd2Via2l0X2RvbV9uYXZpZ2F0b3JfZ2V0X2FwcF9uYW1lKFdlYktpdERPTU5h
dmlnYXRvciogc2VsZik7Ci0KLS8qKgotICogd2Via2l0X2RvbV9uYXZpZ2F0b3JfZ2V0X2FwcF92
ZXJzaW9uOgotICogQHNlbGY6IEEgI1dlYktpdERPTU5hdmlnYXRvcgotICoKLSAqIFJldHVybnM6
IEEgI2djaGFyCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIGdj
aGFyKgotd2Via2l0X2RvbV9uYXZpZ2F0b3JfZ2V0X2FwcF92ZXJzaW9uKFdlYktpdERPTU5hdmln
YXRvciogc2VsZik7Ci0KLS8qKgotICogd2Via2l0X2RvbV9uYXZpZ2F0b3JfZ2V0X3BsYXRmb3Jt
OgotICogQHNlbGY6IEEgI1dlYktpdERPTU5hdmlnYXRvcgotICoKLSAqIFJldHVybnM6IEEgI2dj
aGFyCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIGdjaGFyKgot
d2Via2l0X2RvbV9uYXZpZ2F0b3JfZ2V0X3BsYXRmb3JtKFdlYktpdERPTU5hdmlnYXRvciogc2Vs
Zik7Ci0KLS8qKgotICogd2Via2l0X2RvbV9uYXZpZ2F0b3JfZ2V0X3Byb2R1Y3Q6Ci0gKiBAc2Vs
ZjogQSAjV2ViS2l0RE9NTmF2aWdhdG9yCi0gKgotICogUmV0dXJuczogQSAjZ2NoYXIKLSAqCi0g
KiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgZ2NoYXIqCi13ZWJraXRfZG9t
X25hdmlnYXRvcl9nZXRfcHJvZHVjdChXZWJLaXRET01OYXZpZ2F0b3IqIHNlbGYpOwotCi0vKioK
LSAqIHdlYmtpdF9kb21fbmF2aWdhdG9yX2dldF9wcm9kdWN0X3N1YjoKLSAqIEBzZWxmOiBBICNX
ZWJLaXRET01OYXZpZ2F0b3IKLSAqCi0gKiBSZXR1cm5zOiBBICNnY2hhcgotICoKLSAqIFN0YWJp
bGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSBnY2hhcioKLXdlYmtpdF9kb21fbmF2aWdh
dG9yX2dldF9wcm9kdWN0X3N1YihXZWJLaXRET01OYXZpZ2F0b3IqIHNlbGYpOwotCi0vKioKLSAq
IHdlYmtpdF9kb21fbmF2aWdhdG9yX2dldF91c2VyX2FnZW50OgotICogQHNlbGY6IEEgI1dlYktp
dERPTU5hdmlnYXRvcgotICoKLSAqIFJldHVybnM6IEEgI2djaGFyCi0gKgotICogU3RhYmlsaXR5
OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIGdjaGFyKgotd2Via2l0X2RvbV9uYXZpZ2F0b3Jf
Z2V0X3VzZXJfYWdlbnQoV2ViS2l0RE9NTmF2aWdhdG9yKiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJr
aXRfZG9tX25hdmlnYXRvcl9nZXRfdmVuZG9yOgotICogQHNlbGY6IEEgI1dlYktpdERPTU5hdmln
YXRvcgotICoKLSAqIFJldHVybnM6IEEgI2djaGFyCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJs
ZQotKiovCi1XRUJLSVRfQVBJIGdjaGFyKgotd2Via2l0X2RvbV9uYXZpZ2F0b3JfZ2V0X3ZlbmRv
cihXZWJLaXRET01OYXZpZ2F0b3IqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9kb21fbmF2aWdh
dG9yX2dldF92ZW5kb3Jfc3ViOgotICogQHNlbGY6IEEgI1dlYktpdERPTU5hdmlnYXRvcgotICoK
LSAqIFJldHVybnM6IEEgI2djaGFyCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1X
RUJLSVRfQVBJIGdjaGFyKgotd2Via2l0X2RvbV9uYXZpZ2F0b3JfZ2V0X3ZlbmRvcl9zdWIoV2Vi
S2l0RE9NTmF2aWdhdG9yKiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX25hdmlnYXRvcl9n
ZXRfbGFuZ3VhZ2U6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NTmF2aWdhdG9yCi0gKgotICogUmV0
dXJuczogQSAjZ2NoYXIKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9B
UEkgZ2NoYXIqCi13ZWJraXRfZG9tX25hdmlnYXRvcl9nZXRfbGFuZ3VhZ2UoV2ViS2l0RE9NTmF2
aWdhdG9yKiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX25hdmlnYXRvcl9nZXRfb25fbGlu
ZToKLSAqIEBzZWxmOiBBICNXZWJLaXRET01OYXZpZ2F0b3IKLSAqCi0gKiBSZXR1cm5zOiBBICNn
Ym9vbGVhbgotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSBnYm9v
bGVhbgotd2Via2l0X2RvbV9uYXZpZ2F0b3JfZ2V0X29uX2xpbmUoV2ViS2l0RE9NTmF2aWdhdG9y
KiBzZWxmKTsKLQotR19FTkRfREVDTFMKLQotI2VuZGlmIC8qIFdFQktJVF9ET01fVVNFX1VOU1RB
QkxFX0FQSSAqLwotI2VuZGlmIC8qIFdlYktpdERPTU5hdmlnYXRvcl9oICovCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dl
YktpdERPTU5hdmlnYXRvck1lZGlhRGV2aWNlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTU5hdmlnYXRvck1lZGlhRGV2
aWNlcy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJlYTJmMmUuLjAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RP
TS9XZWJLaXRET01OYXZpZ2F0b3JNZWRpYURldmljZXMuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
NiArMCwwIEBACi0vKgotICAgIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQganVzdCB0byB0ZWxsIGJ1
aWxkIHNjcmlwdHMgdGhhdCBXZWJLaXRET01OYXZpZ2F0b3JNZWRpYURldmljZXMuaCBhbmQKLSAg
ICBXZWJLaXRET01OYXZpZ2F0b3JNZWRpYURldmljZXMuY3BwIGFyZSBjcmVhdGVkIGZvciBOYXZp
Z2F0b3JNZWRpYURldmljZXMuaWRsLCBhbmQgdGh1cwotICAgIHByZXZlbnQgdGhlIGJ1aWxkIHNj
cmlwdHMgZnJvbSB0cnlpbmcgdG8gZ2VuZXJhdGUgV2ViS2l0RE9NTmF2aWdhdG9yTWVkaWFEZXZp
Y2VzLmggYW5kCi0gICAgV2ViS2l0RE9NTmF2aWdhdG9yTWVkaWFEZXZpY2VzLmNwcCBhdCBldmVy
eSBidWlsZC4gVGhpcyBmaWxlIG11c3Qgbm90IGJlIHRyaWVkIHRvIGNvbXBpbGUuCi0qLwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3Rr
L0RPTS9XZWJLaXRET01OYXZpZ2F0b3JNZWRpYURldmljZXMuaCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NTmF2aWdhdG9yTWVk
aWFEZXZpY2VzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJlYTJmMmUuLjAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3Rr
L0RPTS9XZWJLaXRET01OYXZpZ2F0b3JNZWRpYURldmljZXMuaAorKysgL2Rldi9udWxsCkBAIC0x
LDYgKzAsMCBAQAotLyoKLSAgICBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGp1c3QgdG8gdGVsbCBi
dWlsZCBzY3JpcHRzIHRoYXQgV2ViS2l0RE9NTmF2aWdhdG9yTWVkaWFEZXZpY2VzLmggYW5kCi0g
ICAgV2ViS2l0RE9NTmF2aWdhdG9yTWVkaWFEZXZpY2VzLmNwcCBhcmUgY3JlYXRlZCBmb3IgTmF2
aWdhdG9yTWVkaWFEZXZpY2VzLmlkbCwgYW5kIHRodXMKLSAgICBwcmV2ZW50IHRoZSBidWlsZCBz
Y3JpcHRzIGZyb20gdHJ5aW5nIHRvIGdlbmVyYXRlIFdlYktpdERPTU5hdmlnYXRvck1lZGlhRGV2
aWNlcy5oIGFuZAotICAgIFdlYktpdERPTU5hdmlnYXRvck1lZGlhRGV2aWNlcy5jcHAgYXQgZXZl
cnkgYnVpbGQuIFRoaXMgZmlsZSBtdXN0IG5vdCBiZSB0cmllZCB0byBjb21waWxlLgotKi8KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0
ay9ET00vV2ViS2l0RE9NTmF2aWdhdG9yUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01OYXZpZ2F0b3JQcml2YXRl
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg5ZjY3OWUuLjAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJL
aXRET01OYXZpZ2F0b3JQcml2YXRlLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi0v
KgotICogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVj
dC4KLSAqICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdz
LnBsLiBETyBOT1QgTU9ESUZZIQotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQotICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaWZuZGVmIFdlYktpdERPTU5hdmlnYXRv
clByaXZhdGVfaAotI2RlZmluZSBXZWJLaXRET01OYXZpZ2F0b3JQcml2YXRlX2gKLQotI2luY2x1
ZGUgPFdlYkNvcmUvTmF2aWdhdG9yLmg+Ci0jaW5jbHVkZSA8d2Via2l0ZG9tL1dlYktpdERPTU5h
dmlnYXRvci5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLVdlYktpdERPTU5hdmlnYXRvciogd3Jh
cE5hdmlnYXRvcihXZWJDb3JlOjpOYXZpZ2F0b3IqKTsKLVdlYktpdERPTU5hdmlnYXRvcioga2l0
KFdlYkNvcmU6Ok5hdmlnYXRvciopOwotV2ViQ29yZTo6TmF2aWdhdG9yKiBjb3JlKFdlYktpdERP
TU5hdmlnYXRvciopOwotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvKiBXZWJLaXRE
T01OYXZpZ2F0b3JQcml2YXRlX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NTm9kZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERP
TU5vZGUuY3BwCmluZGV4IDViMjBiZWQuLmQyNDBmMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NTm9kZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3Rr
L0RPTS9XZWJLaXRET01Ob2RlLmNwcApAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgIldlYktp
dERPTUV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiV2ViS2l0RE9NTm9kZUxpc3RQcml2YXRlLmgi
CiAjaW5jbHVkZSAiV2ViS2l0RE9NTm9kZVByaXZhdGUuaCIKLSNpbmNsdWRlICJXZWJLaXRET01O
b2RlVW5zdGFibGUuaCIKICNpbmNsdWRlICJXZWJLaXRET01Qcml2YXRlLmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9DU1NJbXBvcnRSdWxlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudC5oPgpA
QCAtMTIzLDcgKzEyMiw2IEBAIGVudW0gewogICAgIFBST1BfT1dORVJfRE9DVU1FTlQsCiAgICAg
UFJPUF9CQVNFX1VSSSwKICAgICBQUk9QX1RFWFRfQ09OVEVOVCwKLSAgICBQUk9QX0lTX0NPTk5F
Q1RFRCwKICAgICBQUk9QX1BBUkVOVF9FTEVNRU5ULAogfTsKIApAQCAtMTk1LDkgKzE5Myw2IEBA
IHN0YXRpYyB2b2lkIHdlYmtpdF9kb21fbm9kZV9nZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0
LCBndWludCBwcm9wZXJ0eUlkLCBHVmFsCiAgICAgY2FzZSBQUk9QX1RFWFRfQ09OVEVOVDoKICAg
ICAgICAgZ192YWx1ZV90YWtlX3N0cmluZyh2YWx1ZSwgd2Via2l0X2RvbV9ub2RlX2dldF90ZXh0
X2NvbnRlbnQoc2VsZikpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfSVNfQ09OTkVD
VEVEOgotICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfZG9tX25vZGVf
Z2V0X2lzX2Nvbm5lY3RlZChzZWxmKSk7Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJPUF9Q
QVJFTlRfRUxFTUVOVDoKICAgICAgICAgZ192YWx1ZV9zZXRfb2JqZWN0KHZhbHVlLCB3ZWJraXRf
ZG9tX25vZGVfZ2V0X3BhcmVudF9lbGVtZW50KHNlbGYpKTsKICAgICAgICAgYnJlYWs7CkBAIC0z
NDksMTYgKzM0NCw2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21fbm9kZV9jbGFzc19pbml0KFdl
YktpdERPTU5vZGVDbGFzcyogcmVxdWVzdENsYXNzKQogCiAgICAgZ19vYmplY3RfY2xhc3NfaW5z
dGFsbF9wcm9wZXJ0eSgKICAgICAgICAgZ29iamVjdENsYXNzLAotICAgICAgICBQUk9QX0lTX0NP
Tk5FQ1RFRCwKLSAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oCi0gICAgICAgICAgICAiaXMt
Y29ubmVjdGVkIiwKLSAgICAgICAgICAgICJOb2RlOmlzLWNvbm5lY3RlZCIsCi0gICAgICAgICAg
ICAicmVhZC1vbmx5IGdib29sZWFuIE5vZGU6aXMtY29ubmVjdGVkIiwKLSAgICAgICAgICAgIEZB
TFNFLAotICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7Ci0KLSAgICBnX29iamVj
dF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAotICAgICAgICBnb2JqZWN0Q2xhc3MsCiAgICAgICAg
IFBST1BfUEFSRU5UX0VMRU1FTlQsCiAgICAgICAgIGdfcGFyYW1fc3BlY19vYmplY3QoCiAgICAg
ICAgICAgICAicGFyZW50LWVsZW1lbnQiLApAQCAtNzEwLDE1ICs2OTUsNiBAQCB2b2lkIHdlYmtp
dF9kb21fbm9kZV9zZXRfdGV4dF9jb250ZW50KFdlYktpdERPTU5vZGUqIHNlbGYsIGNvbnN0IGdj
aGFyKiB2YWx1ZSwgRwogICAgIH0KIH0KIAotZ2Jvb2xlYW4gd2Via2l0X2RvbV9ub2RlX2dldF9p
c19jb25uZWN0ZWQoV2ViS2l0RE9NTm9kZSogc2VsZikKLXsKLSAgICBXZWJDb3JlOjpKU01haW5U
aHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RP
TV9JU19OT0RFKHNlbGYpLCBGQUxTRSk7Ci0gICAgV2ViQ29yZTo6Tm9kZSogaXRlbSA9IFdlYktp
dDo6Y29yZShzZWxmKTsKLSAgICBnYm9vbGVhbiByZXN1bHQgPSBpdGVtLT5pbkRvY3VtZW50KCk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQogV2ViS2l0RE9NRWxlbWVudCogd2Via2l0X2RvbV9u
b2RlX2dldF9wYXJlbnRfZWxlbWVudChXZWJLaXRET01Ob2RlKiBzZWxmKQogewogICAgIFdlYkNv
cmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NTm9kZVVu
c3RhYmxlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
dGsvRE9NL1dlYktpdERPTU5vZGVVbnN0YWJsZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBlZWJiZDZjLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NTm9kZVVuc3RhYmxlLmgKKysrIC9kZXYv
bnVsbApAQCAtMSw1MCArMCwwIEBACi0vKgotICogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBX
ZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAqICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJh
dGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQotICoKLSAqICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
Ci0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
Ci0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0g
KiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKLSAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0j
aWZuZGVmIFdlYktpdERPTU5vZGVVbnN0YWJsZV9oCi0jZGVmaW5lIFdlYktpdERPTU5vZGVVbnN0
YWJsZV9oCi0KLSNpZmRlZiBXRUJLSVRfRE9NX1VTRV9VTlNUQUJMRV9BUEkKLQotI2luY2x1ZGUg
PHdlYmtpdGRvbS93ZWJraXRkb21kZWZpbmVzLXVuc3RhYmxlLmg+Ci0KLUdfQkVHSU5fREVDTFMK
LQotLyoqCi0gKiBXRUJLSVRfRE9NX05PREVfTk9UQVRJT05fTk9ERToKLSAqLwotI2RlZmluZSBX
RUJLSVRfRE9NX05PREVfTk9UQVRJT05fTk9ERSAxMgotCi0vKioKLSAqIHdlYmtpdF9kb21fbm9k
ZV9nZXRfaXNfY29ubmVjdGVkOgotICogQHNlbGY6IEEgI1dlYktpdERPTU5vZGUKLSAqCi0gKiBS
ZXR1cm5zOiBBICNnYm9vbGVhbgotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VC
S0lUX0FQSSBnYm9vbGVhbgotd2Via2l0X2RvbV9ub2RlX2dldF9pc19jb25uZWN0ZWQoV2ViS2l0
RE9NTm9kZSogc2VsZik7Ci0KLQotR19FTkRfREVDTFMKLQotI2VuZGlmIC8qIFdFQktJVF9ET01f
VVNFX1VOU1RBQkxFX0FQSSAqLwotI2VuZGlmIC8qIFdlYktpdERPTU5vZGVVbnN0YWJsZV9oICov
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9ndGsvRE9NL1dlYktpdERPTVBlcmZvcm1hbmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NUGVyZm9ybWFuY2UuY3Bw
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YThjMTRjLi4wMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0
RE9NUGVyZm9ybWFuY2UuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMzc3ICswLDAgQEAKLS8qCi0g
KiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0Lgot
ICogIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwu
IERPIE5PVCBNT0RJRlkhCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJXZWJLaXRET01QZXJmb3JtYW5jZS5oIgotCi0jaW5jbHVkZSA8V2ViQ29yZS9DU1NJbXBvcnRS
dWxlLmg+Ci0jaW5jbHVkZSAiRE9NT2JqZWN0Q2FjaGUuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0Rv
Y3VtZW50Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9FeGNlcHRpb25Db2RlLmg+Ci0jaW5jbHVkZSA8
V2ViQ29yZS9FeGNlcHRpb25Db2RlRGVzY3JpcHRpb24uaD4KLSNpbmNsdWRlICJHT2JqZWN0RXZl
bnRMaXN0ZW5lci5oIgotI2luY2x1ZGUgPFdlYkNvcmUvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmg+
Ci0jaW5jbHVkZSAiV2ViS2l0RE9NRXZlbnRQcml2YXRlLmgiCi0jaW5jbHVkZSAiV2ViS2l0RE9N
RXZlbnRUYXJnZXQuaCIKLSNpbmNsdWRlICJXZWJLaXRET01QZXJmb3JtYW5jZU5hdmlnYXRpb25Q
cml2YXRlLmgiCi0jaW5jbHVkZSAiV2ViS2l0RE9NUGVyZm9ybWFuY2VQcml2YXRlLmgiCi0jaW5j
bHVkZSAiV2ViS2l0RE9NUGVyZm9ybWFuY2VUaW1pbmdQcml2YXRlLmgiCi0jaW5jbHVkZSAiV2Vi
S2l0RE9NUHJpdmF0ZS5oIgotI2luY2x1ZGUgIkNvbnZlcnRUb1VURjhTdHJpbmcuaCIKLSNpbmNs
dWRlIDx3dGYvR2V0UHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi0jZGVmaW5lIFdF
QktJVF9ET01fUEVSRk9STUFOQ0VfR0VUX1BSSVZBVEUob2JqKSBHX1RZUEVfSU5TVEFOQ0VfR0VU
X1BSSVZBVEUob2JqLCBXRUJLSVRfRE9NX1RZUEVfUEVSRk9STUFOQ0UsIFdlYktpdERPTVBlcmZv
cm1hbmNlUHJpdmF0ZSkKLQotdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdERPTVBlcmZvcm1hbmNlUHJp
dmF0ZSB7Ci0jaWYgRU5BQkxFKFdFQl9USU1JTkcpCi0gICAgUmVmUHRyPFdlYkNvcmU6OlBlcmZv
cm1hbmNlPiBjb3JlT2JqZWN0OwotI2VuZGlmIC8vIEVOQUJMRShXRUJfVElNSU5HKQotfSBXZWJL
aXRET01QZXJmb3JtYW5jZVByaXZhdGU7Ci0KLSNpZiBFTkFCTEUoV0VCX1RJTUlORykKLQotbmFt
ZXNwYWNlIFdlYktpdCB7Ci0KLVdlYktpdERPTVBlcmZvcm1hbmNlKiBraXQoV2ViQ29yZTo6UGVy
Zm9ybWFuY2UqIG9iaikKLXsKLSAgICBpZiAoIW9iaikKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAg
ICBpZiAoZ3BvaW50ZXIgcmV0ID0gRE9NT2JqZWN0Q2FjaGU6OmdldChvYmopKQotICAgICAgICBy
ZXR1cm4gV0VCS0lUX0RPTV9QRVJGT1JNQU5DRShyZXQpOwotCi0gICAgcmV0dXJuIHdyYXBQZXJm
b3JtYW5jZShvYmopOwotfQotCi1XZWJDb3JlOjpQZXJmb3JtYW5jZSogY29yZShXZWJLaXRET01Q
ZXJmb3JtYW5jZSogcmVxdWVzdCkKLXsKLSAgICByZXR1cm4gcmVxdWVzdCA/IHN0YXRpY19jYXN0
PFdlYkNvcmU6OlBlcmZvcm1hbmNlKj4oV0VCS0lUX0RPTV9PQkpFQ1QocmVxdWVzdCktPmNvcmVP
YmplY3QpIDogMDsKLX0KLQotV2ViS2l0RE9NUGVyZm9ybWFuY2UqIHdyYXBQZXJmb3JtYW5jZShX
ZWJDb3JlOjpQZXJmb3JtYW5jZSogY29yZU9iamVjdCkKLXsKLSAgICBBU1NFUlQoY29yZU9iamVj
dCk7Ci0gICAgcmV0dXJuIFdFQktJVF9ET01fUEVSRk9STUFOQ0UoZ19vYmplY3RfbmV3KFdFQktJ
VF9ET01fVFlQRV9QRVJGT1JNQU5DRSwgImNvcmUtb2JqZWN0IiwgY29yZU9iamVjdCwgbnVsbHB0
cikpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJf
VElNSU5HKQotCi1zdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X2RvbV9wZXJmb3JtYW5jZV9kaXNwYXRj
aF9ldmVudChXZWJLaXRET01FdmVudFRhcmdldCogdGFyZ2V0LCBXZWJLaXRET01FdmVudCogZXZl
bnQsIEdFcnJvcioqIGVycm9yKQotewotI2lmIEVOQUJMRShXRUJfVElNSU5HKQotICAgIFdlYkNv
cmU6OkV2ZW50KiBjb3JlRXZlbnQgPSBXZWJLaXQ6OmNvcmUoZXZlbnQpOwotICAgIGlmICghY29y
ZUV2ZW50KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgV2ViQ29yZTo6UGVyZm9ybWFuY2Uq
IGNvcmVUYXJnZXQgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpQZXJmb3JtYW5jZSo+KFdFQktJVF9E
T01fT0JKRUNUKHRhcmdldCktPmNvcmVPYmplY3QpOwotCi0gICAgV2ViQ29yZTo6RXhjZXB0aW9u
Q29kZSBlYyA9IDA7Ci0gICAgZ2Jvb2xlYW4gcmVzdWx0ID0gY29yZVRhcmdldC0+ZGlzcGF0Y2hF
dmVudEZvckJpbmRpbmdzKCpjb3JlRXZlbnQsIGVjKTsKLSAgICBpZiAoZWMpIHsKLSAgICAgICAg
V2ViQ29yZTo6RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKGVjKTsKLSAgICAg
ICAgZ19zZXRfZXJyb3JfbGl0ZXJhbChlcnJvciwgZ19xdWFya19mcm9tX3N0cmluZygiV0VCS0lU
X0RPTSIpLCBkZXNjcmlwdGlvbi5jb2RlLCBkZXNjcmlwdGlvbi5uYW1lKTsKLSAgICB9Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7Ci0gICAgVU5V
U0VEX1BBUkFNKGV2ZW50KTsKLSAgICBVTlVTRURfUEFSQU0oZXJyb3IpOwotICAgIFdFQktJVF9X
QVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIldlYiBUaW1pbmciKQotICAgIHJldHVybiBmYWxzZTsK
LSNlbmRpZiAvLyBFTkFCTEUoV0VCX1RJTUlORykKLX0KLQotc3RhdGljIGdib29sZWFuIHdlYmtp
dF9kb21fcGVyZm9ybWFuY2VfYWRkX2V2ZW50X2xpc3RlbmVyKFdlYktpdERPTUV2ZW50VGFyZ2V0
KiB0YXJnZXQsIGNvbnN0IGNoYXIqIGV2ZW50TmFtZSwgR0Nsb3N1cmUqIGhhbmRsZXIsIGdib29s
ZWFuIHVzZUNhcHR1cmUpCi17Ci0jaWYgRU5BQkxFKFdFQl9USU1JTkcpCi0gICAgV2ViQ29yZTo6
UGVyZm9ybWFuY2UqIGNvcmVUYXJnZXQgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpQZXJmb3JtYW5j
ZSo+KFdFQktJVF9ET01fT0JKRUNUKHRhcmdldCktPmNvcmVPYmplY3QpOwotICAgIHJldHVybiBX
ZWJLaXQ6OkdPYmplY3RFdmVudExpc3RlbmVyOjphZGRFdmVudExpc3RlbmVyKEdfT0JKRUNUKHRh
cmdldCksIGNvcmVUYXJnZXQsIGV2ZW50TmFtZSwgaGFuZGxlciwgdXNlQ2FwdHVyZSk7Ci0jZWxz
ZQotICAgIFVOVVNFRF9QQVJBTSh0YXJnZXQpOwotICAgIFVOVVNFRF9QQVJBTShldmVudE5hbWUp
OwotICAgIFVOVVNFRF9QQVJBTShoYW5kbGVyKTsKLSAgICBVTlVTRURfUEFSQU0odXNlQ2FwdHVy
ZSk7Ci0gICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiV2ViIFRpbWluZyIpCi0g
ICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmIC8vIEVOQUJMRShXRUJfVElNSU5HKQotfQotCi1zdGF0
aWMgZ2Jvb2xlYW4gd2Via2l0X2RvbV9wZXJmb3JtYW5jZV9yZW1vdmVfZXZlbnRfbGlzdGVuZXIo
V2ViS2l0RE9NRXZlbnRUYXJnZXQqIHRhcmdldCwgY29uc3QgY2hhciogZXZlbnROYW1lLCBHQ2xv
c3VyZSogaGFuZGxlciwgZ2Jvb2xlYW4gdXNlQ2FwdHVyZSkKLXsKLSNpZiBFTkFCTEUoV0VCX1RJ
TUlORykKLSAgICBXZWJDb3JlOjpQZXJmb3JtYW5jZSogY29yZVRhcmdldCA9IHN0YXRpY19jYXN0
PFdlYkNvcmU6OlBlcmZvcm1hbmNlKj4oV0VCS0lUX0RPTV9PQkpFQ1QodGFyZ2V0KS0+Y29yZU9i
amVjdCk7Ci0gICAgcmV0dXJuIFdlYktpdDo6R09iamVjdEV2ZW50TGlzdGVuZXI6OnJlbW92ZUV2
ZW50TGlzdGVuZXIoR19PQkpFQ1QodGFyZ2V0KSwgY29yZVRhcmdldCwgZXZlbnROYW1lLCBoYW5k
bGVyLCB1c2VDYXB0dXJlKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7Ci0gICAg
VU5VU0VEX1BBUkFNKGV2ZW50TmFtZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGhhbmRsZXIpOwotICAg
IFVOVVNFRF9QQVJBTSh1c2VDYXB0dXJlKTsKLSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9Q
UkVTRU5UKCJXZWIgVGltaW5nIikKLSAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYgLy8gRU5BQkxF
KFdFQl9USU1JTkcpCi19Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdF9kb21fZXZlbnRfdGFyZ2V0X2lu
aXQoV2ViS2l0RE9NRXZlbnRUYXJnZXRJZmFjZSogaWZhY2UpCi17Ci0gICAgaWZhY2UtPmRpc3Bh
dGNoX2V2ZW50ID0gd2Via2l0X2RvbV9wZXJmb3JtYW5jZV9kaXNwYXRjaF9ldmVudDsKLSAgICBp
ZmFjZS0+YWRkX2V2ZW50X2xpc3RlbmVyID0gd2Via2l0X2RvbV9wZXJmb3JtYW5jZV9hZGRfZXZl
bnRfbGlzdGVuZXI7Ci0gICAgaWZhY2UtPnJlbW92ZV9ldmVudF9saXN0ZW5lciA9IHdlYmtpdF9k
b21fcGVyZm9ybWFuY2VfcmVtb3ZlX2V2ZW50X2xpc3RlbmVyOwotfQotCi1HX0RFRklORV9UWVBF
X1dJVEhfQ09ERShXZWJLaXRET01QZXJmb3JtYW5jZSwgd2Via2l0X2RvbV9wZXJmb3JtYW5jZSwg
V0VCS0lUX0RPTV9UWVBFX09CSkVDVCwgR19JTVBMRU1FTlRfSU5URVJGQUNFKFdFQktJVF9ET01f
VFlQRV9FVkVOVF9UQVJHRVQsIHdlYmtpdF9kb21fZXZlbnRfdGFyZ2V0X2luaXQpKQotCi1lbnVt
IHsKLSAgICBQUk9QXzAsCi0gICAgUFJPUF9OQVZJR0FUSU9OLAotICAgIFBST1BfVElNSU5HLAot
fTsKLQotc3RhdGljIHZvaWQgd2Via2l0X2RvbV9wZXJmb3JtYW5jZV9maW5hbGl6ZShHT2JqZWN0
KiBvYmplY3QpCi17Ci0gICAgV2ViS2l0RE9NUGVyZm9ybWFuY2VQcml2YXRlKiBwcml2ID0gV0VC
S0lUX0RPTV9QRVJGT1JNQU5DRV9HRVRfUFJJVkFURShvYmplY3QpOwotI2lmIEVOQUJMRShXRUJf
VElNSU5HKQotICAgIFdlYktpdDo6RE9NT2JqZWN0Q2FjaGU6OmZvcmdldChwcml2LT5jb3JlT2Jq
ZWN0LmdldCgpKTsKLSNlbmRpZiAvLyBFTkFCTEUoV0VCX1RJTUlORykKLSAgICBwcml2LT5+V2Vi
S2l0RE9NUGVyZm9ybWFuY2VQcml2YXRlKCk7Ci0gICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X2Rv
bV9wZXJmb3JtYW5jZV9wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmplY3QpOwotfQotCi1zdGF0
aWMgdm9pZCB3ZWJraXRfZG9tX3BlcmZvcm1hbmNlX2dldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmpl
Y3QsIGd1aW50IHByb3BlcnR5SWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKQot
ewotICAgIFdlYktpdERPTVBlcmZvcm1hbmNlKiBzZWxmID0gV0VCS0lUX0RPTV9QRVJGT1JNQU5D
RShvYmplY3QpOwotCi0gICAgc3dpdGNoIChwcm9wZXJ0eUlkKSB7Ci0gICAgY2FzZSBQUk9QX05B
VklHQVRJT046Ci0gICAgICAgIGdfdmFsdWVfc2V0X29iamVjdCh2YWx1ZSwgd2Via2l0X2RvbV9w
ZXJmb3JtYW5jZV9nZXRfbmF2aWdhdGlvbihzZWxmKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgUFJPUF9USU1JTkc6Ci0gICAgICAgIGdfdmFsdWVfc2V0X29iamVjdCh2YWx1ZSwgd2Via2l0
X2RvbV9wZXJmb3JtYW5jZV9nZXRfdGltaW5nKHNlbGYpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
ZGVmYXVsdDoKLSAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVj
dCwgcHJvcGVydHlJZCwgcHNwZWMpOwotICAgICAgICBicmVhazsKLSAgICB9Ci19Ci0KLXN0YXRp
YyBHT2JqZWN0KiB3ZWJraXRfZG9tX3BlcmZvcm1hbmNlX2NvbnN0cnVjdG9yKEdUeXBlIHR5cGUs
IGd1aW50IGNvbnN0cnVjdFByb3BlcnRpZXNDb3VudCwgR09iamVjdENvbnN0cnVjdFBhcmFtKiBj
b25zdHJ1Y3RQcm9wZXJ0aWVzKQotewotICAgIEdPYmplY3QqIG9iamVjdCA9IEdfT0JKRUNUX0NM
QVNTKHdlYmtpdF9kb21fcGVyZm9ybWFuY2VfcGFyZW50X2NsYXNzKS0+Y29uc3RydWN0b3IodHlw
ZSwgY29uc3RydWN0UHJvcGVydGllc0NvdW50LCBjb25zdHJ1Y3RQcm9wZXJ0aWVzKTsKLSNpZiBF
TkFCTEUoV0VCX1RJTUlORykKLSAgICBXZWJLaXRET01QZXJmb3JtYW5jZVByaXZhdGUqIHByaXYg
PSBXRUJLSVRfRE9NX1BFUkZPUk1BTkNFX0dFVF9QUklWQVRFKG9iamVjdCk7Ci0gICAgcHJpdi0+
Y29yZU9iamVjdCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OlBlcmZvcm1hbmNlKj4oV0VCS0lUX0RP
TV9PQkpFQ1Qob2JqZWN0KS0+Y29yZU9iamVjdCk7Ci0gICAgV2ViS2l0OjpET01PYmplY3RDYWNo
ZTo6cHV0KHByaXYtPmNvcmVPYmplY3QuZ2V0KCksIG9iamVjdCk7Ci0jZW5kaWYgLy8gRU5BQkxF
KFdFQl9USU1JTkcpCi0gICAgcmV0dXJuIG9iamVjdDsKLX0KLQotc3RhdGljIHZvaWQgd2Via2l0
X2RvbV9wZXJmb3JtYW5jZV9jbGFzc19pbml0KFdlYktpdERPTVBlcmZvcm1hbmNlQ2xhc3MqIHJl
cXVlc3RDbGFzcykKLXsKLSAgICBHT2JqZWN0Q2xhc3MqIGdvYmplY3RDbGFzcyA9IEdfT0JKRUNU
X0NMQVNTKHJlcXVlc3RDbGFzcyk7Ci0gICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKGdvYmpl
Y3RDbGFzcywgc2l6ZW9mKFdlYktpdERPTVBlcmZvcm1hbmNlUHJpdmF0ZSkpOwotICAgIGdvYmpl
Y3RDbGFzcy0+Y29uc3RydWN0b3IgPSB3ZWJraXRfZG9tX3BlcmZvcm1hbmNlX2NvbnN0cnVjdG9y
OwotICAgIGdvYmplY3RDbGFzcy0+ZmluYWxpemUgPSB3ZWJraXRfZG9tX3BlcmZvcm1hbmNlX2Zp
bmFsaXplOwotICAgIGdvYmplY3RDbGFzcy0+Z2V0X3Byb3BlcnR5ID0gd2Via2l0X2RvbV9wZXJm
b3JtYW5jZV9nZXRfcHJvcGVydHk7Ci0KLSAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3Bl
cnR5KAotICAgICAgICBnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBST1BfTkFWSUdBVElPTiwKLSAg
ICAgICAgZ19wYXJhbV9zcGVjX29iamVjdCgKLSAgICAgICAgICAgICJuYXZpZ2F0aW9uIiwKLSAg
ICAgICAgICAgICJQZXJmb3JtYW5jZTpuYXZpZ2F0aW9uIiwKLSAgICAgICAgICAgICJyZWFkLW9u
bHkgV2ViS2l0RE9NUGVyZm9ybWFuY2VOYXZpZ2F0aW9uKiBQZXJmb3JtYW5jZTpuYXZpZ2F0aW9u
IiwKLSAgICAgICAgICAgIFdFQktJVF9ET01fVFlQRV9QRVJGT1JNQU5DRV9OQVZJR0FUSU9OLAot
ICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7Ci0KLSAgICBnX29iamVjdF9jbGFz
c19pbnN0YWxsX3Byb3BlcnR5KAotICAgICAgICBnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBST1Bf
VElNSU5HLAotICAgICAgICBnX3BhcmFtX3NwZWNfb2JqZWN0KAotICAgICAgICAgICAgInRpbWlu
ZyIsCi0gICAgICAgICAgICAiUGVyZm9ybWFuY2U6dGltaW5nIiwKLSAgICAgICAgICAgICJyZWFk
LW9ubHkgV2ViS2l0RE9NUGVyZm9ybWFuY2VUaW1pbmcqIFBlcmZvcm1hbmNlOnRpbWluZyIsCi0g
ICAgICAgICAgICBXRUJLSVRfRE9NX1RZUEVfUEVSRk9STUFOQ0VfVElNSU5HLAotICAgICAgICAg
ICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7Ci0KLX0KLQotc3RhdGljIHZvaWQgd2Via2l0X2Rv
bV9wZXJmb3JtYW5jZV9pbml0KFdlYktpdERPTVBlcmZvcm1hbmNlKiByZXF1ZXN0KQotewotICAg
IFdlYktpdERPTVBlcmZvcm1hbmNlUHJpdmF0ZSogcHJpdiA9IFdFQktJVF9ET01fUEVSRk9STUFO
Q0VfR0VUX1BSSVZBVEUocmVxdWVzdCk7Ci0gICAgbmV3IChwcml2KSBXZWJLaXRET01QZXJmb3Jt
YW5jZVByaXZhdGUoKTsKLX0KLQotdm9pZCB3ZWJraXRfZG9tX3BlcmZvcm1hbmNlX2NsZWFyX3Jl
c291cmNlX3RpbWluZ3MoV2ViS2l0RE9NUGVyZm9ybWFuY2UqIHNlbGYpCi17Ci0jaWYgRU5BQkxF
KFdFQl9USU1JTkcpCi0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwot
ICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19QRVJGT1JNQU5DRShzZWxmKSk7Ci0g
ICAgV2ViQ29yZTo6UGVyZm9ybWFuY2UqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAg
aXRlbS0+Y2xlYXJSZXNvdXJjZVRpbWluZ3MoKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHNl
bGYpOwotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIldlYiBUaW1pbmciKQot
I2VuZGlmIC8qIEVOQUJMRShXRUJfVElNSU5HKSAqLwotfQotCi12b2lkIHdlYmtpdF9kb21fcGVy
Zm9ybWFuY2Vfc2V0X3Jlc291cmNlX3RpbWluZ19idWZmZXJfc2l6ZShXZWJLaXRET01QZXJmb3Jt
YW5jZSogc2VsZiwgZ3Vsb25nIG1heFNpemUpCi17Ci0jaWYgRU5BQkxFKFdFQl9USU1JTkcpCi0g
ICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX2lm
X2ZhaWwoV0VCS0lUX0RPTV9JU19QRVJGT1JNQU5DRShzZWxmKSk7Ci0gICAgV2ViQ29yZTo6UGVy
Zm9ybWFuY2UqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgaXRlbS0+c2V0UmVzb3Vy
Y2VUaW1pbmdCdWZmZXJTaXplKG1heFNpemUpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc2Vs
Zik7Ci0gICAgVU5VU0VEX1BBUkFNKG1heFNpemUpOwotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVf
Tk9UX1BSRVNFTlQoIldlYiBUaW1pbmciKQotI2VuZGlmIC8qIEVOQUJMRShXRUJfVElNSU5HKSAq
LwotfQotCi12b2lkIHdlYmtpdF9kb21fcGVyZm9ybWFuY2Vfd2Via2l0X21hcmsoV2ViS2l0RE9N
UGVyZm9ybWFuY2UqIHNlbGYsIGNvbnN0IGdjaGFyKiBtYXJrTmFtZSwgR0Vycm9yKiogZXJyb3Ip
Ci17Ci0jaWYgRU5BQkxFKFdFQl9USU1JTkcpICYmIEVOQUJMRShVU0VSX1RJTUlORykKLSAgICBX
ZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5faWZfZmFp
bChXRUJLSVRfRE9NX0lTX1BFUkZPUk1BTkNFKHNlbGYpKTsKLSAgICBnX3JldHVybl9pZl9mYWls
KG1hcmtOYW1lKTsKLSAgICBnX3JldHVybl9pZl9mYWlsKCFlcnJvciB8fCAhKmVycm9yKTsKLSAg
ICBXZWJDb3JlOjpQZXJmb3JtYW5jZSogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBX
VEY6OlN0cmluZyBjb252ZXJ0ZWRNYXJrTmFtZSA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOChtYXJr
TmFtZSk7Ci0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaXRlbS0+d2Vi
a2l0TWFyayhjb252ZXJ0ZWRNYXJrTmFtZSwgZWMpOwotICAgIGlmIChlYykgewotICAgICAgICBX
ZWJDb3JlOjpFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24gZWNkZXNjKGVjKTsKLSAgICAgICAgZ19z
ZXRfZXJyb3JfbGl0ZXJhbChlcnJvciwgZ19xdWFya19mcm9tX3N0cmluZygiV0VCS0lUX0RPTSIp
LCBlY2Rlc2MuY29kZSwgZWNkZXNjLm5hbWUpOwotICAgIH0KLSNlbHNlCi0gICAgVU5VU0VEX1BB
UkFNKHNlbGYpOwotICAgIFVOVVNFRF9QQVJBTShtYXJrTmFtZSk7Ci0gICAgVU5VU0VEX1BBUkFN
KGVycm9yKTsKLSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJXZWIgVGltaW5n
IikKLSNlbmRpZiAvKiBFTkFCTEUoV0VCX1RJTUlORykgKi8KLX0KLQotdm9pZCB3ZWJraXRfZG9t
X3BlcmZvcm1hbmNlX3dlYmtpdF9jbGVhcl9tYXJrcyhXZWJLaXRET01QZXJmb3JtYW5jZSogc2Vs
ZiwgY29uc3QgZ2NoYXIqIG1hcmtOYW1lKQotewotI2lmIEVOQUJMRShXRUJfVElNSU5HKSAmJiBF
TkFCTEUoVVNFUl9USU1JTkcpCi0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0
YXRlOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19QRVJGT1JNQU5DRShzZWxm
KSk7Ci0gICAgZ19yZXR1cm5faWZfZmFpbChtYXJrTmFtZSk7Ci0gICAgV2ViQ29yZTo6UGVyZm9y
bWFuY2UqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgV1RGOjpTdHJpbmcgY29udmVy
dGVkTWFya05hbWUgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgobWFya05hbWUpOwotICAgIGl0ZW0t
PndlYmtpdENsZWFyTWFya3MoY29udmVydGVkTWFya05hbWUpOwotI2Vsc2UKLSAgICBVTlVTRURf
UEFSQU0oc2VsZik7Ci0gICAgVU5VU0VEX1BBUkFNKG1hcmtOYW1lKTsKLSAgICBXRUJLSVRfV0FS
Tl9GRUFUVVJFX05PVF9QUkVTRU5UKCJXZWIgVGltaW5nIikKLSNlbmRpZiAvKiBFTkFCTEUoV0VC
X1RJTUlORykgKi8KLX0KLQotdm9pZCB3ZWJraXRfZG9tX3BlcmZvcm1hbmNlX3dlYmtpdF9tZWFz
dXJlKFdlYktpdERPTVBlcmZvcm1hbmNlKiBzZWxmLCBjb25zdCBnY2hhciogbWVhc3VyZU5hbWUs
IGNvbnN0IGdjaGFyKiBzdGFydE1hcmssIGNvbnN0IGdjaGFyKiBlbmRNYXJrLCBHRXJyb3IqKiBl
cnJvcikKLXsKLSNpZiBFTkFCTEUoV0VCX1RJTUlORykgJiYgRU5BQkxFKFVTRVJfVElNSU5HKQot
ICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl9p
Zl9mYWlsKFdFQktJVF9ET01fSVNfUEVSRk9STUFOQ0Uoc2VsZikpOwotICAgIGdfcmV0dXJuX2lm
X2ZhaWwobWVhc3VyZU5hbWUpOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwoc3RhcnRNYXJrKTsKLSAg
ICBnX3JldHVybl9pZl9mYWlsKGVuZE1hcmspOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwoIWVycm9y
IHx8ICEqZXJyb3IpOwotICAgIFdlYkNvcmU6OlBlcmZvcm1hbmNlKiBpdGVtID0gV2ViS2l0Ojpj
b3JlKHNlbGYpOwotICAgIFdURjo6U3RyaW5nIGNvbnZlcnRlZE1lYXN1cmVOYW1lID0gV1RGOjpT
dHJpbmc6OmZyb21VVEY4KG1lYXN1cmVOYW1lKTsKLSAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRT
dGFydE1hcmsgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgoc3RhcnRNYXJrKTsKLSAgICBXVEY6OlN0
cmluZyBjb252ZXJ0ZWRFbmRNYXJrID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KGVuZE1hcmspOwot
ICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGl0ZW0tPndlYmtpdE1lYXN1
cmUoY29udmVydGVkTWVhc3VyZU5hbWUsIGNvbnZlcnRlZFN0YXJ0TWFyaywgY29udmVydGVkRW5k
TWFyaywgZWMpOwotICAgIGlmIChlYykgewotICAgICAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2Rl
RGVzY3JpcHRpb24gZWNkZXNjKGVjKTsKLSAgICAgICAgZ19zZXRfZXJyb3JfbGl0ZXJhbChlcnJv
ciwgZ19xdWFya19mcm9tX3N0cmluZygiV0VCS0lUX0RPTSIpLCBlY2Rlc2MuY29kZSwgZWNkZXNj
Lm5hbWUpOwotICAgIH0KLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHNlbGYpOwotICAgIFVOVVNF
RF9QQVJBTShtZWFzdXJlTmFtZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXJ0TWFyayk7Ci0gICAg
VU5VU0VEX1BBUkFNKGVuZE1hcmspOwotICAgIFVOVVNFRF9QQVJBTShlcnJvcik7Ci0gICAgV0VC
S0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiV2ViIFRpbWluZyIpCi0jZW5kaWYgLyogRU5B
QkxFKFdFQl9USU1JTkcpICovCi19Ci0KLXZvaWQgd2Via2l0X2RvbV9wZXJmb3JtYW5jZV93ZWJr
aXRfY2xlYXJfbWVhc3VyZXMoV2ViS2l0RE9NUGVyZm9ybWFuY2UqIHNlbGYsIGNvbnN0IGdjaGFy
KiBtZWFzdXJlTmFtZSkKLXsKLSNpZiBFTkFCTEUoV0VCX1RJTUlORykgJiYgRU5BQkxFKFVTRVJf
VElNSU5HKQotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBn
X3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfUEVSRk9STUFOQ0Uoc2VsZikpOwotICAgIGdf
cmV0dXJuX2lmX2ZhaWwobWVhc3VyZU5hbWUpOwotICAgIFdlYkNvcmU6OlBlcmZvcm1hbmNlKiBp
dGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIFdURjo6U3RyaW5nIGNvbnZlcnRlZE1lYXN1
cmVOYW1lID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KG1lYXN1cmVOYW1lKTsKLSAgICBpdGVtLT53
ZWJraXRDbGVhck1lYXN1cmVzKGNvbnZlcnRlZE1lYXN1cmVOYW1lKTsKLSNlbHNlCi0gICAgVU5V
U0VEX1BBUkFNKHNlbGYpOwotICAgIFVOVVNFRF9QQVJBTShtZWFzdXJlTmFtZSk7Ci0gICAgV0VC
S0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiV2ViIFRpbWluZyIpCi0jZW5kaWYgLyogRU5B
QkxFKFdFQl9USU1JTkcpICovCi19Ci0KLWdkb3VibGUgd2Via2l0X2RvbV9wZXJmb3JtYW5jZV9u
b3coV2ViS2l0RE9NUGVyZm9ybWFuY2UqIHNlbGYpCi17Ci0jaWYgRU5BQkxFKFdFQl9USU1JTkcp
Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfUEVSRk9STUFOQ0Uoc2VsZiksIDApOwotICAgIFdl
YkNvcmU6OlBlcmZvcm1hbmNlKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdkb3Vi
bGUgcmVzdWx0ID0gaXRlbS0+bm93KCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSNlbHNlCi0gICAg
VU5VU0VEX1BBUkFNKHNlbGYpOwotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQo
IldlYiBUaW1pbmciKQotICAgIHJldHVybiBzdGF0aWNfY2FzdDxnZG91YmxlPigwKTsKLSNlbmRp
ZiAvKiBFTkFCTEUoV0VCX1RJTUlORykgKi8KLX0KLQotV2ViS2l0RE9NUGVyZm9ybWFuY2VOYXZp
Z2F0aW9uKiB3ZWJraXRfZG9tX3BlcmZvcm1hbmNlX2dldF9uYXZpZ2F0aW9uKFdlYktpdERPTVBl
cmZvcm1hbmNlKiBzZWxmKQotewotI2lmIEVOQUJMRShXRUJfVElNSU5HKQotICAgIFdlYkNvcmU6
OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChX
RUJLSVRfRE9NX0lTX1BFUkZPUk1BTkNFKHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpQZXJmb3Jt
YW5jZSogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6UGVy
Zm9ybWFuY2VOYXZpZ2F0aW9uPiBnb2JqZWN0UmVzdWx0ID0gV1RGOjpnZXRQdHIoaXRlbS0+bmF2
aWdhdGlvbigpKTsKLSAgICByZXR1cm4gV2ViS2l0OjpraXQoZ29iamVjdFJlc3VsdC5nZXQoKSk7
Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKLSAgICBXRUJLSVRfV0FSTl9GRUFUVVJF
X05PVF9QUkVTRU5UKCJXZWIgVGltaW5nIikKLSAgICByZXR1cm4gMDsKLSNlbmRpZiAvKiBFTkFC
TEUoV0VCX1RJTUlORykgKi8KLX0KLQotV2ViS2l0RE9NUGVyZm9ybWFuY2VUaW1pbmcqIHdlYmtp
dF9kb21fcGVyZm9ybWFuY2VfZ2V0X3RpbWluZyhXZWJLaXRET01QZXJmb3JtYW5jZSogc2VsZikK
LXsKLSNpZiBFTkFCTEUoV0VCX1RJTUlORykKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxs
U3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19QRVJG
T1JNQU5DRShzZWxmKSwgMCk7Ci0gICAgV2ViQ29yZTo6UGVyZm9ybWFuY2UqIGl0ZW0gPSBXZWJL
aXQ6OmNvcmUoc2VsZik7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlBlcmZvcm1hbmNlVGltaW5nPiBn
b2JqZWN0UmVzdWx0ID0gV1RGOjpnZXRQdHIoaXRlbS0+dGltaW5nKCkpOwotICAgIHJldHVybiBX
ZWJLaXQ6OmtpdChnb2JqZWN0UmVzdWx0LmdldCgpKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFN
KHNlbGYpOwotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIldlYiBUaW1pbmci
KQotICAgIHJldHVybiAwOwotI2VuZGlmIC8qIEVOQUJMRShXRUJfVElNSU5HKSAqLwotfQotCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
dGsvRE9NL1dlYktpdERPTVBlcmZvcm1hbmNlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVBlcmZvcm1hbmNlLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJkOWUxMjIuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01QZXJm
b3JtYW5jZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTQ5ICswLDAgQEAKLS8qCi0gKiAgVGhpcyBm
aWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICogIFRoaXMg
ZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBN
T0RJRlkhCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0g
KiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
Ci0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgV2ViS2l0RE9NUGVyZm9ybWFuY2VfaAotI2RlZmlu
ZSBXZWJLaXRET01QZXJmb3JtYW5jZV9oCi0KLSNpZmRlZiBXRUJLSVRfRE9NX1VTRV9VTlNUQUJM
RV9BUEkKLQotI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+Ci0jaW5jbHVkZSA8d2Via2l0ZG9tL1dl
YktpdERPTU9iamVjdC5oPgotI2luY2x1ZGUgPHdlYmtpdGRvbS93ZWJraXRkb21kZWZpbmVzLXVu
c3RhYmxlLmg+Ci0KLUdfQkVHSU5fREVDTFMKLQotI2RlZmluZSBXRUJLSVRfRE9NX1RZUEVfUEVS
Rk9STUFOQ0UgICAgICAgICAgICAod2Via2l0X2RvbV9wZXJmb3JtYW5jZV9nZXRfdHlwZSgpKQot
I2RlZmluZSBXRUJLSVRfRE9NX1BFUkZPUk1BTkNFKG9iaikgICAgICAgICAgICAoR19UWVBFX0NI
RUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9ET01fVFlQRV9QRVJGT1JNQU5DRSwgV2Vi
S2l0RE9NUGVyZm9ybWFuY2UpKQotI2RlZmluZSBXRUJLSVRfRE9NX1BFUkZPUk1BTkNFX0NMQVNT
KGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJVF9ET01f
VFlQRV9QRVJGT1JNQU5DRSwgV2ViS2l0RE9NUGVyZm9ybWFuY2VDbGFzcykKLSNkZWZpbmUgV0VC
S0lUX0RPTV9JU19QRVJGT1JNQU5DRShvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5D
RV9UWVBFKChvYmopLCBXRUJLSVRfRE9NX1RZUEVfUEVSRk9STUFOQ0UpKQotI2RlZmluZSBXRUJL
SVRfRE9NX0lTX1BFUkZPUk1BTkNFX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZ
UEUoKGtsYXNzKSwgIFdFQktJVF9ET01fVFlQRV9QRVJGT1JNQU5DRSkpCi0jZGVmaW5lIFdFQktJ
VF9ET01fUEVSRk9STUFOQ0VfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NM
QVNTKChvYmopLCAgV0VCS0lUX0RPTV9UWVBFX1BFUkZPUk1BTkNFLCBXZWJLaXRET01QZXJmb3Jt
YW5jZUNsYXNzKSkKLQotc3RydWN0IF9XZWJLaXRET01QZXJmb3JtYW5jZSB7Ci0gICAgV2ViS2l0
RE9NT2JqZWN0IHBhcmVudF9pbnN0YW5jZTsKLX07Ci0KLXN0cnVjdCBfV2ViS2l0RE9NUGVyZm9y
bWFuY2VDbGFzcyB7Ci0gICAgV2ViS2l0RE9NT2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOwotfTsK
LQotV0VCS0lUX0FQSSBHVHlwZQotd2Via2l0X2RvbV9wZXJmb3JtYW5jZV9nZXRfdHlwZSh2b2lk
KTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX3BlcmZvcm1hbmNlX2NsZWFyX3Jlc291cmNlX3RpbWlu
Z3M6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NUGVyZm9ybWFuY2UKLSAqCi0gKiBTdGFiaWxpdHk6
IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgdm9pZAotd2Via2l0X2RvbV9wZXJmb3JtYW5jZV9j
bGVhcl9yZXNvdXJjZV90aW1pbmdzKFdlYktpdERPTVBlcmZvcm1hbmNlKiBzZWxmKTsKLQotLyoq
Ci0gKiB3ZWJraXRfZG9tX3BlcmZvcm1hbmNlX3NldF9yZXNvdXJjZV90aW1pbmdfYnVmZmVyX3Np
emU6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NUGVyZm9ybWFuY2UKLSAqIEBtYXhTaXplOiBBICNn
dWxvbmcKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgdm9pZAot
d2Via2l0X2RvbV9wZXJmb3JtYW5jZV9zZXRfcmVzb3VyY2VfdGltaW5nX2J1ZmZlcl9zaXplKFdl
YktpdERPTVBlcmZvcm1hbmNlKiBzZWxmLCBndWxvbmcgbWF4U2l6ZSk7Ci0KLS8qKgotICogd2Vi
a2l0X2RvbV9wZXJmb3JtYW5jZV93ZWJraXRfbWFyazoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01Q
ZXJmb3JtYW5jZQotICogQG1hcmtOYW1lOiBBICNnY2hhcgotICogQGVycm9yOiAjR0Vycm9yCi0g
KgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIHZvaWQKLXdlYmtpdF9k
b21fcGVyZm9ybWFuY2Vfd2Via2l0X21hcmsoV2ViS2l0RE9NUGVyZm9ybWFuY2UqIHNlbGYsIGNv
bnN0IGdjaGFyKiBtYXJrTmFtZSwgR0Vycm9yKiogZXJyb3IpOwotCi0vKioKLSAqIHdlYmtpdF9k
b21fcGVyZm9ybWFuY2Vfd2Via2l0X2NsZWFyX21hcmtzOgotICogQHNlbGY6IEEgI1dlYktpdERP
TVBlcmZvcm1hbmNlCi0gKiBAbWFya05hbWU6IEEgI2djaGFyCi0gKgotICogU3RhYmlsaXR5OiBV
bnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIHZvaWQKLXdlYmtpdF9kb21fcGVyZm9ybWFuY2Vfd2Vi
a2l0X2NsZWFyX21hcmtzKFdlYktpdERPTVBlcmZvcm1hbmNlKiBzZWxmLCBjb25zdCBnY2hhciog
bWFya05hbWUpOwotCi0vKioKLSAqIHdlYmtpdF9kb21fcGVyZm9ybWFuY2Vfd2Via2l0X21lYXN1
cmU6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NUGVyZm9ybWFuY2UKLSAqIEBtZWFzdXJlTmFtZTog
QSAjZ2NoYXIKLSAqIEBzdGFydE1hcms6IEEgI2djaGFyCi0gKiBAZW5kTWFyazogQSAjZ2NoYXIK
LSAqIEBlcnJvcjogI0dFcnJvcgotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VC
S0lUX0FQSSB2b2lkCi13ZWJraXRfZG9tX3BlcmZvcm1hbmNlX3dlYmtpdF9tZWFzdXJlKFdlYktp
dERPTVBlcmZvcm1hbmNlKiBzZWxmLCBjb25zdCBnY2hhciogbWVhc3VyZU5hbWUsIGNvbnN0IGdj
aGFyKiBzdGFydE1hcmssIGNvbnN0IGdjaGFyKiBlbmRNYXJrLCBHRXJyb3IqKiBlcnJvcik7Ci0K
LS8qKgotICogd2Via2l0X2RvbV9wZXJmb3JtYW5jZV93ZWJraXRfY2xlYXJfbWVhc3VyZXM6Ci0g
KiBAc2VsZjogQSAjV2ViS2l0RE9NUGVyZm9ybWFuY2UKLSAqIEBtZWFzdXJlTmFtZTogQSAjZ2No
YXIKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgdm9pZAotd2Vi
a2l0X2RvbV9wZXJmb3JtYW5jZV93ZWJraXRfY2xlYXJfbWVhc3VyZXMoV2ViS2l0RE9NUGVyZm9y
bWFuY2UqIHNlbGYsIGNvbnN0IGdjaGFyKiBtZWFzdXJlTmFtZSk7Ci0KLS8qKgotICogd2Via2l0
X2RvbV9wZXJmb3JtYW5jZV9ub3c6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NUGVyZm9ybWFuY2UK
LSAqCi0gKiBSZXR1cm5zOiBBICNnZG91YmxlCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQot
KiovCi1XRUJLSVRfQVBJIGdkb3VibGUKLXdlYmtpdF9kb21fcGVyZm9ybWFuY2Vfbm93KFdlYktp
dERPTVBlcmZvcm1hbmNlKiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX3BlcmZvcm1hbmNl
X2dldF9uYXZpZ2F0aW9uOgotICogQHNlbGY6IEEgI1dlYktpdERPTVBlcmZvcm1hbmNlCi0gKgot
ICogUmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiBBICNXZWJLaXRET01QZXJmb3JtYW5jZU5hdmln
YXRpb24KLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgV2ViS2l0
RE9NUGVyZm9ybWFuY2VOYXZpZ2F0aW9uKgotd2Via2l0X2RvbV9wZXJmb3JtYW5jZV9nZXRfbmF2
aWdhdGlvbihXZWJLaXRET01QZXJmb3JtYW5jZSogc2VsZik7Ci0KLS8qKgotICogd2Via2l0X2Rv
bV9wZXJmb3JtYW5jZV9nZXRfdGltaW5nOgotICogQHNlbGY6IEEgI1dlYktpdERPTVBlcmZvcm1h
bmNlCi0gKgotICogUmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiBBICNXZWJLaXRET01QZXJmb3Jt
YW5jZVRpbWluZwotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSBX
ZWJLaXRET01QZXJmb3JtYW5jZVRpbWluZyoKLXdlYmtpdF9kb21fcGVyZm9ybWFuY2VfZ2V0X3Rp
bWluZyhXZWJLaXRET01QZXJmb3JtYW5jZSogc2VsZik7Ci0KLUdfRU5EX0RFQ0xTCi0KLSNlbmRp
ZiAvKiBXRUJLSVRfRE9NX1VTRV9VTlNUQUJMRV9BUEkgKi8KLSNlbmRpZiAvKiBXZWJLaXRET01Q
ZXJmb3JtYW5jZV9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVBlcmZvcm1hbmNlRW50cnkuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJL
aXRET01QZXJmb3JtYW5jZUVudHJ5LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZTdmNDYzYS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVBlcmZvcm1hbmNlRW50cnkuY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsMjQzICswLDAgQEAKLS8qCi0gKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhl
IFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICogIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5l
cmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICogIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
LSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJLaXRET01QZXJmb3JtYW5jZUVudHJ5
LmgiCi0KLSNpbmNsdWRlIDxXZWJDb3JlL0NTU0ltcG9ydFJ1bGUuaD4KLSNpbmNsdWRlICJET01P
YmplY3RDYWNoZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnQuaD4KLSNpbmNsdWRlIDxX
ZWJDb3JlL0V4Y2VwdGlvbkNvZGUuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0V4Y2VwdGlvbkNvZGVE
ZXNjcmlwdGlvbi5oPgotI2luY2x1ZGUgPFdlYkNvcmUvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmg+
Ci0jaW5jbHVkZSAiV2ViS2l0RE9NUGVyZm9ybWFuY2VFbnRyeVByaXZhdGUuaCIKLSNpbmNsdWRl
ICJXZWJLaXRET01Qcml2YXRlLmgiCi0jaW5jbHVkZSAiQ29udmVydFRvVVRGOFN0cmluZy5oIgot
I2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLSNkZWZp
bmUgV0VCS0lUX0RPTV9QRVJGT1JNQU5DRV9FTlRSWV9HRVRfUFJJVkFURShvYmopIEdfVFlQRV9J
TlNUQU5DRV9HRVRfUFJJVkFURShvYmosIFdFQktJVF9ET01fVFlQRV9QRVJGT1JNQU5DRV9FTlRS
WSwgV2ViS2l0RE9NUGVyZm9ybWFuY2VFbnRyeVByaXZhdGUpCi0KLXR5cGVkZWYgc3RydWN0IF9X
ZWJLaXRET01QZXJmb3JtYW5jZUVudHJ5UHJpdmF0ZSB7Ci0jaWYgRU5BQkxFKFdFQl9USU1JTkcp
Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlBlcmZvcm1hbmNlRW50cnk+IGNvcmVPYmplY3Q7Ci0jZW5k
aWYgLy8gRU5BQkxFKFdFQl9USU1JTkcpCi19IFdlYktpdERPTVBlcmZvcm1hbmNlRW50cnlQcml2
YXRlOwotCi0jaWYgRU5BQkxFKFdFQl9USU1JTkcpCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1X
ZWJLaXRET01QZXJmb3JtYW5jZUVudHJ5KiBraXQoV2ViQ29yZTo6UGVyZm9ybWFuY2VFbnRyeSog
b2JqKQotewotICAgIGlmICghb2JqKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIGlmIChncG9p
bnRlciByZXQgPSBET01PYmplY3RDYWNoZTo6Z2V0KG9iaikpCi0gICAgICAgIHJldHVybiBXRUJL
SVRfRE9NX1BFUkZPUk1BTkNFX0VOVFJZKHJldCk7Ci0KLSAgICByZXR1cm4gd3JhcFBlcmZvcm1h
bmNlRW50cnkob2JqKTsKLX0KLQotV2ViQ29yZTo6UGVyZm9ybWFuY2VFbnRyeSogY29yZShXZWJL
aXRET01QZXJmb3JtYW5jZUVudHJ5KiByZXF1ZXN0KQotewotICAgIHJldHVybiByZXF1ZXN0ID8g
c3RhdGljX2Nhc3Q8V2ViQ29yZTo6UGVyZm9ybWFuY2VFbnRyeSo+KFdFQktJVF9ET01fT0JKRUNU
KHJlcXVlc3QpLT5jb3JlT2JqZWN0KSA6IDA7Ci19Ci0KLVdlYktpdERPTVBlcmZvcm1hbmNlRW50
cnkqIHdyYXBQZXJmb3JtYW5jZUVudHJ5KFdlYkNvcmU6OlBlcmZvcm1hbmNlRW50cnkqIGNvcmVP
YmplY3QpCi17Ci0gICAgQVNTRVJUKGNvcmVPYmplY3QpOwotICAgIHJldHVybiBXRUJLSVRfRE9N
X1BFUkZPUk1BTkNFX0VOVFJZKGdfb2JqZWN0X25ldyhXRUJLSVRfRE9NX1RZUEVfUEVSRk9STUFO
Q0VfRU5UUlksICJjb3JlLW9iamVjdCIsIGNvcmVPYmplY3QsIG51bGxwdHIpKTsKLX0KLQotfSAv
LyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCX1RJTUlORykKLQotR19E
RUZJTkVfVFlQRShXZWJLaXRET01QZXJmb3JtYW5jZUVudHJ5LCB3ZWJraXRfZG9tX3BlcmZvcm1h
bmNlX2VudHJ5LCBXRUJLSVRfRE9NX1RZUEVfT0JKRUNUKQotCi1lbnVtIHsKLSAgICBQUk9QXzAs
Ci0gICAgUFJPUF9OQU1FLAotICAgIFBST1BfRU5UUllfVFlQRSwKLSAgICBQUk9QX1NUQVJUX1RJ
TUUsCi0gICAgUFJPUF9EVVJBVElPTiwKLX07Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdF9kb21fcGVy
Zm9ybWFuY2VfZW50cnlfZmluYWxpemUoR09iamVjdCogb2JqZWN0KQotewotICAgIFdlYktpdERP
TVBlcmZvcm1hbmNlRW50cnlQcml2YXRlKiBwcml2ID0gV0VCS0lUX0RPTV9QRVJGT1JNQU5DRV9F
TlRSWV9HRVRfUFJJVkFURShvYmplY3QpOwotI2lmIEVOQUJMRShXRUJfVElNSU5HKQotICAgIFdl
YktpdDo6RE9NT2JqZWN0Q2FjaGU6OmZvcmdldChwcml2LT5jb3JlT2JqZWN0LmdldCgpKTsKLSNl
bmRpZiAvLyBFTkFCTEUoV0VCX1RJTUlORykKLSAgICBwcml2LT5+V2ViS2l0RE9NUGVyZm9ybWFu
Y2VFbnRyeVByaXZhdGUoKTsKLSAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfZG9tX3BlcmZvcm1h
bmNlX2VudHJ5X3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7Ci19Ci0KLXN0YXRpYyB2
b2lkIHdlYmtpdF9kb21fcGVyZm9ybWFuY2VfZW50cnlfZ2V0X3Byb3BlcnR5KEdPYmplY3QqIG9i
amVjdCwgZ3VpbnQgcHJvcGVydHlJZCwgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMp
Ci17Ci0gICAgV2ViS2l0RE9NUGVyZm9ybWFuY2VFbnRyeSogc2VsZiA9IFdFQktJVF9ET01fUEVS
Rk9STUFOQ0VfRU5UUlkob2JqZWN0KTsKLQotICAgIHN3aXRjaCAocHJvcGVydHlJZCkgewotICAg
IGNhc2UgUFJPUF9OQU1FOgotICAgICAgICBnX3ZhbHVlX3Rha2Vfc3RyaW5nKHZhbHVlLCB3ZWJr
aXRfZG9tX3BlcmZvcm1hbmNlX2VudHJ5X2dldF9uYW1lKHNlbGYpKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBQUk9QX0VOVFJZX1RZUEU6Ci0gICAgICAgIGdfdmFsdWVfdGFrZV9zdHJpbmco
dmFsdWUsIHdlYmtpdF9kb21fcGVyZm9ybWFuY2VfZW50cnlfZ2V0X2VudHJ5X3R5cGUoc2VsZikp
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfU1RBUlRfVElNRToKLSAgICAgICAgZ192
YWx1ZV9zZXRfZG91YmxlKHZhbHVlLCB3ZWJraXRfZG9tX3BlcmZvcm1hbmNlX2VudHJ5X2dldF9z
dGFydF90aW1lKHNlbGYpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX0RVUkFUSU9O
OgotICAgICAgICBnX3ZhbHVlX3NldF9kb3VibGUodmFsdWUsIHdlYmtpdF9kb21fcGVyZm9ybWFu
Y2VfZW50cnlfZ2V0X2R1cmF0aW9uKHNlbGYpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVs
dDoKLSAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJv
cGVydHlJZCwgcHNwZWMpOwotICAgICAgICBicmVhazsKLSAgICB9Ci19Ci0KLXN0YXRpYyBHT2Jq
ZWN0KiB3ZWJraXRfZG9tX3BlcmZvcm1hbmNlX2VudHJ5X2NvbnN0cnVjdG9yKEdUeXBlIHR5cGUs
IGd1aW50IGNvbnN0cnVjdFByb3BlcnRpZXNDb3VudCwgR09iamVjdENvbnN0cnVjdFBhcmFtKiBj
b25zdHJ1Y3RQcm9wZXJ0aWVzKQotewotICAgIEdPYmplY3QqIG9iamVjdCA9IEdfT0JKRUNUX0NM
QVNTKHdlYmtpdF9kb21fcGVyZm9ybWFuY2VfZW50cnlfcGFyZW50X2NsYXNzKS0+Y29uc3RydWN0
b3IodHlwZSwgY29uc3RydWN0UHJvcGVydGllc0NvdW50LCBjb25zdHJ1Y3RQcm9wZXJ0aWVzKTsK
LSNpZiBFTkFCTEUoV0VCX1RJTUlORykKLSAgICBXZWJLaXRET01QZXJmb3JtYW5jZUVudHJ5UHJp
dmF0ZSogcHJpdiA9IFdFQktJVF9ET01fUEVSRk9STUFOQ0VfRU5UUllfR0VUX1BSSVZBVEUob2Jq
ZWN0KTsKLSAgICBwcml2LT5jb3JlT2JqZWN0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6UGVyZm9y
bWFuY2VFbnRyeSo+KFdFQktJVF9ET01fT0JKRUNUKG9iamVjdCktPmNvcmVPYmplY3QpOwotICAg
IFdlYktpdDo6RE9NT2JqZWN0Q2FjaGU6OnB1dChwcml2LT5jb3JlT2JqZWN0LmdldCgpLCBvYmpl
Y3QpOwotI2VuZGlmIC8vIEVOQUJMRShXRUJfVElNSU5HKQotICAgIHJldHVybiBvYmplY3Q7Ci19
Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdF9kb21fcGVyZm9ybWFuY2VfZW50cnlfY2xhc3NfaW5pdChX
ZWJLaXRET01QZXJmb3JtYW5jZUVudHJ5Q2xhc3MqIHJlcXVlc3RDbGFzcykKLXsKLSAgICBHT2Jq
ZWN0Q2xhc3MqIGdvYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKHJlcXVlc3RDbGFzcyk7Ci0g
ICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKGdvYmplY3RDbGFzcywgc2l6ZW9mKFdlYktpdERP
TVBlcmZvcm1hbmNlRW50cnlQcml2YXRlKSk7Ci0gICAgZ29iamVjdENsYXNzLT5jb25zdHJ1Y3Rv
ciA9IHdlYmtpdF9kb21fcGVyZm9ybWFuY2VfZW50cnlfY29uc3RydWN0b3I7Ci0gICAgZ29iamVj
dENsYXNzLT5maW5hbGl6ZSA9IHdlYmtpdF9kb21fcGVyZm9ybWFuY2VfZW50cnlfZmluYWxpemU7
Ci0gICAgZ29iamVjdENsYXNzLT5nZXRfcHJvcGVydHkgPSB3ZWJraXRfZG9tX3BlcmZvcm1hbmNl
X2VudHJ5X2dldF9wcm9wZXJ0eTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVy
dHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9OQU1FLAotICAgICAgICBn
X3BhcmFtX3NwZWNfc3RyaW5nKAotICAgICAgICAgICAgIm5hbWUiLAotICAgICAgICAgICAgIlBl
cmZvcm1hbmNlRW50cnk6bmFtZSIsCi0gICAgICAgICAgICAicmVhZC1vbmx5IGdjaGFyKiBQZXJm
b3JtYW5jZUVudHJ5Om5hbWUiLAotICAgICAgICAgICAgIiIsCi0gICAgICAgICAgICBXRUJLSVRf
UEFSQU1fUkVBREFCTEUpKTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHko
Ci0gICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9FTlRSWV9UWVBFLAotICAgICAg
ICBnX3BhcmFtX3NwZWNfc3RyaW5nKAotICAgICAgICAgICAgImVudHJ5LXR5cGUiLAotICAgICAg
ICAgICAgIlBlcmZvcm1hbmNlRW50cnk6ZW50cnktdHlwZSIsCi0gICAgICAgICAgICAicmVhZC1v
bmx5IGdjaGFyKiBQZXJmb3JtYW5jZUVudHJ5OmVudHJ5LXR5cGUiLAotICAgICAgICAgICAgIiIs
Ci0gICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKLQotICAgIGdfb2JqZWN0X2Ns
YXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJP
UF9TVEFSVF9USU1FLAotICAgICAgICBnX3BhcmFtX3NwZWNfZG91YmxlKAotICAgICAgICAgICAg
InN0YXJ0LXRpbWUiLAotICAgICAgICAgICAgIlBlcmZvcm1hbmNlRW50cnk6c3RhcnQtdGltZSIs
Ci0gICAgICAgICAgICAicmVhZC1vbmx5IGdkb3VibGUgUGVyZm9ybWFuY2VFbnRyeTpzdGFydC10
aW1lIiwKLSAgICAgICAgICAgIC1HX01BWERPVUJMRSwgR19NQVhET1VCTEUsIDAsCi0gICAgICAg
ICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3Rh
bGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9EVVJBVElP
TiwKLSAgICAgICAgZ19wYXJhbV9zcGVjX2RvdWJsZSgKLSAgICAgICAgICAgICJkdXJhdGlvbiIs
Ci0gICAgICAgICAgICAiUGVyZm9ybWFuY2VFbnRyeTpkdXJhdGlvbiIsCi0gICAgICAgICAgICAi
cmVhZC1vbmx5IGdkb3VibGUgUGVyZm9ybWFuY2VFbnRyeTpkdXJhdGlvbiIsCi0gICAgICAgICAg
ICAtR19NQVhET1VCTEUsIEdfTUFYRE9VQkxFLCAwLAotICAgICAgICAgICAgV0VCS0lUX1BBUkFN
X1JFQURBQkxFKSk7Ci0KLX0KLQotc3RhdGljIHZvaWQgd2Via2l0X2RvbV9wZXJmb3JtYW5jZV9l
bnRyeV9pbml0KFdlYktpdERPTVBlcmZvcm1hbmNlRW50cnkqIHJlcXVlc3QpCi17Ci0gICAgV2Vi
S2l0RE9NUGVyZm9ybWFuY2VFbnRyeVByaXZhdGUqIHByaXYgPSBXRUJLSVRfRE9NX1BFUkZPUk1B
TkNFX0VOVFJZX0dFVF9QUklWQVRFKHJlcXVlc3QpOwotICAgIG5ldyAocHJpdikgV2ViS2l0RE9N
UGVyZm9ybWFuY2VFbnRyeVByaXZhdGUoKTsKLX0KLQotZ2NoYXIqIHdlYmtpdF9kb21fcGVyZm9y
bWFuY2VfZW50cnlfZ2V0X25hbWUoV2ViS2l0RE9NUGVyZm9ybWFuY2VFbnRyeSogc2VsZikKLXsK
LSNpZiBFTkFCTEUoV0VCX1RJTUlORykKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3Rh
dGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19QRVJGT1JN
QU5DRV9FTlRSWShzZWxmKSwgMCk7Ci0gICAgV2ViQ29yZTo6UGVyZm9ybWFuY2VFbnRyeSogaXRl
bSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBnY2hhciogcmVzdWx0ID0gY29udmVydFRvVVRG
OFN0cmluZyhpdGVtLT5uYW1lKCkpOwotICAgIHJldHVybiByZXN1bHQ7Ci0jZWxzZQotICAgIFVO
VVNFRF9QQVJBTShzZWxmKTsKLSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJX
ZWIgVGltaW5nIikKLSAgICByZXR1cm4gMDsKLSNlbmRpZiAvKiBFTkFCTEUoV0VCX1RJTUlORykg
Ki8KLX0KLQotZ2NoYXIqIHdlYmtpdF9kb21fcGVyZm9ybWFuY2VfZW50cnlfZ2V0X2VudHJ5X3R5
cGUoV2ViS2l0RE9NUGVyZm9ybWFuY2VFbnRyeSogc2VsZikKLXsKLSNpZiBFTkFCTEUoV0VCX1RJ
TUlORykKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19QRVJGT1JNQU5DRV9FTlRSWShzZWxmKSwg
MCk7Ci0gICAgV2ViQ29yZTo6UGVyZm9ybWFuY2VFbnRyeSogaXRlbSA9IFdlYktpdDo6Y29yZShz
ZWxmKTsKLSAgICBnY2hhciogcmVzdWx0ID0gY29udmVydFRvVVRGOFN0cmluZyhpdGVtLT5lbnRy
eVR5cGUoKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHNl
bGYpOwotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIldlYiBUaW1pbmciKQot
ICAgIHJldHVybiAwOwotI2VuZGlmIC8qIEVOQUJMRShXRUJfVElNSU5HKSAqLwotfQotCi1nZG91
YmxlIHdlYmtpdF9kb21fcGVyZm9ybWFuY2VfZW50cnlfZ2V0X3N0YXJ0X3RpbWUoV2ViS2l0RE9N
UGVyZm9ybWFuY2VFbnRyeSogc2VsZikKLXsKLSNpZiBFTkFCTEUoV0VCX1RJTUlORykKLSAgICBX
ZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoV0VCS0lUX0RPTV9JU19QRVJGT1JNQU5DRV9FTlRSWShzZWxmKSwgMCk7Ci0gICAgV2Vi
Q29yZTo6UGVyZm9ybWFuY2VFbnRyeSogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBn
ZG91YmxlIHJlc3VsdCA9IGl0ZW0tPnN0YXJ0VGltZSgpOwotICAgIHJldHVybiByZXN1bHQ7Ci0j
ZWxzZQotICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKLSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05P
VF9QUkVTRU5UKCJXZWIgVGltaW5nIikKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Z2RvdWJsZT4o
MCk7Ci0jZW5kaWYgLyogRU5BQkxFKFdFQl9USU1JTkcpICovCi19Ci0KLWdkb3VibGUgd2Via2l0
X2RvbV9wZXJmb3JtYW5jZV9lbnRyeV9nZXRfZHVyYXRpb24oV2ViS2l0RE9NUGVyZm9ybWFuY2VF
bnRyeSogc2VsZikKLXsKLSNpZiBFTkFCTEUoV0VCX1RJTUlORykKLSAgICBXZWJDb3JlOjpKU01h
aW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lU
X0RPTV9JU19QRVJGT1JNQU5DRV9FTlRSWShzZWxmKSwgMCk7Ci0gICAgV2ViQ29yZTo6UGVyZm9y
bWFuY2VFbnRyeSogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBnZG91YmxlIHJlc3Vs
dCA9IGl0ZW0tPmR1cmF0aW9uKCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSNlbHNlCi0gICAgVU5V
U0VEX1BBUkFNKHNlbGYpOwotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIldl
YiBUaW1pbmciKQotICAgIHJldHVybiBzdGF0aWNfY2FzdDxnZG91YmxlPigwKTsKLSNlbmRpZiAv
KiBFTkFCTEUoV0VCX1RJTUlORykgKi8KLX0KLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01QZXJmb3JtYW5j
ZUVudHJ5LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
dGsvRE9NL1dlYktpdERPTVBlcmZvcm1hbmNlRW50cnkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDM3OTU5MDYuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01QZXJmb3JtYW5jZUVudHJ5LmgK
KysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi0vKgotICogIFRoaXMgZmlsZSBpcyBwYXJ0
IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAqICBUaGlzIGZpbGUgaGFzIGJl
ZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQotICoK
LSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAot
ICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
LSAqLwotCi0jaWZuZGVmIFdlYktpdERPTVBlcmZvcm1hbmNlRW50cnlfaAotI2RlZmluZSBXZWJL
aXRET01QZXJmb3JtYW5jZUVudHJ5X2gKLQotI2lmZGVmIFdFQktJVF9ET01fVVNFX1VOU1RBQkxF
X0FQSQotCi0jaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KLSNpbmNsdWRlIDx3ZWJraXRkb20vV2Vi
S2l0RE9NT2JqZWN0Lmg+Ci0jaW5jbHVkZSA8d2Via2l0ZG9tL3dlYmtpdGRvbWRlZmluZXMtdW5z
dGFibGUuaD4KLQotR19CRUdJTl9ERUNMUwotCi0jZGVmaW5lIFdFQktJVF9ET01fVFlQRV9QRVJG
T1JNQU5DRV9FTlRSWSAgICAgICAgICAgICh3ZWJraXRfZG9tX3BlcmZvcm1hbmNlX2VudHJ5X2dl
dF90eXBlKCkpCi0jZGVmaW5lIFdFQktJVF9ET01fUEVSRk9STUFOQ0VfRU5UUlkob2JqKSAgICAg
ICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwgV0VCS0lUX0RPTV9UWVBF
X1BFUkZPUk1BTkNFX0VOVFJZLCBXZWJLaXRET01QZXJmb3JtYW5jZUVudHJ5KSkKLSNkZWZpbmUg
V0VCS0lUX0RPTV9QRVJGT1JNQU5DRV9FTlRSWV9DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVD
S19DTEFTU19DQVNUKChrbGFzcyksICBXRUJLSVRfRE9NX1RZUEVfUEVSRk9STUFOQ0VfRU5UUlks
IFdlYktpdERPTVBlcmZvcm1hbmNlRW50cnlDbGFzcykKLSNkZWZpbmUgV0VCS0lUX0RPTV9JU19Q
RVJGT1JNQU5DRV9FTlRSWShvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBF
KChvYmopLCBXRUJLSVRfRE9NX1RZUEVfUEVSRk9STUFOQ0VfRU5UUlkpKQotI2RlZmluZSBXRUJL
SVRfRE9NX0lTX1BFUkZPUk1BTkNFX0VOVFJZX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NM
QVNTX1RZUEUoKGtsYXNzKSwgIFdFQktJVF9ET01fVFlQRV9QRVJGT1JNQU5DRV9FTlRSWSkpCi0j
ZGVmaW5lIFdFQktJVF9ET01fUEVSRk9STUFOQ0VfRU5UUllfR0VUX0NMQVNTKG9iaikgIChHX1RZ
UEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgV0VCS0lUX0RPTV9UWVBFX1BFUkZPUk1BTkNF
X0VOVFJZLCBXZWJLaXRET01QZXJmb3JtYW5jZUVudHJ5Q2xhc3MpKQotCi1zdHJ1Y3QgX1dlYktp
dERPTVBlcmZvcm1hbmNlRW50cnkgewotICAgIFdlYktpdERPTU9iamVjdCBwYXJlbnRfaW5zdGFu
Y2U7Ci19OwotCi1zdHJ1Y3QgX1dlYktpdERPTVBlcmZvcm1hbmNlRW50cnlDbGFzcyB7Ci0gICAg
V2ViS2l0RE9NT2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOwotfTsKLQotV0VCS0lUX0FQSSBHVHlw
ZQotd2Via2l0X2RvbV9wZXJmb3JtYW5jZV9lbnRyeV9nZXRfdHlwZSh2b2lkKTsKLQotLyoqCi0g
KiB3ZWJraXRfZG9tX3BlcmZvcm1hbmNlX2VudHJ5X2dldF9uYW1lOgotICogQHNlbGY6IEEgI1dl
YktpdERPTVBlcmZvcm1hbmNlRW50cnkKLSAqCi0gKiBSZXR1cm5zOiBBICNnY2hhcgotICoKLSAq
IFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSBnY2hhcioKLXdlYmtpdF9kb21f
cGVyZm9ybWFuY2VfZW50cnlfZ2V0X25hbWUoV2ViS2l0RE9NUGVyZm9ybWFuY2VFbnRyeSogc2Vs
Zik7Ci0KLS8qKgotICogd2Via2l0X2RvbV9wZXJmb3JtYW5jZV9lbnRyeV9nZXRfZW50cnlfdHlw
ZToKLSAqIEBzZWxmOiBBICNXZWJLaXRET01QZXJmb3JtYW5jZUVudHJ5Ci0gKgotICogUmV0dXJu
czogQSAjZ2NoYXIKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkg
Z2NoYXIqCi13ZWJraXRfZG9tX3BlcmZvcm1hbmNlX2VudHJ5X2dldF9lbnRyeV90eXBlKFdlYktp
dERPTVBlcmZvcm1hbmNlRW50cnkqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9kb21fcGVyZm9y
bWFuY2VfZW50cnlfZ2V0X3N0YXJ0X3RpbWU6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NUGVyZm9y
bWFuY2VFbnRyeQotICoKLSAqIFJldHVybnM6IEEgI2dkb3VibGUKLSAqCi0gKiBTdGFiaWxpdHk6
IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgZ2RvdWJsZQotd2Via2l0X2RvbV9wZXJmb3JtYW5j
ZV9lbnRyeV9nZXRfc3RhcnRfdGltZShXZWJLaXRET01QZXJmb3JtYW5jZUVudHJ5KiBzZWxmKTsK
LQotLyoqCi0gKiB3ZWJraXRfZG9tX3BlcmZvcm1hbmNlX2VudHJ5X2dldF9kdXJhdGlvbjoKLSAq
IEBzZWxmOiBBICNXZWJLaXRET01QZXJmb3JtYW5jZUVudHJ5Ci0gKgotICogUmV0dXJuczogQSAj
Z2RvdWJsZQotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSBnZG91
YmxlCi13ZWJraXRfZG9tX3BlcmZvcm1hbmNlX2VudHJ5X2dldF9kdXJhdGlvbihXZWJLaXRET01Q
ZXJmb3JtYW5jZUVudHJ5KiBzZWxmKTsKLQotR19FTkRfREVDTFMKLQotI2VuZGlmIC8qIFdFQktJ
VF9ET01fVVNFX1VOU1RBQkxFX0FQSSAqLwotI2VuZGlmIC8qIFdlYktpdERPTVBlcmZvcm1hbmNl
RW50cnlfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01QZXJmb3JtYW5jZUVudHJ5UHJpdmF0ZS5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJL
aXRET01QZXJmb3JtYW5jZUVudHJ5UHJpdmF0ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBlMWNkZTRhLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NUGVyZm9ybWFuY2VFbnRyeVByaXZhdGUu
aAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLS8qCi0gKiAgVGhpcyBmaWxlIGlzIHBh
cnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICogIFRoaXMgZmlsZSBoYXMg
YmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0g
KgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
Ci0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgotICovCi0KLSNpZm5kZWYgV2ViS2l0RE9NUGVyZm9ybWFuY2VFbnRyeVByaXZhdGVfaAotI2Rl
ZmluZSBXZWJLaXRET01QZXJmb3JtYW5jZUVudHJ5UHJpdmF0ZV9oCi0KLSNpbmNsdWRlIDxXZWJD
b3JlL1BlcmZvcm1hbmNlRW50cnkuaD4KLSNpbmNsdWRlIDx3ZWJraXRkb20vV2ViS2l0RE9NUGVy
Zm9ybWFuY2VFbnRyeS5oPgotI2lmIEVOQUJMRShXRUJfVElNSU5HKQotCi1uYW1lc3BhY2UgV2Vi
S2l0IHsKLVdlYktpdERPTVBlcmZvcm1hbmNlRW50cnkqIHdyYXBQZXJmb3JtYW5jZUVudHJ5KFdl
YkNvcmU6OlBlcmZvcm1hbmNlRW50cnkqKTsKLVdlYktpdERPTVBlcmZvcm1hbmNlRW50cnkqIGtp
dChXZWJDb3JlOjpQZXJmb3JtYW5jZUVudHJ5Kik7Ci1XZWJDb3JlOjpQZXJmb3JtYW5jZUVudHJ5
KiBjb3JlKFdlYktpdERPTVBlcmZvcm1hbmNlRW50cnkqKTsKLX0gLy8gbmFtZXNwYWNlIFdlYktp
dAotCi0jZW5kaWYgLyogRU5BQkxFKFdFQl9USU1JTkcpICovCi0KLSNlbmRpZiAvKiBXZWJLaXRE
T01QZXJmb3JtYW5jZUVudHJ5UHJpdmF0ZV9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVBlcmZvcm1h
bmNlTmF2aWdhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVBlcmZvcm1hbmNlTmF2aWdhdGlvbi5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFlODdlODguLjAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01QZXJm
b3JtYW5jZU5hdmlnYXRpb24uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTg1ICswLDAgQEAKLS8q
Ci0gKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0
LgotICogIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3Mu
cGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJXZWJLaXRET01QZXJmb3JtYW5jZU5hdmlnYXRpb24uaCIKLQotI2luY2x1ZGUgPFdlYkNv
cmUvQ1NTSW1wb3J0UnVsZS5oPgotI2luY2x1ZGUgIkRPTU9iamVjdENhY2hlLmgiCi0jaW5jbHVk
ZSA8V2ViQ29yZS9Eb2N1bWVudC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRXhjZXB0aW9uQ29kZS5o
PgotI2luY2x1ZGUgPFdlYkNvcmUvRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uLmg+Ci0jaW5jbHVk
ZSA8V2ViQ29yZS9KU01haW5UaHJlYWRFeGVjU3RhdGUuaD4KLSNpbmNsdWRlICJXZWJLaXRET01Q
ZXJmb3JtYW5jZU5hdmlnYXRpb25Qcml2YXRlLmgiCi0jaW5jbHVkZSAiV2ViS2l0RE9NUHJpdmF0
ZS5oIgotI2luY2x1ZGUgIkNvbnZlcnRUb1VURjhTdHJpbmcuaCIKLSNpbmNsdWRlIDx3dGYvR2V0
UHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi0jZGVmaW5lIFdFQktJVF9ET01fUEVS
Rk9STUFOQ0VfTkFWSUdBVElPTl9HRVRfUFJJVkFURShvYmopIEdfVFlQRV9JTlNUQU5DRV9HRVRf
UFJJVkFURShvYmosIFdFQktJVF9ET01fVFlQRV9QRVJGT1JNQU5DRV9OQVZJR0FUSU9OLCBXZWJL
aXRET01QZXJmb3JtYW5jZU5hdmlnYXRpb25Qcml2YXRlKQotCi10eXBlZGVmIHN0cnVjdCBfV2Vi
S2l0RE9NUGVyZm9ybWFuY2VOYXZpZ2F0aW9uUHJpdmF0ZSB7Ci0jaWYgRU5BQkxFKFdFQl9USU1J
TkcpCi0gICAgUmVmUHRyPFdlYkNvcmU6OlBlcmZvcm1hbmNlTmF2aWdhdGlvbj4gY29yZU9iamVj
dDsKLSNlbmRpZiAvLyBFTkFCTEUoV0VCX1RJTUlORykKLX0gV2ViS2l0RE9NUGVyZm9ybWFuY2VO
YXZpZ2F0aW9uUHJpdmF0ZTsKLQotI2lmIEVOQUJMRShXRUJfVElNSU5HKQotCi1uYW1lc3BhY2Ug
V2ViS2l0IHsKLQotV2ViS2l0RE9NUGVyZm9ybWFuY2VOYXZpZ2F0aW9uKiBraXQoV2ViQ29yZTo6
UGVyZm9ybWFuY2VOYXZpZ2F0aW9uKiBvYmopCi17Ci0gICAgaWYgKCFvYmopCi0gICAgICAgIHJl
dHVybiAwOwotCi0gICAgaWYgKGdwb2ludGVyIHJldCA9IERPTU9iamVjdENhY2hlOjpnZXQob2Jq
KSkKLSAgICAgICAgcmV0dXJuIFdFQktJVF9ET01fUEVSRk9STUFOQ0VfTkFWSUdBVElPTihyZXQp
OwotCi0gICAgcmV0dXJuIHdyYXBQZXJmb3JtYW5jZU5hdmlnYXRpb24ob2JqKTsKLX0KLQotV2Vi
Q29yZTo6UGVyZm9ybWFuY2VOYXZpZ2F0aW9uKiBjb3JlKFdlYktpdERPTVBlcmZvcm1hbmNlTmF2
aWdhdGlvbiogcmVxdWVzdCkKLXsKLSAgICByZXR1cm4gcmVxdWVzdCA/IHN0YXRpY19jYXN0PFdl
YkNvcmU6OlBlcmZvcm1hbmNlTmF2aWdhdGlvbio+KFdFQktJVF9ET01fT0JKRUNUKHJlcXVlc3Qp
LT5jb3JlT2JqZWN0KSA6IDA7Ci19Ci0KLVdlYktpdERPTVBlcmZvcm1hbmNlTmF2aWdhdGlvbiog
d3JhcFBlcmZvcm1hbmNlTmF2aWdhdGlvbihXZWJDb3JlOjpQZXJmb3JtYW5jZU5hdmlnYXRpb24q
IGNvcmVPYmplY3QpCi17Ci0gICAgQVNTRVJUKGNvcmVPYmplY3QpOwotICAgIHJldHVybiBXRUJL
SVRfRE9NX1BFUkZPUk1BTkNFX05BVklHQVRJT04oZ19vYmplY3RfbmV3KFdFQktJVF9ET01fVFlQ
RV9QRVJGT1JNQU5DRV9OQVZJR0FUSU9OLCAiY29yZS1vYmplY3QiLCBjb3JlT2JqZWN0LCBudWxs
cHRyKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFdF
Ql9USU1JTkcpCi0KLUdfREVGSU5FX1RZUEUoV2ViS2l0RE9NUGVyZm9ybWFuY2VOYXZpZ2F0aW9u
LCB3ZWJraXRfZG9tX3BlcmZvcm1hbmNlX25hdmlnYXRpb24sIFdFQktJVF9ET01fVFlQRV9PQkpF
Q1QpCi0KLWVudW0gewotICAgIFBST1BfMCwKLSAgICBQUk9QX1RZUEUsCi0gICAgUFJPUF9SRURJ
UkVDVF9DT1VOVCwKLX07Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdF9kb21fcGVyZm9ybWFuY2VfbmF2
aWdhdGlvbl9maW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCi17Ci0gICAgV2ViS2l0RE9NUGVyZm9y
bWFuY2VOYXZpZ2F0aW9uUHJpdmF0ZSogcHJpdiA9IFdFQktJVF9ET01fUEVSRk9STUFOQ0VfTkFW
SUdBVElPTl9HRVRfUFJJVkFURShvYmplY3QpOwotI2lmIEVOQUJMRShXRUJfVElNSU5HKQotICAg
IFdlYktpdDo6RE9NT2JqZWN0Q2FjaGU6OmZvcmdldChwcml2LT5jb3JlT2JqZWN0LmdldCgpKTsK
LSNlbmRpZiAvLyBFTkFCTEUoV0VCX1RJTUlORykKLSAgICBwcml2LT5+V2ViS2l0RE9NUGVyZm9y
bWFuY2VOYXZpZ2F0aW9uUHJpdmF0ZSgpOwotICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9kb21f
cGVyZm9ybWFuY2VfbmF2aWdhdGlvbl9wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmplY3QpOwot
fQotCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3BlcmZvcm1hbmNlX25hdmlnYXRpb25fZ2V0X3By
b3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcGVydHlJZCwgR1ZhbHVlKiB2YWx1ZSwg
R1BhcmFtU3BlYyogcHNwZWMpCi17Ci0gICAgV2ViS2l0RE9NUGVyZm9ybWFuY2VOYXZpZ2F0aW9u
KiBzZWxmID0gV0VCS0lUX0RPTV9QRVJGT1JNQU5DRV9OQVZJR0FUSU9OKG9iamVjdCk7Ci0KLSAg
ICBzd2l0Y2ggKHByb3BlcnR5SWQpIHsKLSAgICBjYXNlIFBST1BfVFlQRToKLSAgICAgICAgZ192
YWx1ZV9zZXRfdWludCh2YWx1ZSwgd2Via2l0X2RvbV9wZXJmb3JtYW5jZV9uYXZpZ2F0aW9uX2dl
dF9uYXZpZ2F0aW9uX3R5cGUoc2VsZikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1Bf
UkVESVJFQ1RfQ09VTlQ6Ci0gICAgICAgIGdfdmFsdWVfc2V0X3VpbnQodmFsdWUsIHdlYmtpdF9k
b21fcGVyZm9ybWFuY2VfbmF2aWdhdGlvbl9nZXRfcmVkaXJlY3RfY291bnQoc2VsZikpOwotICAg
ICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURf
UFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wZXJ0eUlkLCBwc3BlYyk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIH0KLX0KLQotc3RhdGljIEdPYmplY3QqIHdlYmtpdF9kb21fcGVyZm9ybWFuY2VfbmF2aWdh
dGlvbl9jb25zdHJ1Y3RvcihHVHlwZSB0eXBlLCBndWludCBjb25zdHJ1Y3RQcm9wZXJ0aWVzQ291
bnQsIEdPYmplY3RDb25zdHJ1Y3RQYXJhbSogY29uc3RydWN0UHJvcGVydGllcykKLXsKLSAgICBH
T2JqZWN0KiBvYmplY3QgPSBHX09CSkVDVF9DTEFTUyh3ZWJraXRfZG9tX3BlcmZvcm1hbmNlX25h
dmlnYXRpb25fcGFyZW50X2NsYXNzKS0+Y29uc3RydWN0b3IodHlwZSwgY29uc3RydWN0UHJvcGVy
dGllc0NvdW50LCBjb25zdHJ1Y3RQcm9wZXJ0aWVzKTsKLSNpZiBFTkFCTEUoV0VCX1RJTUlORykK
LSAgICBXZWJLaXRET01QZXJmb3JtYW5jZU5hdmlnYXRpb25Qcml2YXRlKiBwcml2ID0gV0VCS0lU
X0RPTV9QRVJGT1JNQU5DRV9OQVZJR0FUSU9OX0dFVF9QUklWQVRFKG9iamVjdCk7Ci0gICAgcHJp
di0+Y29yZU9iamVjdCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OlBlcmZvcm1hbmNlTmF2aWdhdGlv
bio+KFdFQktJVF9ET01fT0JKRUNUKG9iamVjdCktPmNvcmVPYmplY3QpOwotICAgIFdlYktpdDo6
RE9NT2JqZWN0Q2FjaGU6OnB1dChwcml2LT5jb3JlT2JqZWN0LmdldCgpLCBvYmplY3QpOwotI2Vu
ZGlmIC8vIEVOQUJMRShXRUJfVElNSU5HKQotICAgIHJldHVybiBvYmplY3Q7Ci19Ci0KLXN0YXRp
YyB2b2lkIHdlYmtpdF9kb21fcGVyZm9ybWFuY2VfbmF2aWdhdGlvbl9jbGFzc19pbml0KFdlYktp
dERPTVBlcmZvcm1hbmNlTmF2aWdhdGlvbkNsYXNzKiByZXF1ZXN0Q2xhc3MpCi17Ci0gICAgR09i
amVjdENsYXNzKiBnb2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhyZXF1ZXN0Q2xhc3MpOwot
ICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShnb2JqZWN0Q2xhc3MsIHNpemVvZihXZWJLaXRE
T01QZXJmb3JtYW5jZU5hdmlnYXRpb25Qcml2YXRlKSk7Ci0gICAgZ29iamVjdENsYXNzLT5jb25z
dHJ1Y3RvciA9IHdlYmtpdF9kb21fcGVyZm9ybWFuY2VfbmF2aWdhdGlvbl9jb25zdHJ1Y3RvcjsK
LSAgICBnb2JqZWN0Q2xhc3MtPmZpbmFsaXplID0gd2Via2l0X2RvbV9wZXJmb3JtYW5jZV9uYXZp
Z2F0aW9uX2ZpbmFsaXplOwotICAgIGdvYmplY3RDbGFzcy0+Z2V0X3Byb3BlcnR5ID0gd2Via2l0
X2RvbV9wZXJmb3JtYW5jZV9uYXZpZ2F0aW9uX2dldF9wcm9wZXJ0eTsKLQotICAgIGdfb2JqZWN0
X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAg
UFJPUF9UWVBFLAotICAgICAgICBnX3BhcmFtX3NwZWNfdWludCgKLSAgICAgICAgICAgICJ0eXBl
IiwKLSAgICAgICAgICAgICJQZXJmb3JtYW5jZU5hdmlnYXRpb246dHlwZSIsCi0gICAgICAgICAg
ICAicmVhZC1vbmx5IGd1c2hvcnQgUGVyZm9ybWFuY2VOYXZpZ2F0aW9uOnR5cGUiLAotICAgICAg
ICAgICAgMCwgR19NQVhVSU5ULCAwLAotICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxF
KSk7Ci0KLSAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAotICAgICAgICBnb2Jq
ZWN0Q2xhc3MsCi0gICAgICAgIFBST1BfUkVESVJFQ1RfQ09VTlQsCi0gICAgICAgIGdfcGFyYW1f
c3BlY191aW50KAotICAgICAgICAgICAgInJlZGlyZWN0LWNvdW50IiwKLSAgICAgICAgICAgICJQ
ZXJmb3JtYW5jZU5hdmlnYXRpb246cmVkaXJlY3QtY291bnQiLAotICAgICAgICAgICAgInJlYWQt
b25seSBndXNob3J0IFBlcmZvcm1hbmNlTmF2aWdhdGlvbjpyZWRpcmVjdC1jb3VudCIsCi0gICAg
ICAgICAgICAwLCBHX01BWFVJTlQsIDAsCi0gICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFC
TEUpKTsKLQotfQotCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3BlcmZvcm1hbmNlX25hdmlnYXRp
b25faW5pdChXZWJLaXRET01QZXJmb3JtYW5jZU5hdmlnYXRpb24qIHJlcXVlc3QpCi17Ci0gICAg
V2ViS2l0RE9NUGVyZm9ybWFuY2VOYXZpZ2F0aW9uUHJpdmF0ZSogcHJpdiA9IFdFQktJVF9ET01f
UEVSRk9STUFOQ0VfTkFWSUdBVElPTl9HRVRfUFJJVkFURShyZXF1ZXN0KTsKLSAgICBuZXcgKHBy
aXYpIFdlYktpdERPTVBlcmZvcm1hbmNlTmF2aWdhdGlvblByaXZhdGUoKTsKLX0KLQotZ3VzaG9y
dCB3ZWJraXRfZG9tX3BlcmZvcm1hbmNlX25hdmlnYXRpb25fZ2V0X25hdmlnYXRpb25fdHlwZShX
ZWJLaXRET01QZXJmb3JtYW5jZU5hdmlnYXRpb24qIHNlbGYpCi17Ci0jaWYgRU5BQkxFKFdFQl9U
SU1JTkcpCi0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdf
cmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfUEVSRk9STUFOQ0VfTkFWSUdBVElPTihz
ZWxmKSwgMCk7Ci0gICAgV2ViQ29yZTo6UGVyZm9ybWFuY2VOYXZpZ2F0aW9uKiBpdGVtID0gV2Vi
S2l0Ojpjb3JlKHNlbGYpOwotICAgIGd1c2hvcnQgcmVzdWx0ID0gaXRlbS0+dHlwZSgpOwotICAg
IHJldHVybiByZXN1bHQ7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKLSAgICBXRUJL
SVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJXZWIgVGltaW5nIikKLSAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8Z3VzaG9ydD4oMCk7Ci0jZW5kaWYgLyogRU5BQkxFKFdFQl9USU1JTkcpICovCi19
Ci0KLWd1c2hvcnQgd2Via2l0X2RvbV9wZXJmb3JtYW5jZV9uYXZpZ2F0aW9uX2dldF9yZWRpcmVj
dF9jb3VudChXZWJLaXRET01QZXJmb3JtYW5jZU5hdmlnYXRpb24qIHNlbGYpCi17Ci0jaWYgRU5B
QkxFKFdFQl9USU1JTkcpCi0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRl
OwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfUEVSRk9STUFOQ0VfTkFW
SUdBVElPTihzZWxmKSwgMCk7Ci0gICAgV2ViQ29yZTo6UGVyZm9ybWFuY2VOYXZpZ2F0aW9uKiBp
dGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGd1c2hvcnQgcmVzdWx0ID0gaXRlbS0+cmVk
aXJlY3RDb3VudCgpOwotICAgIHJldHVybiByZXN1bHQ7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJB
TShzZWxmKTsKLSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJXZWIgVGltaW5n
IikKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Z3VzaG9ydD4oMCk7Ci0jZW5kaWYgLyogRU5BQkxF
KFdFQl9USU1JTkcpICovCi19Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NUGVyZm9ybWFuY2VOYXZpZ2F0
aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsv
RE9NL1dlYktpdERPTVBlcmZvcm1hbmNlTmF2aWdhdGlvbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDM0MTM4Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NUGVyZm9ybWFuY2VOYXZpZ2F0
aW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSw5NSArMCwwIEBACi0vKgotICogIFRoaXMgZmlsZSBp
cyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAqICBUaGlzIGZpbGUg
aGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZ
IQotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICog
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KLSAqLwotCi0jaWZuZGVmIFdlYktpdERPTVBlcmZvcm1hbmNlTmF2aWdhdGlvbl9oCi0j
ZGVmaW5lIFdlYktpdERPTVBlcmZvcm1hbmNlTmF2aWdhdGlvbl9oCi0KLSNpZmRlZiBXRUJLSVRf
RE9NX1VTRV9VTlNUQUJMRV9BUEkKLQotI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+Ci0jaW5jbHVk
ZSA8d2Via2l0ZG9tL1dlYktpdERPTU9iamVjdC5oPgotI2luY2x1ZGUgPHdlYmtpdGRvbS93ZWJr
aXRkb21kZWZpbmVzLXVuc3RhYmxlLmg+Ci0KLUdfQkVHSU5fREVDTFMKLQotI2RlZmluZSBXRUJL
SVRfRE9NX1RZUEVfUEVSRk9STUFOQ0VfTkFWSUdBVElPTiAgICAgICAgICAgICh3ZWJraXRfZG9t
X3BlcmZvcm1hbmNlX25hdmlnYXRpb25fZ2V0X3R5cGUoKSkKLSNkZWZpbmUgV0VCS0lUX0RPTV9Q
RVJGT1JNQU5DRV9OQVZJR0FUSU9OKG9iaikgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RB
TkNFX0NBU1QoKG9iaiksIFdFQktJVF9ET01fVFlQRV9QRVJGT1JNQU5DRV9OQVZJR0FUSU9OLCBX
ZWJLaXRET01QZXJmb3JtYW5jZU5hdmlnYXRpb24pKQotI2RlZmluZSBXRUJLSVRfRE9NX1BFUkZP
Uk1BTkNFX05BVklHQVRJT05fQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FT
VCgoa2xhc3MpLCAgV0VCS0lUX0RPTV9UWVBFX1BFUkZPUk1BTkNFX05BVklHQVRJT04sIFdlYktp
dERPTVBlcmZvcm1hbmNlTmF2aWdhdGlvbkNsYXNzKQotI2RlZmluZSBXRUJLSVRfRE9NX0lTX1BF
UkZPUk1BTkNFX05BVklHQVRJT04ob2JqKSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0Vf
VFlQRSgob2JqKSwgV0VCS0lUX0RPTV9UWVBFX1BFUkZPUk1BTkNFX05BVklHQVRJT04pKQotI2Rl
ZmluZSBXRUJLSVRfRE9NX0lTX1BFUkZPUk1BTkNFX05BVklHQVRJT05fQ0xBU1Moa2xhc3MpIChH
X1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX0RPTV9UWVBFX1BFUkZPUk1B
TkNFX05BVklHQVRJT04pKQotI2RlZmluZSBXRUJLSVRfRE9NX1BFUkZPUk1BTkNFX05BVklHQVRJ
T05fR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgV0VC
S0lUX0RPTV9UWVBFX1BFUkZPUk1BTkNFX05BVklHQVRJT04sIFdlYktpdERPTVBlcmZvcm1hbmNl
TmF2aWdhdGlvbkNsYXNzKSkKLQotLyoqCi0gKiBXRUJLSVRfRE9NX1BFUkZPUk1BTkNFX05BVklH
QVRJT05fVFlQRV9OQVZJR0FURToKLSAqLwotI2RlZmluZSBXRUJLSVRfRE9NX1BFUkZPUk1BTkNF
X05BVklHQVRJT05fVFlQRV9OQVZJR0FURSAwCi0KLS8qKgotICogV0VCS0lUX0RPTV9QRVJGT1JN
QU5DRV9OQVZJR0FUSU9OX1RZUEVfUkVMT0FEOgotICovCi0jZGVmaW5lIFdFQktJVF9ET01fUEVS
Rk9STUFOQ0VfTkFWSUdBVElPTl9UWVBFX1JFTE9BRCAxCi0KLS8qKgotICogV0VCS0lUX0RPTV9Q
RVJGT1JNQU5DRV9OQVZJR0FUSU9OX1RZUEVfQkFDS19GT1JXQVJEOgotICovCi0jZGVmaW5lIFdF
QktJVF9ET01fUEVSRk9STUFOQ0VfTkFWSUdBVElPTl9UWVBFX0JBQ0tfRk9SV0FSRCAyCi0KLS8q
KgotICogV0VCS0lUX0RPTV9QRVJGT1JNQU5DRV9OQVZJR0FUSU9OX1RZUEVfUkVTRVJWRUQ6Ci0g
Ki8KLSNkZWZpbmUgV0VCS0lUX0RPTV9QRVJGT1JNQU5DRV9OQVZJR0FUSU9OX1RZUEVfUkVTRVJW
RUQgMjU1Ci0KLXN0cnVjdCBfV2ViS2l0RE9NUGVyZm9ybWFuY2VOYXZpZ2F0aW9uIHsKLSAgICBX
ZWJLaXRET01PYmplY3QgcGFyZW50X2luc3RhbmNlOwotfTsKLQotc3RydWN0IF9XZWJLaXRET01Q
ZXJmb3JtYW5jZU5hdmlnYXRpb25DbGFzcyB7Ci0gICAgV2ViS2l0RE9NT2JqZWN0Q2xhc3MgcGFy
ZW50X2NsYXNzOwotfTsKLQotV0VCS0lUX0FQSSBHVHlwZQotd2Via2l0X2RvbV9wZXJmb3JtYW5j
ZV9uYXZpZ2F0aW9uX2dldF90eXBlKHZvaWQpOwotCi0vKioKLSAqIHdlYmtpdF9kb21fcGVyZm9y
bWFuY2VfbmF2aWdhdGlvbl9nZXRfbmF2aWdhdGlvbl90eXBlOgotICogQHNlbGY6IEEgI1dlYktp
dERPTVBlcmZvcm1hbmNlTmF2aWdhdGlvbgotICoKLSAqIFJldHVybnM6IEEgI2d1c2hvcnQKLSAq
Ci0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgZ3VzaG9ydAotd2Via2l0
X2RvbV9wZXJmb3JtYW5jZV9uYXZpZ2F0aW9uX2dldF9uYXZpZ2F0aW9uX3R5cGUoV2ViS2l0RE9N
UGVyZm9ybWFuY2VOYXZpZ2F0aW9uKiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX3BlcmZv
cm1hbmNlX25hdmlnYXRpb25fZ2V0X3JlZGlyZWN0X2NvdW50OgotICogQHNlbGY6IEEgI1dlYktp
dERPTVBlcmZvcm1hbmNlTmF2aWdhdGlvbgotICoKLSAqIFJldHVybnM6IEEgI2d1c2hvcnQKLSAq
Ci0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgZ3VzaG9ydAotd2Via2l0
X2RvbV9wZXJmb3JtYW5jZV9uYXZpZ2F0aW9uX2dldF9yZWRpcmVjdF9jb3VudChXZWJLaXRET01Q
ZXJmb3JtYW5jZU5hdmlnYXRpb24qIHNlbGYpOwotCi1HX0VORF9ERUNMUwotCi0jZW5kaWYgLyog
V0VCS0lUX0RPTV9VU0VfVU5TVEFCTEVfQVBJICovCi0jZW5kaWYgLyogV2ViS2l0RE9NUGVyZm9y
bWFuY2VOYXZpZ2F0aW9uX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NUGVyZm9ybWFuY2VOYXZpZ2F0
aW9uUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ3RrL0RPTS9XZWJLaXRET01QZXJmb3JtYW5jZU5hdmlnYXRpb25Qcml2YXRlLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjNGJiNzguLjAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01QZXJm
b3JtYW5jZU5hdmlnYXRpb25Qcml2YXRlLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBA
Ci0vKgotICogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJv
amVjdC4KLSAqICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRp
bmdzLnBsLiBETyBOT1QgTU9ESUZZIQotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAq
ICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAg
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQotICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaWZuZGVmIFdlYktpdERPTVBlcmZv
cm1hbmNlTmF2aWdhdGlvblByaXZhdGVfaAotI2RlZmluZSBXZWJLaXRET01QZXJmb3JtYW5jZU5h
dmlnYXRpb25Qcml2YXRlX2gKLQotI2luY2x1ZGUgPFdlYkNvcmUvUGVyZm9ybWFuY2VOYXZpZ2F0
aW9uLmg+Ci0jaW5jbHVkZSA8d2Via2l0ZG9tL1dlYktpdERPTVBlcmZvcm1hbmNlTmF2aWdhdGlv
bi5oPgotI2lmIEVOQUJMRShXRUJfVElNSU5HKQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLVdlYktp
dERPTVBlcmZvcm1hbmNlTmF2aWdhdGlvbiogd3JhcFBlcmZvcm1hbmNlTmF2aWdhdGlvbihXZWJD
b3JlOjpQZXJmb3JtYW5jZU5hdmlnYXRpb24qKTsKLVdlYktpdERPTVBlcmZvcm1hbmNlTmF2aWdh
dGlvbioga2l0KFdlYkNvcmU6OlBlcmZvcm1hbmNlTmF2aWdhdGlvbiopOwotV2ViQ29yZTo6UGVy
Zm9ybWFuY2VOYXZpZ2F0aW9uKiBjb3JlKFdlYktpdERPTVBlcmZvcm1hbmNlTmF2aWdhdGlvbiop
OwotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvKiBFTkFCTEUoV0VCX1RJTUlORykg
Ki8KLQotI2VuZGlmIC8qIFdlYktpdERPTVBlcmZvcm1hbmNlTmF2aWdhdGlvblByaXZhdGVfaCAq
LwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ3RrL0RPTS9XZWJLaXRET01QZXJmb3JtYW5jZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NUGVyZm9ybWFu
Y2VQcml2YXRlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYxMDFhZmEuLjAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3Rr
L0RPTS9XZWJLaXRET01QZXJmb3JtYW5jZVByaXZhdGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDM2
ICswLDAgQEAKLS8qCi0gKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNv
dXJjZSBwcm9qZWN0LgotICogIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJh
dGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICog
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgot
ICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgV2ViS2l0
RE9NUGVyZm9ybWFuY2VQcml2YXRlX2gKLSNkZWZpbmUgV2ViS2l0RE9NUGVyZm9ybWFuY2VQcml2
YXRlX2gKLQotI2luY2x1ZGUgPFdlYkNvcmUvUGVyZm9ybWFuY2UuaD4KLSNpbmNsdWRlIDx3ZWJr
aXRkb20vV2ViS2l0RE9NUGVyZm9ybWFuY2UuaD4KLSNpZiBFTkFCTEUoV0VCX1RJTUlORykKLQot
bmFtZXNwYWNlIFdlYktpdCB7Ci1XZWJLaXRET01QZXJmb3JtYW5jZSogd3JhcFBlcmZvcm1hbmNl
KFdlYkNvcmU6OlBlcmZvcm1hbmNlKik7Ci1XZWJLaXRET01QZXJmb3JtYW5jZSoga2l0KFdlYkNv
cmU6OlBlcmZvcm1hbmNlKik7Ci1XZWJDb3JlOjpQZXJmb3JtYW5jZSogY29yZShXZWJLaXRET01Q
ZXJmb3JtYW5jZSopOwotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvKiBFTkFCTEUo
V0VCX1RJTUlORykgKi8KLQotI2VuZGlmIC8qIFdlYktpdERPTVBlcmZvcm1hbmNlUHJpdmF0ZV9o
ICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9ndGsvRE9NL1dlYktpdERPTVBlcmZvcm1hbmNlVGltaW5nLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NUGVyZm9y
bWFuY2VUaW1pbmcuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NjYxMWFkLi4w
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2d0ay9ET00vV2ViS2l0RE9NUGVyZm9ybWFuY2VUaW1pbmcuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsNzM2ICswLDAgQEAKLS8qCi0gKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBv
cGVuIHNvdXJjZSBwcm9qZWN0LgotICogIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkg
Z2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICogIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJLaXRET01QZXJmb3JtYW5jZVRpbWluZy5oIgotCi0j
aW5jbHVkZSA8V2ViQ29yZS9DU1NJbXBvcnRSdWxlLmg+Ci0jaW5jbHVkZSAiRE9NT2JqZWN0Q2Fj
aGUuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9F
eGNlcHRpb25Db2RlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9FeGNlcHRpb25Db2RlRGVzY3JpcHRp
b24uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5oPgotI2luY2x1
ZGUgIldlYktpdERPTVBlcmZvcm1hbmNlVGltaW5nUHJpdmF0ZS5oIgotI2luY2x1ZGUgIldlYktp
dERPTVByaXZhdGUuaCIKLSNpbmNsdWRlICJDb252ZXJ0VG9VVEY4U3RyaW5nLmgiCi0jaW5jbHVk
ZSA8d3RmL0dldFB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotI2RlZmluZSBXRUJL
SVRfRE9NX1BFUkZPUk1BTkNFX1RJTUlOR19HRVRfUFJJVkFURShvYmopIEdfVFlQRV9JTlNUQU5D
RV9HRVRfUFJJVkFURShvYmosIFdFQktJVF9ET01fVFlQRV9QRVJGT1JNQU5DRV9USU1JTkcsIFdl
YktpdERPTVBlcmZvcm1hbmNlVGltaW5nUHJpdmF0ZSkKLQotdHlwZWRlZiBzdHJ1Y3QgX1dlYktp
dERPTVBlcmZvcm1hbmNlVGltaW5nUHJpdmF0ZSB7Ci0jaWYgRU5BQkxFKFdFQl9USU1JTkcpCi0g
ICAgUmVmUHRyPFdlYkNvcmU6OlBlcmZvcm1hbmNlVGltaW5nPiBjb3JlT2JqZWN0OwotI2VuZGlm
IC8vIEVOQUJMRShXRUJfVElNSU5HKQotfSBXZWJLaXRET01QZXJmb3JtYW5jZVRpbWluZ1ByaXZh
dGU7Ci0KLSNpZiBFTkFCTEUoV0VCX1RJTUlORykKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVdl
YktpdERPTVBlcmZvcm1hbmNlVGltaW5nKiBraXQoV2ViQ29yZTo6UGVyZm9ybWFuY2VUaW1pbmcq
IG9iaikKLXsKLSAgICBpZiAoIW9iaikKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBpZiAoZ3Bv
aW50ZXIgcmV0ID0gRE9NT2JqZWN0Q2FjaGU6OmdldChvYmopKQotICAgICAgICByZXR1cm4gV0VC
S0lUX0RPTV9QRVJGT1JNQU5DRV9USU1JTkcocmV0KTsKLQotICAgIHJldHVybiB3cmFwUGVyZm9y
bWFuY2VUaW1pbmcob2JqKTsKLX0KLQotV2ViQ29yZTo6UGVyZm9ybWFuY2VUaW1pbmcqIGNvcmUo
V2ViS2l0RE9NUGVyZm9ybWFuY2VUaW1pbmcqIHJlcXVlc3QpCi17Ci0gICAgcmV0dXJuIHJlcXVl
c3QgPyBzdGF0aWNfY2FzdDxXZWJDb3JlOjpQZXJmb3JtYW5jZVRpbWluZyo+KFdFQktJVF9ET01f
T0JKRUNUKHJlcXVlc3QpLT5jb3JlT2JqZWN0KSA6IDA7Ci19Ci0KLVdlYktpdERPTVBlcmZvcm1h
bmNlVGltaW5nKiB3cmFwUGVyZm9ybWFuY2VUaW1pbmcoV2ViQ29yZTo6UGVyZm9ybWFuY2VUaW1p
bmcqIGNvcmVPYmplY3QpCi17Ci0gICAgQVNTRVJUKGNvcmVPYmplY3QpOwotICAgIHJldHVybiBX
RUJLSVRfRE9NX1BFUkZPUk1BTkNFX1RJTUlORyhnX29iamVjdF9uZXcoV0VCS0lUX0RPTV9UWVBF
X1BFUkZPUk1BTkNFX1RJTUlORywgImNvcmUtb2JqZWN0IiwgY29yZU9iamVjdCwgbnVsbHB0cikp
OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJfVElN
SU5HKQotCi1HX0RFRklORV9UWVBFKFdlYktpdERPTVBlcmZvcm1hbmNlVGltaW5nLCB3ZWJraXRf
ZG9tX3BlcmZvcm1hbmNlX3RpbWluZywgV0VCS0lUX0RPTV9UWVBFX09CSkVDVCkKLQotZW51bSB7
Ci0gICAgUFJPUF8wLAotICAgIFBST1BfTkFWSUdBVElPTl9TVEFSVCwKLSAgICBQUk9QX1VOTE9B
RF9FVkVOVF9TVEFSVCwKLSAgICBQUk9QX1VOTE9BRF9FVkVOVF9FTkQsCi0gICAgUFJPUF9SRURJ
UkVDVF9TVEFSVCwKLSAgICBQUk9QX1JFRElSRUNUX0VORCwKLSAgICBQUk9QX0ZFVENIX1NUQVJU
LAotICAgIFBST1BfRE9NQUlOX0xPT0tVUF9TVEFSVCwKLSAgICBQUk9QX0RPTUFJTl9MT09LVVBf
RU5ELAotICAgIFBST1BfQ09OTkVDVF9TVEFSVCwKLSAgICBQUk9QX0NPTk5FQ1RfRU5ELAotICAg
IFBST1BfU0VDVVJFX0NPTk5FQ1RJT05fU1RBUlQsCi0gICAgUFJPUF9SRVFVRVNUX1NUQVJULAot
ICAgIFBST1BfUkVTUE9OU0VfU1RBUlQsCi0gICAgUFJPUF9SRVNQT05TRV9FTkQsCi0gICAgUFJP
UF9ET01fTE9BRElORywKLSAgICBQUk9QX0RPTV9JTlRFUkFDVElWRSwKLSAgICBQUk9QX0RPTV9D
T05URU5UX0xPQURFRF9FVkVOVF9TVEFSVCwKLSAgICBQUk9QX0RPTV9DT05URU5UX0xPQURFRF9F
VkVOVF9FTkQsCi0gICAgUFJPUF9ET01fQ09NUExFVEUsCi0gICAgUFJPUF9MT0FEX0VWRU5UX1NU
QVJULAotICAgIFBST1BfTE9BRF9FVkVOVF9FTkQsCi19OwotCi1zdGF0aWMgdm9pZCB3ZWJraXRf
ZG9tX3BlcmZvcm1hbmNlX3RpbWluZ19maW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCi17Ci0gICAg
V2ViS2l0RE9NUGVyZm9ybWFuY2VUaW1pbmdQcml2YXRlKiBwcml2ID0gV0VCS0lUX0RPTV9QRVJG
T1JNQU5DRV9USU1JTkdfR0VUX1BSSVZBVEUob2JqZWN0KTsKLSNpZiBFTkFCTEUoV0VCX1RJTUlO
RykKLSAgICBXZWJLaXQ6OkRPTU9iamVjdENhY2hlOjpmb3JnZXQocHJpdi0+Y29yZU9iamVjdC5n
ZXQoKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKFdFQl9USU1JTkcpCi0gICAgcHJpdi0+fldlYktpdERP
TVBlcmZvcm1hbmNlVGltaW5nUHJpdmF0ZSgpOwotICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9k
b21fcGVyZm9ybWFuY2VfdGltaW5nX3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7Ci19
Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdF9kb21fcGVyZm9ybWFuY2VfdGltaW5nX2dldF9wcm9wZXJ0
eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BlcnR5SWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJh
bVNwZWMqIHBzcGVjKQotewotICAgIFdlYktpdERPTVBlcmZvcm1hbmNlVGltaW5nKiBzZWxmID0g
V0VCS0lUX0RPTV9QRVJGT1JNQU5DRV9USU1JTkcob2JqZWN0KTsKLQotICAgIHN3aXRjaCAocHJv
cGVydHlJZCkgewotICAgIGNhc2UgUFJPUF9OQVZJR0FUSU9OX1NUQVJUOgotICAgICAgICBnX3Zh
bHVlX3NldF91aW50NjQodmFsdWUsIHdlYmtpdF9kb21fcGVyZm9ybWFuY2VfdGltaW5nX2dldF9u
YXZpZ2F0aW9uX3N0YXJ0KHNlbGYpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX1VO
TE9BRF9FVkVOVF9TVEFSVDoKLSAgICAgICAgZ192YWx1ZV9zZXRfdWludDY0KHZhbHVlLCB3ZWJr
aXRfZG9tX3BlcmZvcm1hbmNlX3RpbWluZ19nZXRfdW5sb2FkX2V2ZW50X3N0YXJ0KHNlbGYpKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX1VOTE9BRF9FVkVOVF9FTkQ6Ci0gICAgICAg
IGdfdmFsdWVfc2V0X3VpbnQ2NCh2YWx1ZSwgd2Via2l0X2RvbV9wZXJmb3JtYW5jZV90aW1pbmdf
Z2V0X3VubG9hZF9ldmVudF9lbmQoc2VsZikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBS
T1BfUkVESVJFQ1RfU1RBUlQ6Ci0gICAgICAgIGdfdmFsdWVfc2V0X3VpbnQ2NCh2YWx1ZSwgd2Vi
a2l0X2RvbV9wZXJmb3JtYW5jZV90aW1pbmdfZ2V0X3JlZGlyZWN0X3N0YXJ0KHNlbGYpKTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX1JFRElSRUNUX0VORDoKLSAgICAgICAgZ192YWx1
ZV9zZXRfdWludDY0KHZhbHVlLCB3ZWJraXRfZG9tX3BlcmZvcm1hbmNlX3RpbWluZ19nZXRfcmVk
aXJlY3RfZW5kKHNlbGYpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX0ZFVENIX1NU
QVJUOgotICAgICAgICBnX3ZhbHVlX3NldF91aW50NjQodmFsdWUsIHdlYmtpdF9kb21fcGVyZm9y
bWFuY2VfdGltaW5nX2dldF9mZXRjaF9zdGFydChzZWxmKSk7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgUFJPUF9ET01BSU5fTE9PS1VQX1NUQVJUOgotICAgICAgICBnX3ZhbHVlX3NldF91aW50
NjQodmFsdWUsIHdlYmtpdF9kb21fcGVyZm9ybWFuY2VfdGltaW5nX2dldF9kb21haW5fbG9va3Vw
X3N0YXJ0KHNlbGYpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX0RPTUFJTl9MT09L
VVBfRU5EOgotICAgICAgICBnX3ZhbHVlX3NldF91aW50NjQodmFsdWUsIHdlYmtpdF9kb21fcGVy
Zm9ybWFuY2VfdGltaW5nX2dldF9kb21haW5fbG9va3VwX2VuZChzZWxmKSk7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgUFJPUF9DT05ORUNUX1NUQVJUOgotICAgICAgICBnX3ZhbHVlX3NldF91
aW50NjQodmFsdWUsIHdlYmtpdF9kb21fcGVyZm9ybWFuY2VfdGltaW5nX2dldF9jb25uZWN0X3N0
YXJ0KHNlbGYpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX0NPTk5FQ1RfRU5EOgot
ICAgICAgICBnX3ZhbHVlX3NldF91aW50NjQodmFsdWUsIHdlYmtpdF9kb21fcGVyZm9ybWFuY2Vf
dGltaW5nX2dldF9jb25uZWN0X2VuZChzZWxmKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
UFJPUF9TRUNVUkVfQ09OTkVDVElPTl9TVEFSVDoKLSAgICAgICAgZ192YWx1ZV9zZXRfdWludDY0
KHZhbHVlLCB3ZWJraXRfZG9tX3BlcmZvcm1hbmNlX3RpbWluZ19nZXRfc2VjdXJlX2Nvbm5lY3Rp
b25fc3RhcnQoc2VsZikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfUkVRVUVTVF9T
VEFSVDoKLSAgICAgICAgZ192YWx1ZV9zZXRfdWludDY0KHZhbHVlLCB3ZWJraXRfZG9tX3BlcmZv
cm1hbmNlX3RpbWluZ19nZXRfcmVxdWVzdF9zdGFydChzZWxmKSk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgUFJPUF9SRVNQT05TRV9TVEFSVDoKLSAgICAgICAgZ192YWx1ZV9zZXRfdWludDY0
KHZhbHVlLCB3ZWJraXRfZG9tX3BlcmZvcm1hbmNlX3RpbWluZ19nZXRfcmVzcG9uc2Vfc3RhcnQo
c2VsZikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfUkVTUE9OU0VfRU5EOgotICAg
ICAgICBnX3ZhbHVlX3NldF91aW50NjQodmFsdWUsIHdlYmtpdF9kb21fcGVyZm9ybWFuY2VfdGlt
aW5nX2dldF9yZXNwb25zZV9lbmQoc2VsZikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBS
T1BfRE9NX0xPQURJTkc6Ci0gICAgICAgIGdfdmFsdWVfc2V0X3VpbnQ2NCh2YWx1ZSwgd2Via2l0
X2RvbV9wZXJmb3JtYW5jZV90aW1pbmdfZ2V0X2RvbV9sb2FkaW5nKHNlbGYpKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBQUk9QX0RPTV9JTlRFUkFDVElWRToKLSAgICAgICAgZ192YWx1ZV9z
ZXRfdWludDY0KHZhbHVlLCB3ZWJraXRfZG9tX3BlcmZvcm1hbmNlX3RpbWluZ19nZXRfZG9tX2lu
dGVyYWN0aXZlKHNlbGYpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX0RPTV9DT05U
RU5UX0xPQURFRF9FVkVOVF9TVEFSVDoKLSAgICAgICAgZ192YWx1ZV9zZXRfdWludDY0KHZhbHVl
LCB3ZWJraXRfZG9tX3BlcmZvcm1hbmNlX3RpbWluZ19nZXRfZG9tX2NvbnRlbnRfbG9hZGVkX2V2
ZW50X3N0YXJ0KHNlbGYpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX0RPTV9DT05U
RU5UX0xPQURFRF9FVkVOVF9FTkQ6Ci0gICAgICAgIGdfdmFsdWVfc2V0X3VpbnQ2NCh2YWx1ZSwg
d2Via2l0X2RvbV9wZXJmb3JtYW5jZV90aW1pbmdfZ2V0X2RvbV9jb250ZW50X2xvYWRlZF9ldmVu
dF9lbmQoc2VsZikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfRE9NX0NPTVBMRVRF
OgotICAgICAgICBnX3ZhbHVlX3NldF91aW50NjQodmFsdWUsIHdlYmtpdF9kb21fcGVyZm9ybWFu
Y2VfdGltaW5nX2dldF9kb21fY29tcGxldGUoc2VsZikpOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIFBST1BfTE9BRF9FVkVOVF9TVEFSVDoKLSAgICAgICAgZ192YWx1ZV9zZXRfdWludDY0KHZh
bHVlLCB3ZWJraXRfZG9tX3BlcmZvcm1hbmNlX3RpbWluZ19nZXRfbG9hZF9ldmVudF9zdGFydChz
ZWxmKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9MT0FEX0VWRU5UX0VORDoKLSAg
ICAgICAgZ192YWx1ZV9zZXRfdWludDY0KHZhbHVlLCB3ZWJraXRfZG9tX3BlcmZvcm1hbmNlX3Rp
bWluZ19nZXRfbG9hZF9ldmVudF9lbmQoc2VsZikpOwotICAgICAgICBicmVhazsKLSAgICBkZWZh
dWx0OgotICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBw
cm9wZXJ0eUlkLCBwc3BlYyk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLX0KLQotc3RhdGljIEdP
YmplY3QqIHdlYmtpdF9kb21fcGVyZm9ybWFuY2VfdGltaW5nX2NvbnN0cnVjdG9yKEdUeXBlIHR5
cGUsIGd1aW50IGNvbnN0cnVjdFByb3BlcnRpZXNDb3VudCwgR09iamVjdENvbnN0cnVjdFBhcmFt
KiBjb25zdHJ1Y3RQcm9wZXJ0aWVzKQotewotICAgIEdPYmplY3QqIG9iamVjdCA9IEdfT0JKRUNU
X0NMQVNTKHdlYmtpdF9kb21fcGVyZm9ybWFuY2VfdGltaW5nX3BhcmVudF9jbGFzcyktPmNvbnN0
cnVjdG9yKHR5cGUsIGNvbnN0cnVjdFByb3BlcnRpZXNDb3VudCwgY29uc3RydWN0UHJvcGVydGll
cyk7Ci0jaWYgRU5BQkxFKFdFQl9USU1JTkcpCi0gICAgV2ViS2l0RE9NUGVyZm9ybWFuY2VUaW1p
bmdQcml2YXRlKiBwcml2ID0gV0VCS0lUX0RPTV9QRVJGT1JNQU5DRV9USU1JTkdfR0VUX1BSSVZB
VEUob2JqZWN0KTsKLSAgICBwcml2LT5jb3JlT2JqZWN0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6
UGVyZm9ybWFuY2VUaW1pbmcqPihXRUJLSVRfRE9NX09CSkVDVChvYmplY3QpLT5jb3JlT2JqZWN0
KTsKLSAgICBXZWJLaXQ6OkRPTU9iamVjdENhY2hlOjpwdXQocHJpdi0+Y29yZU9iamVjdC5nZXQo
KSwgb2JqZWN0KTsKLSNlbmRpZiAvLyBFTkFCTEUoV0VCX1RJTUlORykKLSAgICByZXR1cm4gb2Jq
ZWN0OwotfQotCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3BlcmZvcm1hbmNlX3RpbWluZ19jbGFz
c19pbml0KFdlYktpdERPTVBlcmZvcm1hbmNlVGltaW5nQ2xhc3MqIHJlcXVlc3RDbGFzcykKLXsK
LSAgICBHT2JqZWN0Q2xhc3MqIGdvYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKHJlcXVlc3RD
bGFzcyk7Ci0gICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKGdvYmplY3RDbGFzcywgc2l6ZW9m
KFdlYktpdERPTVBlcmZvcm1hbmNlVGltaW5nUHJpdmF0ZSkpOwotICAgIGdvYmplY3RDbGFzcy0+
Y29uc3RydWN0b3IgPSB3ZWJraXRfZG9tX3BlcmZvcm1hbmNlX3RpbWluZ19jb25zdHJ1Y3RvcjsK
LSAgICBnb2JqZWN0Q2xhc3MtPmZpbmFsaXplID0gd2Via2l0X2RvbV9wZXJmb3JtYW5jZV90aW1p
bmdfZmluYWxpemU7Ci0gICAgZ29iamVjdENsYXNzLT5nZXRfcHJvcGVydHkgPSB3ZWJraXRfZG9t
X3BlcmZvcm1hbmNlX3RpbWluZ19nZXRfcHJvcGVydHk7Ci0KLSAgICBnX29iamVjdF9jbGFzc19p
bnN0YWxsX3Byb3BlcnR5KAotICAgICAgICBnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBST1BfTkFW
SUdBVElPTl9TVEFSVCwKLSAgICAgICAgZ19wYXJhbV9zcGVjX3VpbnQ2NCgKLSAgICAgICAgICAg
ICJuYXZpZ2F0aW9uLXN0YXJ0IiwKLSAgICAgICAgICAgICJQZXJmb3JtYW5jZVRpbWluZzpuYXZp
Z2F0aW9uLXN0YXJ0IiwKLSAgICAgICAgICAgICJyZWFkLW9ubHkgZ3VpbnQ2NCBQZXJmb3JtYW5j
ZVRpbWluZzpuYXZpZ2F0aW9uLXN0YXJ0IiwKLSAgICAgICAgICAgIDAsIEdfTUFYVUlOVDY0LCAw
LAotICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7Ci0KLSAgICBnX29iamVjdF9j
bGFzc19pbnN0YWxsX3Byb3BlcnR5KAotICAgICAgICBnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBS
T1BfVU5MT0FEX0VWRU5UX1NUQVJULAotICAgICAgICBnX3BhcmFtX3NwZWNfdWludDY0KAotICAg
ICAgICAgICAgInVubG9hZC1ldmVudC1zdGFydCIsCi0gICAgICAgICAgICAiUGVyZm9ybWFuY2VU
aW1pbmc6dW5sb2FkLWV2ZW50LXN0YXJ0IiwKLSAgICAgICAgICAgICJyZWFkLW9ubHkgZ3VpbnQ2
NCBQZXJmb3JtYW5jZVRpbWluZzp1bmxvYWQtZXZlbnQtc3RhcnQiLAotICAgICAgICAgICAgMCwg
R19NQVhVSU5UNjQsIDAsCi0gICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKLQot
ICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFz
cywKLSAgICAgICAgUFJPUF9VTkxPQURfRVZFTlRfRU5ELAotICAgICAgICBnX3BhcmFtX3NwZWNf
dWludDY0KAotICAgICAgICAgICAgInVubG9hZC1ldmVudC1lbmQiLAotICAgICAgICAgICAgIlBl
cmZvcm1hbmNlVGltaW5nOnVubG9hZC1ldmVudC1lbmQiLAotICAgICAgICAgICAgInJlYWQtb25s
eSBndWludDY0IFBlcmZvcm1hbmNlVGltaW5nOnVubG9hZC1ldmVudC1lbmQiLAotICAgICAgICAg
ICAgMCwgR19NQVhVSU5UNjQsIDAsCi0gICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUp
KTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmpl
Y3RDbGFzcywKLSAgICAgICAgUFJPUF9SRURJUkVDVF9TVEFSVCwKLSAgICAgICAgZ19wYXJhbV9z
cGVjX3VpbnQ2NCgKLSAgICAgICAgICAgICJyZWRpcmVjdC1zdGFydCIsCi0gICAgICAgICAgICAi
UGVyZm9ybWFuY2VUaW1pbmc6cmVkaXJlY3Qtc3RhcnQiLAotICAgICAgICAgICAgInJlYWQtb25s
eSBndWludDY0IFBlcmZvcm1hbmNlVGltaW5nOnJlZGlyZWN0LXN0YXJ0IiwKLSAgICAgICAgICAg
IDAsIEdfTUFYVUlOVDY0LCAwLAotICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7
Ci0KLSAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAotICAgICAgICBnb2JqZWN0
Q2xhc3MsCi0gICAgICAgIFBST1BfUkVESVJFQ1RfRU5ELAotICAgICAgICBnX3BhcmFtX3NwZWNf
dWludDY0KAotICAgICAgICAgICAgInJlZGlyZWN0LWVuZCIsCi0gICAgICAgICAgICAiUGVyZm9y
bWFuY2VUaW1pbmc6cmVkaXJlY3QtZW5kIiwKLSAgICAgICAgICAgICJyZWFkLW9ubHkgZ3VpbnQ2
NCBQZXJmb3JtYW5jZVRpbWluZzpyZWRpcmVjdC1lbmQiLAotICAgICAgICAgICAgMCwgR19NQVhV
SU5UNjQsIDAsCi0gICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKLQotICAgIGdf
b2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKLSAg
ICAgICAgUFJPUF9GRVRDSF9TVEFSVCwKLSAgICAgICAgZ19wYXJhbV9zcGVjX3VpbnQ2NCgKLSAg
ICAgICAgICAgICJmZXRjaC1zdGFydCIsCi0gICAgICAgICAgICAiUGVyZm9ybWFuY2VUaW1pbmc6
ZmV0Y2gtc3RhcnQiLAotICAgICAgICAgICAgInJlYWQtb25seSBndWludDY0IFBlcmZvcm1hbmNl
VGltaW5nOmZldGNoLXN0YXJ0IiwKLSAgICAgICAgICAgIDAsIEdfTUFYVUlOVDY0LCAwLAotICAg
ICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7Ci0KLSAgICBnX29iamVjdF9jbGFzc19p
bnN0YWxsX3Byb3BlcnR5KAotICAgICAgICBnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBST1BfRE9N
QUlOX0xPT0tVUF9TVEFSVCwKLSAgICAgICAgZ19wYXJhbV9zcGVjX3VpbnQ2NCgKLSAgICAgICAg
ICAgICJkb21haW4tbG9va3VwLXN0YXJ0IiwKLSAgICAgICAgICAgICJQZXJmb3JtYW5jZVRpbWlu
Zzpkb21haW4tbG9va3VwLXN0YXJ0IiwKLSAgICAgICAgICAgICJyZWFkLW9ubHkgZ3VpbnQ2NCBQ
ZXJmb3JtYW5jZVRpbWluZzpkb21haW4tbG9va3VwLXN0YXJ0IiwKLSAgICAgICAgICAgIDAsIEdf
TUFYVUlOVDY0LCAwLAotICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7Ci0KLSAg
ICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAotICAgICAgICBnb2JqZWN0Q2xhc3Ms
Ci0gICAgICAgIFBST1BfRE9NQUlOX0xPT0tVUF9FTkQsCi0gICAgICAgIGdfcGFyYW1fc3BlY191
aW50NjQoCi0gICAgICAgICAgICAiZG9tYWluLWxvb2t1cC1lbmQiLAotICAgICAgICAgICAgIlBl
cmZvcm1hbmNlVGltaW5nOmRvbWFpbi1sb29rdXAtZW5kIiwKLSAgICAgICAgICAgICJyZWFkLW9u
bHkgZ3VpbnQ2NCBQZXJmb3JtYW5jZVRpbWluZzpkb21haW4tbG9va3VwLWVuZCIsCi0gICAgICAg
ICAgICAwLCBHX01BWFVJTlQ2NCwgMCwKLSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJM
RSkpOwotCi0gICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAgZ29i
amVjdENsYXNzLAotICAgICAgICBQUk9QX0NPTk5FQ1RfU1RBUlQsCi0gICAgICAgIGdfcGFyYW1f
c3BlY191aW50NjQoCi0gICAgICAgICAgICAiY29ubmVjdC1zdGFydCIsCi0gICAgICAgICAgICAi
UGVyZm9ybWFuY2VUaW1pbmc6Y29ubmVjdC1zdGFydCIsCi0gICAgICAgICAgICAicmVhZC1vbmx5
IGd1aW50NjQgUGVyZm9ybWFuY2VUaW1pbmc6Y29ubmVjdC1zdGFydCIsCi0gICAgICAgICAgICAw
LCBHX01BWFVJTlQ2NCwgMCwKLSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSkpOwot
Ci0gICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAgZ29iamVjdENs
YXNzLAotICAgICAgICBQUk9QX0NPTk5FQ1RfRU5ELAotICAgICAgICBnX3BhcmFtX3NwZWNfdWlu
dDY0KAotICAgICAgICAgICAgImNvbm5lY3QtZW5kIiwKLSAgICAgICAgICAgICJQZXJmb3JtYW5j
ZVRpbWluZzpjb25uZWN0LWVuZCIsCi0gICAgICAgICAgICAicmVhZC1vbmx5IGd1aW50NjQgUGVy
Zm9ybWFuY2VUaW1pbmc6Y29ubmVjdC1lbmQiLAotICAgICAgICAgICAgMCwgR19NQVhVSU5UNjQs
IDAsCi0gICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKLQotICAgIGdfb2JqZWN0
X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAg
UFJPUF9TRUNVUkVfQ09OTkVDVElPTl9TVEFSVCwKLSAgICAgICAgZ19wYXJhbV9zcGVjX3VpbnQ2
NCgKLSAgICAgICAgICAgICJzZWN1cmUtY29ubmVjdGlvbi1zdGFydCIsCi0gICAgICAgICAgICAi
UGVyZm9ybWFuY2VUaW1pbmc6c2VjdXJlLWNvbm5lY3Rpb24tc3RhcnQiLAotICAgICAgICAgICAg
InJlYWQtb25seSBndWludDY0IFBlcmZvcm1hbmNlVGltaW5nOnNlY3VyZS1jb25uZWN0aW9uLXN0
YXJ0IiwKLSAgICAgICAgICAgIDAsIEdfTUFYVUlOVDY0LCAwLAotICAgICAgICAgICAgV0VCS0lU
X1BBUkFNX1JFQURBQkxFKSk7Ci0KLSAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5
KAotICAgICAgICBnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBST1BfUkVRVUVTVF9TVEFSVCwKLSAg
ICAgICAgZ19wYXJhbV9zcGVjX3VpbnQ2NCgKLSAgICAgICAgICAgICJyZXF1ZXN0LXN0YXJ0IiwK
LSAgICAgICAgICAgICJQZXJmb3JtYW5jZVRpbWluZzpyZXF1ZXN0LXN0YXJ0IiwKLSAgICAgICAg
ICAgICJyZWFkLW9ubHkgZ3VpbnQ2NCBQZXJmb3JtYW5jZVRpbWluZzpyZXF1ZXN0LXN0YXJ0IiwK
LSAgICAgICAgICAgIDAsIEdfTUFYVUlOVDY0LCAwLAotICAgICAgICAgICAgV0VCS0lUX1BBUkFN
X1JFQURBQkxFKSk7Ci0KLSAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAotICAg
ICAgICBnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBST1BfUkVTUE9OU0VfU1RBUlQsCi0gICAgICAg
IGdfcGFyYW1fc3BlY191aW50NjQoCi0gICAgICAgICAgICAicmVzcG9uc2Utc3RhcnQiLAotICAg
ICAgICAgICAgIlBlcmZvcm1hbmNlVGltaW5nOnJlc3BvbnNlLXN0YXJ0IiwKLSAgICAgICAgICAg
ICJyZWFkLW9ubHkgZ3VpbnQ2NCBQZXJmb3JtYW5jZVRpbWluZzpyZXNwb25zZS1zdGFydCIsCi0g
ICAgICAgICAgICAwLCBHX01BWFVJTlQ2NCwgMCwKLSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9S
RUFEQUJMRSkpOwotCi0gICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAg
ICAgZ29iamVjdENsYXNzLAotICAgICAgICBQUk9QX1JFU1BPTlNFX0VORCwKLSAgICAgICAgZ19w
YXJhbV9zcGVjX3VpbnQ2NCgKLSAgICAgICAgICAgICJyZXNwb25zZS1lbmQiLAotICAgICAgICAg
ICAgIlBlcmZvcm1hbmNlVGltaW5nOnJlc3BvbnNlLWVuZCIsCi0gICAgICAgICAgICAicmVhZC1v
bmx5IGd1aW50NjQgUGVyZm9ybWFuY2VUaW1pbmc6cmVzcG9uc2UtZW5kIiwKLSAgICAgICAgICAg
IDAsIEdfTUFYVUlOVDY0LCAwLAotICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7
Ci0KLSAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAotICAgICAgICBnb2JqZWN0
Q2xhc3MsCi0gICAgICAgIFBST1BfRE9NX0xPQURJTkcsCi0gICAgICAgIGdfcGFyYW1fc3BlY191
aW50NjQoCi0gICAgICAgICAgICAiZG9tLWxvYWRpbmciLAotICAgICAgICAgICAgIlBlcmZvcm1h
bmNlVGltaW5nOmRvbS1sb2FkaW5nIiwKLSAgICAgICAgICAgICJyZWFkLW9ubHkgZ3VpbnQ2NCBQ
ZXJmb3JtYW5jZVRpbWluZzpkb20tbG9hZGluZyIsCi0gICAgICAgICAgICAwLCBHX01BWFVJTlQ2
NCwgMCwKLSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSkpOwotCi0gICAgZ19vYmpl
Y3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAgZ29iamVjdENsYXNzLAotICAgICAg
ICBQUk9QX0RPTV9JTlRFUkFDVElWRSwKLSAgICAgICAgZ19wYXJhbV9zcGVjX3VpbnQ2NCgKLSAg
ICAgICAgICAgICJkb20taW50ZXJhY3RpdmUiLAotICAgICAgICAgICAgIlBlcmZvcm1hbmNlVGlt
aW5nOmRvbS1pbnRlcmFjdGl2ZSIsCi0gICAgICAgICAgICAicmVhZC1vbmx5IGd1aW50NjQgUGVy
Zm9ybWFuY2VUaW1pbmc6ZG9tLWludGVyYWN0aXZlIiwKLSAgICAgICAgICAgIDAsIEdfTUFYVUlO
VDY0LCAwLAotICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7Ci0KLSAgICBnX29i
amVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAotICAgICAgICBnb2JqZWN0Q2xhc3MsCi0gICAg
ICAgIFBST1BfRE9NX0NPTlRFTlRfTE9BREVEX0VWRU5UX1NUQVJULAotICAgICAgICBnX3BhcmFt
X3NwZWNfdWludDY0KAotICAgICAgICAgICAgImRvbS1jb250ZW50LWxvYWRlZC1ldmVudC1zdGFy
dCIsCi0gICAgICAgICAgICAiUGVyZm9ybWFuY2VUaW1pbmc6ZG9tLWNvbnRlbnQtbG9hZGVkLWV2
ZW50LXN0YXJ0IiwKLSAgICAgICAgICAgICJyZWFkLW9ubHkgZ3VpbnQ2NCBQZXJmb3JtYW5jZVRp
bWluZzpkb20tY29udGVudC1sb2FkZWQtZXZlbnQtc3RhcnQiLAotICAgICAgICAgICAgMCwgR19N
QVhVSU5UNjQsIDAsCi0gICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKLQotICAg
IGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywK
LSAgICAgICAgUFJPUF9ET01fQ09OVEVOVF9MT0FERURfRVZFTlRfRU5ELAotICAgICAgICBnX3Bh
cmFtX3NwZWNfdWludDY0KAotICAgICAgICAgICAgImRvbS1jb250ZW50LWxvYWRlZC1ldmVudC1l
bmQiLAotICAgICAgICAgICAgIlBlcmZvcm1hbmNlVGltaW5nOmRvbS1jb250ZW50LWxvYWRlZC1l
dmVudC1lbmQiLAotICAgICAgICAgICAgInJlYWQtb25seSBndWludDY0IFBlcmZvcm1hbmNlVGlt
aW5nOmRvbS1jb250ZW50LWxvYWRlZC1ldmVudC1lbmQiLAotICAgICAgICAgICAgMCwgR19NQVhV
SU5UNjQsIDAsCi0gICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKLQotICAgIGdf
b2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKLSAg
ICAgICAgUFJPUF9ET01fQ09NUExFVEUsCi0gICAgICAgIGdfcGFyYW1fc3BlY191aW50NjQoCi0g
ICAgICAgICAgICAiZG9tLWNvbXBsZXRlIiwKLSAgICAgICAgICAgICJQZXJmb3JtYW5jZVRpbWlu
Zzpkb20tY29tcGxldGUiLAotICAgICAgICAgICAgInJlYWQtb25seSBndWludDY0IFBlcmZvcm1h
bmNlVGltaW5nOmRvbS1jb21wbGV0ZSIsCi0gICAgICAgICAgICAwLCBHX01BWFVJTlQ2NCwgMCwK
LSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSkpOwotCi0gICAgZ19vYmplY3RfY2xh
c3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAgZ29iamVjdENsYXNzLAotICAgICAgICBQUk9Q
X0xPQURfRVZFTlRfU1RBUlQsCi0gICAgICAgIGdfcGFyYW1fc3BlY191aW50NjQoCi0gICAgICAg
ICAgICAibG9hZC1ldmVudC1zdGFydCIsCi0gICAgICAgICAgICAiUGVyZm9ybWFuY2VUaW1pbmc6
bG9hZC1ldmVudC1zdGFydCIsCi0gICAgICAgICAgICAicmVhZC1vbmx5IGd1aW50NjQgUGVyZm9y
bWFuY2VUaW1pbmc6bG9hZC1ldmVudC1zdGFydCIsCi0gICAgICAgICAgICAwLCBHX01BWFVJTlQ2
NCwgMCwKLSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSkpOwotCi0gICAgZ19vYmpl
Y3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAgZ29iamVjdENsYXNzLAotICAgICAg
ICBQUk9QX0xPQURfRVZFTlRfRU5ELAotICAgICAgICBnX3BhcmFtX3NwZWNfdWludDY0KAotICAg
ICAgICAgICAgImxvYWQtZXZlbnQtZW5kIiwKLSAgICAgICAgICAgICJQZXJmb3JtYW5jZVRpbWlu
Zzpsb2FkLWV2ZW50LWVuZCIsCi0gICAgICAgICAgICAicmVhZC1vbmx5IGd1aW50NjQgUGVyZm9y
bWFuY2VUaW1pbmc6bG9hZC1ldmVudC1lbmQiLAotICAgICAgICAgICAgMCwgR19NQVhVSU5UNjQs
IDAsCi0gICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKLQotfQotCi1zdGF0aWMg
dm9pZCB3ZWJraXRfZG9tX3BlcmZvcm1hbmNlX3RpbWluZ19pbml0KFdlYktpdERPTVBlcmZvcm1h
bmNlVGltaW5nKiByZXF1ZXN0KQotewotICAgIFdlYktpdERPTVBlcmZvcm1hbmNlVGltaW5nUHJp
dmF0ZSogcHJpdiA9IFdFQktJVF9ET01fUEVSRk9STUFOQ0VfVElNSU5HX0dFVF9QUklWQVRFKHJl
cXVlc3QpOwotICAgIG5ldyAocHJpdikgV2ViS2l0RE9NUGVyZm9ybWFuY2VUaW1pbmdQcml2YXRl
KCk7Ci19Ci0KLWd1aW50NjQgd2Via2l0X2RvbV9wZXJmb3JtYW5jZV90aW1pbmdfZ2V0X25hdmln
YXRpb25fc3RhcnQoV2ViS2l0RE9NUGVyZm9ybWFuY2VUaW1pbmcqIHNlbGYpCi17Ci0jaWYgRU5B
QkxFKFdFQl9USU1JTkcpCi0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRl
OwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfUEVSRk9STUFOQ0VfVElN
SU5HKHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpQZXJmb3JtYW5jZVRpbWluZyogaXRlbSA9IFdl
YktpdDo6Y29yZShzZWxmKTsKLSAgICBndWludDY0IHJlc3VsdCA9IGl0ZW0tPm5hdmlnYXRpb25T
dGFydCgpOwotICAgIHJldHVybiByZXN1bHQ7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShzZWxm
KTsKLSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJXZWIgVGltaW5nIikKLSAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8Z3VpbnQ2ND4oMCk7Ci0jZW5kaWYgLyogRU5BQkxFKFdFQl9U
SU1JTkcpICovCi19Ci0KLWd1aW50NjQgd2Via2l0X2RvbV9wZXJmb3JtYW5jZV90aW1pbmdfZ2V0
X3VubG9hZF9ldmVudF9zdGFydChXZWJLaXRET01QZXJmb3JtYW5jZVRpbWluZyogc2VsZikKLXsK
LSNpZiBFTkFCTEUoV0VCX1RJTUlORykKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3Rh
dGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19QRVJGT1JN
QU5DRV9USU1JTkcoc2VsZiksIDApOwotICAgIFdlYkNvcmU6OlBlcmZvcm1hbmNlVGltaW5nKiBp
dGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGd1aW50NjQgcmVzdWx0ID0gaXRlbS0+dW5s
b2FkRXZlbnRTdGFydCgpOwotICAgIHJldHVybiByZXN1bHQ7Ci0jZWxzZQotICAgIFVOVVNFRF9Q
QVJBTShzZWxmKTsKLSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJXZWIgVGlt
aW5nIikKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Z3VpbnQ2ND4oMCk7Ci0jZW5kaWYgLyogRU5B
QkxFKFdFQl9USU1JTkcpICovCi19Ci0KLWd1aW50NjQgd2Via2l0X2RvbV9wZXJmb3JtYW5jZV90
aW1pbmdfZ2V0X3VubG9hZF9ldmVudF9lbmQoV2ViS2l0RE9NUGVyZm9ybWFuY2VUaW1pbmcqIHNl
bGYpCi17Ci0jaWYgRU5BQkxFKFdFQl9USU1JTkcpCi0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFk
TnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNf
UEVSRk9STUFOQ0VfVElNSU5HKHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpQZXJmb3JtYW5jZVRp
bWluZyogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBndWludDY0IHJlc3VsdCA9IGl0
ZW0tPnVubG9hZEV2ZW50RW5kKCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSNlbHNlCi0gICAgVU5V
U0VEX1BBUkFNKHNlbGYpOwotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIldl
YiBUaW1pbmciKQotICAgIHJldHVybiBzdGF0aWNfY2FzdDxndWludDY0PigwKTsKLSNlbmRpZiAv
KiBFTkFCTEUoV0VCX1RJTUlORykgKi8KLX0KLQotZ3VpbnQ2NCB3ZWJraXRfZG9tX3BlcmZvcm1h
bmNlX3RpbWluZ19nZXRfcmVkaXJlY3Rfc3RhcnQoV2ViS2l0RE9NUGVyZm9ybWFuY2VUaW1pbmcq
IHNlbGYpCi17Ci0jaWYgRU5BQkxFKFdFQl9USU1JTkcpCi0gICAgV2ViQ29yZTo6SlNNYWluVGhy
ZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01f
SVNfUEVSRk9STUFOQ0VfVElNSU5HKHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpQZXJmb3JtYW5j
ZVRpbWluZyogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBndWludDY0IHJlc3VsdCA9
IGl0ZW0tPnJlZGlyZWN0U3RhcnQoKTsKLSAgICByZXR1cm4gcmVzdWx0OwotI2Vsc2UKLSAgICBV
TlVTRURfUEFSQU0oc2VsZik7Ci0gICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgi
V2ViIFRpbWluZyIpCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGd1aW50NjQ+KDApOwotI2VuZGlm
IC8qIEVOQUJMRShXRUJfVElNSU5HKSAqLwotfQotCi1ndWludDY0IHdlYmtpdF9kb21fcGVyZm9y
bWFuY2VfdGltaW5nX2dldF9yZWRpcmVjdF9lbmQoV2ViS2l0RE9NUGVyZm9ybWFuY2VUaW1pbmcq
IHNlbGYpCi17Ci0jaWYgRU5BQkxFKFdFQl9USU1JTkcpCi0gICAgV2ViQ29yZTo6SlNNYWluVGhy
ZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01f
SVNfUEVSRk9STUFOQ0VfVElNSU5HKHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpQZXJmb3JtYW5j
ZVRpbWluZyogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBndWludDY0IHJlc3VsdCA9
IGl0ZW0tPnJlZGlyZWN0RW5kKCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSNlbHNlCi0gICAgVU5V
U0VEX1BBUkFNKHNlbGYpOwotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIldl
YiBUaW1pbmciKQotICAgIHJldHVybiBzdGF0aWNfY2FzdDxndWludDY0PigwKTsKLSNlbmRpZiAv
KiBFTkFCTEUoV0VCX1RJTUlORykgKi8KLX0KLQotZ3VpbnQ2NCB3ZWJraXRfZG9tX3BlcmZvcm1h
bmNlX3RpbWluZ19nZXRfZmV0Y2hfc3RhcnQoV2ViS2l0RE9NUGVyZm9ybWFuY2VUaW1pbmcqIHNl
bGYpCi17Ci0jaWYgRU5BQkxFKFdFQl9USU1JTkcpCi0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFk
TnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNf
UEVSRk9STUFOQ0VfVElNSU5HKHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpQZXJmb3JtYW5jZVRp
bWluZyogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBndWludDY0IHJlc3VsdCA9IGl0
ZW0tPmZldGNoU3RhcnQoKTsKLSAgICByZXR1cm4gcmVzdWx0OwotI2Vsc2UKLSAgICBVTlVTRURf
UEFSQU0oc2VsZik7Ci0gICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiV2ViIFRp
bWluZyIpCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGd1aW50NjQ+KDApOwotI2VuZGlmIC8qIEVO
QUJMRShXRUJfVElNSU5HKSAqLwotfQotCi1ndWludDY0IHdlYmtpdF9kb21fcGVyZm9ybWFuY2Vf
dGltaW5nX2dldF9kb21haW5fbG9va3VwX3N0YXJ0KFdlYktpdERPTVBlcmZvcm1hbmNlVGltaW5n
KiBzZWxmKQotewotI2lmIEVOQUJMRShXRUJfVElNSU5HKQotICAgIFdlYkNvcmU6OkpTTWFpblRo
cmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9N
X0lTX1BFUkZPUk1BTkNFX1RJTUlORyhzZWxmKSwgMCk7Ci0gICAgV2ViQ29yZTo6UGVyZm9ybWFu
Y2VUaW1pbmcqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ3VpbnQ2NCByZXN1bHQg
PSBpdGVtLT5kb21haW5Mb29rdXBTdGFydCgpOwotICAgIHJldHVybiByZXN1bHQ7Ci0jZWxzZQot
ICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKLSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVT
RU5UKCJXZWIgVGltaW5nIikKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Z3VpbnQ2ND4oMCk7Ci0j
ZW5kaWYgLyogRU5BQkxFKFdFQl9USU1JTkcpICovCi19Ci0KLWd1aW50NjQgd2Via2l0X2RvbV9w
ZXJmb3JtYW5jZV90aW1pbmdfZ2V0X2RvbWFpbl9sb29rdXBfZW5kKFdlYktpdERPTVBlcmZvcm1h
bmNlVGltaW5nKiBzZWxmKQotewotI2lmIEVOQUJMRShXRUJfVElNSU5HKQotICAgIFdlYkNvcmU6
OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChX
RUJLSVRfRE9NX0lTX1BFUkZPUk1BTkNFX1RJTUlORyhzZWxmKSwgMCk7Ci0gICAgV2ViQ29yZTo6
UGVyZm9ybWFuY2VUaW1pbmcqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ3VpbnQ2
NCByZXN1bHQgPSBpdGVtLT5kb21haW5Mb29rdXBFbmQoKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
I2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc2VsZik7Ci0gICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9O
T1RfUFJFU0VOVCgiV2ViIFRpbWluZyIpCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGd1aW50NjQ+
KDApOwotI2VuZGlmIC8qIEVOQUJMRShXRUJfVElNSU5HKSAqLwotfQotCi1ndWludDY0IHdlYmtp
dF9kb21fcGVyZm9ybWFuY2VfdGltaW5nX2dldF9jb25uZWN0X3N0YXJ0KFdlYktpdERPTVBlcmZv
cm1hbmNlVGltaW5nKiBzZWxmKQotewotI2lmIEVOQUJMRShXRUJfVElNSU5HKQotICAgIFdlYkNv
cmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFp
bChXRUJLSVRfRE9NX0lTX1BFUkZPUk1BTkNFX1RJTUlORyhzZWxmKSwgMCk7Ci0gICAgV2ViQ29y
ZTo6UGVyZm9ybWFuY2VUaW1pbmcqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ3Vp
bnQ2NCByZXN1bHQgPSBpdGVtLT5jb25uZWN0U3RhcnQoKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
I2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc2VsZik7Ci0gICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9O
T1RfUFJFU0VOVCgiV2ViIFRpbWluZyIpCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGd1aW50NjQ+
KDApOwotI2VuZGlmIC8qIEVOQUJMRShXRUJfVElNSU5HKSAqLwotfQotCi1ndWludDY0IHdlYmtp
dF9kb21fcGVyZm9ybWFuY2VfdGltaW5nX2dldF9jb25uZWN0X2VuZChXZWJLaXRET01QZXJmb3Jt
YW5jZVRpbWluZyogc2VsZikKLXsKLSNpZiBFTkFCTEUoV0VCX1RJTUlORykKLSAgICBXZWJDb3Jl
OjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwo
V0VCS0lUX0RPTV9JU19QRVJGT1JNQU5DRV9USU1JTkcoc2VsZiksIDApOwotICAgIFdlYkNvcmU6
OlBlcmZvcm1hbmNlVGltaW5nKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGd1aW50
NjQgcmVzdWx0ID0gaXRlbS0+Y29ubmVjdEVuZCgpOwotICAgIHJldHVybiByZXN1bHQ7Ci0jZWxz
ZQotICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKLSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9Q
UkVTRU5UKCJXZWIgVGltaW5nIikKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Z3VpbnQ2ND4oMCk7
Ci0jZW5kaWYgLyogRU5BQkxFKFdFQl9USU1JTkcpICovCi19Ci0KLWd1aW50NjQgd2Via2l0X2Rv
bV9wZXJmb3JtYW5jZV90aW1pbmdfZ2V0X3NlY3VyZV9jb25uZWN0aW9uX3N0YXJ0KFdlYktpdERP
TVBlcmZvcm1hbmNlVGltaW5nKiBzZWxmKQotewotI2lmIEVOQUJMRShXRUJfVElNSU5HKQotICAg
IFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxf
aWZfZmFpbChXRUJLSVRfRE9NX0lTX1BFUkZPUk1BTkNFX1RJTUlORyhzZWxmKSwgMCk7Ci0gICAg
V2ViQ29yZTo6UGVyZm9ybWFuY2VUaW1pbmcqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0g
ICAgZ3VpbnQ2NCByZXN1bHQgPSBpdGVtLT5zZWN1cmVDb25uZWN0aW9uU3RhcnQoKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc2VsZik7Ci0gICAgV0VCS0lU
X1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiV2ViIFRpbWluZyIpCi0gICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGd1aW50NjQ+KDApOwotI2VuZGlmIC8qIEVOQUJMRShXRUJfVElNSU5HKSAqLwotfQot
Ci1ndWludDY0IHdlYmtpdF9kb21fcGVyZm9ybWFuY2VfdGltaW5nX2dldF9yZXF1ZXN0X3N0YXJ0
KFdlYktpdERPTVBlcmZvcm1hbmNlVGltaW5nKiBzZWxmKQotewotI2lmIEVOQUJMRShXRUJfVElN
SU5HKQotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3Jl
dHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX1BFUkZPUk1BTkNFX1RJTUlORyhzZWxmKSwg
MCk7Ci0gICAgV2ViQ29yZTo6UGVyZm9ybWFuY2VUaW1pbmcqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUo
c2VsZik7Ci0gICAgZ3VpbnQ2NCByZXN1bHQgPSBpdGVtLT5yZXF1ZXN0U3RhcnQoKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc2VsZik7Ci0gICAgV0VCS0lU
X1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiV2ViIFRpbWluZyIpCi0gICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGd1aW50NjQ+KDApOwotI2VuZGlmIC8qIEVOQUJMRShXRUJfVElNSU5HKSAqLwotfQot
Ci1ndWludDY0IHdlYmtpdF9kb21fcGVyZm9ybWFuY2VfdGltaW5nX2dldF9yZXNwb25zZV9zdGFy
dChXZWJLaXRET01QZXJmb3JtYW5jZVRpbWluZyogc2VsZikKLXsKLSNpZiBFTkFCTEUoV0VCX1RJ
TUlORykKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19QRVJGT1JNQU5DRV9USU1JTkcoc2VsZiks
IDApOwotICAgIFdlYkNvcmU6OlBlcmZvcm1hbmNlVGltaW5nKiBpdGVtID0gV2ViS2l0Ojpjb3Jl
KHNlbGYpOwotICAgIGd1aW50NjQgcmVzdWx0ID0gaXRlbS0+cmVzcG9uc2VTdGFydCgpOwotICAg
IHJldHVybiByZXN1bHQ7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKLSAgICBXRUJL
SVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJXZWIgVGltaW5nIikKLSAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8Z3VpbnQ2ND4oMCk7Ci0jZW5kaWYgLyogRU5BQkxFKFdFQl9USU1JTkcpICovCi19
Ci0KLWd1aW50NjQgd2Via2l0X2RvbV9wZXJmb3JtYW5jZV90aW1pbmdfZ2V0X3Jlc3BvbnNlX2Vu
ZChXZWJLaXRET01QZXJmb3JtYW5jZVRpbWluZyogc2VsZikKLXsKLSNpZiBFTkFCTEUoV0VCX1RJ
TUlORykKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19QRVJGT1JNQU5DRV9USU1JTkcoc2VsZiks
IDApOwotICAgIFdlYkNvcmU6OlBlcmZvcm1hbmNlVGltaW5nKiBpdGVtID0gV2ViS2l0Ojpjb3Jl
KHNlbGYpOwotICAgIGd1aW50NjQgcmVzdWx0ID0gaXRlbS0+cmVzcG9uc2VFbmQoKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc2VsZik7Ci0gICAgV0VCS0lU
X1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiV2ViIFRpbWluZyIpCi0gICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGd1aW50NjQ+KDApOwotI2VuZGlmIC8qIEVOQUJMRShXRUJfVElNSU5HKSAqLwotfQot
Ci1ndWludDY0IHdlYmtpdF9kb21fcGVyZm9ybWFuY2VfdGltaW5nX2dldF9kb21fbG9hZGluZyhX
ZWJLaXRET01QZXJmb3JtYW5jZVRpbWluZyogc2VsZikKLXsKLSNpZiBFTkFCTEUoV0VCX1RJTUlO
RykKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1
cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19QRVJGT1JNQU5DRV9USU1JTkcoc2VsZiksIDAp
OwotICAgIFdlYkNvcmU6OlBlcmZvcm1hbmNlVGltaW5nKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNl
bGYpOwotICAgIGd1aW50NjQgcmVzdWx0ID0gaXRlbS0+ZG9tTG9hZGluZygpOwotICAgIHJldHVy
biByZXN1bHQ7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKLSAgICBXRUJLSVRfV0FS
Tl9GRUFUVVJFX05PVF9QUkVTRU5UKCJXZWIgVGltaW5nIikKLSAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8Z3VpbnQ2ND4oMCk7Ci0jZW5kaWYgLyogRU5BQkxFKFdFQl9USU1JTkcpICovCi19Ci0KLWd1
aW50NjQgd2Via2l0X2RvbV9wZXJmb3JtYW5jZV90aW1pbmdfZ2V0X2RvbV9pbnRlcmFjdGl2ZShX
ZWJLaXRET01QZXJmb3JtYW5jZVRpbWluZyogc2VsZikKLXsKLSNpZiBFTkFCTEUoV0VCX1RJTUlO
RykKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1
cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19QRVJGT1JNQU5DRV9USU1JTkcoc2VsZiksIDAp
OwotICAgIFdlYkNvcmU6OlBlcmZvcm1hbmNlVGltaW5nKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNl
bGYpOwotICAgIGd1aW50NjQgcmVzdWx0ID0gaXRlbS0+ZG9tSW50ZXJhY3RpdmUoKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc2VsZik7Ci0gICAgV0VCS0lU
X1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiV2ViIFRpbWluZyIpCi0gICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGd1aW50NjQ+KDApOwotI2VuZGlmIC8qIEVOQUJMRShXRUJfVElNSU5HKSAqLwotfQot
Ci1ndWludDY0IHdlYmtpdF9kb21fcGVyZm9ybWFuY2VfdGltaW5nX2dldF9kb21fY29udGVudF9s
b2FkZWRfZXZlbnRfc3RhcnQoV2ViS2l0RE9NUGVyZm9ybWFuY2VUaW1pbmcqIHNlbGYpCi17Ci0j
aWYgRU5BQkxFKFdFQl9USU1JTkcpCi0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRl
IHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfUEVSRk9STUFO
Q0VfVElNSU5HKHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpQZXJmb3JtYW5jZVRpbWluZyogaXRl
bSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBndWludDY0IHJlc3VsdCA9IGl0ZW0tPmRvbUNv
bnRlbnRMb2FkZWRFdmVudFN0YXJ0KCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSNlbHNlCi0gICAg
VU5VU0VEX1BBUkFNKHNlbGYpOwotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQo
IldlYiBUaW1pbmciKQotICAgIHJldHVybiBzdGF0aWNfY2FzdDxndWludDY0PigwKTsKLSNlbmRp
ZiAvKiBFTkFCTEUoV0VCX1RJTUlORykgKi8KLX0KLQotZ3VpbnQ2NCB3ZWJraXRfZG9tX3BlcmZv
cm1hbmNlX3RpbWluZ19nZXRfZG9tX2NvbnRlbnRfbG9hZGVkX2V2ZW50X2VuZChXZWJLaXRET01Q
ZXJmb3JtYW5jZVRpbWluZyogc2VsZikKLXsKLSNpZiBFTkFCTEUoV0VCX1RJTUlORykKLSAgICBX
ZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoV0VCS0lUX0RPTV9JU19QRVJGT1JNQU5DRV9USU1JTkcoc2VsZiksIDApOwotICAgIFdl
YkNvcmU6OlBlcmZvcm1hbmNlVGltaW5nKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAg
IGd1aW50NjQgcmVzdWx0ID0gaXRlbS0+ZG9tQ29udGVudExvYWRlZEV2ZW50RW5kKCk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHNlbGYpOwotICAgIFdFQktJ
VF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIldlYiBUaW1pbmciKQotICAgIHJldHVybiBzdGF0
aWNfY2FzdDxndWludDY0PigwKTsKLSNlbmRpZiAvKiBFTkFCTEUoV0VCX1RJTUlORykgKi8KLX0K
LQotZ3VpbnQ2NCB3ZWJraXRfZG9tX3BlcmZvcm1hbmNlX3RpbWluZ19nZXRfZG9tX2NvbXBsZXRl
KFdlYktpdERPTVBlcmZvcm1hbmNlVGltaW5nKiBzZWxmKQotewotI2lmIEVOQUJMRShXRUJfVElN
SU5HKQotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3Jl
dHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX1BFUkZPUk1BTkNFX1RJTUlORyhzZWxmKSwg
MCk7Ci0gICAgV2ViQ29yZTo6UGVyZm9ybWFuY2VUaW1pbmcqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUo
c2VsZik7Ci0gICAgZ3VpbnQ2NCByZXN1bHQgPSBpdGVtLT5kb21Db21wbGV0ZSgpOwotICAgIHJl
dHVybiByZXN1bHQ7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKLSAgICBXRUJLSVRf
V0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJXZWIgVGltaW5nIikKLSAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8Z3VpbnQ2ND4oMCk7Ci0jZW5kaWYgLyogRU5BQkxFKFdFQl9USU1JTkcpICovCi19Ci0K
LWd1aW50NjQgd2Via2l0X2RvbV9wZXJmb3JtYW5jZV90aW1pbmdfZ2V0X2xvYWRfZXZlbnRfc3Rh
cnQoV2ViS2l0RE9NUGVyZm9ybWFuY2VUaW1pbmcqIHNlbGYpCi17Ci0jaWYgRU5BQkxFKFdFQl9U
SU1JTkcpCi0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdf
cmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfUEVSRk9STUFOQ0VfVElNSU5HKHNlbGYp
LCAwKTsKLSAgICBXZWJDb3JlOjpQZXJmb3JtYW5jZVRpbWluZyogaXRlbSA9IFdlYktpdDo6Y29y
ZShzZWxmKTsKLSAgICBndWludDY0IHJlc3VsdCA9IGl0ZW0tPmxvYWRFdmVudFN0YXJ0KCk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHNlbGYpOwotICAgIFdF
QktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIldlYiBUaW1pbmciKQotICAgIHJldHVybiBz
dGF0aWNfY2FzdDxndWludDY0PigwKTsKLSNlbmRpZiAvKiBFTkFCTEUoV0VCX1RJTUlORykgKi8K
LX0KLQotZ3VpbnQ2NCB3ZWJraXRfZG9tX3BlcmZvcm1hbmNlX3RpbWluZ19nZXRfbG9hZF9ldmVu
dF9lbmQoV2ViS2l0RE9NUGVyZm9ybWFuY2VUaW1pbmcqIHNlbGYpCi17Ci0jaWYgRU5BQkxFKFdF
Ql9USU1JTkcpCi0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAg
IGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfUEVSRk9STUFOQ0VfVElNSU5HKHNl
bGYpLCAwKTsKLSAgICBXZWJDb3JlOjpQZXJmb3JtYW5jZVRpbWluZyogaXRlbSA9IFdlYktpdDo6
Y29yZShzZWxmKTsKLSAgICBndWludDY0IHJlc3VsdCA9IGl0ZW0tPmxvYWRFdmVudEVuZCgpOwot
ICAgIHJldHVybiByZXN1bHQ7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKLSAgICBX
RUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJXZWIgVGltaW5nIikKLSAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Z3VpbnQ2ND4oMCk7Ci0jZW5kaWYgLyogRU5BQkxFKFdFQl9USU1JTkcpICov
Ci19Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NUGVyZm9ybWFuY2VUaW1pbmcuaCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NUGVyZm9y
bWFuY2VUaW1pbmcuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzBjNWUwYi4uMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
dGsvRE9NL1dlYktpdERPTVBlcmZvcm1hbmNlVGltaW5nLmgKKysrIC9kZXYvbnVsbApAQCAtMSwy
ODQgKzAsMCBAQAotLyoKLSAqICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4g
c291cmNlIHByb2plY3QuCi0gKiAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5l
cmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0g
KiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCi0gKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
Ci0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCi0gKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBXZWJL
aXRET01QZXJmb3JtYW5jZVRpbWluZ19oCi0jZGVmaW5lIFdlYktpdERPTVBlcmZvcm1hbmNlVGlt
aW5nX2gKLQotI2lmZGVmIFdFQktJVF9ET01fVVNFX1VOU1RBQkxFX0FQSQotCi0jaW5jbHVkZSA8
Z2xpYi1vYmplY3QuaD4KLSNpbmNsdWRlIDx3ZWJraXRkb20vV2ViS2l0RE9NT2JqZWN0Lmg+Ci0j
aW5jbHVkZSA8d2Via2l0ZG9tL3dlYmtpdGRvbWRlZmluZXMtdW5zdGFibGUuaD4KLQotR19CRUdJ
Tl9ERUNMUwotCi0jZGVmaW5lIFdFQktJVF9ET01fVFlQRV9QRVJGT1JNQU5DRV9USU1JTkcgICAg
ICAgICAgICAod2Via2l0X2RvbV9wZXJmb3JtYW5jZV90aW1pbmdfZ2V0X3R5cGUoKSkKLSNkZWZp
bmUgV0VCS0lUX0RPTV9QRVJGT1JNQU5DRV9USU1JTkcob2JqKSAgICAgICAgICAgIChHX1RZUEVf
Q0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwgV0VCS0lUX0RPTV9UWVBFX1BFUkZPUk1BTkNFX1RJ
TUlORywgV2ViS2l0RE9NUGVyZm9ybWFuY2VUaW1pbmcpKQotI2RlZmluZSBXRUJLSVRfRE9NX1BF
UkZPUk1BTkNFX1RJTUlOR19DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNU
KChrbGFzcyksICBXRUJLSVRfRE9NX1RZUEVfUEVSRk9STUFOQ0VfVElNSU5HLCBXZWJLaXRET01Q
ZXJmb3JtYW5jZVRpbWluZ0NsYXNzKQotI2RlZmluZSBXRUJLSVRfRE9NX0lTX1BFUkZPUk1BTkNF
X1RJTUlORyhvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLCBX
RUJLSVRfRE9NX1RZUEVfUEVSRk9STUFOQ0VfVElNSU5HKSkKLSNkZWZpbmUgV0VCS0lUX0RPTV9J
U19QRVJGT1JNQU5DRV9USU1JTkdfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQ
RSgoa2xhc3MpLCAgV0VCS0lUX0RPTV9UWVBFX1BFUkZPUk1BTkNFX1RJTUlORykpCi0jZGVmaW5l
IFdFQktJVF9ET01fUEVSRk9STUFOQ0VfVElNSU5HX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lO
U1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9ET01fVFlQRV9QRVJGT1JNQU5DRV9USU1J
TkcsIFdlYktpdERPTVBlcmZvcm1hbmNlVGltaW5nQ2xhc3MpKQotCi1zdHJ1Y3QgX1dlYktpdERP
TVBlcmZvcm1hbmNlVGltaW5nIHsKLSAgICBXZWJLaXRET01PYmplY3QgcGFyZW50X2luc3RhbmNl
OwotfTsKLQotc3RydWN0IF9XZWJLaXRET01QZXJmb3JtYW5jZVRpbWluZ0NsYXNzIHsKLSAgICBX
ZWJLaXRET01PYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7Ci19OwotCi1XRUJLSVRfQVBJIEdUeXBl
Ci13ZWJraXRfZG9tX3BlcmZvcm1hbmNlX3RpbWluZ19nZXRfdHlwZSh2b2lkKTsKLQotLyoqCi0g
KiB3ZWJraXRfZG9tX3BlcmZvcm1hbmNlX3RpbWluZ19nZXRfbmF2aWdhdGlvbl9zdGFydDoKLSAq
IEBzZWxmOiBBICNXZWJLaXRET01QZXJmb3JtYW5jZVRpbWluZwotICoKLSAqIFJldHVybnM6IEEg
I2d1aW50NjQKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgZ3Vp
bnQ2NAotd2Via2l0X2RvbV9wZXJmb3JtYW5jZV90aW1pbmdfZ2V0X25hdmlnYXRpb25fc3RhcnQo
V2ViS2l0RE9NUGVyZm9ybWFuY2VUaW1pbmcqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9kb21f
cGVyZm9ybWFuY2VfdGltaW5nX2dldF91bmxvYWRfZXZlbnRfc3RhcnQ6Ci0gKiBAc2VsZjogQSAj
V2ViS2l0RE9NUGVyZm9ybWFuY2VUaW1pbmcKLSAqCi0gKiBSZXR1cm5zOiBBICNndWludDY0Ci0g
KgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIGd1aW50NjQKLXdlYmtp
dF9kb21fcGVyZm9ybWFuY2VfdGltaW5nX2dldF91bmxvYWRfZXZlbnRfc3RhcnQoV2ViS2l0RE9N
UGVyZm9ybWFuY2VUaW1pbmcqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9kb21fcGVyZm9ybWFu
Y2VfdGltaW5nX2dldF91bmxvYWRfZXZlbnRfZW5kOgotICogQHNlbGY6IEEgI1dlYktpdERPTVBl
cmZvcm1hbmNlVGltaW5nCi0gKgotICogUmV0dXJuczogQSAjZ3VpbnQ2NAotICoKLSAqIFN0YWJp
bGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSBndWludDY0Ci13ZWJraXRfZG9tX3BlcmZv
cm1hbmNlX3RpbWluZ19nZXRfdW5sb2FkX2V2ZW50X2VuZChXZWJLaXRET01QZXJmb3JtYW5jZVRp
bWluZyogc2VsZik7Ci0KLS8qKgotICogd2Via2l0X2RvbV9wZXJmb3JtYW5jZV90aW1pbmdfZ2V0
X3JlZGlyZWN0X3N0YXJ0OgotICogQHNlbGY6IEEgI1dlYktpdERPTVBlcmZvcm1hbmNlVGltaW5n
Ci0gKgotICogUmV0dXJuczogQSAjZ3VpbnQ2NAotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUK
LSoqLwotV0VCS0lUX0FQSSBndWludDY0Ci13ZWJraXRfZG9tX3BlcmZvcm1hbmNlX3RpbWluZ19n
ZXRfcmVkaXJlY3Rfc3RhcnQoV2ViS2l0RE9NUGVyZm9ybWFuY2VUaW1pbmcqIHNlbGYpOwotCi0v
KioKLSAqIHdlYmtpdF9kb21fcGVyZm9ybWFuY2VfdGltaW5nX2dldF9yZWRpcmVjdF9lbmQ6Ci0g
KiBAc2VsZjogQSAjV2ViS2l0RE9NUGVyZm9ybWFuY2VUaW1pbmcKLSAqCi0gKiBSZXR1cm5zOiBB
ICNndWludDY0Ci0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIGd1
aW50NjQKLXdlYmtpdF9kb21fcGVyZm9ybWFuY2VfdGltaW5nX2dldF9yZWRpcmVjdF9lbmQoV2Vi
S2l0RE9NUGVyZm9ybWFuY2VUaW1pbmcqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9kb21fcGVy
Zm9ybWFuY2VfdGltaW5nX2dldF9mZXRjaF9zdGFydDoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01Q
ZXJmb3JtYW5jZVRpbWluZwotICoKLSAqIFJldHVybnM6IEEgI2d1aW50NjQKLSAqCi0gKiBTdGFi
aWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgZ3VpbnQ2NAotd2Via2l0X2RvbV9wZXJm
b3JtYW5jZV90aW1pbmdfZ2V0X2ZldGNoX3N0YXJ0KFdlYktpdERPTVBlcmZvcm1hbmNlVGltaW5n
KiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX3BlcmZvcm1hbmNlX3RpbWluZ19nZXRfZG9t
YWluX2xvb2t1cF9zdGFydDoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01QZXJmb3JtYW5jZVRpbWlu
ZwotICoKLSAqIFJldHVybnM6IEEgI2d1aW50NjQKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxl
Ci0qKi8KLVdFQktJVF9BUEkgZ3VpbnQ2NAotd2Via2l0X2RvbV9wZXJmb3JtYW5jZV90aW1pbmdf
Z2V0X2RvbWFpbl9sb29rdXBfc3RhcnQoV2ViS2l0RE9NUGVyZm9ybWFuY2VUaW1pbmcqIHNlbGYp
OwotCi0vKioKLSAqIHdlYmtpdF9kb21fcGVyZm9ybWFuY2VfdGltaW5nX2dldF9kb21haW5fbG9v
a3VwX2VuZDoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01QZXJmb3JtYW5jZVRpbWluZwotICoKLSAq
IFJldHVybnM6IEEgI2d1aW50NjQKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdF
QktJVF9BUEkgZ3VpbnQ2NAotd2Via2l0X2RvbV9wZXJmb3JtYW5jZV90aW1pbmdfZ2V0X2RvbWFp
bl9sb29rdXBfZW5kKFdlYktpdERPTVBlcmZvcm1hbmNlVGltaW5nKiBzZWxmKTsKLQotLyoqCi0g
KiB3ZWJraXRfZG9tX3BlcmZvcm1hbmNlX3RpbWluZ19nZXRfY29ubmVjdF9zdGFydDoKLSAqIEBz
ZWxmOiBBICNXZWJLaXRET01QZXJmb3JtYW5jZVRpbWluZwotICoKLSAqIFJldHVybnM6IEEgI2d1
aW50NjQKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgZ3VpbnQ2
NAotd2Via2l0X2RvbV9wZXJmb3JtYW5jZV90aW1pbmdfZ2V0X2Nvbm5lY3Rfc3RhcnQoV2ViS2l0
RE9NUGVyZm9ybWFuY2VUaW1pbmcqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9kb21fcGVyZm9y
bWFuY2VfdGltaW5nX2dldF9jb25uZWN0X2VuZDoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01QZXJm
b3JtYW5jZVRpbWluZwotICoKLSAqIFJldHVybnM6IEEgI2d1aW50NjQKLSAqCi0gKiBTdGFiaWxp
dHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgZ3VpbnQ2NAotd2Via2l0X2RvbV9wZXJmb3Jt
YW5jZV90aW1pbmdfZ2V0X2Nvbm5lY3RfZW5kKFdlYktpdERPTVBlcmZvcm1hbmNlVGltaW5nKiBz
ZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX3BlcmZvcm1hbmNlX3RpbWluZ19nZXRfc2VjdXJl
X2Nvbm5lY3Rpb25fc3RhcnQ6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NUGVyZm9ybWFuY2VUaW1p
bmcKLSAqCi0gKiBSZXR1cm5zOiBBICNndWludDY0Ci0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJs
ZQotKiovCi1XRUJLSVRfQVBJIGd1aW50NjQKLXdlYmtpdF9kb21fcGVyZm9ybWFuY2VfdGltaW5n
X2dldF9zZWN1cmVfY29ubmVjdGlvbl9zdGFydChXZWJLaXRET01QZXJmb3JtYW5jZVRpbWluZyog
c2VsZik7Ci0KLS8qKgotICogd2Via2l0X2RvbV9wZXJmb3JtYW5jZV90aW1pbmdfZ2V0X3JlcXVl
c3Rfc3RhcnQ6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NUGVyZm9ybWFuY2VUaW1pbmcKLSAqCi0g
KiBSZXR1cm5zOiBBICNndWludDY0Ci0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1X
RUJLSVRfQVBJIGd1aW50NjQKLXdlYmtpdF9kb21fcGVyZm9ybWFuY2VfdGltaW5nX2dldF9yZXF1
ZXN0X3N0YXJ0KFdlYktpdERPTVBlcmZvcm1hbmNlVGltaW5nKiBzZWxmKTsKLQotLyoqCi0gKiB3
ZWJraXRfZG9tX3BlcmZvcm1hbmNlX3RpbWluZ19nZXRfcmVzcG9uc2Vfc3RhcnQ6Ci0gKiBAc2Vs
ZjogQSAjV2ViS2l0RE9NUGVyZm9ybWFuY2VUaW1pbmcKLSAqCi0gKiBSZXR1cm5zOiBBICNndWlu
dDY0Ci0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIGd1aW50NjQK
LXdlYmtpdF9kb21fcGVyZm9ybWFuY2VfdGltaW5nX2dldF9yZXNwb25zZV9zdGFydChXZWJLaXRE
T01QZXJmb3JtYW5jZVRpbWluZyogc2VsZik7Ci0KLS8qKgotICogd2Via2l0X2RvbV9wZXJmb3Jt
YW5jZV90aW1pbmdfZ2V0X3Jlc3BvbnNlX2VuZDoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01QZXJm
b3JtYW5jZVRpbWluZwotICoKLSAqIFJldHVybnM6IEEgI2d1aW50NjQKLSAqCi0gKiBTdGFiaWxp
dHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgZ3VpbnQ2NAotd2Via2l0X2RvbV9wZXJmb3Jt
YW5jZV90aW1pbmdfZ2V0X3Jlc3BvbnNlX2VuZChXZWJLaXRET01QZXJmb3JtYW5jZVRpbWluZyog
c2VsZik7Ci0KLS8qKgotICogd2Via2l0X2RvbV9wZXJmb3JtYW5jZV90aW1pbmdfZ2V0X2RvbV9s
b2FkaW5nOgotICogQHNlbGY6IEEgI1dlYktpdERPTVBlcmZvcm1hbmNlVGltaW5nCi0gKgotICog
UmV0dXJuczogQSAjZ3VpbnQ2NAotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VC
S0lUX0FQSSBndWludDY0Ci13ZWJraXRfZG9tX3BlcmZvcm1hbmNlX3RpbWluZ19nZXRfZG9tX2xv
YWRpbmcoV2ViS2l0RE9NUGVyZm9ybWFuY2VUaW1pbmcqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtp
dF9kb21fcGVyZm9ybWFuY2VfdGltaW5nX2dldF9kb21faW50ZXJhY3RpdmU6Ci0gKiBAc2VsZjog
QSAjV2ViS2l0RE9NUGVyZm9ybWFuY2VUaW1pbmcKLSAqCi0gKiBSZXR1cm5zOiBBICNndWludDY0
Ci0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIGd1aW50NjQKLXdl
YmtpdF9kb21fcGVyZm9ybWFuY2VfdGltaW5nX2dldF9kb21faW50ZXJhY3RpdmUoV2ViS2l0RE9N
UGVyZm9ybWFuY2VUaW1pbmcqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9kb21fcGVyZm9ybWFu
Y2VfdGltaW5nX2dldF9kb21fY29udGVudF9sb2FkZWRfZXZlbnRfc3RhcnQ6Ci0gKiBAc2VsZjog
QSAjV2ViS2l0RE9NUGVyZm9ybWFuY2VUaW1pbmcKLSAqCi0gKiBSZXR1cm5zOiBBICNndWludDY0
Ci0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIGd1aW50NjQKLXdl
YmtpdF9kb21fcGVyZm9ybWFuY2VfdGltaW5nX2dldF9kb21fY29udGVudF9sb2FkZWRfZXZlbnRf
c3RhcnQoV2ViS2l0RE9NUGVyZm9ybWFuY2VUaW1pbmcqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtp
dF9kb21fcGVyZm9ybWFuY2VfdGltaW5nX2dldF9kb21fY29udGVudF9sb2FkZWRfZXZlbnRfZW5k
OgotICogQHNlbGY6IEEgI1dlYktpdERPTVBlcmZvcm1hbmNlVGltaW5nCi0gKgotICogUmV0dXJu
czogQSAjZ3VpbnQ2NAotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQ
SSBndWludDY0Ci13ZWJraXRfZG9tX3BlcmZvcm1hbmNlX3RpbWluZ19nZXRfZG9tX2NvbnRlbnRf
bG9hZGVkX2V2ZW50X2VuZChXZWJLaXRET01QZXJmb3JtYW5jZVRpbWluZyogc2VsZik7Ci0KLS8q
KgotICogd2Via2l0X2RvbV9wZXJmb3JtYW5jZV90aW1pbmdfZ2V0X2RvbV9jb21wbGV0ZToKLSAq
IEBzZWxmOiBBICNXZWJLaXRET01QZXJmb3JtYW5jZVRpbWluZwotICoKLSAqIFJldHVybnM6IEEg
I2d1aW50NjQKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgZ3Vp
bnQ2NAotd2Via2l0X2RvbV9wZXJmb3JtYW5jZV90aW1pbmdfZ2V0X2RvbV9jb21wbGV0ZShXZWJL
aXRET01QZXJmb3JtYW5jZVRpbWluZyogc2VsZik7Ci0KLS8qKgotICogd2Via2l0X2RvbV9wZXJm
b3JtYW5jZV90aW1pbmdfZ2V0X2xvYWRfZXZlbnRfc3RhcnQ6Ci0gKiBAc2VsZjogQSAjV2ViS2l0
RE9NUGVyZm9ybWFuY2VUaW1pbmcKLSAqCi0gKiBSZXR1cm5zOiBBICNndWludDY0Ci0gKgotICog
U3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIGd1aW50NjQKLXdlYmtpdF9kb21f
cGVyZm9ybWFuY2VfdGltaW5nX2dldF9sb2FkX2V2ZW50X3N0YXJ0KFdlYktpdERPTVBlcmZvcm1h
bmNlVGltaW5nKiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX3BlcmZvcm1hbmNlX3RpbWlu
Z19nZXRfbG9hZF9ldmVudF9lbmQ6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NUGVyZm9ybWFuY2VU
aW1pbmcKLSAqCi0gKiBSZXR1cm5zOiBBICNndWludDY0Ci0gKgotICogU3RhYmlsaXR5OiBVbnN0
YWJsZQotKiovCi1XRUJLSVRfQVBJIGd1aW50NjQKLXdlYmtpdF9kb21fcGVyZm9ybWFuY2VfdGlt
aW5nX2dldF9sb2FkX2V2ZW50X2VuZChXZWJLaXRET01QZXJmb3JtYW5jZVRpbWluZyogc2VsZik7
Ci0KLUdfRU5EX0RFQ0xTCi0KLSNlbmRpZiAvKiBXRUJLSVRfRE9NX1VTRV9VTlNUQUJMRV9BUEkg
Ki8KLSNlbmRpZiAvKiBXZWJLaXRET01QZXJmb3JtYW5jZVRpbWluZ19oICovCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dl
YktpdERPTVBlcmZvcm1hbmNlVGltaW5nUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01QZXJmb3JtYW5jZVRpbWlu
Z1ByaXZhdGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmVhYTg5ZS4uMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsv
RE9NL1dlYktpdERPTVBlcmZvcm1hbmNlVGltaW5nUHJpdmF0ZS5oCisrKyAvZGV2L251bGwKQEAg
LTEsMzYgKzAsMCBAQAotLyoKLSAqICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9w
ZW4gc291cmNlIHByb2plY3QuCi0gKiAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBn
ZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKLSAqCi0gKiAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
Ci0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCi0gKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCi0gKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBX
ZWJLaXRET01QZXJmb3JtYW5jZVRpbWluZ1ByaXZhdGVfaAotI2RlZmluZSBXZWJLaXRET01QZXJm
b3JtYW5jZVRpbWluZ1ByaXZhdGVfaAotCi0jaW5jbHVkZSA8V2ViQ29yZS9QZXJmb3JtYW5jZVRp
bWluZy5oPgotI2luY2x1ZGUgPHdlYmtpdGRvbS9XZWJLaXRET01QZXJmb3JtYW5jZVRpbWluZy5o
PgotI2lmIEVOQUJMRShXRUJfVElNSU5HKQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLVdlYktpdERP
TVBlcmZvcm1hbmNlVGltaW5nKiB3cmFwUGVyZm9ybWFuY2VUaW1pbmcoV2ViQ29yZTo6UGVyZm9y
bWFuY2VUaW1pbmcqKTsKLVdlYktpdERPTVBlcmZvcm1hbmNlVGltaW5nKiBraXQoV2ViQ29yZTo6
UGVyZm9ybWFuY2VUaW1pbmcqKTsKLVdlYkNvcmU6OlBlcmZvcm1hbmNlVGltaW5nKiBjb3JlKFdl
YktpdERPTVBlcmZvcm1hbmNlVGltaW5nKik7Ci19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2Vu
ZGlmIC8qIEVOQUJMRShXRUJfVElNSU5HKSAqLwotCi0jZW5kaWYgLyogV2ViS2l0RE9NUGVyZm9y
bWFuY2VUaW1pbmdQcml2YXRlX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NUHJpdmF0ZS5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktp
dERPTVByaXZhdGUuY3BwCmluZGV4IDMyNjZjMDYuLjM4NjlmODUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9N
UHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01Qcml2YXRlLmNwcApAQCAtNjIsMTQgKzYyLDYgQEAKICNp
bmNsdWRlICJXZWJLaXRET01VSUV2ZW50UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdERPTVdo
ZWVsRXZlbnRQcml2YXRlLmgiCiAKLSNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0jaW5jbHVkZSA8
V2ViQ29yZS9EYXRhQ3VlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9WVFRDdWUuaD4KLSNpbmNsdWRl
ICJXZWJLaXRET01EYXRhQ3VlUHJpdmF0ZS5oIgotI2luY2x1ZGUgIldlYktpdERPTVRleHRUcmFj
a0N1ZVByaXZhdGUuaCIKLSNpbmNsdWRlICJXZWJLaXRET01WVFRDdWVQcml2YXRlLmgiCi0jZW5k
aWYKLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAt
MTY4LDIwICsxNjAsNCBAQCBXZWJLaXRET01CbG9iKiB3cmFwKEJsb2IqIGJsb2IpCiAgICAgcmV0
dXJuIHdyYXBCbG9iKGJsb2IpOwogfQogCi0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotV2ViS2l0
RE9NVGV4dFRyYWNrQ3VlKiB3cmFwKFRleHRUcmFja0N1ZSogY3VlKQotewotICAgIEFTU0VSVChj
dWUpOwotCi0gICAgc3dpdGNoIChjdWUtPmN1ZVR5cGUoKSkgewotICAgIGNhc2UgVGV4dFRyYWNr
Q3VlOjpEYXRhOgotICAgICAgICByZXR1cm4gV0VCS0lUX0RPTV9URVhUX1RSQUNLX0NVRSh3cmFw
RGF0YUN1ZShzdGF0aWNfY2FzdDxEYXRhQ3VlKj4oY3VlKSkpOwotICAgIGNhc2UgVGV4dFRyYWNr
Q3VlOjpXZWJWVFQ6Ci0gICAgY2FzZSBUZXh0VHJhY2tDdWU6OkdlbmVyaWM6Ci0gICAgICAgIHJl
dHVybiBXRUJLSVRfRE9NX1RFWFRfVFJBQ0tfQ1VFKHdyYXBWVFRDdWUoc3RhdGljX2Nhc3Q8VlRU
Q3VlKj4oY3VlKSkpOwotICAgIH0KLSAgICByZXR1cm4gd3JhcFRleHRUcmFja0N1ZShjdWUpOwot
fQotI2VuZGlmCi0KIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01Qcml2
YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsv
RE9NL1dlYktpdERPTVByaXZhdGUuaAppbmRleCAzYjdlNmRmLi4yZTE0OTQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dl
YktpdERPTVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVByaXZhdGUuaApAQCAtMjQsNyArMjQsNyBAQAog
I2lmbmRlZiBXZWJLaXRET01Qcml2YXRlX2gKICNkZWZpbmUgV2ViS2l0RE9NUHJpdmF0ZV9oCiAK
LSNpbmNsdWRlIDx3ZWJraXRkb20vd2Via2l0ZG9tZGVmaW5lcy11bnN0YWJsZS5oPgorI2luY2x1
ZGUgPHdlYmtpdGRvbS93ZWJraXRkb21kZWZpbmVzLmg+CiAKICNkZWZpbmUgV0VCS0lUX1BBUkFN
X1JFQURBQkxFICgoR1BhcmFtRmxhZ3MpKEdfUEFSQU1fUkVBREFCTEUgfCBHX1BBUkFNX1NUQVRJ
Q19OQU1FIHwgR19QQVJBTV9TVEFUSUNfTklDSyB8IEdfUEFSQU1fU1RBVElDX0JMVVJCKSkKICNk
ZWZpbmUgV0VCS0lUX1BBUkFNX1JFQURXUklURSAoKEdQYXJhbUZsYWdzKShHX1BBUkFNX1JFQURX
UklURSB8IEdfUEFSQU1fU1RBVElDX05BTUUgfCBHX1BBUkFNX1NUQVRJQ19OSUNLIHwgR19QQVJB
TV9TVEFUSUNfQkxVUkIpKQpAQCAtMzcsNyArMzcsNiBAQCBjbGFzcyBTdHlsZVNoZWV0OwogY2xh
c3MgSFRNTENvbGxlY3Rpb247CiBjbGFzcyBFdmVudFRhcmdldDsKIGNsYXNzIEJsb2I7Ci1jbGFz
cyBUZXh0VHJhY2tDdWU7CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKIG5hbWVzcGFjZSBXZWJL
aXQgewpAQCAtNDcsOSArNDYsNiBAQCBXZWJLaXRET01TdHlsZVNoZWV0KiB3cmFwKFdlYkNvcmU6
OlN0eWxlU2hlZXQqKTsKIFdlYktpdERPTUhUTUxDb2xsZWN0aW9uKiB3cmFwKFdlYkNvcmU6OkhU
TUxDb2xsZWN0aW9uKik7CiBXZWJLaXRET01FdmVudFRhcmdldCogd3JhcChXZWJDb3JlOjpFdmVu
dFRhcmdldCopOwogV2ViS2l0RE9NQmxvYiogd3JhcChXZWJDb3JlOjpCbG9iKik7Ci0jaWYgRU5B
QkxFKFZJREVPX1RSQUNLKQotV2ViS2l0RE9NVGV4dFRyYWNrQ3VlKiB3cmFwKFdlYkNvcmU6OlRl
eHRUcmFja0N1ZSopOwotI2VuZGlmCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8v
IFdlYktpdERPTVByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01TY3JlZW4uY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01T
Y3JlZW4uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYzczYzNiLi4wMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9E
T00vV2ViS2l0RE9NU2NyZWVuLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDMwNSArMCwwIEBACi0v
KgotICogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVj
dC4KLSAqICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdz
LnBsLiBETyBOT1QgTU9ESUZZIQotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQotICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiV2ViS2l0RE9NU2NyZWVuLmgiCi0KLSNpbmNsdWRlIDxXZWJDb3JlL0NTU0ltcG9ydFJ1
bGUuaD4KLSNpbmNsdWRlICJET01PYmplY3RDYWNoZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRG9j
dW1lbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0V4Y2VwdGlvbkNvZGUuaD4KLSNpbmNsdWRlIDxX
ZWJDb3JlL0V4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbi5oPgotI2luY2x1ZGUgPFdlYkNvcmUvSlNN
YWluVGhyZWFkRXhlY1N0YXRlLmg+Ci0jaW5jbHVkZSAiV2ViS2l0RE9NUHJpdmF0ZS5oIgotI2lu
Y2x1ZGUgIldlYktpdERPTVNjcmVlblByaXZhdGUuaCIKLSNpbmNsdWRlICJDb252ZXJ0VG9VVEY4
U3RyaW5nLmgiCi0jaW5jbHVkZSA8d3RmL0dldFB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KLQotI2RlZmluZSBXRUJLSVRfRE9NX1NDUkVFTl9HRVRfUFJJVkFURShvYmopIEdfVFlQRV9J
TlNUQU5DRV9HRVRfUFJJVkFURShvYmosIFdFQktJVF9ET01fVFlQRV9TQ1JFRU4sIFdlYktpdERP
TVNjcmVlblByaXZhdGUpCi0KLXR5cGVkZWYgc3RydWN0IF9XZWJLaXRET01TY3JlZW5Qcml2YXRl
IHsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2NyZWVuPiBjb3JlT2JqZWN0OwotfSBXZWJLaXRET01T
Y3JlZW5Qcml2YXRlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotV2ViS2l0RE9NU2NyZWVuKiBr
aXQoV2ViQ29yZTo6U2NyZWVuKiBvYmopCi17Ci0gICAgaWYgKCFvYmopCi0gICAgICAgIHJldHVy
biAwOwotCi0gICAgaWYgKGdwb2ludGVyIHJldCA9IERPTU9iamVjdENhY2hlOjpnZXQob2JqKSkK
LSAgICAgICAgcmV0dXJuIFdFQktJVF9ET01fU0NSRUVOKHJldCk7Ci0KLSAgICByZXR1cm4gd3Jh
cFNjcmVlbihvYmopOwotfQotCi1XZWJDb3JlOjpTY3JlZW4qIGNvcmUoV2ViS2l0RE9NU2NyZWVu
KiByZXF1ZXN0KQotewotICAgIHJldHVybiByZXF1ZXN0ID8gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6
U2NyZWVuKj4oV0VCS0lUX0RPTV9PQkpFQ1QocmVxdWVzdCktPmNvcmVPYmplY3QpIDogMDsKLX0K
LQotV2ViS2l0RE9NU2NyZWVuKiB3cmFwU2NyZWVuKFdlYkNvcmU6OlNjcmVlbiogY29yZU9iamVj
dCkKLXsKLSAgICBBU1NFUlQoY29yZU9iamVjdCk7Ci0gICAgcmV0dXJuIFdFQktJVF9ET01fU0NS
RUVOKGdfb2JqZWN0X25ldyhXRUJLSVRfRE9NX1RZUEVfU0NSRUVOLCAiY29yZS1vYmplY3QiLCBj
b3JlT2JqZWN0LCBudWxscHRyKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi1HX0RF
RklORV9UWVBFKFdlYktpdERPTVNjcmVlbiwgd2Via2l0X2RvbV9zY3JlZW4sIFdFQktJVF9ET01f
VFlQRV9PQkpFQ1QpCi0KLWVudW0gewotICAgIFBST1BfMCwKLSAgICBQUk9QX0hFSUdIVCwKLSAg
ICBQUk9QX1dJRFRILAotICAgIFBST1BfQ09MT1JfREVQVEgsCi0gICAgUFJPUF9QSVhFTF9ERVBU
SCwKLSAgICBQUk9QX0FWQUlMX0xFRlQsCi0gICAgUFJPUF9BVkFJTF9UT1AsCi0gICAgUFJPUF9B
VkFJTF9IRUlHSFQsCi0gICAgUFJPUF9BVkFJTF9XSURUSCwKLX07Ci0KLXN0YXRpYyB2b2lkIHdl
YmtpdF9kb21fc2NyZWVuX2ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKLXsKLSAgICBXZWJLaXRE
T01TY3JlZW5Qcml2YXRlKiBwcml2ID0gV0VCS0lUX0RPTV9TQ1JFRU5fR0VUX1BSSVZBVEUob2Jq
ZWN0KTsKLQotICAgIFdlYktpdDo6RE9NT2JqZWN0Q2FjaGU6OmZvcmdldChwcml2LT5jb3JlT2Jq
ZWN0LmdldCgpKTsKLQotICAgIHByaXYtPn5XZWJLaXRET01TY3JlZW5Qcml2YXRlKCk7Ci0gICAg
R19PQkpFQ1RfQ0xBU1Mod2Via2l0X2RvbV9zY3JlZW5fcGFyZW50X2NsYXNzKS0+ZmluYWxpemUo
b2JqZWN0KTsKLX0KLQotc3RhdGljIHZvaWQgd2Via2l0X2RvbV9zY3JlZW5fZ2V0X3Byb3BlcnR5
KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcGVydHlJZCwgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFt
U3BlYyogcHNwZWMpCi17Ci0gICAgV2ViS2l0RE9NU2NyZWVuKiBzZWxmID0gV0VCS0lUX0RPTV9T
Q1JFRU4ob2JqZWN0KTsKLQotICAgIHN3aXRjaCAocHJvcGVydHlJZCkgewotICAgIGNhc2UgUFJP
UF9IRUlHSFQ6Ci0gICAgICAgIGdfdmFsdWVfc2V0X3Vsb25nKHZhbHVlLCB3ZWJraXRfZG9tX3Nj
cmVlbl9nZXRfaGVpZ2h0KHNlbGYpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX1dJ
RFRIOgotICAgICAgICBnX3ZhbHVlX3NldF91bG9uZyh2YWx1ZSwgd2Via2l0X2RvbV9zY3JlZW5f
Z2V0X3dpZHRoKHNlbGYpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX0NPTE9SX0RF
UFRIOgotICAgICAgICBnX3ZhbHVlX3NldF91bG9uZyh2YWx1ZSwgd2Via2l0X2RvbV9zY3JlZW5f
Z2V0X2NvbG9yX2RlcHRoKHNlbGYpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX1BJ
WEVMX0RFUFRIOgotICAgICAgICBnX3ZhbHVlX3NldF91bG9uZyh2YWx1ZSwgd2Via2l0X2RvbV9z
Y3JlZW5fZ2V0X3BpeGVsX2RlcHRoKHNlbGYpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQ
Uk9QX0FWQUlMX0xFRlQ6Ci0gICAgICAgIGdfdmFsdWVfc2V0X2xvbmcodmFsdWUsIHdlYmtpdF9k
b21fc2NyZWVuX2dldF9hdmFpbF9sZWZ0KHNlbGYpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBQUk9QX0FWQUlMX1RPUDoKLSAgICAgICAgZ192YWx1ZV9zZXRfbG9uZyh2YWx1ZSwgd2Via2l0
X2RvbV9zY3JlZW5fZ2V0X2F2YWlsX3RvcChzZWxmKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgUFJPUF9BVkFJTF9IRUlHSFQ6Ci0gICAgICAgIGdfdmFsdWVfc2V0X3Vsb25nKHZhbHVlLCB3
ZWJraXRfZG9tX3NjcmVlbl9nZXRfYXZhaWxfaGVpZ2h0KHNlbGYpKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBQUk9QX0FWQUlMX1dJRFRIOgotICAgICAgICBnX3ZhbHVlX3NldF91bG9uZyh2
YWx1ZSwgd2Via2l0X2RvbV9zY3JlZW5fZ2V0X2F2YWlsX3dpZHRoKHNlbGYpKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BF
UlRZX0lEKG9iamVjdCwgcHJvcGVydHlJZCwgcHNwZWMpOwotICAgICAgICBicmVhazsKLSAgICB9
Ci19Ci0KLXN0YXRpYyBHT2JqZWN0KiB3ZWJraXRfZG9tX3NjcmVlbl9jb25zdHJ1Y3RvcihHVHlw
ZSB0eXBlLCBndWludCBjb25zdHJ1Y3RQcm9wZXJ0aWVzQ291bnQsIEdPYmplY3RDb25zdHJ1Y3RQ
YXJhbSogY29uc3RydWN0UHJvcGVydGllcykKLXsKLSAgICBHT2JqZWN0KiBvYmplY3QgPSBHX09C
SkVDVF9DTEFTUyh3ZWJraXRfZG9tX3NjcmVlbl9wYXJlbnRfY2xhc3MpLT5jb25zdHJ1Y3Rvcih0
eXBlLCBjb25zdHJ1Y3RQcm9wZXJ0aWVzQ291bnQsIGNvbnN0cnVjdFByb3BlcnRpZXMpOwotCi0g
ICAgV2ViS2l0RE9NU2NyZWVuUHJpdmF0ZSogcHJpdiA9IFdFQktJVF9ET01fU0NSRUVOX0dFVF9Q
UklWQVRFKG9iamVjdCk7Ci0gICAgcHJpdi0+Y29yZU9iamVjdCA9IHN0YXRpY19jYXN0PFdlYkNv
cmU6OlNjcmVlbio+KFdFQktJVF9ET01fT0JKRUNUKG9iamVjdCktPmNvcmVPYmplY3QpOwotICAg
IFdlYktpdDo6RE9NT2JqZWN0Q2FjaGU6OnB1dChwcml2LT5jb3JlT2JqZWN0LmdldCgpLCBvYmpl
Y3QpOwotCi0gICAgcmV0dXJuIG9iamVjdDsKLX0KLQotc3RhdGljIHZvaWQgd2Via2l0X2RvbV9z
Y3JlZW5fY2xhc3NfaW5pdChXZWJLaXRET01TY3JlZW5DbGFzcyogcmVxdWVzdENsYXNzKQotewot
ICAgIEdPYmplY3RDbGFzcyogZ29iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1MocmVxdWVzdENs
YXNzKTsKLSAgICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUoZ29iamVjdENsYXNzLCBzaXplb2Yo
V2ViS2l0RE9NU2NyZWVuUHJpdmF0ZSkpOwotICAgIGdvYmplY3RDbGFzcy0+Y29uc3RydWN0b3Ig
PSB3ZWJraXRfZG9tX3NjcmVlbl9jb25zdHJ1Y3RvcjsKLSAgICBnb2JqZWN0Q2xhc3MtPmZpbmFs
aXplID0gd2Via2l0X2RvbV9zY3JlZW5fZmluYWxpemU7Ci0gICAgZ29iamVjdENsYXNzLT5nZXRf
cHJvcGVydHkgPSB3ZWJraXRfZG9tX3NjcmVlbl9nZXRfcHJvcGVydHk7Ci0KLSAgICBnX29iamVj
dF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAotICAgICAgICBnb2JqZWN0Q2xhc3MsCi0gICAgICAg
IFBST1BfSEVJR0hULAotICAgICAgICBnX3BhcmFtX3NwZWNfdWxvbmcoCi0gICAgICAgICAgICAi
aGVpZ2h0IiwKLSAgICAgICAgICAgICJTY3JlZW46aGVpZ2h0IiwKLSAgICAgICAgICAgICJyZWFk
LW9ubHkgZ3Vsb25nIFNjcmVlbjpoZWlnaHQiLAotICAgICAgICAgICAgMCwgR19NQVhVTE9ORywg
MCwKLSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSkpOwotCi0gICAgZ19vYmplY3Rf
Y2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAgZ29iamVjdENsYXNzLAotICAgICAgICBQ
Uk9QX1dJRFRILAotICAgICAgICBnX3BhcmFtX3NwZWNfdWxvbmcoCi0gICAgICAgICAgICAid2lk
dGgiLAotICAgICAgICAgICAgIlNjcmVlbjp3aWR0aCIsCi0gICAgICAgICAgICAicmVhZC1vbmx5
IGd1bG9uZyBTY3JlZW46d2lkdGgiLAotICAgICAgICAgICAgMCwgR19NQVhVTE9ORywgMCwKLSAg
ICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSkpOwotCi0gICAgZ19vYmplY3RfY2xhc3Nf
aW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAgZ29iamVjdENsYXNzLAotICAgICAgICBQUk9QX0NP
TE9SX0RFUFRILAotICAgICAgICBnX3BhcmFtX3NwZWNfdWxvbmcoCi0gICAgICAgICAgICAiY29s
b3ItZGVwdGgiLAotICAgICAgICAgICAgIlNjcmVlbjpjb2xvci1kZXB0aCIsCi0gICAgICAgICAg
ICAicmVhZC1vbmx5IGd1bG9uZyBTY3JlZW46Y29sb3ItZGVwdGgiLAotICAgICAgICAgICAgMCwg
R19NQVhVTE9ORywgMCwKLSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSkpOwotCi0g
ICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAgZ29iamVjdENsYXNz
LAotICAgICAgICBQUk9QX1BJWEVMX0RFUFRILAotICAgICAgICBnX3BhcmFtX3NwZWNfdWxvbmco
Ci0gICAgICAgICAgICAicGl4ZWwtZGVwdGgiLAotICAgICAgICAgICAgIlNjcmVlbjpwaXhlbC1k
ZXB0aCIsCi0gICAgICAgICAgICAicmVhZC1vbmx5IGd1bG9uZyBTY3JlZW46cGl4ZWwtZGVwdGgi
LAotICAgICAgICAgICAgMCwgR19NQVhVTE9ORywgMCwKLSAgICAgICAgICAgIFdFQktJVF9QQVJB
TV9SRUFEQUJMRSkpOwotCi0gICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAg
ICAgICAgZ29iamVjdENsYXNzLAotICAgICAgICBQUk9QX0FWQUlMX0xFRlQsCi0gICAgICAgIGdf
cGFyYW1fc3BlY19sb25nKAotICAgICAgICAgICAgImF2YWlsLWxlZnQiLAotICAgICAgICAgICAg
IlNjcmVlbjphdmFpbC1sZWZ0IiwKLSAgICAgICAgICAgICJyZWFkLW9ubHkgZ2xvbmcgU2NyZWVu
OmF2YWlsLWxlZnQiLAotICAgICAgICAgICAgR19NSU5MT05HLCBHX01BWExPTkcsIDAsCi0gICAg
ICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2lu
c3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9BVkFJ
TF9UT1AsCi0gICAgICAgIGdfcGFyYW1fc3BlY19sb25nKAotICAgICAgICAgICAgImF2YWlsLXRv
cCIsCi0gICAgICAgICAgICAiU2NyZWVuOmF2YWlsLXRvcCIsCi0gICAgICAgICAgICAicmVhZC1v
bmx5IGdsb25nIFNjcmVlbjphdmFpbC10b3AiLAotICAgICAgICAgICAgR19NSU5MT05HLCBHX01B
WExPTkcsIDAsCi0gICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKLQotICAgIGdf
b2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKLSAg
ICAgICAgUFJPUF9BVkFJTF9IRUlHSFQsCi0gICAgICAgIGdfcGFyYW1fc3BlY191bG9uZygKLSAg
ICAgICAgICAgICJhdmFpbC1oZWlnaHQiLAotICAgICAgICAgICAgIlNjcmVlbjphdmFpbC1oZWln
aHQiLAotICAgICAgICAgICAgInJlYWQtb25seSBndWxvbmcgU2NyZWVuOmF2YWlsLWhlaWdodCIs
Ci0gICAgICAgICAgICAwLCBHX01BWFVMT05HLCAwLAotICAgICAgICAgICAgV0VCS0lUX1BBUkFN
X1JFQURBQkxFKSk7Ci0KLSAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAotICAg
ICAgICBnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBST1BfQVZBSUxfV0lEVEgsCi0gICAgICAgIGdf
cGFyYW1fc3BlY191bG9uZygKLSAgICAgICAgICAgICJhdmFpbC13aWR0aCIsCi0gICAgICAgICAg
ICAiU2NyZWVuOmF2YWlsLXdpZHRoIiwKLSAgICAgICAgICAgICJyZWFkLW9ubHkgZ3Vsb25nIFNj
cmVlbjphdmFpbC13aWR0aCIsCi0gICAgICAgICAgICAwLCBHX01BWFVMT05HLCAwLAotICAgICAg
ICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7Ci0KLX0KLQotc3RhdGljIHZvaWQgd2Via2l0
X2RvbV9zY3JlZW5faW5pdChXZWJLaXRET01TY3JlZW4qIHJlcXVlc3QpCi17Ci0gICAgV2ViS2l0
RE9NU2NyZWVuUHJpdmF0ZSogcHJpdiA9IFdFQktJVF9ET01fU0NSRUVOX0dFVF9QUklWQVRFKHJl
cXVlc3QpOwotICAgIG5ldyAocHJpdikgV2ViS2l0RE9NU2NyZWVuUHJpdmF0ZSgpOwotfQotCi1n
dWxvbmcgd2Via2l0X2RvbV9zY3JlZW5fZ2V0X2hlaWdodChXZWJLaXRET01TY3JlZW4qIHNlbGYp
Ci17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0
dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfU0NSRUVOKHNlbGYpLCAwKTsKLSAgICBXZWJD
b3JlOjpTY3JlZW4qIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ3Vsb25nIHJlc3Vs
dCA9IGl0ZW0tPmhlaWdodCgpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLWd1bG9uZyB3ZWJr
aXRfZG9tX3NjcmVlbl9nZXRfd2lkdGgoV2ViS2l0RE9NU2NyZWVuKiBzZWxmKQotewotICAgIFdl
YkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZf
ZmFpbChXRUJLSVRfRE9NX0lTX1NDUkVFTihzZWxmKSwgMCk7Ci0gICAgV2ViQ29yZTo6U2NyZWVu
KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGd1bG9uZyByZXN1bHQgPSBpdGVtLT53
aWR0aCgpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLWd1bG9uZyB3ZWJraXRfZG9tX3NjcmVl
bl9nZXRfY29sb3JfZGVwdGgoV2ViS2l0RE9NU2NyZWVuKiBzZWxmKQotewotICAgIFdlYkNvcmU6
OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChX
RUJLSVRfRE9NX0lTX1NDUkVFTihzZWxmKSwgMCk7Ci0gICAgV2ViQ29yZTo6U2NyZWVuKiBpdGVt
ID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGd1bG9uZyByZXN1bHQgPSBpdGVtLT5jb2xvckRl
cHRoKCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotZ3Vsb25nIHdlYmtpdF9kb21fc2NyZWVu
X2dldF9waXhlbF9kZXB0aChXZWJLaXRET01TY3JlZW4qIHNlbGYpCi17Ci0gICAgV2ViQ29yZTo6
SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdF
QktJVF9ET01fSVNfU0NSRUVOKHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpTY3JlZW4qIGl0ZW0g
PSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ3Vsb25nIHJlc3VsdCA9IGl0ZW0tPnBpeGVsRGVw
dGgoKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1nbG9uZyB3ZWJraXRfZG9tX3NjcmVlbl9n
ZXRfYXZhaWxfbGVmdChXZWJLaXRET01TY3JlZW4qIHNlbGYpCi17Ci0gICAgV2ViQ29yZTo6SlNN
YWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJ
VF9ET01fSVNfU0NSRUVOKHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpTY3JlZW4qIGl0ZW0gPSBX
ZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ2xvbmcgcmVzdWx0ID0gaXRlbS0+YXZhaWxMZWZ0KCk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotZ2xvbmcgd2Via2l0X2RvbV9zY3JlZW5fZ2V0X2F2
YWlsX3RvcChXZWJLaXRET01TY3JlZW4qIHNlbGYpCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhy
ZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01f
SVNfU0NSRUVOKHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpTY3JlZW4qIGl0ZW0gPSBXZWJLaXQ6
OmNvcmUoc2VsZik7Ci0gICAgZ2xvbmcgcmVzdWx0ID0gaXRlbS0+YXZhaWxUb3AoKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotCi1ndWxvbmcgd2Via2l0X2RvbV9zY3JlZW5fZ2V0X2F2YWlsX2hl
aWdodChXZWJLaXRET01TY3JlZW4qIHNlbGYpCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFk
TnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNf
U0NSRUVOKHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpTY3JlZW4qIGl0ZW0gPSBXZWJLaXQ6OmNv
cmUoc2VsZik7Ci0gICAgZ3Vsb25nIHJlc3VsdCA9IGl0ZW0tPmF2YWlsSGVpZ2h0KCk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLQotZ3Vsb25nIHdlYmtpdF9kb21fc2NyZWVuX2dldF9hdmFpbF93
aWR0aChXZWJLaXRET01TY3JlZW4qIHNlbGYpCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFk
TnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNf
U0NSRUVOKHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpTY3JlZW4qIGl0ZW0gPSBXZWJLaXQ6OmNv
cmUoc2VsZik7Ci0gICAgZ3Vsb25nIHJlc3VsdCA9IGl0ZW0tPmF2YWlsV2lkdGgoKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVNjcmVlbi5oIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01TY3Jl
ZW4uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTlkY2ZlYS4uMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dl
YktpdERPTVNjcmVlbi5oCisrKyAvZGV2L251bGwKQEAgLTEsMTQxICswLDAgQEAKLS8qCi0gKiAg
VGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICog
IFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERP
IE5PVCBNT0RJRlkhCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
LSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgV2ViS2l0RE9NU2NyZWVuX2gKLSNkZWZp
bmUgV2ViS2l0RE9NU2NyZWVuX2gKLQotI2lmZGVmIFdFQktJVF9ET01fVVNFX1VOU1RBQkxFX0FQ
SQotCi0jaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KLSNpbmNsdWRlIDx3ZWJraXRkb20vV2ViS2l0
RE9NT2JqZWN0Lmg+Ci0jaW5jbHVkZSA8d2Via2l0ZG9tL3dlYmtpdGRvbWRlZmluZXMtdW5zdGFi
bGUuaD4KLQotR19CRUdJTl9ERUNMUwotCi0jZGVmaW5lIFdFQktJVF9ET01fVFlQRV9TQ1JFRU4g
ICAgICAgICAgICAod2Via2l0X2RvbV9zY3JlZW5fZ2V0X3R5cGUoKSkKLSNkZWZpbmUgV0VCS0lU
X0RPTV9TQ1JFRU4ob2JqKSAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgo
b2JqKSwgV0VCS0lUX0RPTV9UWVBFX1NDUkVFTiwgV2ViS2l0RE9NU2NyZWVuKSkKLSNkZWZpbmUg
V0VCS0lUX0RPTV9TQ1JFRU5fQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FT
VCgoa2xhc3MpLCAgV0VCS0lUX0RPTV9UWVBFX1NDUkVFTiwgV2ViS2l0RE9NU2NyZWVuQ2xhc3Mp
Ci0jZGVmaW5lIFdFQktJVF9ET01fSVNfU0NSRUVOKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNL
X0lOU1RBTkNFX1RZUEUoKG9iaiksIFdFQktJVF9ET01fVFlQRV9TQ1JFRU4pKQotI2RlZmluZSBX
RUJLSVRfRE9NX0lTX1NDUkVFTl9DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBF
KChrbGFzcyksICBXRUJLSVRfRE9NX1RZUEVfU0NSRUVOKSkKLSNkZWZpbmUgV0VCS0lUX0RPTV9T
Q1JFRU5fR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCAg
V0VCS0lUX0RPTV9UWVBFX1NDUkVFTiwgV2ViS2l0RE9NU2NyZWVuQ2xhc3MpKQotCi1zdHJ1Y3Qg
X1dlYktpdERPTVNjcmVlbiB7Ci0gICAgV2ViS2l0RE9NT2JqZWN0IHBhcmVudF9pbnN0YW5jZTsK
LX07Ci0KLXN0cnVjdCBfV2ViS2l0RE9NU2NyZWVuQ2xhc3MgewotICAgIFdlYktpdERPTU9iamVj
dENsYXNzIHBhcmVudF9jbGFzczsKLX07Ci0KLVdFQktJVF9BUEkgR1R5cGUKLXdlYmtpdF9kb21f
c2NyZWVuX2dldF90eXBlKHZvaWQpOwotCi0vKioKLSAqIHdlYmtpdF9kb21fc2NyZWVuX2dldF9o
ZWlnaHQ6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NU2NyZWVuCi0gKgotICogUmV0dXJuczogQSAj
Z3Vsb25nCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIGd1bG9u
Zwotd2Via2l0X2RvbV9zY3JlZW5fZ2V0X2hlaWdodChXZWJLaXRET01TY3JlZW4qIHNlbGYpOwot
Ci0vKioKLSAqIHdlYmtpdF9kb21fc2NyZWVuX2dldF93aWR0aDoKLSAqIEBzZWxmOiBBICNXZWJL
aXRET01TY3JlZW4KLSAqCi0gKiBSZXR1cm5zOiBBICNndWxvbmcKLSAqCi0gKiBTdGFiaWxpdHk6
IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgZ3Vsb25nCi13ZWJraXRfZG9tX3NjcmVlbl9nZXRf
d2lkdGgoV2ViS2l0RE9NU2NyZWVuKiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX3NjcmVl
bl9nZXRfY29sb3JfZGVwdGg6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NU2NyZWVuCi0gKgotICog
UmV0dXJuczogQSAjZ3Vsb25nCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJL
SVRfQVBJIGd1bG9uZwotd2Via2l0X2RvbV9zY3JlZW5fZ2V0X2NvbG9yX2RlcHRoKFdlYktpdERP
TVNjcmVlbiogc2VsZik7Ci0KLS8qKgotICogd2Via2l0X2RvbV9zY3JlZW5fZ2V0X3BpeGVsX2Rl
cHRoOgotICogQHNlbGY6IEEgI1dlYktpdERPTVNjcmVlbgotICoKLSAqIFJldHVybnM6IEEgI2d1
bG9uZwotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSBndWxvbmcK
LXdlYmtpdF9kb21fc2NyZWVuX2dldF9waXhlbF9kZXB0aChXZWJLaXRET01TY3JlZW4qIHNlbGYp
OwotCi0vKioKLSAqIHdlYmtpdF9kb21fc2NyZWVuX2dldF9hdmFpbF9sZWZ0OgotICogQHNlbGY6
IEEgI1dlYktpdERPTVNjcmVlbgotICoKLSAqIFJldHVybnM6IEEgI2dsb25nCi0gKgotICogU3Rh
YmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIGdsb25nCi13ZWJraXRfZG9tX3NjcmVl
bl9nZXRfYXZhaWxfbGVmdChXZWJLaXRET01TY3JlZW4qIHNlbGYpOwotCi0vKioKLSAqIHdlYmtp
dF9kb21fc2NyZWVuX2dldF9hdmFpbF90b3A6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NU2NyZWVu
Ci0gKgotICogUmV0dXJuczogQSAjZ2xvbmcKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0q
Ki8KLVdFQktJVF9BUEkgZ2xvbmcKLXdlYmtpdF9kb21fc2NyZWVuX2dldF9hdmFpbF90b3AoV2Vi
S2l0RE9NU2NyZWVuKiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX3NjcmVlbl9nZXRfYXZh
aWxfaGVpZ2h0OgotICogQHNlbGY6IEEgI1dlYktpdERPTVNjcmVlbgotICoKLSAqIFJldHVybnM6
IEEgI2d1bG9uZwotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSBn
dWxvbmcKLXdlYmtpdF9kb21fc2NyZWVuX2dldF9hdmFpbF9oZWlnaHQoV2ViS2l0RE9NU2NyZWVu
KiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX3NjcmVlbl9nZXRfYXZhaWxfd2lkdGg6Ci0g
KiBAc2VsZjogQSAjV2ViS2l0RE9NU2NyZWVuCi0gKgotICogUmV0dXJuczogQSAjZ3Vsb25nCi0g
KgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIGd1bG9uZwotd2Via2l0
X2RvbV9zY3JlZW5fZ2V0X2F2YWlsX3dpZHRoKFdlYktpdERPTVNjcmVlbiogc2VsZik7Ci0KLUdf
RU5EX0RFQ0xTCi0KLSNlbmRpZiAvKiBXRUJLSVRfRE9NX1VTRV9VTlNUQUJMRV9BUEkgKi8KLSNl
bmRpZiAvKiBXZWJLaXRET01TY3JlZW5faCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01TY3JlZW5Qcml2
YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsv
RE9NL1dlYktpdERPTVNjcmVlblByaXZhdGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggYjQ2MWZjNy4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVNjcmVlblByaXZhdGUuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDMzICswLDAgQEAKLS8qCi0gKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdl
YktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICogIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0
ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICogIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
LSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
LSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAq
ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNp
Zm5kZWYgV2ViS2l0RE9NU2NyZWVuUHJpdmF0ZV9oCi0jZGVmaW5lIFdlYktpdERPTVNjcmVlblBy
aXZhdGVfaAotCi0jaW5jbHVkZSA8V2ViQ29yZS9TY3JlZW4uaD4KLSNpbmNsdWRlIDx3ZWJraXRk
b20vV2ViS2l0RE9NU2NyZWVuLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotV2ViS2l0RE9NU2Ny
ZWVuKiB3cmFwU2NyZWVuKFdlYkNvcmU6OlNjcmVlbiopOwotV2ViS2l0RE9NU2NyZWVuKiBraXQo
V2ViQ29yZTo6U2NyZWVuKik7Ci1XZWJDb3JlOjpTY3JlZW4qIGNvcmUoV2ViS2l0RE9NU2NyZWVu
Kik7Ci19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8qIFdlYktpdERPTVNjcmVlblBy
aXZhdGVfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01TcGVlY2hTeW50aGVzaXMuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01T
cGVlY2hTeW50aGVzaXMuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MDc4MzE0
Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2d0ay9ET00vV2ViS2l0RE9NU3BlZWNoU3ludGhlc2lzLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDI3MCArMCwwIEBACi0vKgotICogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQg
b3BlbiBzb3VyY2UgcHJvamVjdC4KLSAqICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5
IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQotICoKLSAqICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAg
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKLSAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiAgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKLSAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViS2l0RE9NU3BlZWNoU3ludGhlc2lzLmgiCi0KLSNp
bmNsdWRlIDxXZWJDb3JlL0NTU0ltcG9ydFJ1bGUuaD4KLSNpbmNsdWRlICJET01PYmplY3RDYWNo
ZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0V4
Y2VwdGlvbkNvZGUuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0V4Y2VwdGlvbkNvZGVEZXNjcmlwdGlv
bi5oPgotI2luY2x1ZGUgPFdlYkNvcmUvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmg+Ci0jaW5jbHVk
ZSAiV2ViS2l0RE9NUHJpdmF0ZS5oIgotI2luY2x1ZGUgIldlYktpdERPTVNwZWVjaFN5bnRoZXNp
c1ByaXZhdGUuaCIKLSNpbmNsdWRlICJXZWJLaXRET01TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VQ
cml2YXRlLmgiCi0jaW5jbHVkZSAiQ29udmVydFRvVVRGOFN0cmluZy5oIgotI2luY2x1ZGUgPHd0
Zi9HZXRQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLSNkZWZpbmUgV0VCS0lUX0RP
TV9TUEVFQ0hfU1lOVEhFU0lTX0dFVF9QUklWQVRFKG9iaikgR19UWVBFX0lOU1RBTkNFX0dFVF9Q
UklWQVRFKG9iaiwgV0VCS0lUX0RPTV9UWVBFX1NQRUVDSF9TWU5USEVTSVMsIFdlYktpdERPTVNw
ZWVjaFN5bnRoZXNpc1ByaXZhdGUpCi0KLXR5cGVkZWYgc3RydWN0IF9XZWJLaXRET01TcGVlY2hT
eW50aGVzaXNQcml2YXRlIHsKLSNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKLSAgICBSZWZQ
dHI8V2ViQ29yZTo6U3BlZWNoU3ludGhlc2lzPiBjb3JlT2JqZWN0OwotI2VuZGlmIC8vIEVOQUJM
RShTUEVFQ0hfU1lOVEhFU0lTKQotfSBXZWJLaXRET01TcGVlY2hTeW50aGVzaXNQcml2YXRlOwot
Ci0jaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1X
ZWJLaXRET01TcGVlY2hTeW50aGVzaXMqIGtpdChXZWJDb3JlOjpTcGVlY2hTeW50aGVzaXMqIG9i
aikKLXsKLSAgICBpZiAoIW9iaikKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBpZiAoZ3BvaW50
ZXIgcmV0ID0gRE9NT2JqZWN0Q2FjaGU6OmdldChvYmopKQotICAgICAgICByZXR1cm4gV0VCS0lU
X0RPTV9TUEVFQ0hfU1lOVEhFU0lTKHJldCk7Ci0KLSAgICByZXR1cm4gd3JhcFNwZWVjaFN5bnRo
ZXNpcyhvYmopOwotfQotCi1XZWJDb3JlOjpTcGVlY2hTeW50aGVzaXMqIGNvcmUoV2ViS2l0RE9N
U3BlZWNoU3ludGhlc2lzKiByZXF1ZXN0KQotewotICAgIHJldHVybiByZXF1ZXN0ID8gc3RhdGlj
X2Nhc3Q8V2ViQ29yZTo6U3BlZWNoU3ludGhlc2lzKj4oV0VCS0lUX0RPTV9PQkpFQ1QocmVxdWVz
dCktPmNvcmVPYmplY3QpIDogMDsKLX0KLQotV2ViS2l0RE9NU3BlZWNoU3ludGhlc2lzKiB3cmFw
U3BlZWNoU3ludGhlc2lzKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpcyogY29yZU9iamVjdCkKLXsK
LSAgICBBU1NFUlQoY29yZU9iamVjdCk7Ci0gICAgcmV0dXJuIFdFQktJVF9ET01fU1BFRUNIX1NZ
TlRIRVNJUyhnX29iamVjdF9uZXcoV0VCS0lUX0RPTV9UWVBFX1NQRUVDSF9TWU5USEVTSVMsICJj
b3JlLW9iamVjdCIsIGNvcmVPYmplY3QsIG51bGxwdHIpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKLQotR19ERUZJTkVf
VFlQRShXZWJLaXRET01TcGVlY2hTeW50aGVzaXMsIHdlYmtpdF9kb21fc3BlZWNoX3N5bnRoZXNp
cywgV0VCS0lUX0RPTV9UWVBFX09CSkVDVCkKLQotZW51bSB7Ci0gICAgUFJPUF8wLAotICAgIFBS
T1BfUEVORElORywKLSAgICBQUk9QX1NQRUFLSU5HLAotICAgIFBST1BfUEFVU0VELAotfTsKLQot
c3RhdGljIHZvaWQgd2Via2l0X2RvbV9zcGVlY2hfc3ludGhlc2lzX2ZpbmFsaXplKEdPYmplY3Qq
IG9iamVjdCkKLXsKLSAgICBXZWJLaXRET01TcGVlY2hTeW50aGVzaXNQcml2YXRlKiBwcml2ID0g
V0VCS0lUX0RPTV9TUEVFQ0hfU1lOVEhFU0lTX0dFVF9QUklWQVRFKG9iamVjdCk7Ci0jaWYgRU5B
QkxFKFNQRUVDSF9TWU5USEVTSVMpCi0gICAgV2ViS2l0OjpET01PYmplY3RDYWNoZTo6Zm9yZ2V0
KHByaXYtPmNvcmVPYmplY3QuZ2V0KCkpOwotI2VuZGlmIC8vIEVOQUJMRShTUEVFQ0hfU1lOVEhF
U0lTKQotICAgIHByaXYtPn5XZWJLaXRET01TcGVlY2hTeW50aGVzaXNQcml2YXRlKCk7Ci0gICAg
R19PQkpFQ1RfQ0xBU1Mod2Via2l0X2RvbV9zcGVlY2hfc3ludGhlc2lzX3BhcmVudF9jbGFzcykt
PmZpbmFsaXplKG9iamVjdCk7Ci19Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdF9kb21fc3BlZWNoX3N5
bnRoZXNpc19nZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wZXJ0eUlkLCBH
VmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3BlYykKLXsKLSAgICBXZWJLaXRET01TcGVlY2hT
eW50aGVzaXMqIHNlbGYgPSBXRUJLSVRfRE9NX1NQRUVDSF9TWU5USEVTSVMob2JqZWN0KTsKLQot
ICAgIHN3aXRjaCAocHJvcGVydHlJZCkgewotICAgIGNhc2UgUFJPUF9QRU5ESU5HOgotICAgICAg
ICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfZG9tX3NwZWVjaF9zeW50aGVzaXNf
Z2V0X3BlbmRpbmcoc2VsZikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfU1BFQUtJ
Tkc6Ci0gICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF9kb21fc3BlZWNo
X3N5bnRoZXNpc19nZXRfc3BlYWtpbmcoc2VsZikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IFBST1BfUEFVU0VEOgotICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRf
ZG9tX3NwZWVjaF9zeW50aGVzaXNfZ2V0X3BhdXNlZChzZWxmKSk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGRlZmF1bHQ6Ci0gICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChv
YmplY3QsIHByb3BlcnR5SWQsIHBzcGVjKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotfQotCi1z
dGF0aWMgR09iamVjdCogd2Via2l0X2RvbV9zcGVlY2hfc3ludGhlc2lzX2NvbnN0cnVjdG9yKEdU
eXBlIHR5cGUsIGd1aW50IGNvbnN0cnVjdFByb3BlcnRpZXNDb3VudCwgR09iamVjdENvbnN0cnVj
dFBhcmFtKiBjb25zdHJ1Y3RQcm9wZXJ0aWVzKQotewotICAgIEdPYmplY3QqIG9iamVjdCA9IEdf
T0JKRUNUX0NMQVNTKHdlYmtpdF9kb21fc3BlZWNoX3N5bnRoZXNpc19wYXJlbnRfY2xhc3MpLT5j
b25zdHJ1Y3Rvcih0eXBlLCBjb25zdHJ1Y3RQcm9wZXJ0aWVzQ291bnQsIGNvbnN0cnVjdFByb3Bl
cnRpZXMpOwotI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQotICAgIFdlYktpdERPTVNwZWVj
aFN5bnRoZXNpc1ByaXZhdGUqIHByaXYgPSBXRUJLSVRfRE9NX1NQRUVDSF9TWU5USEVTSVNfR0VU
X1BSSVZBVEUob2JqZWN0KTsKLSAgICBwcml2LT5jb3JlT2JqZWN0ID0gc3RhdGljX2Nhc3Q8V2Vi
Q29yZTo6U3BlZWNoU3ludGhlc2lzKj4oV0VCS0lUX0RPTV9PQkpFQ1Qob2JqZWN0KS0+Y29yZU9i
amVjdCk7Ci0gICAgV2ViS2l0OjpET01PYmplY3RDYWNoZTo6cHV0KHByaXYtPmNvcmVPYmplY3Qu
Z2V0KCksIG9iamVjdCk7Ci0jZW5kaWYgLy8gRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCi0gICAg
cmV0dXJuIG9iamVjdDsKLX0KLQotc3RhdGljIHZvaWQgd2Via2l0X2RvbV9zcGVlY2hfc3ludGhl
c2lzX2NsYXNzX2luaXQoV2ViS2l0RE9NU3BlZWNoU3ludGhlc2lzQ2xhc3MqIHJlcXVlc3RDbGFz
cykKLXsKLSAgICBHT2JqZWN0Q2xhc3MqIGdvYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKHJl
cXVlc3RDbGFzcyk7Ci0gICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKGdvYmplY3RDbGFzcywg
c2l6ZW9mKFdlYktpdERPTVNwZWVjaFN5bnRoZXNpc1ByaXZhdGUpKTsKLSAgICBnb2JqZWN0Q2xh
c3MtPmNvbnN0cnVjdG9yID0gd2Via2l0X2RvbV9zcGVlY2hfc3ludGhlc2lzX2NvbnN0cnVjdG9y
OwotICAgIGdvYmplY3RDbGFzcy0+ZmluYWxpemUgPSB3ZWJraXRfZG9tX3NwZWVjaF9zeW50aGVz
aXNfZmluYWxpemU7Ci0gICAgZ29iamVjdENsYXNzLT5nZXRfcHJvcGVydHkgPSB3ZWJraXRfZG9t
X3NwZWVjaF9zeW50aGVzaXNfZ2V0X3Byb3BlcnR5OwotCi0gICAgZ19vYmplY3RfY2xhc3NfaW5z
dGFsbF9wcm9wZXJ0eSgKLSAgICAgICAgZ29iamVjdENsYXNzLAotICAgICAgICBQUk9QX1BFTkRJ
TkcsCi0gICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKAotICAgICAgICAgICAgInBlbmRpbmci
LAotICAgICAgICAgICAgIlNwZWVjaFN5bnRoZXNpczpwZW5kaW5nIiwKLSAgICAgICAgICAgICJy
ZWFkLW9ubHkgZ2Jvb2xlYW4gU3BlZWNoU3ludGhlc2lzOnBlbmRpbmciLAotICAgICAgICAgICAg
RkFMU0UsCi0gICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKLQotICAgIGdfb2Jq
ZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAg
ICAgUFJPUF9TUEVBS0lORywKLSAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oCi0gICAgICAg
ICAgICAic3BlYWtpbmciLAotICAgICAgICAgICAgIlNwZWVjaFN5bnRoZXNpczpzcGVha2luZyIs
Ci0gICAgICAgICAgICAicmVhZC1vbmx5IGdib29sZWFuIFNwZWVjaFN5bnRoZXNpczpzcGVha2lu
ZyIsCi0gICAgICAgICAgICBGQUxTRSwKLSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJM
RSkpOwotCi0gICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAgZ29i
amVjdENsYXNzLAotICAgICAgICBQUk9QX1BBVVNFRCwKLSAgICAgICAgZ19wYXJhbV9zcGVjX2Jv
b2xlYW4oCi0gICAgICAgICAgICAicGF1c2VkIiwKLSAgICAgICAgICAgICJTcGVlY2hTeW50aGVz
aXM6cGF1c2VkIiwKLSAgICAgICAgICAgICJyZWFkLW9ubHkgZ2Jvb2xlYW4gU3BlZWNoU3ludGhl
c2lzOnBhdXNlZCIsCi0gICAgICAgICAgICBGQUxTRSwKLSAgICAgICAgICAgIFdFQktJVF9QQVJB
TV9SRUFEQUJMRSkpOwotCi19Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdF9kb21fc3BlZWNoX3N5bnRo
ZXNpc19pbml0KFdlYktpdERPTVNwZWVjaFN5bnRoZXNpcyogcmVxdWVzdCkKLXsKLSAgICBXZWJL
aXRET01TcGVlY2hTeW50aGVzaXNQcml2YXRlKiBwcml2ID0gV0VCS0lUX0RPTV9TUEVFQ0hfU1lO
VEhFU0lTX0dFVF9QUklWQVRFKHJlcXVlc3QpOwotICAgIG5ldyAocHJpdikgV2ViS2l0RE9NU3Bl
ZWNoU3ludGhlc2lzUHJpdmF0ZSgpOwotfQotCi12b2lkIHdlYmtpdF9kb21fc3BlZWNoX3N5bnRo
ZXNpc19zcGVhayhXZWJLaXRET01TcGVlY2hTeW50aGVzaXMqIHNlbGYsIFdlYktpdERPTVNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZSogdXR0ZXJhbmNlKQotewotI2lmIEVOQUJMRShTUEVFQ0hfU1lO
VEhFU0lTKQotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBn
X3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfU1BFRUNIX1NZTlRIRVNJUyhzZWxmKSk7Ci0g
ICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX1NQRUVDSF9TWU5USEVTSVNfVVRURVJB
TkNFKHV0dGVyYW5jZSkpOwotICAgIFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpcyogaXRlbSA9IFdl
YktpdDo6Y29yZShzZWxmKTsKLSAgICBXZWJDb3JlOjpTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2Uq
IGNvbnZlcnRlZFV0dGVyYW5jZSA9IFdlYktpdDo6Y29yZSh1dHRlcmFuY2UpOwotICAgIGl0ZW0t
PnNwZWFrKCpjb252ZXJ0ZWRVdHRlcmFuY2UpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc2Vs
Zik7Ci0gICAgVU5VU0VEX1BBUkFNKHV0dGVyYW5jZSk7Ci0gICAgV0VCS0lUX1dBUk5fRkVBVFVS
RV9OT1RfUFJFU0VOVCgiU3BlZWNoIFN5bnRoZXNpcyIpCi0jZW5kaWYgLyogRU5BQkxFKFNQRUVD
SF9TWU5USEVTSVMpICovCi19Ci0KLXZvaWQgd2Via2l0X2RvbV9zcGVlY2hfc3ludGhlc2lzX2Nh
bmNlbChXZWJLaXRET01TcGVlY2hTeW50aGVzaXMqIHNlbGYpCi17Ci0jaWYgRU5BQkxFKFNQRUVD
SF9TWU5USEVTSVMpCi0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwot
ICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19TUEVFQ0hfU1lOVEhFU0lTKHNlbGYp
KTsKLSAgICBXZWJDb3JlOjpTcGVlY2hTeW50aGVzaXMqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2Vs
Zik7Ci0gICAgaXRlbS0+Y2FuY2VsKCk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShzZWxmKTsK
LSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJTcGVlY2ggU3ludGhlc2lzIikK
LSNlbmRpZiAvKiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykgKi8KLX0KLQotdm9pZCB3ZWJraXRf
ZG9tX3NwZWVjaF9zeW50aGVzaXNfcGF1c2UoV2ViS2l0RE9NU3BlZWNoU3ludGhlc2lzKiBzZWxm
KQotewotI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQotICAgIFdlYkNvcmU6OkpTTWFpblRo
cmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNf
U1BFRUNIX1NZTlRIRVNJUyhzZWxmKSk7Ci0gICAgV2ViQ29yZTo6U3BlZWNoU3ludGhlc2lzKiBp
dGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGl0ZW0tPnBhdXNlKCk7Ci0jZWxzZQotICAg
IFVOVVNFRF9QQVJBTShzZWxmKTsKLSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5U
KCJTcGVlY2ggU3ludGhlc2lzIikKLSNlbmRpZiAvKiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykg
Ki8KLX0KLQotdm9pZCB3ZWJraXRfZG9tX3NwZWVjaF9zeW50aGVzaXNfcmVzdW1lKFdlYktpdERP
TVNwZWVjaFN5bnRoZXNpcyogc2VsZikKLXsKLSNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykK
LSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5f
aWZfZmFpbChXRUJLSVRfRE9NX0lTX1NQRUVDSF9TWU5USEVTSVMoc2VsZikpOwotICAgIFdlYkNv
cmU6OlNwZWVjaFN5bnRoZXNpcyogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBpdGVt
LT5yZXN1bWUoKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHNlbGYpOwotICAgIFdFQktJVF9X
QVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIlNwZWVjaCBTeW50aGVzaXMiKQotI2VuZGlmIC8qIEVO
QUJMRShTUEVFQ0hfU1lOVEhFU0lTKSAqLwotfQotCi1nYm9vbGVhbiB3ZWJraXRfZG9tX3NwZWVj
aF9zeW50aGVzaXNfZ2V0X3BlbmRpbmcoV2ViS2l0RE9NU3BlZWNoU3ludGhlc2lzKiBzZWxmKQot
ewotI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQotICAgIFdlYkNvcmU6OkpTTWFpblRocmVh
ZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lT
X1NQRUVDSF9TWU5USEVTSVMoc2VsZiksIEZBTFNFKTsKLSAgICBXZWJDb3JlOjpTcGVlY2hTeW50
aGVzaXMqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ2Jvb2xlYW4gcmVzdWx0ID0g
aXRlbS0+cGVuZGluZygpOwotICAgIHJldHVybiByZXN1bHQ7Ci0jZWxzZQotICAgIFVOVVNFRF9Q
QVJBTShzZWxmKTsKLSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJTcGVlY2gg
U3ludGhlc2lzIikKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Z2Jvb2xlYW4+KDApOwotI2VuZGlm
IC8qIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKSAqLwotfQotCi1nYm9vbGVhbiB3ZWJraXRfZG9t
X3NwZWVjaF9zeW50aGVzaXNfZ2V0X3NwZWFraW5nKFdlYktpdERPTVNwZWVjaFN5bnRoZXNpcyog
c2VsZikKLXsKLSNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKLSAgICBXZWJDb3JlOjpKU01h
aW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lU
X0RPTV9JU19TUEVFQ0hfU1lOVEhFU0lTKHNlbGYpLCBGQUxTRSk7Ci0gICAgV2ViQ29yZTo6U3Bl
ZWNoU3ludGhlc2lzKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdib29sZWFuIHJl
c3VsdCA9IGl0ZW0tPnNwZWFraW5nKCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSNlbHNlCi0gICAg
VU5VU0VEX1BBUkFNKHNlbGYpOwotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQo
IlNwZWVjaCBTeW50aGVzaXMiKQotICAgIHJldHVybiBzdGF0aWNfY2FzdDxnYm9vbGVhbj4oMCk7
Ci0jZW5kaWYgLyogRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpICovCi19Ci0KLWdib29sZWFuIHdl
YmtpdF9kb21fc3BlZWNoX3N5bnRoZXNpc19nZXRfcGF1c2VkKFdlYktpdERPTVNwZWVjaFN5bnRo
ZXNpcyogc2VsZikKLXsKLSNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKLSAgICBXZWJDb3Jl
OjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwo
V0VCS0lUX0RPTV9JU19TUEVFQ0hfU1lOVEhFU0lTKHNlbGYpLCBGQUxTRSk7Ci0gICAgV2ViQ29y
ZTo6U3BlZWNoU3ludGhlc2lzKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdib29s
ZWFuIHJlc3VsdCA9IGl0ZW0tPnBhdXNlZCgpOwotICAgIHJldHVybiByZXN1bHQ7Ci0jZWxzZQot
ICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKLSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVT
RU5UKCJTcGVlY2ggU3ludGhlc2lzIikKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Z2Jvb2xlYW4+
KDApOwotI2VuZGlmIC8qIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKSAqLwotfQotCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9N
L1dlYktpdERPTVNwZWVjaFN5bnRoZXNpcy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01TcGVlY2hTeW50aGVzaXMuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGFlYjczNC4uMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVNw
ZWVjaFN5bnRoZXNpcy5oCisrKyAvZGV2L251bGwKQEAgLTEsMTIzICswLDAgQEAKLS8qCi0gKiAg
VGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICog
IFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERP
IE5PVCBNT0RJRlkhCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
LSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgV2ViS2l0RE9NU3BlZWNoU3ludGhlc2lz
X2gKLSNkZWZpbmUgV2ViS2l0RE9NU3BlZWNoU3ludGhlc2lzX2gKLQotI2lmZGVmIFdFQktJVF9E
T01fVVNFX1VOU1RBQkxFX0FQSQotCi0jaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KLSNpbmNsdWRl
IDx3ZWJraXRkb20vV2ViS2l0RE9NT2JqZWN0Lmg+Ci0jaW5jbHVkZSA8d2Via2l0ZG9tL3dlYmtp
dGRvbWRlZmluZXMtdW5zdGFibGUuaD4KLQotR19CRUdJTl9ERUNMUwotCi0jZGVmaW5lIFdFQktJ
VF9ET01fVFlQRV9TUEVFQ0hfU1lOVEhFU0lTICAgICAgICAgICAgKHdlYmtpdF9kb21fc3BlZWNo
X3N5bnRoZXNpc19nZXRfdHlwZSgpKQotI2RlZmluZSBXRUJLSVRfRE9NX1NQRUVDSF9TWU5USEVT
SVMob2JqKSAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwgV0VC
S0lUX0RPTV9UWVBFX1NQRUVDSF9TWU5USEVTSVMsIFdlYktpdERPTVNwZWVjaFN5bnRoZXNpcykp
Ci0jZGVmaW5lIFdFQktJVF9ET01fU1BFRUNIX1NZTlRIRVNJU19DTEFTUyhrbGFzcykgICAgKEdf
VFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksICBXRUJLSVRfRE9NX1RZUEVfU1BFRUNIX1NZ
TlRIRVNJUywgV2ViS2l0RE9NU3BlZWNoU3ludGhlc2lzQ2xhc3MpCi0jZGVmaW5lIFdFQktJVF9E
T01fSVNfU1BFRUNIX1NZTlRIRVNJUyhvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5D
RV9UWVBFKChvYmopLCBXRUJLSVRfRE9NX1RZUEVfU1BFRUNIX1NZTlRIRVNJUykpCi0jZGVmaW5l
IFdFQktJVF9ET01fSVNfU1BFRUNIX1NZTlRIRVNJU19DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVD
S19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfRE9NX1RZUEVfU1BFRUNIX1NZTlRIRVNJUykp
Ci0jZGVmaW5lIFdFQktJVF9ET01fU1BFRUNIX1NZTlRIRVNJU19HRVRfQ0xBU1Mob2JqKSAgKEdf
VFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksICBXRUJLSVRfRE9NX1RZUEVfU1BFRUNIX1NZ
TlRIRVNJUywgV2ViS2l0RE9NU3BlZWNoU3ludGhlc2lzQ2xhc3MpKQotCi1zdHJ1Y3QgX1dlYktp
dERPTVNwZWVjaFN5bnRoZXNpcyB7Ci0gICAgV2ViS2l0RE9NT2JqZWN0IHBhcmVudF9pbnN0YW5j
ZTsKLX07Ci0KLXN0cnVjdCBfV2ViS2l0RE9NU3BlZWNoU3ludGhlc2lzQ2xhc3MgewotICAgIFdl
YktpdERPTU9iamVjdENsYXNzIHBhcmVudF9jbGFzczsKLX07Ci0KLVdFQktJVF9BUEkgR1R5cGUK
LXdlYmtpdF9kb21fc3BlZWNoX3N5bnRoZXNpc19nZXRfdHlwZSh2b2lkKTsKLQotLyoqCi0gKiB3
ZWJraXRfZG9tX3NwZWVjaF9zeW50aGVzaXNfc3BlYWs6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9N
U3BlZWNoU3ludGhlc2lzCi0gKiBAdXR0ZXJhbmNlOiBBICNXZWJLaXRET01TcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2UKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkg
dm9pZAotd2Via2l0X2RvbV9zcGVlY2hfc3ludGhlc2lzX3NwZWFrKFdlYktpdERPTVNwZWVjaFN5
bnRoZXNpcyogc2VsZiwgV2ViS2l0RE9NU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKiB1dHRlcmFu
Y2UpOwotCi0vKioKLSAqIHdlYmtpdF9kb21fc3BlZWNoX3N5bnRoZXNpc19jYW5jZWw6Ci0gKiBA
c2VsZjogQSAjV2ViS2l0RE9NU3BlZWNoU3ludGhlc2lzCi0gKgotICogU3RhYmlsaXR5OiBVbnN0
YWJsZQotKiovCi1XRUJLSVRfQVBJIHZvaWQKLXdlYmtpdF9kb21fc3BlZWNoX3N5bnRoZXNpc19j
YW5jZWwoV2ViS2l0RE9NU3BlZWNoU3ludGhlc2lzKiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRf
ZG9tX3NwZWVjaF9zeW50aGVzaXNfcGF1c2U6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NU3BlZWNo
U3ludGhlc2lzCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIHZv
aWQKLXdlYmtpdF9kb21fc3BlZWNoX3N5bnRoZXNpc19wYXVzZShXZWJLaXRET01TcGVlY2hTeW50
aGVzaXMqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9kb21fc3BlZWNoX3N5bnRoZXNpc19yZXN1
bWU6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NU3BlZWNoU3ludGhlc2lzCi0gKgotICogU3RhYmls
aXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIHZvaWQKLXdlYmtpdF9kb21fc3BlZWNoX3N5
bnRoZXNpc19yZXN1bWUoV2ViS2l0RE9NU3BlZWNoU3ludGhlc2lzKiBzZWxmKTsKLQotLyoqCi0g
KiB3ZWJraXRfZG9tX3NwZWVjaF9zeW50aGVzaXNfZ2V0X3BlbmRpbmc6Ci0gKiBAc2VsZjogQSAj
V2ViS2l0RE9NU3BlZWNoU3ludGhlc2lzCi0gKgotICogUmV0dXJuczogQSAjZ2Jvb2xlYW4KLSAq
Ci0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgZ2Jvb2xlYW4KLXdlYmtp
dF9kb21fc3BlZWNoX3N5bnRoZXNpc19nZXRfcGVuZGluZyhXZWJLaXRET01TcGVlY2hTeW50aGVz
aXMqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9kb21fc3BlZWNoX3N5bnRoZXNpc19nZXRfc3Bl
YWtpbmc6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NU3BlZWNoU3ludGhlc2lzCi0gKgotICogUmV0
dXJuczogQSAjZ2Jvb2xlYW4KLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJ
VF9BUEkgZ2Jvb2xlYW4KLXdlYmtpdF9kb21fc3BlZWNoX3N5bnRoZXNpc19nZXRfc3BlYWtpbmco
V2ViS2l0RE9NU3BlZWNoU3ludGhlc2lzKiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX3Nw
ZWVjaF9zeW50aGVzaXNfZ2V0X3BhdXNlZDoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01TcGVlY2hT
eW50aGVzaXMKLSAqCi0gKiBSZXR1cm5zOiBBICNnYm9vbGVhbgotICoKLSAqIFN0YWJpbGl0eTog
VW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSBnYm9vbGVhbgotd2Via2l0X2RvbV9zcGVlY2hfc3lu
dGhlc2lzX2dldF9wYXVzZWQoV2ViS2l0RE9NU3BlZWNoU3ludGhlc2lzKiBzZWxmKTsKLQotR19F
TkRfREVDTFMKLQotI2VuZGlmIC8qIFdFQktJVF9ET01fVVNFX1VOU1RBQkxFX0FQSSAqLwotI2Vu
ZGlmIC8qIFdlYktpdERPTVNwZWVjaFN5bnRoZXNpc19oICovCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVNw
ZWVjaFN5bnRoZXNpc0V2ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NU3BlZWNoU3ludGhlc2lzRXZlbnQuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMjQyNjVlLi4wMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9N
U3BlZWNoU3ludGhlc2lzRXZlbnQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTc2ICswLDAgQEAK
LS8qCi0gKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9q
ZWN0LgotICogIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGlu
Z3MucGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICog
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJXZWJLaXRET01TcGVlY2hTeW50aGVzaXNFdmVudC5oIgotCi0jaW5jbHVkZSA8V2Vi
Q29yZS9DU1NJbXBvcnRSdWxlLmg+Ci0jaW5jbHVkZSAiRE9NT2JqZWN0Q2FjaGUuaCIKLSNpbmNs
dWRlIDxXZWJDb3JlL0RvY3VtZW50Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9FeGNlcHRpb25Db2Rl
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9FeGNlcHRpb25Db2RlRGVzY3JpcHRpb24uaD4KLSNpbmNs
dWRlIDxXZWJDb3JlL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5oPgotI2luY2x1ZGUgIldlYktpdERP
TUV2ZW50UHJpdmF0ZS5oIgotI2luY2x1ZGUgIldlYktpdERPTVByaXZhdGUuaCIKLSNpbmNsdWRl
ICJXZWJLaXRET01TcGVlY2hTeW50aGVzaXNFdmVudFByaXZhdGUuaCIKLSNpbmNsdWRlICJDb252
ZXJ0VG9VVEY4U3RyaW5nLmgiCi0jaW5jbHVkZSA8d3RmL0dldFB0ci5oPgotI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KLQotI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQotCi1uYW1lc3BhY2Ug
V2ViS2l0IHsKLQotV2ViS2l0RE9NU3BlZWNoU3ludGhlc2lzRXZlbnQqIGtpdChXZWJDb3JlOjpT
cGVlY2hTeW50aGVzaXNFdmVudCogb2JqKQotewotICAgIHJldHVybiBXRUJLSVRfRE9NX1NQRUVD
SF9TWU5USEVTSVNfRVZFTlQoa2l0KHN0YXRpY19jYXN0PFdlYkNvcmU6OkV2ZW50Kj4ob2JqKSkp
OwotfQotCi1XZWJDb3JlOjpTcGVlY2hTeW50aGVzaXNFdmVudCogY29yZShXZWJLaXRET01TcGVl
Y2hTeW50aGVzaXNFdmVudCogcmVxdWVzdCkKLXsKLSAgICByZXR1cm4gcmVxdWVzdCA/IHN0YXRp
Y19jYXN0PFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpc0V2ZW50Kj4oV0VCS0lUX0RPTV9PQkpFQ1Qo
cmVxdWVzdCktPmNvcmVPYmplY3QpIDogMDsKLX0KLQotV2ViS2l0RE9NU3BlZWNoU3ludGhlc2lz
RXZlbnQqIHdyYXBTcGVlY2hTeW50aGVzaXNFdmVudChXZWJDb3JlOjpTcGVlY2hTeW50aGVzaXNF
dmVudCogY29yZU9iamVjdCkKLXsKLSAgICBBU1NFUlQoY29yZU9iamVjdCk7Ci0gICAgcmV0dXJu
IFdFQktJVF9ET01fU1BFRUNIX1NZTlRIRVNJU19FVkVOVChnX29iamVjdF9uZXcoV0VCS0lUX0RP
TV9UWVBFX1NQRUVDSF9TWU5USEVTSVNfRVZFTlQsICJjb3JlLW9iamVjdCIsIGNvcmVPYmplY3Qs
IG51bGxwdHIpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFC
TEUoU1BFRUNIX1NZTlRIRVNJUykKLQotR19ERUZJTkVfVFlQRShXZWJLaXRET01TcGVlY2hTeW50
aGVzaXNFdmVudCwgd2Via2l0X2RvbV9zcGVlY2hfc3ludGhlc2lzX2V2ZW50LCBXRUJLSVRfRE9N
X1RZUEVfRVZFTlQpCi0KLWVudW0gewotICAgIFBST1BfMCwKLSAgICBQUk9QX0NIQVJfSU5ERVgs
Ci0gICAgUFJPUF9FTEFQU0VEX1RJTUUsCi0gICAgUFJPUF9OQU1FLAotfTsKLQotc3RhdGljIHZv
aWQgd2Via2l0X2RvbV9zcGVlY2hfc3ludGhlc2lzX2V2ZW50X2dldF9wcm9wZXJ0eShHT2JqZWN0
KiBvYmplY3QsIGd1aW50IHByb3BlcnR5SWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBz
cGVjKQotewotICAgIFdlYktpdERPTVNwZWVjaFN5bnRoZXNpc0V2ZW50KiBzZWxmID0gV0VCS0lU
X0RPTV9TUEVFQ0hfU1lOVEhFU0lTX0VWRU5UKG9iamVjdCk7Ci0KLSAgICBzd2l0Y2ggKHByb3Bl
cnR5SWQpIHsKLSAgICBjYXNlIFBST1BfQ0hBUl9JTkRFWDoKLSAgICAgICAgZ192YWx1ZV9zZXRf
dWxvbmcodmFsdWUsIHdlYmtpdF9kb21fc3BlZWNoX3N5bnRoZXNpc19ldmVudF9nZXRfY2hhcl9p
bmRleChzZWxmKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9FTEFQU0VEX1RJTUU6
Ci0gICAgICAgIGdfdmFsdWVfc2V0X2Zsb2F0KHZhbHVlLCB3ZWJraXRfZG9tX3NwZWVjaF9zeW50
aGVzaXNfZXZlbnRfZ2V0X2VsYXBzZWRfdGltZShzZWxmKSk7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgUFJPUF9OQU1FOgotICAgICAgICBnX3ZhbHVlX3Rha2Vfc3RyaW5nKHZhbHVlLCB3ZWJr
aXRfZG9tX3NwZWVjaF9zeW50aGVzaXNfZXZlbnRfZ2V0X25hbWUoc2VsZikpOwotICAgICAgICBi
cmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVS
VFlfSUQob2JqZWN0LCBwcm9wZXJ0eUlkLCBwc3BlYyk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0K
LX0KLQotc3RhdGljIHZvaWQgd2Via2l0X2RvbV9zcGVlY2hfc3ludGhlc2lzX2V2ZW50X2NsYXNz
X2luaXQoV2ViS2l0RE9NU3BlZWNoU3ludGhlc2lzRXZlbnRDbGFzcyogcmVxdWVzdENsYXNzKQot
ewotICAgIEdPYmplY3RDbGFzcyogZ29iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1MocmVxdWVz
dENsYXNzKTsKLSAgICBnb2JqZWN0Q2xhc3MtPmdldF9wcm9wZXJ0eSA9IHdlYmtpdF9kb21fc3Bl
ZWNoX3N5bnRoZXNpc19ldmVudF9nZXRfcHJvcGVydHk7Ci0KLSAgICBnX29iamVjdF9jbGFzc19p
bnN0YWxsX3Byb3BlcnR5KAotICAgICAgICBnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBST1BfQ0hB
Ul9JTkRFWCwKLSAgICAgICAgZ19wYXJhbV9zcGVjX3Vsb25nKAotICAgICAgICAgICAgImNoYXIt
aW5kZXgiLAotICAgICAgICAgICAgIlNwZWVjaFN5bnRoZXNpc0V2ZW50OmNoYXItaW5kZXgiLAot
ICAgICAgICAgICAgInJlYWQtb25seSBndWxvbmcgU3BlZWNoU3ludGhlc2lzRXZlbnQ6Y2hhci1p
bmRleCIsCi0gICAgICAgICAgICAwLCBHX01BWFVMT05HLCAwLAotICAgICAgICAgICAgV0VCS0lU
X1BBUkFNX1JFQURBQkxFKSk7Ci0KLSAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5
KAotICAgICAgICBnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBST1BfRUxBUFNFRF9USU1FLAotICAg
ICAgICBnX3BhcmFtX3NwZWNfZmxvYXQoCi0gICAgICAgICAgICAiZWxhcHNlZC10aW1lIiwKLSAg
ICAgICAgICAgICJTcGVlY2hTeW50aGVzaXNFdmVudDplbGFwc2VkLXRpbWUiLAotICAgICAgICAg
ICAgInJlYWQtb25seSBnZmxvYXQgU3BlZWNoU3ludGhlc2lzRXZlbnQ6ZWxhcHNlZC10aW1lIiwK
LSAgICAgICAgICAgIC1HX01BWEZMT0FULCBHX01BWEZMT0FULCAwLAotICAgICAgICAgICAgV0VC
S0lUX1BBUkFNX1JFQURBQkxFKSk7Ci0KLSAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3Bl
cnR5KAotICAgICAgICBnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBST1BfTkFNRSwKLSAgICAgICAg
Z19wYXJhbV9zcGVjX3N0cmluZygKLSAgICAgICAgICAgICJuYW1lIiwKLSAgICAgICAgICAgICJT
cGVlY2hTeW50aGVzaXNFdmVudDpuYW1lIiwKLSAgICAgICAgICAgICJyZWFkLW9ubHkgZ2NoYXIq
IFNwZWVjaFN5bnRoZXNpc0V2ZW50Om5hbWUiLAotICAgICAgICAgICAgIiIsCi0gICAgICAgICAg
ICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKLQotfQotCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9t
X3NwZWVjaF9zeW50aGVzaXNfZXZlbnRfaW5pdChXZWJLaXRET01TcGVlY2hTeW50aGVzaXNFdmVu
dCogcmVxdWVzdCkKLXsKLSAgICBVTlVTRURfUEFSQU0ocmVxdWVzdCk7Ci19Ci0KLWd1bG9uZyB3
ZWJraXRfZG9tX3NwZWVjaF9zeW50aGVzaXNfZXZlbnRfZ2V0X2NoYXJfaW5kZXgoV2ViS2l0RE9N
U3BlZWNoU3ludGhlc2lzRXZlbnQqIHNlbGYpCi17Ci0jaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVT
SVMpCi0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0
dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfU1BFRUNIX1NZTlRIRVNJU19FVkVOVChzZWxm
KSwgMCk7Ci0gICAgV2ViQ29yZTo6U3BlZWNoU3ludGhlc2lzRXZlbnQqIGl0ZW0gPSBXZWJLaXQ6
OmNvcmUoc2VsZik7Ci0gICAgZ3Vsb25nIHJlc3VsdCA9IGl0ZW0tPmNoYXJJbmRleCgpOwotICAg
IHJldHVybiByZXN1bHQ7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKLSAgICBXRUJL
SVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJTcGVlY2ggU3ludGhlc2lzIikKLSAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8Z3Vsb25nPigwKTsKLSNlbmRpZiAvKiBFTkFCTEUoU1BFRUNIX1NZTlRI
RVNJUykgKi8KLX0KLQotZ2Zsb2F0IHdlYmtpdF9kb21fc3BlZWNoX3N5bnRoZXNpc19ldmVudF9n
ZXRfZWxhcHNlZF90aW1lKFdlYktpdERPTVNwZWVjaFN5bnRoZXNpc0V2ZW50KiBzZWxmKQotewot
I2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51
bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX1NQ
RUVDSF9TWU5USEVTSVNfRVZFTlQoc2VsZiksIDApOwotICAgIFdlYkNvcmU6OlNwZWVjaFN5bnRo
ZXNpc0V2ZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdmbG9hdCByZXN1bHQg
PSBpdGVtLT5lbGFwc2VkVGltZSgpOwotICAgIHJldHVybiByZXN1bHQ7Ci0jZWxzZQotICAgIFVO
VVNFRF9QQVJBTShzZWxmKTsKLSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJT
cGVlY2ggU3ludGhlc2lzIikKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Z2Zsb2F0PigwKTsKLSNl
bmRpZiAvKiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykgKi8KLX0KLQotZ2NoYXIqIHdlYmtpdF9k
b21fc3BlZWNoX3N5bnRoZXNpc19ldmVudF9nZXRfbmFtZShXZWJLaXRET01TcGVlY2hTeW50aGVz
aXNFdmVudCogc2VsZikKLXsKLSNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKLSAgICBXZWJD
b3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwoV0VCS0lUX0RPTV9JU19TUEVFQ0hfU1lOVEhFU0lTX0VWRU5UKHNlbGYpLCAwKTsKLSAgICBX
ZWJDb3JlOjpTcGVlY2hTeW50aGVzaXNFdmVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsK
LSAgICBnY2hhciogcmVzdWx0ID0gY29udmVydFRvVVRGOFN0cmluZyhpdGVtLT5uYW1lKCkpOwot
ICAgIHJldHVybiByZXN1bHQ7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKLSAgICBX
RUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJTcGVlY2ggU3ludGhlc2lzIikKLSAgICBy
ZXR1cm4gMDsKLSNlbmRpZiAvKiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykgKi8KLX0KLQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3Rr
L0RPTS9XZWJLaXRET01TcGVlY2hTeW50aGVzaXNFdmVudC5oIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01TcGVlY2hTeW50aGVz
aXNFdmVudC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhM2E3ZjEzLi4wMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9E
T00vV2ViS2l0RE9NU3BlZWNoU3ludGhlc2lzRXZlbnQuaAorKysgL2Rldi9udWxsCkBAIC0xLDg2
ICswLDAgQEAKLS8qCi0gKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNv
dXJjZSBwcm9qZWN0LgotICogIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJh
dGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICog
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgot
ICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgV2ViS2l0
RE9NU3BlZWNoU3ludGhlc2lzRXZlbnRfaAotI2RlZmluZSBXZWJLaXRET01TcGVlY2hTeW50aGVz
aXNFdmVudF9oCi0KLSNpZmRlZiBXRUJLSVRfRE9NX1VTRV9VTlNUQUJMRV9BUEkKLQotI2luY2x1
ZGUgPGdsaWItb2JqZWN0Lmg+Ci0jaW5jbHVkZSA8d2Via2l0ZG9tL1dlYktpdERPTUV2ZW50Lmg+
Ci0jaW5jbHVkZSA8d2Via2l0ZG9tL3dlYmtpdGRvbWRlZmluZXMtdW5zdGFibGUuaD4KLQotR19C
RUdJTl9ERUNMUwotCi0jZGVmaW5lIFdFQktJVF9ET01fVFlQRV9TUEVFQ0hfU1lOVEhFU0lTX0VW
RU5UICAgICAgICAgICAgKHdlYmtpdF9kb21fc3BlZWNoX3N5bnRoZXNpc19ldmVudF9nZXRfdHlw
ZSgpKQotI2RlZmluZSBXRUJLSVRfRE9NX1NQRUVDSF9TWU5USEVTSVNfRVZFTlQob2JqKSAgICAg
ICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwgV0VCS0lUX0RPTV9UWVBF
X1NQRUVDSF9TWU5USEVTSVNfRVZFTlQsIFdlYktpdERPTVNwZWVjaFN5bnRoZXNpc0V2ZW50KSkK
LSNkZWZpbmUgV0VCS0lUX0RPTV9TUEVFQ0hfU1lOVEhFU0lTX0VWRU5UX0NMQVNTKGtsYXNzKSAg
ICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJVF9ET01fVFlQRV9TUEVF
Q0hfU1lOVEhFU0lTX0VWRU5ULCBXZWJLaXRET01TcGVlY2hTeW50aGVzaXNFdmVudENsYXNzKQot
I2RlZmluZSBXRUJLSVRfRE9NX0lTX1NQRUVDSF9TWU5USEVTSVNfRVZFTlQob2JqKSAgICAgICAg
IChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX0RPTV9UWVBFX1NQRUVD
SF9TWU5USEVTSVNfRVZFTlQpKQotI2RlZmluZSBXRUJLSVRfRE9NX0lTX1NQRUVDSF9TWU5USEVT
SVNfRVZFTlRfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAg
V0VCS0lUX0RPTV9UWVBFX1NQRUVDSF9TWU5USEVTSVNfRVZFTlQpKQotI2RlZmluZSBXRUJLSVRf
RE9NX1NQRUVDSF9TWU5USEVTSVNfRVZFTlRfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFO
Q0VfR0VUX0NMQVNTKChvYmopLCAgV0VCS0lUX0RPTV9UWVBFX1NQRUVDSF9TWU5USEVTSVNfRVZF
TlQsIFdlYktpdERPTVNwZWVjaFN5bnRoZXNpc0V2ZW50Q2xhc3MpKQotCi1zdHJ1Y3QgX1dlYktp
dERPTVNwZWVjaFN5bnRoZXNpc0V2ZW50IHsKLSAgICBXZWJLaXRET01FdmVudCBwYXJlbnRfaW5z
dGFuY2U7Ci19OwotCi1zdHJ1Y3QgX1dlYktpdERPTVNwZWVjaFN5bnRoZXNpc0V2ZW50Q2xhc3Mg
ewotICAgIFdlYktpdERPTUV2ZW50Q2xhc3MgcGFyZW50X2NsYXNzOwotfTsKLQotV0VCS0lUX0FQ
SSBHVHlwZQotd2Via2l0X2RvbV9zcGVlY2hfc3ludGhlc2lzX2V2ZW50X2dldF90eXBlKHZvaWQp
OwotCi0vKioKLSAqIHdlYmtpdF9kb21fc3BlZWNoX3N5bnRoZXNpc19ldmVudF9nZXRfY2hhcl9p
bmRleDoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01TcGVlY2hTeW50aGVzaXNFdmVudAotICoKLSAq
IFJldHVybnM6IEEgI2d1bG9uZwotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VC
S0lUX0FQSSBndWxvbmcKLXdlYmtpdF9kb21fc3BlZWNoX3N5bnRoZXNpc19ldmVudF9nZXRfY2hh
cl9pbmRleChXZWJLaXRET01TcGVlY2hTeW50aGVzaXNFdmVudCogc2VsZik7Ci0KLS8qKgotICog
d2Via2l0X2RvbV9zcGVlY2hfc3ludGhlc2lzX2V2ZW50X2dldF9lbGFwc2VkX3RpbWU6Ci0gKiBA
c2VsZjogQSAjV2ViS2l0RE9NU3BlZWNoU3ludGhlc2lzRXZlbnQKLSAqCi0gKiBSZXR1cm5zOiBB
ICNnZmxvYXQKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgZ2Zs
b2F0Ci13ZWJraXRfZG9tX3NwZWVjaF9zeW50aGVzaXNfZXZlbnRfZ2V0X2VsYXBzZWRfdGltZShX
ZWJLaXRET01TcGVlY2hTeW50aGVzaXNFdmVudCogc2VsZik7Ci0KLS8qKgotICogd2Via2l0X2Rv
bV9zcGVlY2hfc3ludGhlc2lzX2V2ZW50X2dldF9uYW1lOgotICogQHNlbGY6IEEgI1dlYktpdERP
TVNwZWVjaFN5bnRoZXNpc0V2ZW50Ci0gKgotICogUmV0dXJuczogQSAjZ2NoYXIKLSAqCi0gKiBT
dGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgZ2NoYXIqCi13ZWJraXRfZG9tX3Nw
ZWVjaF9zeW50aGVzaXNfZXZlbnRfZ2V0X25hbWUoV2ViS2l0RE9NU3BlZWNoU3ludGhlc2lzRXZl
bnQqIHNlbGYpOwotCi1HX0VORF9ERUNMUwotCi0jZW5kaWYgLyogV0VCS0lUX0RPTV9VU0VfVU5T
VEFCTEVfQVBJICovCi0jZW5kaWYgLyogV2ViS2l0RE9NU3BlZWNoU3ludGhlc2lzRXZlbnRfaCAq
LwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ3RrL0RPTS9XZWJLaXRET01TcGVlY2hTeW50aGVzaXNFdmVudFByaXZhdGUuaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9N
U3BlZWNoU3ludGhlc2lzRXZlbnRQcml2YXRlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDFjMzM2YTguLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01TcGVlY2hTeW50aGVzaXNFdmVudFByaXZh
dGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLS8qCi0gKiAgVGhpcyBmaWxlIGlz
IHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICogIFRoaXMgZmlsZSBo
YXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkh
Ci0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAg
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgotICovCi0KLSNpZm5kZWYgV2ViS2l0RE9NU3BlZWNoU3ludGhlc2lzRXZlbnRQcml2YXRl
X2gKLSNkZWZpbmUgV2ViS2l0RE9NU3BlZWNoU3ludGhlc2lzRXZlbnRQcml2YXRlX2gKLQotI2lu
Y2x1ZGUgPFdlYkNvcmUvU3BlZWNoU3ludGhlc2lzRXZlbnQuaD4KLSNpbmNsdWRlIDx3ZWJraXRk
b20vV2ViS2l0RE9NU3BlZWNoU3ludGhlc2lzRXZlbnQuaD4KLSNpZiBFTkFCTEUoU1BFRUNIX1NZ
TlRIRVNJUykKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci1XZWJLaXRET01TcGVlY2hTeW50aGVzaXNF
dmVudCogd3JhcFNwZWVjaFN5bnRoZXNpc0V2ZW50KFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpc0V2
ZW50Kik7Ci1XZWJLaXRET01TcGVlY2hTeW50aGVzaXNFdmVudCoga2l0KFdlYkNvcmU6OlNwZWVj
aFN5bnRoZXNpc0V2ZW50Kik7Ci1XZWJDb3JlOjpTcGVlY2hTeW50aGVzaXNFdmVudCogY29yZShX
ZWJLaXRET01TcGVlY2hTeW50aGVzaXNFdmVudCopOwotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0K
LSNlbmRpZiAvKiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykgKi8KLQotI2VuZGlmIC8qIFdlYktp
dERPTVNwZWVjaFN5bnRoZXNpc0V2ZW50UHJpdmF0ZV9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVNw
ZWVjaFN5bnRoZXNpc1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NU3BlZWNoU3ludGhlc2lzUHJpdmF0ZS5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MTNiZDY5Li4wMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9N
U3BlZWNoU3ludGhlc2lzUHJpdmF0ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAot
LyoKLSAqICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2pl
Y3QuCi0gKiAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5n
cy5wbC4gRE8gTk9UIE1PRElGWSEKLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAg
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiAgQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBXZWJLaXRET01TcGVlY2hT
eW50aGVzaXNQcml2YXRlX2gKLSNkZWZpbmUgV2ViS2l0RE9NU3BlZWNoU3ludGhlc2lzUHJpdmF0
ZV9oCi0KLSNpbmNsdWRlIDxXZWJDb3JlL1NwZWVjaFN5bnRoZXNpcy5oPgotI2luY2x1ZGUgPHdl
YmtpdGRvbS9XZWJLaXRET01TcGVlY2hTeW50aGVzaXMuaD4KLSNpZiBFTkFCTEUoU1BFRUNIX1NZ
TlRIRVNJUykKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci1XZWJLaXRET01TcGVlY2hTeW50aGVzaXMq
IHdyYXBTcGVlY2hTeW50aGVzaXMoV2ViQ29yZTo6U3BlZWNoU3ludGhlc2lzKik7Ci1XZWJLaXRE
T01TcGVlY2hTeW50aGVzaXMqIGtpdChXZWJDb3JlOjpTcGVlY2hTeW50aGVzaXMqKTsKLVdlYkNv
cmU6OlNwZWVjaFN5bnRoZXNpcyogY29yZShXZWJLaXRET01TcGVlY2hTeW50aGVzaXMqKTsKLX0g
Ly8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLyogRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMp
ICovCi0KLSNlbmRpZiAvKiBXZWJLaXRET01TcGVlY2hTeW50aGVzaXNQcml2YXRlX2ggKi8KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0
ay9ET00vV2ViS2l0RE9NU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDBh
NGU4My4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSw0ODMgKzAsMCBAQAotLyoKLSAqICBUaGlzIGZpbGUgaXMgcGFydCBv
ZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCi0gKiAgVGhpcyBmaWxlIGhhcyBiZWVu
IGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKLSAqCi0g
KiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAq
ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqICBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYktpdERPTVNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZS5oIgotCi0jaW5jbHVkZSA8V2ViQ29yZS9DU1NJbXBvcnRSdWxlLmg+Ci0j
aW5jbHVkZSAiRE9NT2JqZWN0Q2FjaGUuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50Lmg+
Ci0jaW5jbHVkZSA8V2ViQ29yZS9FeGNlcHRpb25Db2RlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9F
eGNlcHRpb25Db2RlRGVzY3JpcHRpb24uaD4KLSNpbmNsdWRlICJHT2JqZWN0RXZlbnRMaXN0ZW5l
ci5oIgotI2luY2x1ZGUgPFdlYkNvcmUvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmg+Ci0jaW5jbHVk
ZSAiV2ViS2l0RE9NRXZlbnRQcml2YXRlLmgiCi0jaW5jbHVkZSAiV2ViS2l0RE9NRXZlbnRUYXJn
ZXQuaCIKLSNpbmNsdWRlICJXZWJLaXRET01Qcml2YXRlLmgiCi0jaW5jbHVkZSAiV2ViS2l0RE9N
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlUHJpdmF0ZS5oIgotI2luY2x1ZGUgIldlYktpdERPTVNw
ZWVjaFN5bnRoZXNpc1ZvaWNlUHJpdmF0ZS5oIgotI2luY2x1ZGUgIkNvbnZlcnRUb1VURjhTdHJp
bmcuaCIKLSNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgot
Ci0jZGVmaW5lIFdFQktJVF9ET01fU1BFRUNIX1NZTlRIRVNJU19VVFRFUkFOQ0VfR0VUX1BSSVZB
VEUob2JqKSBHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUob2JqLCBXRUJLSVRfRE9NX1RZUEVf
U1BFRUNIX1NZTlRIRVNJU19VVFRFUkFOQ0UsIFdlYktpdERPTVNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZVByaXZhdGUpCi0KLXR5cGVkZWYgc3RydWN0IF9XZWJLaXRET01TcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2VQcml2YXRlIHsKLSNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKLSAgICBSZWZQ
dHI8V2ViQ29yZTo6U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiBjb3JlT2JqZWN0OwotI2VuZGlm
IC8vIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQotfSBXZWJLaXRET01TcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2VQcml2YXRlOwotCi0jaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCi0KLW5hbWVz
cGFjZSBXZWJLaXQgewotCi1XZWJLaXRET01TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqIGtpdChX
ZWJDb3JlOjpTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqIG9iaikKLXsKLSAgICBpZiAoIW9iaikK
LSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBpZiAoZ3BvaW50ZXIgcmV0ID0gRE9NT2JqZWN0Q2Fj
aGU6OmdldChvYmopKQotICAgICAgICByZXR1cm4gV0VCS0lUX0RPTV9TUEVFQ0hfU1lOVEhFU0lT
X1VUVEVSQU5DRShyZXQpOwotCi0gICAgcmV0dXJuIHdyYXBTcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2Uob2JqKTsKLX0KLQotV2ViQ29yZTo6U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKiBjb3JlKFdl
YktpdERPTVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSogcmVxdWVzdCkKLXsKLSAgICByZXR1cm4g
cmVxdWVzdCA/IHN0YXRpY19jYXN0PFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSo+
KFdFQktJVF9ET01fT0JKRUNUKHJlcXVlc3QpLT5jb3JlT2JqZWN0KSA6IDA7Ci19Ci0KLVdlYktp
dERPTVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSogd3JhcFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZShXZWJDb3JlOjpTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqIGNvcmVPYmplY3QpCi17Ci0gICAg
QVNTRVJUKGNvcmVPYmplY3QpOwotICAgIHJldHVybiBXRUJLSVRfRE9NX1NQRUVDSF9TWU5USEVT
SVNfVVRURVJBTkNFKGdfb2JqZWN0X25ldyhXRUJLSVRfRE9NX1RZUEVfU1BFRUNIX1NZTlRIRVNJ
U19VVFRFUkFOQ0UsICJjb3JlLW9iamVjdCIsIGNvcmVPYmplY3QsIG51bGxwdHIpKTsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJ
UykKLQotc3RhdGljIGdib29sZWFuIHdlYmtpdF9kb21fc3BlZWNoX3N5bnRoZXNpc191dHRlcmFu
Y2VfZGlzcGF0Y2hfZXZlbnQoV2ViS2l0RE9NRXZlbnRUYXJnZXQqIHRhcmdldCwgV2ViS2l0RE9N
RXZlbnQqIGV2ZW50LCBHRXJyb3IqKiBlcnJvcikKLXsKLSNpZiBFTkFCTEUoU1BFRUNIX1NZTlRI
RVNJUykKLSAgICBXZWJDb3JlOjpFdmVudCogY29yZUV2ZW50ID0gV2ViS2l0Ojpjb3JlKGV2ZW50
KTsKLSAgICBpZiAoIWNvcmVFdmVudCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIFdlYkNv
cmU6OlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSogY29yZVRhcmdldCA9IHN0YXRpY19jYXN0PFdl
YkNvcmU6OlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSo+KFdFQktJVF9ET01fT0JKRUNUKHRhcmdl
dCktPmNvcmVPYmplY3QpOwotCi0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0g
ICAgZ2Jvb2xlYW4gcmVzdWx0ID0gY29yZVRhcmdldC0+ZGlzcGF0Y2hFdmVudEZvckJpbmRpbmdz
KCpjb3JlRXZlbnQsIGVjKTsKLSAgICBpZiAoZWMpIHsKLSAgICAgICAgV2ViQ29yZTo6RXhjZXB0
aW9uQ29kZURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKGVjKTsKLSAgICAgICAgZ19zZXRfZXJyb3Jf
bGl0ZXJhbChlcnJvciwgZ19xdWFya19mcm9tX3N0cmluZygiV0VCS0lUX0RPTSIpLCBkZXNjcmlw
dGlvbi5jb2RlLCBkZXNjcmlwdGlvbi5uYW1lKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7Ci0gICAgVU5VU0VEX1BBUkFNKGV2ZW50
KTsKLSAgICBVTlVTRURfUEFSQU0oZXJyb3IpOwotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9U
X1BSRVNFTlQoIlNwZWVjaCBTeW50aGVzaXMiKQotICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZiAv
LyBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKLX0KLQotc3RhdGljIGdib29sZWFuIHdlYmtpdF9k
b21fc3BlZWNoX3N5bnRoZXNpc191dHRlcmFuY2VfYWRkX2V2ZW50X2xpc3RlbmVyKFdlYktpdERP
TUV2ZW50VGFyZ2V0KiB0YXJnZXQsIGNvbnN0IGNoYXIqIGV2ZW50TmFtZSwgR0Nsb3N1cmUqIGhh
bmRsZXIsIGdib29sZWFuIHVzZUNhcHR1cmUpCi17Ci0jaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVT
SVMpCi0gICAgV2ViQ29yZTo6U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKiBjb3JlVGFyZ2V0ID0g
c3RhdGljX2Nhc3Q8V2ViQ29yZTo6U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKj4oV0VCS0lUX0RP
TV9PQkpFQ1QodGFyZ2V0KS0+Y29yZU9iamVjdCk7Ci0gICAgcmV0dXJuIFdlYktpdDo6R09iamVj
dEV2ZW50TGlzdGVuZXI6OmFkZEV2ZW50TGlzdGVuZXIoR19PQkpFQ1QodGFyZ2V0KSwgY29yZVRh
cmdldCwgZXZlbnROYW1lLCBoYW5kbGVyLCB1c2VDYXB0dXJlKTsKLSNlbHNlCi0gICAgVU5VU0VE
X1BBUkFNKHRhcmdldCk7Ci0gICAgVU5VU0VEX1BBUkFNKGV2ZW50TmFtZSk7Ci0gICAgVU5VU0VE
X1BBUkFNKGhhbmRsZXIpOwotICAgIFVOVVNFRF9QQVJBTSh1c2VDYXB0dXJlKTsKLSAgICBXRUJL
SVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJTcGVlY2ggU3ludGhlc2lzIikKLSAgICByZXR1
cm4gZmFsc2U7Ci0jZW5kaWYgLy8gRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCi19Ci0KLXN0YXRp
YyBnYm9vbGVhbiB3ZWJraXRfZG9tX3NwZWVjaF9zeW50aGVzaXNfdXR0ZXJhbmNlX3JlbW92ZV9l
dmVudF9saXN0ZW5lcihXZWJLaXRET01FdmVudFRhcmdldCogdGFyZ2V0LCBjb25zdCBjaGFyKiBl
dmVudE5hbWUsIEdDbG9zdXJlKiBoYW5kbGVyLCBnYm9vbGVhbiB1c2VDYXB0dXJlKQotewotI2lm
IEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQotICAgIFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZSogY29yZVRhcmdldCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNp
c1V0dGVyYW5jZSo+KFdFQktJVF9ET01fT0JKRUNUKHRhcmdldCktPmNvcmVPYmplY3QpOwotICAg
IHJldHVybiBXZWJLaXQ6OkdPYmplY3RFdmVudExpc3RlbmVyOjpyZW1vdmVFdmVudExpc3RlbmVy
KEdfT0JKRUNUKHRhcmdldCksIGNvcmVUYXJnZXQsIGV2ZW50TmFtZSwgaGFuZGxlciwgdXNlQ2Fw
dHVyZSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTSh0YXJnZXQpOwotICAgIFVOVVNFRF9QQVJB
TShldmVudE5hbWUpOwotICAgIFVOVVNFRF9QQVJBTShoYW5kbGVyKTsKLSAgICBVTlVTRURfUEFS
QU0odXNlQ2FwdHVyZSk7Ci0gICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiU3Bl
ZWNoIFN5bnRoZXNpcyIpCi0gICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmIC8vIEVOQUJMRShTUEVF
Q0hfU1lOVEhFU0lTKQotfQotCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX2V2ZW50X3RhcmdldF9p
bml0KFdlYktpdERPTUV2ZW50VGFyZ2V0SWZhY2UqIGlmYWNlKQotewotICAgIGlmYWNlLT5kaXNw
YXRjaF9ldmVudCA9IHdlYmtpdF9kb21fc3BlZWNoX3N5bnRoZXNpc191dHRlcmFuY2VfZGlzcGF0
Y2hfZXZlbnQ7Ci0gICAgaWZhY2UtPmFkZF9ldmVudF9saXN0ZW5lciA9IHdlYmtpdF9kb21fc3Bl
ZWNoX3N5bnRoZXNpc191dHRlcmFuY2VfYWRkX2V2ZW50X2xpc3RlbmVyOwotICAgIGlmYWNlLT5y
ZW1vdmVfZXZlbnRfbGlzdGVuZXIgPSB3ZWJraXRfZG9tX3NwZWVjaF9zeW50aGVzaXNfdXR0ZXJh
bmNlX3JlbW92ZV9ldmVudF9saXN0ZW5lcjsKLX0KLQotR19ERUZJTkVfVFlQRV9XSVRIX0NPREUo
V2ViS2l0RE9NU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLCB3ZWJraXRfZG9tX3NwZWVjaF9zeW50
aGVzaXNfdXR0ZXJhbmNlLCBXRUJLSVRfRE9NX1RZUEVfT0JKRUNULCBHX0lNUExFTUVOVF9JTlRF
UkZBQ0UoV0VCS0lUX0RPTV9UWVBFX0VWRU5UX1RBUkdFVCwgd2Via2l0X2RvbV9ldmVudF90YXJn
ZXRfaW5pdCkpCi0KLWVudW0gewotICAgIFBST1BfMCwKLSAgICBQUk9QX1RFWFQsCi0gICAgUFJP
UF9MQU5HLAotICAgIFBST1BfVk9JQ0UsCi0gICAgUFJPUF9WT0xVTUUsCi0gICAgUFJPUF9SQVRF
LAotICAgIFBST1BfUElUQ0gsCi19OwotCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3NwZWVjaF9z
eW50aGVzaXNfdXR0ZXJhbmNlX2ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKLXsKLSAgICBXZWJL
aXRET01TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VQcml2YXRlKiBwcml2ID0gV0VCS0lUX0RPTV9T
UEVFQ0hfU1lOVEhFU0lTX1VUVEVSQU5DRV9HRVRfUFJJVkFURShvYmplY3QpOwotI2lmIEVOQUJM
RShTUEVFQ0hfU1lOVEhFU0lTKQotICAgIFdlYktpdDo6RE9NT2JqZWN0Q2FjaGU6OmZvcmdldChw
cml2LT5jb3JlT2JqZWN0LmdldCgpKTsKLSNlbmRpZiAvLyBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJ
UykKLSAgICBwcml2LT5+V2ViS2l0RE9NU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlUHJpdmF0ZSgp
OwotICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9kb21fc3BlZWNoX3N5bnRoZXNpc191dHRlcmFu
Y2VfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKLX0KLQotc3RhdGljIHZvaWQgd2Vi
a2l0X2RvbV9zcGVlY2hfc3ludGhlc2lzX3V0dGVyYW5jZV9zZXRfcHJvcGVydHkoR09iamVjdCog
b2JqZWN0LCBndWludCBwcm9wZXJ0eUlkLCBjb25zdCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVj
KiBwc3BlYykKLXsKLSAgICBXZWJLaXRET01TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqIHNlbGYg
PSBXRUJLSVRfRE9NX1NQRUVDSF9TWU5USEVTSVNfVVRURVJBTkNFKG9iamVjdCk7Ci0KLSAgICBz
d2l0Y2ggKHByb3BlcnR5SWQpIHsKLSAgICBjYXNlIFBST1BfVEVYVDoKLSAgICAgICAgd2Via2l0
X2RvbV9zcGVlY2hfc3ludGhlc2lzX3V0dGVyYW5jZV9zZXRfdGV4dChzZWxmLCBnX3ZhbHVlX2dl
dF9zdHJpbmcodmFsdWUpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX0xBTkc6Ci0g
ICAgICAgIHdlYmtpdF9kb21fc3BlZWNoX3N5bnRoZXNpc191dHRlcmFuY2Vfc2V0X2xhbmcoc2Vs
ZiwgZ192YWx1ZV9nZXRfc3RyaW5nKHZhbHVlKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
UFJPUF9WT0xVTUU6Ci0gICAgICAgIHdlYmtpdF9kb21fc3BlZWNoX3N5bnRoZXNpc191dHRlcmFu
Y2Vfc2V0X3ZvbHVtZShzZWxmLCBnX3ZhbHVlX2dldF9mbG9hdCh2YWx1ZSkpOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIFBST1BfUkFURToKLSAgICAgICAgd2Via2l0X2RvbV9zcGVlY2hfc3lu
dGhlc2lzX3V0dGVyYW5jZV9zZXRfcmF0ZShzZWxmLCBnX3ZhbHVlX2dldF9mbG9hdCh2YWx1ZSkp
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfUElUQ0g6Ci0gICAgICAgIHdlYmtpdF9k
b21fc3BlZWNoX3N5bnRoZXNpc191dHRlcmFuY2Vfc2V0X3BpdGNoKHNlbGYsIGdfdmFsdWVfZ2V0
X2Zsb2F0KHZhbHVlKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEdf
T0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BlcnR5SWQsIHBzcGVj
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotfQotCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Nw
ZWVjaF9zeW50aGVzaXNfdXR0ZXJhbmNlX2dldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1
aW50IHByb3BlcnR5SWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKQotewotICAg
IFdlYktpdERPTVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSogc2VsZiA9IFdFQktJVF9ET01fU1BF
RUNIX1NZTlRIRVNJU19VVFRFUkFOQ0Uob2JqZWN0KTsKLQotICAgIHN3aXRjaCAocHJvcGVydHlJ
ZCkgewotICAgIGNhc2UgUFJPUF9URVhUOgotICAgICAgICBnX3ZhbHVlX3Rha2Vfc3RyaW5nKHZh
bHVlLCB3ZWJraXRfZG9tX3NwZWVjaF9zeW50aGVzaXNfdXR0ZXJhbmNlX2dldF90ZXh0KHNlbGYp
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX0xBTkc6Ci0gICAgICAgIGdfdmFsdWVf
dGFrZV9zdHJpbmcodmFsdWUsIHdlYmtpdF9kb21fc3BlZWNoX3N5bnRoZXNpc191dHRlcmFuY2Vf
Z2V0X2xhbmcoc2VsZikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfVk9JQ0U6Ci0g
ICAgICAgIGdfdmFsdWVfc2V0X29iamVjdCh2YWx1ZSwgd2Via2l0X2RvbV9zcGVlY2hfc3ludGhl
c2lzX3V0dGVyYW5jZV9nZXRfdm9pY2Uoc2VsZikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IFBST1BfVk9MVU1FOgotICAgICAgICBnX3ZhbHVlX3NldF9mbG9hdCh2YWx1ZSwgd2Via2l0X2Rv
bV9zcGVlY2hfc3ludGhlc2lzX3V0dGVyYW5jZV9nZXRfdm9sdW1lKHNlbGYpKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBQUk9QX1JBVEU6Ci0gICAgICAgIGdfdmFsdWVfc2V0X2Zsb2F0KHZh
bHVlLCB3ZWJraXRfZG9tX3NwZWVjaF9zeW50aGVzaXNfdXR0ZXJhbmNlX2dldF9yYXRlKHNlbGYp
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX1BJVENIOgotICAgICAgICBnX3ZhbHVl
X3NldF9mbG9hdCh2YWx1ZSwgd2Via2l0X2RvbV9zcGVlY2hfc3ludGhlc2lzX3V0dGVyYW5jZV9n
ZXRfcGl0Y2goc2VsZikpOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBH
X09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wZXJ0eUlkLCBwc3Bl
Yyk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLX0KLQotc3RhdGljIEdPYmplY3QqIHdlYmtpdF9k
b21fc3BlZWNoX3N5bnRoZXNpc191dHRlcmFuY2VfY29uc3RydWN0b3IoR1R5cGUgdHlwZSwgZ3Vp
bnQgY29uc3RydWN0UHJvcGVydGllc0NvdW50LCBHT2JqZWN0Q29uc3RydWN0UGFyYW0qIGNvbnN0
cnVjdFByb3BlcnRpZXMpCi17Ci0gICAgR09iamVjdCogb2JqZWN0ID0gR19PQkpFQ1RfQ0xBU1Mo
d2Via2l0X2RvbV9zcGVlY2hfc3ludGhlc2lzX3V0dGVyYW5jZV9wYXJlbnRfY2xhc3MpLT5jb25z
dHJ1Y3Rvcih0eXBlLCBjb25zdHJ1Y3RQcm9wZXJ0aWVzQ291bnQsIGNvbnN0cnVjdFByb3BlcnRp
ZXMpOwotI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQotICAgIFdlYktpdERPTVNwZWVjaFN5
bnRoZXNpc1V0dGVyYW5jZVByaXZhdGUqIHByaXYgPSBXRUJLSVRfRE9NX1NQRUVDSF9TWU5USEVT
SVNfVVRURVJBTkNFX0dFVF9QUklWQVRFKG9iamVjdCk7Ci0gICAgcHJpdi0+Y29yZU9iamVjdCA9
IHN0YXRpY19jYXN0PFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSo+KFdFQktJVF9E
T01fT0JKRUNUKG9iamVjdCktPmNvcmVPYmplY3QpOwotICAgIFdlYktpdDo6RE9NT2JqZWN0Q2Fj
aGU6OnB1dChwcml2LT5jb3JlT2JqZWN0LmdldCgpLCBvYmplY3QpOwotI2VuZGlmIC8vIEVOQUJM
RShTUEVFQ0hfU1lOVEhFU0lTKQotICAgIHJldHVybiBvYmplY3Q7Ci19Ci0KLXN0YXRpYyB2b2lk
IHdlYmtpdF9kb21fc3BlZWNoX3N5bnRoZXNpc191dHRlcmFuY2VfY2xhc3NfaW5pdChXZWJLaXRE
T01TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VDbGFzcyogcmVxdWVzdENsYXNzKQotewotICAgIEdP
YmplY3RDbGFzcyogZ29iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1MocmVxdWVzdENsYXNzKTsK
LSAgICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUoZ29iamVjdENsYXNzLCBzaXplb2YoV2ViS2l0
RE9NU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlUHJpdmF0ZSkpOwotICAgIGdvYmplY3RDbGFzcy0+
Y29uc3RydWN0b3IgPSB3ZWJraXRfZG9tX3NwZWVjaF9zeW50aGVzaXNfdXR0ZXJhbmNlX2NvbnN0
cnVjdG9yOwotICAgIGdvYmplY3RDbGFzcy0+ZmluYWxpemUgPSB3ZWJraXRfZG9tX3NwZWVjaF9z
eW50aGVzaXNfdXR0ZXJhbmNlX2ZpbmFsaXplOwotICAgIGdvYmplY3RDbGFzcy0+c2V0X3Byb3Bl
cnR5ID0gd2Via2l0X2RvbV9zcGVlY2hfc3ludGhlc2lzX3V0dGVyYW5jZV9zZXRfcHJvcGVydHk7
Ci0gICAgZ29iamVjdENsYXNzLT5nZXRfcHJvcGVydHkgPSB3ZWJraXRfZG9tX3NwZWVjaF9zeW50
aGVzaXNfdXR0ZXJhbmNlX2dldF9wcm9wZXJ0eTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3Rh
bGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9URVhULAot
ICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nKAotICAgICAgICAgICAgInRleHQiLAotICAgICAg
ICAgICAgIlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTp0ZXh0IiwKLSAgICAgICAgICAgICJyZWFk
LXdyaXRlIGdjaGFyKiBTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6dGV4dCIsCi0gICAgICAgICAg
ICAiIiwKLSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEV1JJVEUpKTsKLQotICAgIGdfb2Jq
ZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAg
ICAgUFJPUF9MQU5HLAotICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nKAotICAgICAgICAgICAg
ImxhbmciLAotICAgICAgICAgICAgIlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTpsYW5nIiwKLSAg
ICAgICAgICAgICJyZWFkLXdyaXRlIGdjaGFyKiBTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6bGFu
ZyIsCi0gICAgICAgICAgICAiIiwKLSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEV1JJVEUp
KTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmpl
Y3RDbGFzcywKLSAgICAgICAgUFJPUF9WT0lDRSwKLSAgICAgICAgZ19wYXJhbV9zcGVjX29iamVj
dCgKLSAgICAgICAgICAgICJ2b2ljZSIsCi0gICAgICAgICAgICAiU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlOnZvaWNlIiwKLSAgICAgICAgICAgICJyZWFkLW9ubHkgV2ViS2l0RE9NU3BlZWNoU3lu
dGhlc2lzVm9pY2UqIFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTp2b2ljZSIsCi0gICAgICAgICAg
ICBXRUJLSVRfRE9NX1RZUEVfU1BFRUNIX1NZTlRIRVNJU19WT0lDRSwKLSAgICAgICAgICAgIFdF
QktJVF9QQVJBTV9SRUFEQUJMRSkpOwotCi0gICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9w
ZXJ0eSgKLSAgICAgICAgZ29iamVjdENsYXNzLAotICAgICAgICBQUk9QX1ZPTFVNRSwKLSAgICAg
ICAgZ19wYXJhbV9zcGVjX2Zsb2F0KAotICAgICAgICAgICAgInZvbHVtZSIsCi0gICAgICAgICAg
ICAiU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOnZvbHVtZSIsCi0gICAgICAgICAgICAicmVhZC13
cml0ZSBnZmxvYXQgU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOnZvbHVtZSIsCi0gICAgICAgICAg
ICAtR19NQVhGTE9BVCwgR19NQVhGTE9BVCwgMCwKLSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9S
RUFEV1JJVEUpKTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAg
ICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9SQVRFLAotICAgICAgICBnX3BhcmFtX3Nw
ZWNfZmxvYXQoCi0gICAgICAgICAgICAicmF0ZSIsCi0gICAgICAgICAgICAiU3BlZWNoU3ludGhl
c2lzVXR0ZXJhbmNlOnJhdGUiLAotICAgICAgICAgICAgInJlYWQtd3JpdGUgZ2Zsb2F0IFNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZTpyYXRlIiwKLSAgICAgICAgICAgIC1HX01BWEZMT0FULCBHX01B
WEZMT0FULCAwLAotICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURXUklURSkpOwotCi0gICAg
Z19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAgZ29iamVjdENsYXNzLAot
ICAgICAgICBQUk9QX1BJVENILAotICAgICAgICBnX3BhcmFtX3NwZWNfZmxvYXQoCi0gICAgICAg
ICAgICAicGl0Y2giLAotICAgICAgICAgICAgIlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTpwaXRj
aCIsCi0gICAgICAgICAgICAicmVhZC13cml0ZSBnZmxvYXQgU3BlZWNoU3ludGhlc2lzVXR0ZXJh
bmNlOnBpdGNoIiwKLSAgICAgICAgICAgIC1HX01BWEZMT0FULCBHX01BWEZMT0FULCAwLAotICAg
ICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURXUklURSkpOwotCi19Ci0KLXN0YXRpYyB2b2lkIHdl
YmtpdF9kb21fc3BlZWNoX3N5bnRoZXNpc191dHRlcmFuY2VfaW5pdChXZWJLaXRET01TcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2UqIHJlcXVlc3QpCi17Ci0gICAgV2ViS2l0RE9NU3BlZWNoU3ludGhl
c2lzVXR0ZXJhbmNlUHJpdmF0ZSogcHJpdiA9IFdFQktJVF9ET01fU1BFRUNIX1NZTlRIRVNJU19V
VFRFUkFOQ0VfR0VUX1BSSVZBVEUocmVxdWVzdCk7Ci0gICAgbmV3IChwcml2KSBXZWJLaXRET01T
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2VQcml2YXRlKCk7Ci19Ci0KLWdjaGFyKiB3ZWJraXRfZG9t
X3NwZWVjaF9zeW50aGVzaXNfdXR0ZXJhbmNlX2dldF90ZXh0KFdlYktpdERPTVNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZSogc2VsZikKLXsKLSNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKLSAg
ICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFs
X2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19TUEVFQ0hfU1lOVEhFU0lTX1VUVEVSQU5DRShzZWxmKSwg
MCk7Ci0gICAgV2ViQ29yZTo6U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKiBpdGVtID0gV2ViS2l0
Ojpjb3JlKHNlbGYpOwotICAgIGdjaGFyKiByZXN1bHQgPSBjb252ZXJ0VG9VVEY4U3RyaW5nKGl0
ZW0tPnRleHQoKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFN
KHNlbGYpOwotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIlNwZWVjaCBTeW50
aGVzaXMiKQotICAgIHJldHVybiAwOwotI2VuZGlmIC8qIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lT
KSAqLwotfQotCi12b2lkIHdlYmtpdF9kb21fc3BlZWNoX3N5bnRoZXNpc191dHRlcmFuY2Vfc2V0
X3RleHQoV2ViS2l0RE9NU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKiBzZWxmLCBjb25zdCBnY2hh
ciogdmFsdWUpCi17Ci0jaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCi0gICAgV2ViQ29yZTo6
SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lU
X0RPTV9JU19TUEVFQ0hfU1lOVEhFU0lTX1VUVEVSQU5DRShzZWxmKSk7Ci0gICAgZ19yZXR1cm5f
aWZfZmFpbCh2YWx1ZSk7Ci0gICAgV2ViQ29yZTo6U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKiBp
dGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIFdURjo6U3RyaW5nIGNvbnZlcnRlZFZhbHVl
ID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KHZhbHVlKTsKLSAgICBpdGVtLT5zZXRUZXh0KGNvbnZl
cnRlZFZhbHVlKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHNlbGYpOwotICAgIFVOVVNFRF9Q
QVJBTSh2YWx1ZSk7Ci0gICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiU3BlZWNo
IFN5bnRoZXNpcyIpCi0jZW5kaWYgLyogRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpICovCi19Ci0K
LWdjaGFyKiB3ZWJraXRfZG9tX3NwZWVjaF9zeW50aGVzaXNfdXR0ZXJhbmNlX2dldF9sYW5nKFdl
YktpdERPTVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSogc2VsZikKLXsKLSNpZiBFTkFCTEUoU1BF
RUNIX1NZTlRIRVNJUykKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7
Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19TUEVFQ0hfU1lOVEhFU0lT
X1VUVEVSQU5DRShzZWxmKSwgMCk7Ci0gICAgV2ViQ29yZTo6U3BlZWNoU3ludGhlc2lzVXR0ZXJh
bmNlKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdjaGFyKiByZXN1bHQgPSBjb252
ZXJ0VG9VVEY4U3RyaW5nKGl0ZW0tPmxhbmcoKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSNlbHNl
Ci0gICAgVU5VU0VEX1BBUkFNKHNlbGYpOwotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BS
RVNFTlQoIlNwZWVjaCBTeW50aGVzaXMiKQotICAgIHJldHVybiAwOwotI2VuZGlmIC8qIEVOQUJM
RShTUEVFQ0hfU1lOVEhFU0lTKSAqLwotfQotCi12b2lkIHdlYmtpdF9kb21fc3BlZWNoX3N5bnRo
ZXNpc191dHRlcmFuY2Vfc2V0X2xhbmcoV2ViS2l0RE9NU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
KiBzZWxmLCBjb25zdCBnY2hhciogdmFsdWUpCi17Ci0jaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVT
SVMpCi0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0
dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19TUEVFQ0hfU1lOVEhFU0lTX1VUVEVSQU5DRShzZWxm
KSk7Ci0gICAgZ19yZXR1cm5faWZfZmFpbCh2YWx1ZSk7Ci0gICAgV2ViQ29yZTo6U3BlZWNoU3lu
dGhlc2lzVXR0ZXJhbmNlKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIFdURjo6U3Ry
aW5nIGNvbnZlcnRlZFZhbHVlID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KHZhbHVlKTsKLSAgICBp
dGVtLT5zZXRMYW5nKGNvbnZlcnRlZFZhbHVlKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHNl
bGYpOwotICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7Ci0gICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9O
T1RfUFJFU0VOVCgiU3BlZWNoIFN5bnRoZXNpcyIpCi0jZW5kaWYgLyogRU5BQkxFKFNQRUVDSF9T
WU5USEVTSVMpICovCi19Ci0KLVdlYktpdERPTVNwZWVjaFN5bnRoZXNpc1ZvaWNlKiB3ZWJraXRf
ZG9tX3NwZWVjaF9zeW50aGVzaXNfdXR0ZXJhbmNlX2dldF92b2ljZShXZWJLaXRET01TcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2UqIHNlbGYpCi17Ci0jaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMp
Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfU1BFRUNIX1NZTlRIRVNJU19VVFRFUkFOQ0Uoc2Vs
ZiksIDApOwotICAgIFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSogaXRlbSA9IFdl
YktpdDo6Y29yZShzZWxmKTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U3BlZWNoU3ludGhlc2lzVm9p
Y2U+IGdvYmplY3RSZXN1bHQgPSBXVEY6OmdldFB0cihpdGVtLT52b2ljZSgpKTsKLSAgICByZXR1
cm4gV2ViS2l0OjpraXQoZ29iamVjdFJlc3VsdC5nZXQoKSk7Ci0jZWxzZQotICAgIFVOVVNFRF9Q
QVJBTShzZWxmKTsKLSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJTcGVlY2gg
U3ludGhlc2lzIikKLSAgICByZXR1cm4gMDsKLSNlbmRpZiAvKiBFTkFCTEUoU1BFRUNIX1NZTlRI
RVNJUykgKi8KLX0KLQotdm9pZCB3ZWJraXRfZG9tX3NwZWVjaF9zeW50aGVzaXNfdXR0ZXJhbmNl
X3NldF92b2ljZShXZWJLaXRET01TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqIHNlbGYsIFdlYktp
dERPTVNwZWVjaFN5bnRoZXNpc1ZvaWNlKiB2YWx1ZSkKLXsKLSNpZiBFTkFCTEUoU1BFRUNIX1NZ
TlRIRVNJUykKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAg
Z19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX1NQRUVDSF9TWU5USEVTSVNfVVRURVJBTkNF
KHNlbGYpKTsKLSAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfU1BFRUNIX1NZTlRI
RVNJU19WT0lDRSh2YWx1ZSkpOwotICAgIFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZSogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBXZWJDb3JlOjpTcGVlY2hTeW50aGVz
aXNWb2ljZSogY29udmVydGVkVmFsdWUgPSBXZWJLaXQ6OmNvcmUodmFsdWUpOwotICAgIGl0ZW0t
PnNldFZvaWNlKGNvbnZlcnRlZFZhbHVlKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHNlbGYp
OwotICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7Ci0gICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1Rf
UFJFU0VOVCgiU3BlZWNoIFN5bnRoZXNpcyIpCi0jZW5kaWYgLyogRU5BQkxFKFNQRUVDSF9TWU5U
SEVTSVMpICovCi19Ci0KLWdmbG9hdCB3ZWJraXRfZG9tX3NwZWVjaF9zeW50aGVzaXNfdXR0ZXJh
bmNlX2dldF92b2x1bWUoV2ViS2l0RE9NU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKiBzZWxmKQot
ewotI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQotICAgIFdlYkNvcmU6OkpTTWFpblRocmVh
ZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lT
X1NQRUVDSF9TWU5USEVTSVNfVVRURVJBTkNFKHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpTcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2UqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ2Zs
b2F0IHJlc3VsdCA9IGl0ZW0tPnZvbHVtZSgpOwotICAgIHJldHVybiByZXN1bHQ7Ci0jZWxzZQot
ICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKLSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVT
RU5UKCJTcGVlY2ggU3ludGhlc2lzIikKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Z2Zsb2F0Pigw
KTsKLSNlbmRpZiAvKiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykgKi8KLX0KLQotdm9pZCB3ZWJr
aXRfZG9tX3NwZWVjaF9zeW50aGVzaXNfdXR0ZXJhbmNlX3NldF92b2x1bWUoV2ViS2l0RE9NU3Bl
ZWNoU3ludGhlc2lzVXR0ZXJhbmNlKiBzZWxmLCBnZmxvYXQgdmFsdWUpCi17Ci0jaWYgRU5BQkxF
KFNQRUVDSF9TWU5USEVTSVMpCi0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0
YXRlOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19TUEVFQ0hfU1lOVEhFU0lT
X1VUVEVSQU5DRShzZWxmKSk7Ci0gICAgV2ViQ29yZTo6U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGl0ZW0tPnNldFZvbHVtZSh2YWx1ZSk7
Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKLSAgICBVTlVTRURfUEFSQU0odmFsdWUp
OwotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIlNwZWVjaCBTeW50aGVzaXMi
KQotI2VuZGlmIC8qIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKSAqLwotfQotCi1nZmxvYXQgd2Vi
a2l0X2RvbV9zcGVlY2hfc3ludGhlc2lzX3V0dGVyYW5jZV9nZXRfcmF0ZShXZWJLaXRET01TcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2UqIHNlbGYpCi17Ci0jaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVT
SVMpCi0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0
dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfU1BFRUNIX1NZTlRIRVNJU19VVFRFUkFOQ0Uo
c2VsZiksIDApOwotICAgIFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSogaXRlbSA9
IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBnZmxvYXQgcmVzdWx0ID0gaXRlbS0+cmF0ZSgpOwot
ICAgIHJldHVybiByZXN1bHQ7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKLSAgICBX
RUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJTcGVlY2ggU3ludGhlc2lzIikKLSAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8Z2Zsb2F0PigwKTsKLSNlbmRpZiAvKiBFTkFCTEUoU1BFRUNIX1NZ
TlRIRVNJUykgKi8KLX0KLQotdm9pZCB3ZWJraXRfZG9tX3NwZWVjaF9zeW50aGVzaXNfdXR0ZXJh
bmNlX3NldF9yYXRlKFdlYktpdERPTVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSogc2VsZiwgZ2Zs
b2F0IHZhbHVlKQotewotI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQotICAgIFdlYkNvcmU6
OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJ
VF9ET01fSVNfU1BFRUNIX1NZTlRIRVNJU19VVFRFUkFOQ0Uoc2VsZikpOwotICAgIFdlYkNvcmU6
OlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAg
ICBpdGVtLT5zZXRSYXRlKHZhbHVlKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHNlbGYpOwot
ICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7Ci0gICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJF
U0VOVCgiU3BlZWNoIFN5bnRoZXNpcyIpCi0jZW5kaWYgLyogRU5BQkxFKFNQRUVDSF9TWU5USEVT
SVMpICovCi19Ci0KLWdmbG9hdCB3ZWJraXRfZG9tX3NwZWVjaF9zeW50aGVzaXNfdXR0ZXJhbmNl
X2dldF9waXRjaChXZWJLaXRET01TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqIHNlbGYpCi17Ci0j
aWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCi0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVs
bFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfU1BF
RUNIX1NZTlRIRVNJU19VVFRFUkFOQ0Uoc2VsZiksIDApOwotICAgIFdlYkNvcmU6OlNwZWVjaFN5
bnRoZXNpc1V0dGVyYW5jZSogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBnZmxvYXQg
cmVzdWx0ID0gaXRlbS0+cGl0Y2goKTsKLSAgICByZXR1cm4gcmVzdWx0OwotI2Vsc2UKLSAgICBV
TlVTRURfUEFSQU0oc2VsZik7Ci0gICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgi
U3BlZWNoIFN5bnRoZXNpcyIpCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGdmbG9hdD4oMCk7Ci0j
ZW5kaWYgLyogRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpICovCi19Ci0KLXZvaWQgd2Via2l0X2Rv
bV9zcGVlY2hfc3ludGhlc2lzX3V0dGVyYW5jZV9zZXRfcGl0Y2goV2ViS2l0RE9NU3BlZWNoU3lu
dGhlc2lzVXR0ZXJhbmNlKiBzZWxmLCBnZmxvYXQgdmFsdWUpCi17Ci0jaWYgRU5BQkxFKFNQRUVD
SF9TWU5USEVTSVMpCi0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwot
ICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19TUEVFQ0hfU1lOVEhFU0lTX1VUVEVS
QU5DRShzZWxmKSk7Ci0gICAgV2ViQ29yZTo6U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKiBpdGVt
ID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGl0ZW0tPnNldFBpdGNoKHZhbHVlKTsKLSNlbHNl
Ci0gICAgVU5VU0VEX1BBUkFNKHNlbGYpOwotICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7Ci0gICAg
V0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiU3BlZWNoIFN5bnRoZXNpcyIpCi0jZW5k
aWYgLyogRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpICovCi19Ci0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9N
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YWRlMzNhLi4wMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2Vi
S2l0RE9NU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNzkg
KzAsMCBAQAotLyoKLSAqICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291
cmNlIHByb2plY3QuCi0gKiAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0
ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiAg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
Ci0gKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0g
KgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
Ci0gKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBXZWJLaXRE
T01TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VfaAotI2RlZmluZSBXZWJLaXRET01TcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2VfaAotCi0jaWZkZWYgV0VCS0lUX0RPTV9VU0VfVU5TVEFCTEVfQVBJCi0K
LSNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgotI2luY2x1ZGUgPHdlYmtpdGRvbS9XZWJLaXRET01P
YmplY3QuaD4KLSNpbmNsdWRlIDx3ZWJraXRkb20vd2Via2l0ZG9tZGVmaW5lcy11bnN0YWJsZS5o
PgotCi1HX0JFR0lOX0RFQ0xTCi0KLSNkZWZpbmUgV0VCS0lUX0RPTV9UWVBFX1NQRUVDSF9TWU5U
SEVTSVNfVVRURVJBTkNFICAgICAgICAgICAgKHdlYmtpdF9kb21fc3BlZWNoX3N5bnRoZXNpc191
dHRlcmFuY2VfZ2V0X3R5cGUoKSkKLSNkZWZpbmUgV0VCS0lUX0RPTV9TUEVFQ0hfU1lOVEhFU0lT
X1VUVEVSQU5DRShvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChv
YmopLCBXRUJLSVRfRE9NX1RZUEVfU1BFRUNIX1NZTlRIRVNJU19VVFRFUkFOQ0UsIFdlYktpdERP
TVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSkpCi0jZGVmaW5lIFdFQktJVF9ET01fU1BFRUNIX1NZ
TlRIRVNJU19VVFRFUkFOQ0VfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FT
VCgoa2xhc3MpLCAgV0VCS0lUX0RPTV9UWVBFX1NQRUVDSF9TWU5USEVTSVNfVVRURVJBTkNFLCBX
ZWJLaXRET01TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VDbGFzcykKLSNkZWZpbmUgV0VCS0lUX0RP
TV9JU19TUEVFQ0hfU1lOVEhFU0lTX1VUVEVSQU5DRShvYmopICAgICAgICAgKEdfVFlQRV9DSEVD
S19JTlNUQU5DRV9UWVBFKChvYmopLCBXRUJLSVRfRE9NX1RZUEVfU1BFRUNIX1NZTlRIRVNJU19V
VFRFUkFOQ0UpKQotI2RlZmluZSBXRUJLSVRfRE9NX0lTX1NQRUVDSF9TWU5USEVTSVNfVVRURVJB
TkNFX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwgIFdFQktJ
VF9ET01fVFlQRV9TUEVFQ0hfU1lOVEhFU0lTX1VUVEVSQU5DRSkpCi0jZGVmaW5lIFdFQktJVF9E
T01fU1BFRUNIX1NZTlRIRVNJU19VVFRFUkFOQ0VfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5T
VEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgV0VCS0lUX0RPTV9UWVBFX1NQRUVDSF9TWU5USEVTSVNf
VVRURVJBTkNFLCBXZWJLaXRET01TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VDbGFzcykpCi0KLXN0
cnVjdCBfV2ViS2l0RE9NU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlIHsKLSAgICBXZWJLaXRET01P
YmplY3QgcGFyZW50X2luc3RhbmNlOwotfTsKLQotc3RydWN0IF9XZWJLaXRET01TcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2VDbGFzcyB7Ci0gICAgV2ViS2l0RE9NT2JqZWN0Q2xhc3MgcGFyZW50X2Ns
YXNzOwotfTsKLQotV0VCS0lUX0FQSSBHVHlwZQotd2Via2l0X2RvbV9zcGVlY2hfc3ludGhlc2lz
X3V0dGVyYW5jZV9nZXRfdHlwZSh2b2lkKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX3NwZWVjaF9z
eW50aGVzaXNfdXR0ZXJhbmNlX2dldF90ZXh0OgotICogQHNlbGY6IEEgI1dlYktpdERPTVNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZQotICoKLSAqIFJldHVybnM6IEEgI2djaGFyCi0gKgotICogU3Rh
YmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIGdjaGFyKgotd2Via2l0X2RvbV9zcGVl
Y2hfc3ludGhlc2lzX3V0dGVyYW5jZV9nZXRfdGV4dChXZWJLaXRET01TcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2UqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9kb21fc3BlZWNoX3N5bnRoZXNpc191
dHRlcmFuY2Vfc2V0X3RleHQ6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NU3BlZWNoU3ludGhlc2lz
VXR0ZXJhbmNlCi0gKiBAdmFsdWU6IEEgI2djaGFyCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJs
ZQotKiovCi1XRUJLSVRfQVBJIHZvaWQKLXdlYmtpdF9kb21fc3BlZWNoX3N5bnRoZXNpc191dHRl
cmFuY2Vfc2V0X3RleHQoV2ViS2l0RE9NU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKiBzZWxmLCBj
b25zdCBnY2hhciogdmFsdWUpOwotCi0vKioKLSAqIHdlYmtpdF9kb21fc3BlZWNoX3N5bnRoZXNp
c191dHRlcmFuY2VfZ2V0X2xhbmc6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NU3BlZWNoU3ludGhl
c2lzVXR0ZXJhbmNlCi0gKgotICogUmV0dXJuczogQSAjZ2NoYXIKLSAqCi0gKiBTdGFiaWxpdHk6
IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgZ2NoYXIqCi13ZWJraXRfZG9tX3NwZWVjaF9zeW50
aGVzaXNfdXR0ZXJhbmNlX2dldF9sYW5nKFdlYktpdERPTVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZSogc2VsZik7Ci0KLS8qKgotICogd2Via2l0X2RvbV9zcGVlY2hfc3ludGhlc2lzX3V0dGVyYW5j
ZV9zZXRfbGFuZzoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01TcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2UKLSAqIEB2YWx1ZTogQSAjZ2NoYXIKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8K
LVdFQktJVF9BUEkgdm9pZAotd2Via2l0X2RvbV9zcGVlY2hfc3ludGhlc2lzX3V0dGVyYW5jZV9z
ZXRfbGFuZyhXZWJLaXRET01TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqIHNlbGYsIGNvbnN0IGdj
aGFyKiB2YWx1ZSk7Ci0KLS8qKgotICogd2Via2l0X2RvbV9zcGVlY2hfc3ludGhlc2lzX3V0dGVy
YW5jZV9nZXRfdm9pY2U6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlCi0gKgotICogUmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiBBICNXZWJLaXRET01TcGVl
Y2hTeW50aGVzaXNWb2ljZQotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lU
X0FQSSBXZWJLaXRET01TcGVlY2hTeW50aGVzaXNWb2ljZSoKLXdlYmtpdF9kb21fc3BlZWNoX3N5
bnRoZXNpc191dHRlcmFuY2VfZ2V0X3ZvaWNlKFdlYktpdERPTVNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZSogc2VsZik7Ci0KLS8qKgotICogd2Via2l0X2RvbV9zcGVlY2hfc3ludGhlc2lzX3V0dGVy
YW5jZV9zZXRfdm9pY2U6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlCi0gKiBAdmFsdWU6IEEgI1dlYktpdERPTVNwZWVjaFN5bnRoZXNpc1ZvaWNlCi0gKgot
ICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIHZvaWQKLXdlYmtpdF9kb21f
c3BlZWNoX3N5bnRoZXNpc191dHRlcmFuY2Vfc2V0X3ZvaWNlKFdlYktpdERPTVNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZSogc2VsZiwgV2ViS2l0RE9NU3BlZWNoU3ludGhlc2lzVm9pY2UqIHZhbHVl
KTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX3NwZWVjaF9zeW50aGVzaXNfdXR0ZXJhbmNlX2dldF92
b2x1bWU6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlCi0g
KgotICogUmV0dXJuczogQSAjZ2Zsb2F0Ci0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiov
Ci1XRUJLSVRfQVBJIGdmbG9hdAotd2Via2l0X2RvbV9zcGVlY2hfc3ludGhlc2lzX3V0dGVyYW5j
ZV9nZXRfdm9sdW1lKFdlYktpdERPTVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSogc2VsZik7Ci0K
LS8qKgotICogd2Via2l0X2RvbV9zcGVlY2hfc3ludGhlc2lzX3V0dGVyYW5jZV9zZXRfdm9sdW1l
OgotICogQHNlbGY6IEEgI1dlYktpdERPTVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZQotICogQHZh
bHVlOiBBICNnZmxvYXQKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9B
UEkgdm9pZAotd2Via2l0X2RvbV9zcGVlY2hfc3ludGhlc2lzX3V0dGVyYW5jZV9zZXRfdm9sdW1l
KFdlYktpdERPTVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSogc2VsZiwgZ2Zsb2F0IHZhbHVlKTsK
LQotLyoqCi0gKiB3ZWJraXRfZG9tX3NwZWVjaF9zeW50aGVzaXNfdXR0ZXJhbmNlX2dldF9yYXRl
OgotICogQHNlbGY6IEEgI1dlYktpdERPTVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZQotICoKLSAq
IFJldHVybnM6IEEgI2dmbG9hdAotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VC
S0lUX0FQSSBnZmxvYXQKLXdlYmtpdF9kb21fc3BlZWNoX3N5bnRoZXNpc191dHRlcmFuY2VfZ2V0
X3JhdGUoV2ViS2l0RE9NU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKiBzZWxmKTsKLQotLyoqCi0g
KiB3ZWJraXRfZG9tX3NwZWVjaF9zeW50aGVzaXNfdXR0ZXJhbmNlX3NldF9yYXRlOgotICogQHNl
bGY6IEEgI1dlYktpdERPTVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZQotICogQHZhbHVlOiBBICNn
ZmxvYXQKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgdm9pZAot
d2Via2l0X2RvbV9zcGVlY2hfc3ludGhlc2lzX3V0dGVyYW5jZV9zZXRfcmF0ZShXZWJLaXRET01T
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqIHNlbGYsIGdmbG9hdCB2YWx1ZSk7Ci0KLS8qKgotICog
d2Via2l0X2RvbV9zcGVlY2hfc3ludGhlc2lzX3V0dGVyYW5jZV9nZXRfcGl0Y2g6Ci0gKiBAc2Vs
ZjogQSAjV2ViS2l0RE9NU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlCi0gKgotICogUmV0dXJuczog
QSAjZ2Zsb2F0Ci0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIGdm
bG9hdAotd2Via2l0X2RvbV9zcGVlY2hfc3ludGhlc2lzX3V0dGVyYW5jZV9nZXRfcGl0Y2goV2Vi
S2l0RE9NU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRf
ZG9tX3NwZWVjaF9zeW50aGVzaXNfdXR0ZXJhbmNlX3NldF9waXRjaDoKLSAqIEBzZWxmOiBBICNX
ZWJLaXRET01TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UKLSAqIEB2YWx1ZTogQSAjZ2Zsb2F0Ci0g
KgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIHZvaWQKLXdlYmtpdF9k
b21fc3BlZWNoX3N5bnRoZXNpc191dHRlcmFuY2Vfc2V0X3BpdGNoKFdlYktpdERPTVNwZWVjaFN5
bnRoZXNpc1V0dGVyYW5jZSogc2VsZiwgZ2Zsb2F0IHZhbHVlKTsKLQotR19FTkRfREVDTFMKLQot
I2VuZGlmIC8qIFdFQktJVF9ET01fVVNFX1VOU1RBQkxFX0FQSSAqLwotI2VuZGlmIC8qIFdlYktp
dERPTVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZV9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NU3BlZWNoU3ludGhlc2lzVXR0ZXJh
bmNlUHJpdmF0ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZDU1ZWFjLi4wMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0
ay9ET00vV2ViS2l0RE9NU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlUHJpdmF0ZS5oCisrKyAvZGV2
L251bGwKQEAgLTEsMzYgKzAsMCBAQAotLyoKLSAqICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUg
V2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCi0gKiAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVy
YXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKLSAqCi0gKiAgVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCi0gKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqICBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwot
ICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCi0gKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQot
I2lmbmRlZiBXZWJLaXRET01TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VQcml2YXRlX2gKLSNkZWZp
bmUgV2ViS2l0RE9NU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlUHJpdmF0ZV9oCi0KLSNpbmNsdWRl
IDxXZWJDb3JlL1NwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oPgotI2luY2x1ZGUgPHdlYmtpdGRv
bS9XZWJLaXRET01TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaD4KLSNpZiBFTkFCTEUoU1BFRUNI
X1NZTlRIRVNJUykKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci1XZWJLaXRET01TcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2UqIHdyYXBTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UoV2ViQ29yZTo6U3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlKik7Ci1XZWJLaXRET01TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2Uq
IGtpdChXZWJDb3JlOjpTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqKTsKLVdlYkNvcmU6OlNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZSogY29yZShXZWJLaXRET01TcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2UqKTsKLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLyogRU5BQkxFKFNQRUVDSF9T
WU5USEVTSVMpICovCi0KLSNlbmRpZiAvKiBXZWJLaXRET01TcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2VQcml2YXRlX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NU3BlZWNoU3ludGhlc2lzVm9pY2UuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9X
ZWJLaXRET01TcGVlY2hTeW50aGVzaXNWb2ljZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDBkMDYxNzYuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01TcGVlY2hTeW50aGVzaXNWb2ljZS5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNzIgKzAsMCBAQAotLyoKLSAqICBUaGlzIGZpbGUgaXMg
cGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCi0gKiAgVGhpcyBmaWxlIGhh
cyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEK
LSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqICBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYktpdERPTVNwZWVj
aFN5bnRoZXNpc1ZvaWNlLmgiCi0KLSNpbmNsdWRlIDxXZWJDb3JlL0NTU0ltcG9ydFJ1bGUuaD4K
LSNpbmNsdWRlICJET01PYmplY3RDYWNoZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnQu
aD4KLSNpbmNsdWRlIDxXZWJDb3JlL0V4Y2VwdGlvbkNvZGUuaD4KLSNpbmNsdWRlIDxXZWJDb3Jl
L0V4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbi5oPgotI2luY2x1ZGUgPFdlYkNvcmUvSlNNYWluVGhy
ZWFkRXhlY1N0YXRlLmg+Ci0jaW5jbHVkZSAiV2ViS2l0RE9NUHJpdmF0ZS5oIgotI2luY2x1ZGUg
IldlYktpdERPTVNwZWVjaFN5bnRoZXNpc1ZvaWNlUHJpdmF0ZS5oIgotI2luY2x1ZGUgIkNvbnZl
cnRUb1VURjhTdHJpbmcuaCIKLSNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+Ci0jaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgotCi0jZGVmaW5lIFdFQktJVF9ET01fU1BFRUNIX1NZTlRIRVNJU19WT0lDRV9H
RVRfUFJJVkFURShvYmopIEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURShvYmosIFdFQktJVF9E
T01fVFlQRV9TUEVFQ0hfU1lOVEhFU0lTX1ZPSUNFLCBXZWJLaXRET01TcGVlY2hTeW50aGVzaXNW
b2ljZVByaXZhdGUpCi0KLXR5cGVkZWYgc3RydWN0IF9XZWJLaXRET01TcGVlY2hTeW50aGVzaXNW
b2ljZVByaXZhdGUgewotI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQotICAgIFJlZlB0cjxX
ZWJDb3JlOjpTcGVlY2hTeW50aGVzaXNWb2ljZT4gY29yZU9iamVjdDsKLSNlbmRpZiAvLyBFTkFC
TEUoU1BFRUNIX1NZTlRIRVNJUykKLX0gV2ViS2l0RE9NU3BlZWNoU3ludGhlc2lzVm9pY2VQcml2
YXRlOwotCi0jaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCi0KLW5hbWVzcGFjZSBXZWJLaXQg
ewotCi1XZWJLaXRET01TcGVlY2hTeW50aGVzaXNWb2ljZSoga2l0KFdlYkNvcmU6OlNwZWVjaFN5
bnRoZXNpc1ZvaWNlKiBvYmopCi17Ci0gICAgaWYgKCFvYmopCi0gICAgICAgIHJldHVybiAwOwot
Ci0gICAgaWYgKGdwb2ludGVyIHJldCA9IERPTU9iamVjdENhY2hlOjpnZXQob2JqKSkKLSAgICAg
ICAgcmV0dXJuIFdFQktJVF9ET01fU1BFRUNIX1NZTlRIRVNJU19WT0lDRShyZXQpOwotCi0gICAg
cmV0dXJuIHdyYXBTcGVlY2hTeW50aGVzaXNWb2ljZShvYmopOwotfQotCi1XZWJDb3JlOjpTcGVl
Y2hTeW50aGVzaXNWb2ljZSogY29yZShXZWJLaXRET01TcGVlY2hTeW50aGVzaXNWb2ljZSogcmVx
dWVzdCkKLXsKLSAgICByZXR1cm4gcmVxdWVzdCA/IHN0YXRpY19jYXN0PFdlYkNvcmU6OlNwZWVj
aFN5bnRoZXNpc1ZvaWNlKj4oV0VCS0lUX0RPTV9PQkpFQ1QocmVxdWVzdCktPmNvcmVPYmplY3Qp
IDogMDsKLX0KLQotV2ViS2l0RE9NU3BlZWNoU3ludGhlc2lzVm9pY2UqIHdyYXBTcGVlY2hTeW50
aGVzaXNWb2ljZShXZWJDb3JlOjpTcGVlY2hTeW50aGVzaXNWb2ljZSogY29yZU9iamVjdCkKLXsK
LSAgICBBU1NFUlQoY29yZU9iamVjdCk7Ci0gICAgcmV0dXJuIFdFQktJVF9ET01fU1BFRUNIX1NZ
TlRIRVNJU19WT0lDRShnX29iamVjdF9uZXcoV0VCS0lUX0RPTV9UWVBFX1NQRUVDSF9TWU5USEVT
SVNfVk9JQ0UsICJjb3JlLW9iamVjdCIsIGNvcmVPYmplY3QsIG51bGxwdHIpKTsKLX0KLQotfSAv
LyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykK
LQotR19ERUZJTkVfVFlQRShXZWJLaXRET01TcGVlY2hTeW50aGVzaXNWb2ljZSwgd2Via2l0X2Rv
bV9zcGVlY2hfc3ludGhlc2lzX3ZvaWNlLCBXRUJLSVRfRE9NX1RZUEVfT0JKRUNUKQotCi1lbnVt
IHsKLSAgICBQUk9QXzAsCi0gICAgUFJPUF9WT0lDRV9VUkksCi0gICAgUFJPUF9OQU1FLAotICAg
IFBST1BfTEFORywKLSAgICBQUk9QX0xPQ0FMX1NFUlZJQ0UsCi0gICAgUFJPUF9ERUZBVUxULAot
fTsKLQotc3RhdGljIHZvaWQgd2Via2l0X2RvbV9zcGVlY2hfc3ludGhlc2lzX3ZvaWNlX2ZpbmFs
aXplKEdPYmplY3QqIG9iamVjdCkKLXsKLSAgICBXZWJLaXRET01TcGVlY2hTeW50aGVzaXNWb2lj
ZVByaXZhdGUqIHByaXYgPSBXRUJLSVRfRE9NX1NQRUVDSF9TWU5USEVTSVNfVk9JQ0VfR0VUX1BS
SVZBVEUob2JqZWN0KTsKLSNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKLSAgICBXZWJLaXQ6
OkRPTU9iamVjdENhY2hlOjpmb3JnZXQocHJpdi0+Y29yZU9iamVjdC5nZXQoKSk7Ci0jZW5kaWYg
Ly8gRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCi0gICAgcHJpdi0+fldlYktpdERPTVNwZWVjaFN5
bnRoZXNpc1ZvaWNlUHJpdmF0ZSgpOwotICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9kb21fc3Bl
ZWNoX3N5bnRoZXNpc192b2ljZV9wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmplY3QpOwotfQot
Ci1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3NwZWVjaF9zeW50aGVzaXNfdm9pY2VfZ2V0X3Byb3Bl
cnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcGVydHlJZCwgR1ZhbHVlKiB2YWx1ZSwgR1Bh
cmFtU3BlYyogcHNwZWMpCi17Ci0gICAgV2ViS2l0RE9NU3BlZWNoU3ludGhlc2lzVm9pY2UqIHNl
bGYgPSBXRUJLSVRfRE9NX1NQRUVDSF9TWU5USEVTSVNfVk9JQ0Uob2JqZWN0KTsKLQotICAgIHN3
aXRjaCAocHJvcGVydHlJZCkgewotICAgIGNhc2UgUFJPUF9WT0lDRV9VUkk6Ci0gICAgICAgIGdf
dmFsdWVfdGFrZV9zdHJpbmcodmFsdWUsIHdlYmtpdF9kb21fc3BlZWNoX3N5bnRoZXNpc192b2lj
ZV9nZXRfdm9pY2VfdXJpKHNlbGYpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX05B
TUU6Ci0gICAgICAgIGdfdmFsdWVfdGFrZV9zdHJpbmcodmFsdWUsIHdlYmtpdF9kb21fc3BlZWNo
X3N5bnRoZXNpc192b2ljZV9nZXRfbmFtZShzZWxmKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgUFJPUF9MQU5HOgotICAgICAgICBnX3ZhbHVlX3Rha2Vfc3RyaW5nKHZhbHVlLCB3ZWJraXRf
ZG9tX3NwZWVjaF9zeW50aGVzaXNfdm9pY2VfZ2V0X2xhbmcoc2VsZikpOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIFBST1BfTE9DQUxfU0VSVklDRToKLSAgICAgICAgZ192YWx1ZV9zZXRfYm9v
bGVhbih2YWx1ZSwgd2Via2l0X2RvbV9zcGVlY2hfc3ludGhlc2lzX3ZvaWNlX2dldF9sb2NhbF9z
ZXJ2aWNlKHNlbGYpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX0RFRkFVTFQ6Ci0g
ICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF9kb21fc3BlZWNoX3N5bnRo
ZXNpc192b2ljZV9nZXRfZGVmYXVsdChzZWxmKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1
bHQ6Ci0gICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHBy
b3BlcnR5SWQsIHBzcGVjKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotfQotCi1zdGF0aWMgR09i
amVjdCogd2Via2l0X2RvbV9zcGVlY2hfc3ludGhlc2lzX3ZvaWNlX2NvbnN0cnVjdG9yKEdUeXBl
IHR5cGUsIGd1aW50IGNvbnN0cnVjdFByb3BlcnRpZXNDb3VudCwgR09iamVjdENvbnN0cnVjdFBh
cmFtKiBjb25zdHJ1Y3RQcm9wZXJ0aWVzKQotewotICAgIEdPYmplY3QqIG9iamVjdCA9IEdfT0JK
RUNUX0NMQVNTKHdlYmtpdF9kb21fc3BlZWNoX3N5bnRoZXNpc192b2ljZV9wYXJlbnRfY2xhc3Mp
LT5jb25zdHJ1Y3Rvcih0eXBlLCBjb25zdHJ1Y3RQcm9wZXJ0aWVzQ291bnQsIGNvbnN0cnVjdFBy
b3BlcnRpZXMpOwotI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQotICAgIFdlYktpdERPTVNw
ZWVjaFN5bnRoZXNpc1ZvaWNlUHJpdmF0ZSogcHJpdiA9IFdFQktJVF9ET01fU1BFRUNIX1NZTlRI
RVNJU19WT0lDRV9HRVRfUFJJVkFURShvYmplY3QpOwotICAgIHByaXYtPmNvcmVPYmplY3QgPSBz
dGF0aWNfY2FzdDxXZWJDb3JlOjpTcGVlY2hTeW50aGVzaXNWb2ljZSo+KFdFQktJVF9ET01fT0JK
RUNUKG9iamVjdCktPmNvcmVPYmplY3QpOwotICAgIFdlYktpdDo6RE9NT2JqZWN0Q2FjaGU6OnB1
dChwcml2LT5jb3JlT2JqZWN0LmdldCgpLCBvYmplY3QpOwotI2VuZGlmIC8vIEVOQUJMRShTUEVF
Q0hfU1lOVEhFU0lTKQotICAgIHJldHVybiBvYmplY3Q7Ci19Ci0KLXN0YXRpYyB2b2lkIHdlYmtp
dF9kb21fc3BlZWNoX3N5bnRoZXNpc192b2ljZV9jbGFzc19pbml0KFdlYktpdERPTVNwZWVjaFN5
bnRoZXNpc1ZvaWNlQ2xhc3MqIHJlcXVlc3RDbGFzcykKLXsKLSAgICBHT2JqZWN0Q2xhc3MqIGdv
YmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKHJlcXVlc3RDbGFzcyk7Ci0gICAgZ190eXBlX2Ns
YXNzX2FkZF9wcml2YXRlKGdvYmplY3RDbGFzcywgc2l6ZW9mKFdlYktpdERPTVNwZWVjaFN5bnRo
ZXNpc1ZvaWNlUHJpdmF0ZSkpOwotICAgIGdvYmplY3RDbGFzcy0+Y29uc3RydWN0b3IgPSB3ZWJr
aXRfZG9tX3NwZWVjaF9zeW50aGVzaXNfdm9pY2VfY29uc3RydWN0b3I7Ci0gICAgZ29iamVjdENs
YXNzLT5maW5hbGl6ZSA9IHdlYmtpdF9kb21fc3BlZWNoX3N5bnRoZXNpc192b2ljZV9maW5hbGl6
ZTsKLSAgICBnb2JqZWN0Q2xhc3MtPmdldF9wcm9wZXJ0eSA9IHdlYmtpdF9kb21fc3BlZWNoX3N5
bnRoZXNpc192b2ljZV9nZXRfcHJvcGVydHk7Ci0KLSAgICBnX29iamVjdF9jbGFzc19pbnN0YWxs
X3Byb3BlcnR5KAotICAgICAgICBnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBST1BfVk9JQ0VfVVJJ
LAotICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nKAotICAgICAgICAgICAgInZvaWNlLXVyaSIs
Ci0gICAgICAgICAgICAiU3BlZWNoU3ludGhlc2lzVm9pY2U6dm9pY2UtdXJpIiwKLSAgICAgICAg
ICAgICJyZWFkLW9ubHkgZ2NoYXIqIFNwZWVjaFN5bnRoZXNpc1ZvaWNlOnZvaWNlLXVyaSIsCi0g
ICAgICAgICAgICAiIiwKLSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSkpOwotCi0g
ICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAgZ29iamVjdENsYXNz
LAotICAgICAgICBQUk9QX05BTUUsCi0gICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcoCi0gICAg
ICAgICAgICAibmFtZSIsCi0gICAgICAgICAgICAiU3BlZWNoU3ludGhlc2lzVm9pY2U6bmFtZSIs
Ci0gICAgICAgICAgICAicmVhZC1vbmx5IGdjaGFyKiBTcGVlY2hTeW50aGVzaXNWb2ljZTpuYW1l
IiwKLSAgICAgICAgICAgICIiLAotICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7
Ci0KLSAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAotICAgICAgICBnb2JqZWN0
Q2xhc3MsCi0gICAgICAgIFBST1BfTEFORywKLSAgICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZygK
LSAgICAgICAgICAgICJsYW5nIiwKLSAgICAgICAgICAgICJTcGVlY2hTeW50aGVzaXNWb2ljZTps
YW5nIiwKLSAgICAgICAgICAgICJyZWFkLW9ubHkgZ2NoYXIqIFNwZWVjaFN5bnRoZXNpc1ZvaWNl
OmxhbmciLAotICAgICAgICAgICAgIiIsCi0gICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFC
TEUpKTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdv
YmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9MT0NBTF9TRVJWSUNFLAotICAgICAgICBnX3BhcmFt
X3NwZWNfYm9vbGVhbigKLSAgICAgICAgICAgICJsb2NhbC1zZXJ2aWNlIiwKLSAgICAgICAgICAg
ICJTcGVlY2hTeW50aGVzaXNWb2ljZTpsb2NhbC1zZXJ2aWNlIiwKLSAgICAgICAgICAgICJyZWFk
LW9ubHkgZ2Jvb2xlYW4gU3BlZWNoU3ludGhlc2lzVm9pY2U6bG9jYWwtc2VydmljZSIsCi0gICAg
ICAgICAgICBGQUxTRSwKLSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSkpOwotCi0g
ICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAgZ29iamVjdENsYXNz
LAotICAgICAgICBQUk9QX0RFRkFVTFQsCi0gICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKAot
ICAgICAgICAgICAgImRlZmF1bHQiLAotICAgICAgICAgICAgIlNwZWVjaFN5bnRoZXNpc1ZvaWNl
OmRlZmF1bHQiLAotICAgICAgICAgICAgInJlYWQtb25seSBnYm9vbGVhbiBTcGVlY2hTeW50aGVz
aXNWb2ljZTpkZWZhdWx0IiwKLSAgICAgICAgICAgIEZBTFNFLAotICAgICAgICAgICAgV0VCS0lU
X1BBUkFNX1JFQURBQkxFKSk7Ci0KLX0KLQotc3RhdGljIHZvaWQgd2Via2l0X2RvbV9zcGVlY2hf
c3ludGhlc2lzX3ZvaWNlX2luaXQoV2ViS2l0RE9NU3BlZWNoU3ludGhlc2lzVm9pY2UqIHJlcXVl
c3QpCi17Ci0gICAgV2ViS2l0RE9NU3BlZWNoU3ludGhlc2lzVm9pY2VQcml2YXRlKiBwcml2ID0g
V0VCS0lUX0RPTV9TUEVFQ0hfU1lOVEhFU0lTX1ZPSUNFX0dFVF9QUklWQVRFKHJlcXVlc3QpOwot
ICAgIG5ldyAocHJpdikgV2ViS2l0RE9NU3BlZWNoU3ludGhlc2lzVm9pY2VQcml2YXRlKCk7Ci19
Ci0KLWdjaGFyKiB3ZWJraXRfZG9tX3NwZWVjaF9zeW50aGVzaXNfdm9pY2VfZ2V0X3ZvaWNlX3Vy
aShXZWJLaXRET01TcGVlY2hTeW50aGVzaXNWb2ljZSogc2VsZikKLXsKLSNpZiBFTkFCTEUoU1BF
RUNIX1NZTlRIRVNJUykKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7
Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19TUEVFQ0hfU1lOVEhFU0lT
X1ZPSUNFKHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpTcGVlY2hTeW50aGVzaXNWb2ljZSogaXRl
bSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBnY2hhciogcmVzdWx0ID0gY29udmVydFRvVVRG
OFN0cmluZyhpdGVtLT52b2ljZVVSSSgpKTsKLSAgICByZXR1cm4gcmVzdWx0OwotI2Vsc2UKLSAg
ICBVTlVTRURfUEFSQU0oc2VsZik7Ci0gICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VO
VCgiU3BlZWNoIFN5bnRoZXNpcyIpCi0gICAgcmV0dXJuIDA7Ci0jZW5kaWYgLyogRU5BQkxFKFNQ
RUVDSF9TWU5USEVTSVMpICovCi19Ci0KLWdjaGFyKiB3ZWJraXRfZG9tX3NwZWVjaF9zeW50aGVz
aXNfdm9pY2VfZ2V0X25hbWUoV2ViS2l0RE9NU3BlZWNoU3ludGhlc2lzVm9pY2UqIHNlbGYpCi17
Ci0jaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCi0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFk
TnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNf
U1BFRUNIX1NZTlRIRVNJU19WT0lDRShzZWxmKSwgMCk7Ci0gICAgV2ViQ29yZTo6U3BlZWNoU3lu
dGhlc2lzVm9pY2UqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ2NoYXIqIHJlc3Vs
dCA9IGNvbnZlcnRUb1VURjhTdHJpbmcoaXRlbS0+bmFtZSgpKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc2VsZik7Ci0gICAgV0VCS0lUX1dBUk5fRkVBVFVS
RV9OT1RfUFJFU0VOVCgiU3BlZWNoIFN5bnRoZXNpcyIpCi0gICAgcmV0dXJuIDA7Ci0jZW5kaWYg
LyogRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpICovCi19Ci0KLWdjaGFyKiB3ZWJraXRfZG9tX3Nw
ZWVjaF9zeW50aGVzaXNfdm9pY2VfZ2V0X2xhbmcoV2ViS2l0RE9NU3BlZWNoU3ludGhlc2lzVm9p
Y2UqIHNlbGYpCi17Ci0jaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCi0gICAgV2ViQ29yZTo6
SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdF
QktJVF9ET01fSVNfU1BFRUNIX1NZTlRIRVNJU19WT0lDRShzZWxmKSwgMCk7Ci0gICAgV2ViQ29y
ZTo6U3BlZWNoU3ludGhlc2lzVm9pY2UqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAg
Z2NoYXIqIHJlc3VsdCA9IGNvbnZlcnRUb1VURjhTdHJpbmcoaXRlbS0+bGFuZygpKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc2VsZik7Ci0gICAgV0VCS0lU
X1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiU3BlZWNoIFN5bnRoZXNpcyIpCi0gICAgcmV0dXJu
IDA7Ci0jZW5kaWYgLyogRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpICovCi19Ci0KLWdib29sZWFu
IHdlYmtpdF9kb21fc3BlZWNoX3N5bnRoZXNpc192b2ljZV9nZXRfbG9jYWxfc2VydmljZShXZWJL
aXRET01TcGVlY2hTeW50aGVzaXNWb2ljZSogc2VsZikKLXsKLSNpZiBFTkFCTEUoU1BFRUNIX1NZ
TlRIRVNJUykKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAg
Z19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19TUEVFQ0hfU1lOVEhFU0lTX1ZPSUNF
KHNlbGYpLCBGQUxTRSk7Ci0gICAgV2ViQ29yZTo6U3BlZWNoU3ludGhlc2lzVm9pY2UqIGl0ZW0g
PSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ2Jvb2xlYW4gcmVzdWx0ID0gaXRlbS0+bG9jYWxT
ZXJ2aWNlKCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHNl
bGYpOwotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIlNwZWVjaCBTeW50aGVz
aXMiKQotICAgIHJldHVybiBzdGF0aWNfY2FzdDxnYm9vbGVhbj4oMCk7Ci0jZW5kaWYgLyogRU5B
QkxFKFNQRUVDSF9TWU5USEVTSVMpICovCi19Ci0KLWdib29sZWFuIHdlYmtpdF9kb21fc3BlZWNo
X3N5bnRoZXNpc192b2ljZV9nZXRfZGVmYXVsdChXZWJLaXRET01TcGVlY2hTeW50aGVzaXNWb2lj
ZSogc2VsZikKLXsKLSNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKLSAgICBXZWJDb3JlOjpK
U01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VC
S0lUX0RPTV9JU19TUEVFQ0hfU1lOVEhFU0lTX1ZPSUNFKHNlbGYpLCBGQUxTRSk7Ci0gICAgV2Vi
Q29yZTo6U3BlZWNoU3ludGhlc2lzVm9pY2UqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0g
ICAgZ2Jvb2xlYW4gcmVzdWx0ID0gaXRlbS0+aXNEZWZhdWx0KCk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHNlbGYpOwotICAgIFdFQktJVF9XQVJOX0ZFQVRV
UkVfTk9UX1BSRVNFTlQoIlNwZWVjaCBTeW50aGVzaXMiKQotICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxnYm9vbGVhbj4oMCk7Ci0jZW5kaWYgLyogRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpICovCi19
Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2d0ay9ET00vV2ViS2l0RE9NU3BlZWNoU3ludGhlc2lzVm9pY2UuaCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NU3BlZWNo
U3ludGhlc2lzVm9pY2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWRkN2U4MC4u
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9ndGsvRE9NL1dlYktpdERPTVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmgKKysrIC9kZXYvbnVsbApA
QCAtMSwxMDggKzAsMCBAQAotLyoKLSAqICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0
IG9wZW4gc291cmNlIHByb2plY3QuCi0gKiAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBi
eSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKLSAqCi0gKiAgVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICog
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICog
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCi0gKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCi0gKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRl
ZiBXZWJLaXRET01TcGVlY2hTeW50aGVzaXNWb2ljZV9oCi0jZGVmaW5lIFdlYktpdERPTVNwZWVj
aFN5bnRoZXNpc1ZvaWNlX2gKLQotI2lmZGVmIFdFQktJVF9ET01fVVNFX1VOU1RBQkxFX0FQSQot
Ci0jaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KLSNpbmNsdWRlIDx3ZWJraXRkb20vV2ViS2l0RE9N
T2JqZWN0Lmg+Ci0jaW5jbHVkZSA8d2Via2l0ZG9tL3dlYmtpdGRvbWRlZmluZXMtdW5zdGFibGUu
aD4KLQotR19CRUdJTl9ERUNMUwotCi0jZGVmaW5lIFdFQktJVF9ET01fVFlQRV9TUEVFQ0hfU1lO
VEhFU0lTX1ZPSUNFICAgICAgICAgICAgKHdlYmtpdF9kb21fc3BlZWNoX3N5bnRoZXNpc192b2lj
ZV9nZXRfdHlwZSgpKQotI2RlZmluZSBXRUJLSVRfRE9NX1NQRUVDSF9TWU5USEVTSVNfVk9JQ0Uo
b2JqKSAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwgV0VCS0lU
X0RPTV9UWVBFX1NQRUVDSF9TWU5USEVTSVNfVk9JQ0UsIFdlYktpdERPTVNwZWVjaFN5bnRoZXNp
c1ZvaWNlKSkKLSNkZWZpbmUgV0VCS0lUX0RPTV9TUEVFQ0hfU1lOVEhFU0lTX1ZPSUNFX0NMQVNT
KGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJVF9ET01f
VFlQRV9TUEVFQ0hfU1lOVEhFU0lTX1ZPSUNFLCBXZWJLaXRET01TcGVlY2hTeW50aGVzaXNWb2lj
ZUNsYXNzKQotI2RlZmluZSBXRUJLSVRfRE9NX0lTX1NQRUVDSF9TWU5USEVTSVNfVk9JQ0Uob2Jq
KSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX0RPTV9U
WVBFX1NQRUVDSF9TWU5USEVTSVNfVk9JQ0UpKQotI2RlZmluZSBXRUJLSVRfRE9NX0lTX1NQRUVD
SF9TWU5USEVTSVNfVk9JQ0VfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgo
a2xhc3MpLCAgV0VCS0lUX0RPTV9UWVBFX1NQRUVDSF9TWU5USEVTSVNfVk9JQ0UpKQotI2RlZmlu
ZSBXRUJLSVRfRE9NX1NQRUVDSF9TWU5USEVTSVNfVk9JQ0VfR0VUX0NMQVNTKG9iaikgIChHX1RZ
UEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgV0VCS0lUX0RPTV9UWVBFX1NQRUVDSF9TWU5U
SEVTSVNfVk9JQ0UsIFdlYktpdERPTVNwZWVjaFN5bnRoZXNpc1ZvaWNlQ2xhc3MpKQotCi1zdHJ1
Y3QgX1dlYktpdERPTVNwZWVjaFN5bnRoZXNpc1ZvaWNlIHsKLSAgICBXZWJLaXRET01PYmplY3Qg
cGFyZW50X2luc3RhbmNlOwotfTsKLQotc3RydWN0IF9XZWJLaXRET01TcGVlY2hTeW50aGVzaXNW
b2ljZUNsYXNzIHsKLSAgICBXZWJLaXRET01PYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7Ci19Owot
Ci1XRUJLSVRfQVBJIEdUeXBlCi13ZWJraXRfZG9tX3NwZWVjaF9zeW50aGVzaXNfdm9pY2VfZ2V0
X3R5cGUodm9pZCk7Ci0KLS8qKgotICogd2Via2l0X2RvbV9zcGVlY2hfc3ludGhlc2lzX3ZvaWNl
X2dldF92b2ljZV91cmk6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NU3BlZWNoU3ludGhlc2lzVm9p
Y2UKLSAqCi0gKiBSZXR1cm5zOiBBICNnY2hhcgotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUK
LSoqLwotV0VCS0lUX0FQSSBnY2hhcioKLXdlYmtpdF9kb21fc3BlZWNoX3N5bnRoZXNpc192b2lj
ZV9nZXRfdm9pY2VfdXJpKFdlYktpdERPTVNwZWVjaFN5bnRoZXNpc1ZvaWNlKiBzZWxmKTsKLQot
LyoqCi0gKiB3ZWJraXRfZG9tX3NwZWVjaF9zeW50aGVzaXNfdm9pY2VfZ2V0X25hbWU6Ci0gKiBA
c2VsZjogQSAjV2ViS2l0RE9NU3BlZWNoU3ludGhlc2lzVm9pY2UKLSAqCi0gKiBSZXR1cm5zOiBB
ICNnY2hhcgotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSBnY2hh
cioKLXdlYmtpdF9kb21fc3BlZWNoX3N5bnRoZXNpc192b2ljZV9nZXRfbmFtZShXZWJLaXRET01T
cGVlY2hTeW50aGVzaXNWb2ljZSogc2VsZik7Ci0KLS8qKgotICogd2Via2l0X2RvbV9zcGVlY2hf
c3ludGhlc2lzX3ZvaWNlX2dldF9sYW5nOgotICogQHNlbGY6IEEgI1dlYktpdERPTVNwZWVjaFN5
bnRoZXNpc1ZvaWNlCi0gKgotICogUmV0dXJuczogQSAjZ2NoYXIKLSAqCi0gKiBTdGFiaWxpdHk6
IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgZ2NoYXIqCi13ZWJraXRfZG9tX3NwZWVjaF9zeW50
aGVzaXNfdm9pY2VfZ2V0X2xhbmcoV2ViS2l0RE9NU3BlZWNoU3ludGhlc2lzVm9pY2UqIHNlbGYp
OwotCi0vKioKLSAqIHdlYmtpdF9kb21fc3BlZWNoX3N5bnRoZXNpc192b2ljZV9nZXRfbG9jYWxf
c2VydmljZToKLSAqIEBzZWxmOiBBICNXZWJLaXRET01TcGVlY2hTeW50aGVzaXNWb2ljZQotICoK
LSAqIFJldHVybnM6IEEgI2dib29sZWFuCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiov
Ci1XRUJLSVRfQVBJIGdib29sZWFuCi13ZWJraXRfZG9tX3NwZWVjaF9zeW50aGVzaXNfdm9pY2Vf
Z2V0X2xvY2FsX3NlcnZpY2UoV2ViS2l0RE9NU3BlZWNoU3ludGhlc2lzVm9pY2UqIHNlbGYpOwot
Ci0vKioKLSAqIHdlYmtpdF9kb21fc3BlZWNoX3N5bnRoZXNpc192b2ljZV9nZXRfZGVmYXVsdDoK
LSAqIEBzZWxmOiBBICNXZWJLaXRET01TcGVlY2hTeW50aGVzaXNWb2ljZQotICoKLSAqIFJldHVy
bnM6IEEgI2dib29sZWFuCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRf
QVBJIGdib29sZWFuCi13ZWJraXRfZG9tX3NwZWVjaF9zeW50aGVzaXNfdm9pY2VfZ2V0X2RlZmF1
bHQoV2ViS2l0RE9NU3BlZWNoU3ludGhlc2lzVm9pY2UqIHNlbGYpOwotCi1HX0VORF9ERUNMUwot
Ci0jZW5kaWYgLyogV0VCS0lUX0RPTV9VU0VfVU5TVEFCTEVfQVBJICovCi0jZW5kaWYgLyogV2Vi
S2l0RE9NU3BlZWNoU3ludGhlc2lzVm9pY2VfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01TcGVlY2hT
eW50aGVzaXNWb2ljZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NU3BlZWNoU3ludGhlc2lzVm9pY2VQcml2YXRl
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAyMzk0MGIuLjAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJL
aXRET01TcGVlY2hTeW50aGVzaXNWb2ljZVByaXZhdGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDM2
ICswLDAgQEAKLS8qCi0gKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNv
dXJjZSBwcm9qZWN0LgotICogIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJh
dGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICog
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgot
ICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgV2ViS2l0
RE9NU3BlZWNoU3ludGhlc2lzVm9pY2VQcml2YXRlX2gKLSNkZWZpbmUgV2ViS2l0RE9NU3BlZWNo
U3ludGhlc2lzVm9pY2VQcml2YXRlX2gKLQotI2luY2x1ZGUgPFdlYkNvcmUvU3BlZWNoU3ludGhl
c2lzVm9pY2UuaD4KLSNpbmNsdWRlIDx3ZWJraXRkb20vV2ViS2l0RE9NU3BlZWNoU3ludGhlc2lz
Vm9pY2UuaD4KLSNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKLQotbmFtZXNwYWNlIFdlYktp
dCB7Ci1XZWJLaXRET01TcGVlY2hTeW50aGVzaXNWb2ljZSogd3JhcFNwZWVjaFN5bnRoZXNpc1Zv
aWNlKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpc1ZvaWNlKik7Ci1XZWJLaXRET01TcGVlY2hTeW50
aGVzaXNWb2ljZSoga2l0KFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpc1ZvaWNlKik7Ci1XZWJDb3Jl
OjpTcGVlY2hTeW50aGVzaXNWb2ljZSogY29yZShXZWJLaXRET01TcGVlY2hTeW50aGVzaXNWb2lj
ZSopOwotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvKiBFTkFCTEUoU1BFRUNIX1NZ
TlRIRVNJUykgKi8KLQotI2VuZGlmIC8qIFdlYktpdERPTVNwZWVjaFN5bnRoZXNpc1ZvaWNlUHJp
dmF0ZV9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01TdG9yYWdlLmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTY1OWE1NS4uMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktp
dERPTVN0b3JhZ2UuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjIyICswLDAgQEAKLS8qCi0gKiAg
VGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICog
IFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERP
IE5PVCBNT0RJRlkhCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
LSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJX
ZWJLaXRET01TdG9yYWdlLmgiCi0KLSNpbmNsdWRlIDxXZWJDb3JlL0NTU0ltcG9ydFJ1bGUuaD4K
LSNpbmNsdWRlICJET01PYmplY3RDYWNoZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnQu
aD4KLSNpbmNsdWRlIDxXZWJDb3JlL0V4Y2VwdGlvbkNvZGUuaD4KLSNpbmNsdWRlIDxXZWJDb3Jl
L0V4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbi5oPgotI2luY2x1ZGUgPFdlYkNvcmUvSlNNYWluVGhy
ZWFkRXhlY1N0YXRlLmg+Ci0jaW5jbHVkZSAiV2ViS2l0RE9NUHJpdmF0ZS5oIgotI2luY2x1ZGUg
IldlYktpdERPTVN0b3JhZ2VQcml2YXRlLmgiCi0jaW5jbHVkZSAiQ29udmVydFRvVVRGOFN0cmlu
Zy5oIgotI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0K
LSNkZWZpbmUgV0VCS0lUX0RPTV9TVE9SQUdFX0dFVF9QUklWQVRFKG9iaikgR19UWVBFX0lOU1RB
TkNFX0dFVF9QUklWQVRFKG9iaiwgV0VCS0lUX0RPTV9UWVBFX1NUT1JBR0UsIFdlYktpdERPTVN0
b3JhZ2VQcml2YXRlKQotCi10eXBlZGVmIHN0cnVjdCBfV2ViS2l0RE9NU3RvcmFnZVByaXZhdGUg
ewotICAgIFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlPiBjb3JlT2JqZWN0OwotfSBXZWJLaXRET01T
dG9yYWdlUHJpdmF0ZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVdlYktpdERPTVN0b3JhZ2Uq
IGtpdChXZWJDb3JlOjpTdG9yYWdlKiBvYmopCi17Ci0gICAgaWYgKCFvYmopCi0gICAgICAgIHJl
dHVybiAwOwotCi0gICAgaWYgKGdwb2ludGVyIHJldCA9IERPTU9iamVjdENhY2hlOjpnZXQob2Jq
KSkKLSAgICAgICAgcmV0dXJuIFdFQktJVF9ET01fU1RPUkFHRShyZXQpOwotCi0gICAgcmV0dXJu
IHdyYXBTdG9yYWdlKG9iaik7Ci19Ci0KLVdlYkNvcmU6OlN0b3JhZ2UqIGNvcmUoV2ViS2l0RE9N
U3RvcmFnZSogcmVxdWVzdCkKLXsKLSAgICByZXR1cm4gcmVxdWVzdCA/IHN0YXRpY19jYXN0PFdl
YkNvcmU6OlN0b3JhZ2UqPihXRUJLSVRfRE9NX09CSkVDVChyZXF1ZXN0KS0+Y29yZU9iamVjdCkg
OiAwOwotfQotCi1XZWJLaXRET01TdG9yYWdlKiB3cmFwU3RvcmFnZShXZWJDb3JlOjpTdG9yYWdl
KiBjb3JlT2JqZWN0KQotewotICAgIEFTU0VSVChjb3JlT2JqZWN0KTsKLSAgICByZXR1cm4gV0VC
S0lUX0RPTV9TVE9SQUdFKGdfb2JqZWN0X25ldyhXRUJLSVRfRE9NX1RZUEVfU1RPUkFHRSwgImNv
cmUtb2JqZWN0IiwgY29yZU9iamVjdCwgbnVsbHB0cikpOwotfQotCi19IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKLQotR19ERUZJTkVfVFlQRShXZWJLaXRET01TdG9yYWdlLCB3ZWJraXRfZG9tX3N0b3Jh
Z2UsIFdFQktJVF9ET01fVFlQRV9PQkpFQ1QpCi0KLWVudW0gewotICAgIFBST1BfMCwKLSAgICBQ
Uk9QX0xFTkdUSCwKLX07Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdF9kb21fc3RvcmFnZV9maW5hbGl6
ZShHT2JqZWN0KiBvYmplY3QpCi17Ci0gICAgV2ViS2l0RE9NU3RvcmFnZVByaXZhdGUqIHByaXYg
PSBXRUJLSVRfRE9NX1NUT1JBR0VfR0VUX1BSSVZBVEUob2JqZWN0KTsKLQotICAgIFdlYktpdDo6
RE9NT2JqZWN0Q2FjaGU6OmZvcmdldChwcml2LT5jb3JlT2JqZWN0LmdldCgpKTsKLQotICAgIHBy
aXYtPn5XZWJLaXRET01TdG9yYWdlUHJpdmF0ZSgpOwotICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtp
dF9kb21fc3RvcmFnZV9wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmplY3QpOwotfQotCi1zdGF0
aWMgdm9pZCB3ZWJraXRfZG9tX3N0b3JhZ2VfZ2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwg
Z3VpbnQgcHJvcGVydHlJZCwgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpCi17Ci0g
ICAgV2ViS2l0RE9NU3RvcmFnZSogc2VsZiA9IFdFQktJVF9ET01fU1RPUkFHRShvYmplY3QpOwot
Ci0gICAgc3dpdGNoIChwcm9wZXJ0eUlkKSB7Ci0gICAgY2FzZSBQUk9QX0xFTkdUSDoKLSAgICAg
ICAgZ192YWx1ZV9zZXRfdWxvbmcodmFsdWUsIHdlYmtpdF9kb21fc3RvcmFnZV9nZXRfbGVuZ3Ro
KHNlbGYsIG51bGxwdHIpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAg
R19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcGVydHlJZCwgcHNw
ZWMpOwotICAgICAgICBicmVhazsKLSAgICB9Ci19Ci0KLXN0YXRpYyBHT2JqZWN0KiB3ZWJraXRf
ZG9tX3N0b3JhZ2VfY29uc3RydWN0b3IoR1R5cGUgdHlwZSwgZ3VpbnQgY29uc3RydWN0UHJvcGVy
dGllc0NvdW50LCBHT2JqZWN0Q29uc3RydWN0UGFyYW0qIGNvbnN0cnVjdFByb3BlcnRpZXMpCi17
Ci0gICAgR09iamVjdCogb2JqZWN0ID0gR19PQkpFQ1RfQ0xBU1Mod2Via2l0X2RvbV9zdG9yYWdl
X3BhcmVudF9jbGFzcyktPmNvbnN0cnVjdG9yKHR5cGUsIGNvbnN0cnVjdFByb3BlcnRpZXNDb3Vu
dCwgY29uc3RydWN0UHJvcGVydGllcyk7Ci0KLSAgICBXZWJLaXRET01TdG9yYWdlUHJpdmF0ZSog
cHJpdiA9IFdFQktJVF9ET01fU1RPUkFHRV9HRVRfUFJJVkFURShvYmplY3QpOwotICAgIHByaXYt
PmNvcmVPYmplY3QgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpTdG9yYWdlKj4oV0VCS0lUX0RPTV9P
QkpFQ1Qob2JqZWN0KS0+Y29yZU9iamVjdCk7Ci0gICAgV2ViS2l0OjpET01PYmplY3RDYWNoZTo6
cHV0KHByaXYtPmNvcmVPYmplY3QuZ2V0KCksIG9iamVjdCk7Ci0KLSAgICByZXR1cm4gb2JqZWN0
OwotfQotCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3N0b3JhZ2VfY2xhc3NfaW5pdChXZWJLaXRE
T01TdG9yYWdlQ2xhc3MqIHJlcXVlc3RDbGFzcykKLXsKLSAgICBHT2JqZWN0Q2xhc3MqIGdvYmpl
Y3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKHJlcXVlc3RDbGFzcyk7Ci0gICAgZ190eXBlX2NsYXNz
X2FkZF9wcml2YXRlKGdvYmplY3RDbGFzcywgc2l6ZW9mKFdlYktpdERPTVN0b3JhZ2VQcml2YXRl
KSk7Ci0gICAgZ29iamVjdENsYXNzLT5jb25zdHJ1Y3RvciA9IHdlYmtpdF9kb21fc3RvcmFnZV9j
b25zdHJ1Y3RvcjsKLSAgICBnb2JqZWN0Q2xhc3MtPmZpbmFsaXplID0gd2Via2l0X2RvbV9zdG9y
YWdlX2ZpbmFsaXplOwotICAgIGdvYmplY3RDbGFzcy0+Z2V0X3Byb3BlcnR5ID0gd2Via2l0X2Rv
bV9zdG9yYWdlX2dldF9wcm9wZXJ0eTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJv
cGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9MRU5HVEgsCi0gICAg
ICAgIGdfcGFyYW1fc3BlY191bG9uZygKLSAgICAgICAgICAgICJsZW5ndGgiLAotICAgICAgICAg
ICAgIlN0b3JhZ2U6bGVuZ3RoIiwKLSAgICAgICAgICAgICJyZWFkLW9ubHkgZ3Vsb25nIFN0b3Jh
Z2U6bGVuZ3RoIiwKLSAgICAgICAgICAgIDAsIEdfTUFYVUxPTkcsIDAsCi0gICAgICAgICAgICBX
RUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKLQotfQotCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3N0
b3JhZ2VfaW5pdChXZWJLaXRET01TdG9yYWdlKiByZXF1ZXN0KQotewotICAgIFdlYktpdERPTVN0
b3JhZ2VQcml2YXRlKiBwcml2ID0gV0VCS0lUX0RPTV9TVE9SQUdFX0dFVF9QUklWQVRFKHJlcXVl
c3QpOwotICAgIG5ldyAocHJpdikgV2ViS2l0RE9NU3RvcmFnZVByaXZhdGUoKTsKLX0KLQotZ2No
YXIqIHdlYmtpdF9kb21fc3RvcmFnZV9rZXkoV2ViS2l0RE9NU3RvcmFnZSogc2VsZiwgZ3Vsb25n
IGluZGV4LCBHRXJyb3IqKiBlcnJvcikKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxs
U3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19TVE9S
QUdFKHNlbGYpLCAwKTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbCghZXJyb3IgfHwgISplcnJv
ciwgMCk7Ci0gICAgV2ViQ29yZTo6U3RvcmFnZSogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsK
LSAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBnY2hhciogcmVzdWx0ID0g
Y29udmVydFRvVVRGOFN0cmluZyhpdGVtLT5rZXkoaW5kZXgsIGVjKSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLQotZ2NoYXIqIHdlYmtpdF9kb21fc3RvcmFnZV9nZXRfaXRlbShXZWJLaXRET01T
dG9yYWdlKiBzZWxmLCBjb25zdCBnY2hhcioga2V5LCBHRXJyb3IqKiBlcnJvcikKLXsKLSAgICBX
ZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoV0VCS0lUX0RPTV9JU19TVE9SQUdFKHNlbGYpLCAwKTsKLSAgICBnX3JldHVybl92YWxf
aWZfZmFpbChrZXksIDApOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKCFlcnJvciB8fCAhKmVy
cm9yLCAwKTsKLSAgICBXZWJDb3JlOjpTdG9yYWdlKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYp
OwotICAgIFdURjo6U3RyaW5nIGNvbnZlcnRlZEtleSA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOChr
ZXkpOwotICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGdjaGFyKiByZXN1
bHQgPSBjb252ZXJ0VG9VVEY4U3RyaW5nKGl0ZW0tPmdldEl0ZW0oY29udmVydGVkS2V5LCBlYykp
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXZvaWQgd2Via2l0X2RvbV9zdG9yYWdlX3NldF9p
dGVtKFdlYktpdERPTVN0b3JhZ2UqIHNlbGYsIGNvbnN0IGdjaGFyKiBrZXksIGNvbnN0IGdjaGFy
KiBkYXRhLCBHRXJyb3IqKiBlcnJvcikKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxs
U3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX1NUT1JBR0Uo
c2VsZikpOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwoa2V5KTsKLSAgICBnX3JldHVybl9pZl9mYWls
KGRhdGEpOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwoIWVycm9yIHx8ICEqZXJyb3IpOwotICAgIFdl
YkNvcmU6OlN0b3JhZ2UqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgV1RGOjpTdHJp
bmcgY29udmVydGVkS2V5ID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KGtleSk7Ci0gICAgV1RGOjpT
dHJpbmcgY29udmVydGVkRGF0YSA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOChkYXRhKTsKLSAgICBX
ZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBpdGVtLT5zZXRJdGVtKGNvbnZlcnRl
ZEtleSwgY29udmVydGVkRGF0YSwgZWMpOwotICAgIGlmIChlYykgewotICAgICAgICBXZWJDb3Jl
OjpFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24gZWNkZXNjKGVjKTsKLSAgICAgICAgZ19zZXRfZXJy
b3JfbGl0ZXJhbChlcnJvciwgZ19xdWFya19mcm9tX3N0cmluZygiV0VCS0lUX0RPTSIpLCBlY2Rl
c2MuY29kZSwgZWNkZXNjLm5hbWUpOwotICAgIH0KLX0KLQotdm9pZCB3ZWJraXRfZG9tX3N0b3Jh
Z2VfcmVtb3ZlX2l0ZW0oV2ViS2l0RE9NU3RvcmFnZSogc2VsZiwgY29uc3QgZ2NoYXIqIGtleSwg
R0Vycm9yKiogZXJyb3IpCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0
YXRlOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19TVE9SQUdFKHNlbGYpKTsK
LSAgICBnX3JldHVybl9pZl9mYWlsKGtleSk7Ci0gICAgZ19yZXR1cm5faWZfZmFpbCghZXJyb3Ig
fHwgISplcnJvcik7Ci0gICAgV2ViQ29yZTo6U3RvcmFnZSogaXRlbSA9IFdlYktpdDo6Y29yZShz
ZWxmKTsKLSAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRLZXkgPSBXVEY6OlN0cmluZzo6ZnJvbVVU
Rjgoa2V5KTsKLSAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBpdGVtLT5y
ZW1vdmVJdGVtKGNvbnZlcnRlZEtleSwgZWMpOwotICAgIGlmIChlYykgewotICAgICAgICBXZWJD
b3JlOjpFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24gZWNkZXNjKGVjKTsKLSAgICAgICAgZ19zZXRf
ZXJyb3JfbGl0ZXJhbChlcnJvciwgZ19xdWFya19mcm9tX3N0cmluZygiV0VCS0lUX0RPTSIpLCBl
Y2Rlc2MuY29kZSwgZWNkZXNjLm5hbWUpOwotICAgIH0KLX0KLQotdm9pZCB3ZWJraXRfZG9tX3N0
b3JhZ2VfY2xlYXIoV2ViS2l0RE9NU3RvcmFnZSogc2VsZiwgR0Vycm9yKiogZXJyb3IpCi17Ci0g
ICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX2lm
X2ZhaWwoV0VCS0lUX0RPTV9JU19TVE9SQUdFKHNlbGYpKTsKLSAgICBnX3JldHVybl9pZl9mYWls
KCFlcnJvciB8fCAhKmVycm9yKTsKLSAgICBXZWJDb3JlOjpTdG9yYWdlKiBpdGVtID0gV2ViS2l0
Ojpjb3JlKHNlbGYpOwotICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGl0
ZW0tPmNsZWFyKGVjKTsKLSAgICBpZiAoZWMpIHsKLSAgICAgICAgV2ViQ29yZTo6RXhjZXB0aW9u
Q29kZURlc2NyaXB0aW9uIGVjZGVzYyhlYyk7Ci0gICAgICAgIGdfc2V0X2Vycm9yX2xpdGVyYWwo
ZXJyb3IsIGdfcXVhcmtfZnJvbV9zdHJpbmcoIldFQktJVF9ET00iKSwgZWNkZXNjLmNvZGUsIGVj
ZGVzYy5uYW1lKTsKLSAgICB9Ci19Ci0KLWd1bG9uZyB3ZWJraXRfZG9tX3N0b3JhZ2VfZ2V0X2xl
bmd0aChXZWJLaXRET01TdG9yYWdlKiBzZWxmLCBHRXJyb3IqKiBlcnJvcikKLXsKLSAgICBXZWJD
b3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwoV0VCS0lUX0RPTV9JU19TVE9SQUdFKHNlbGYpLCAwKTsKLSAgICBnX3JldHVybl92YWxfaWZf
ZmFpbCghZXJyb3IgfHwgISplcnJvciwgMCk7Ci0gICAgV2ViQ29yZTo6U3RvcmFnZSogaXRlbSA9
IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsK
LSAgICBndWxvbmcgcmVzdWx0ID0gaXRlbS0+bGVuZ3RoKGVjKTsKLSAgICBpZiAoZWMpIHsKLSAg
ICAgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uIGVjZGVzYyhlYyk7Ci0gICAg
ICAgIGdfc2V0X2Vycm9yX2xpdGVyYWwoZXJyb3IsIGdfcXVhcmtfZnJvbV9zdHJpbmcoIldFQktJ
VF9ET00iKSwgZWNkZXNjLmNvZGUsIGVjZGVzYy5uYW1lKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01TdG9yYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVN0b3JhZ2UuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmZlZjEwMi4uMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERP
TVN0b3JhZ2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDEyNCArMCwwIEBACi0vKgotICogIFRoaXMg
ZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAqICBUaGlz
IGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1Qg
TU9ESUZZIQotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgot
ICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQotICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KLSAqLwotCi0jaWZuZGVmIFdlYktpdERPTVN0b3JhZ2VfaAotI2RlZmluZSBX
ZWJLaXRET01TdG9yYWdlX2gKLQotI2lmZGVmIFdFQktJVF9ET01fVVNFX1VOU1RBQkxFX0FQSQot
Ci0jaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KLSNpbmNsdWRlIDx3ZWJraXRkb20vV2ViS2l0RE9N
T2JqZWN0Lmg+Ci0jaW5jbHVkZSA8d2Via2l0ZG9tL3dlYmtpdGRvbWRlZmluZXMtdW5zdGFibGUu
aD4KLQotR19CRUdJTl9ERUNMUwotCi0jZGVmaW5lIFdFQktJVF9ET01fVFlQRV9TVE9SQUdFICAg
ICAgICAgICAgKHdlYmtpdF9kb21fc3RvcmFnZV9nZXRfdHlwZSgpKQotI2RlZmluZSBXRUJLSVRf
RE9NX1NUT1JBR0Uob2JqKSAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgo
b2JqKSwgV0VCS0lUX0RPTV9UWVBFX1NUT1JBR0UsIFdlYktpdERPTVN0b3JhZ2UpKQotI2RlZmlu
ZSBXRUJLSVRfRE9NX1NUT1JBR0VfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1Nf
Q0FTVCgoa2xhc3MpLCAgV0VCS0lUX0RPTV9UWVBFX1NUT1JBR0UsIFdlYktpdERPTVN0b3JhZ2VD
bGFzcykKLSNkZWZpbmUgV0VCS0lUX0RPTV9JU19TVE9SQUdFKG9iaikgICAgICAgICAoR19UWVBF
X0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksIFdFQktJVF9ET01fVFlQRV9TVE9SQUdFKSkKLSNk
ZWZpbmUgV0VCS0lUX0RPTV9JU19TVE9SQUdFX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NM
QVNTX1RZUEUoKGtsYXNzKSwgIFdFQktJVF9ET01fVFlQRV9TVE9SQUdFKSkKLSNkZWZpbmUgV0VC
S0lUX0RPTV9TVE9SQUdFX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFT
Uygob2JqKSwgIFdFQktJVF9ET01fVFlQRV9TVE9SQUdFLCBXZWJLaXRET01TdG9yYWdlQ2xhc3Mp
KQotCi1zdHJ1Y3QgX1dlYktpdERPTVN0b3JhZ2UgewotICAgIFdlYktpdERPTU9iamVjdCBwYXJl
bnRfaW5zdGFuY2U7Ci19OwotCi1zdHJ1Y3QgX1dlYktpdERPTVN0b3JhZ2VDbGFzcyB7Ci0gICAg
V2ViS2l0RE9NT2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOwotfTsKLQotV0VCS0lUX0FQSSBHVHlw
ZQotd2Via2l0X2RvbV9zdG9yYWdlX2dldF90eXBlKHZvaWQpOwotCi0vKioKLSAqIHdlYmtpdF9k
b21fc3RvcmFnZV9rZXk6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NU3RvcmFnZQotICogQGluZGV4
OiBBICNndWxvbmcKLSAqIEBlcnJvcjogI0dFcnJvcgotICoKLSAqIFJldHVybnM6IEEgI2djaGFy
Ci0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIGdjaGFyKgotd2Vi
a2l0X2RvbV9zdG9yYWdlX2tleShXZWJLaXRET01TdG9yYWdlKiBzZWxmLCBndWxvbmcgaW5kZXgs
IEdFcnJvcioqIGVycm9yKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX3N0b3JhZ2VfZ2V0X2l0ZW06
Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NU3RvcmFnZQotICogQGtleTogQSAjZ2NoYXIKLSAqIEBl
cnJvcjogI0dFcnJvcgotICoKLSAqIFJldHVybnM6IEEgI2djaGFyCi0gKgotICogU3RhYmlsaXR5
OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIGdjaGFyKgotd2Via2l0X2RvbV9zdG9yYWdlX2dl
dF9pdGVtKFdlYktpdERPTVN0b3JhZ2UqIHNlbGYsIGNvbnN0IGdjaGFyKiBrZXksIEdFcnJvcioq
IGVycm9yKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX3N0b3JhZ2Vfc2V0X2l0ZW06Ci0gKiBAc2Vs
ZjogQSAjV2ViS2l0RE9NU3RvcmFnZQotICogQGtleTogQSAjZ2NoYXIKLSAqIEBkYXRhOiBBICNn
Y2hhcgotICogQGVycm9yOiAjR0Vycm9yCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiov
Ci1XRUJLSVRfQVBJIHZvaWQKLXdlYmtpdF9kb21fc3RvcmFnZV9zZXRfaXRlbShXZWJLaXRET01T
dG9yYWdlKiBzZWxmLCBjb25zdCBnY2hhcioga2V5LCBjb25zdCBnY2hhciogZGF0YSwgR0Vycm9y
KiogZXJyb3IpOwotCi0vKioKLSAqIHdlYmtpdF9kb21fc3RvcmFnZV9yZW1vdmVfaXRlbToKLSAq
IEBzZWxmOiBBICNXZWJLaXRET01TdG9yYWdlCi0gKiBAa2V5OiBBICNnY2hhcgotICogQGVycm9y
OiAjR0Vycm9yCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIHZv
aWQKLXdlYmtpdF9kb21fc3RvcmFnZV9yZW1vdmVfaXRlbShXZWJLaXRET01TdG9yYWdlKiBzZWxm
LCBjb25zdCBnY2hhcioga2V5LCBHRXJyb3IqKiBlcnJvcik7Ci0KLS8qKgotICogd2Via2l0X2Rv
bV9zdG9yYWdlX2NsZWFyOgotICogQHNlbGY6IEEgI1dlYktpdERPTVN0b3JhZ2UKLSAqIEBlcnJv
cjogI0dFcnJvcgotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSB2
b2lkCi13ZWJraXRfZG9tX3N0b3JhZ2VfY2xlYXIoV2ViS2l0RE9NU3RvcmFnZSogc2VsZiwgR0Vy
cm9yKiogZXJyb3IpOwotCi0vKioKLSAqIHdlYmtpdF9kb21fc3RvcmFnZV9nZXRfbGVuZ3RoOgot
ICogQHNlbGY6IEEgI1dlYktpdERPTVN0b3JhZ2UKLSAqIEBlcnJvcjogI0dFcnJvcgotICoKLSAq
IFJldHVybnM6IEEgI2d1bG9uZwotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VC
S0lUX0FQSSBndWxvbmcKLXdlYmtpdF9kb21fc3RvcmFnZV9nZXRfbGVuZ3RoKFdlYktpdERPTVN0
b3JhZ2UqIHNlbGYsIEdFcnJvcioqIGVycm9yKTsKLQotR19FTkRfREVDTFMKLQotI2VuZGlmIC8q
IFdFQktJVF9ET01fVVNFX1VOU1RBQkxFX0FQSSAqLwotI2VuZGlmIC8qIFdlYktpdERPTVN0b3Jh
Z2VfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01TdG9yYWdlSW5mby5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVN0b3JhZ2VJ
bmZvLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTBjYTBiOC4uMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9N
L1dlYktpdERPTVN0b3JhZ2VJbmZvLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAot
LyoKLSAgICBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGp1c3QgdG8gdGVsbCBidWlsZCBzY3JpcHRz
IHRoYXQgV2ViS2l0RE9NU3RvcmFnZUluZm8uaCBhbmQKLSAgICBXZWJLaXRET01TdG9yYWdlSW5m
by5jcHAgYXJlIGNyZWF0ZWQgZm9yIFN0b3JhZ2VJbmZvLmlkbCwgYW5kIHRodXMKLSAgICBwcmV2
ZW50IHRoZSBidWlsZCBzY3JpcHRzIGZyb20gdHJ5aW5nIHRvIGdlbmVyYXRlIFdlYktpdERPTVN0
b3JhZ2VJbmZvLmggYW5kCi0gICAgV2ViS2l0RE9NU3RvcmFnZUluZm8uY3BwIGF0IGV2ZXJ5IGJ1
aWxkLiBUaGlzIGZpbGUgbXVzdCBub3QgYmUgdHJpZWQgdG8gY29tcGlsZS4KLSovCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9N
L1dlYktpdERPTVN0b3JhZ2VJbmZvLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVN0b3JhZ2VJbmZvLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDkwY2EwYjguLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01TdG9yYWdlSW5m
by5oCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi0vKgotICAgIFRoaXMgZmlsZSBpcyBn
ZW5lcmF0ZWQganVzdCB0byB0ZWxsIGJ1aWxkIHNjcmlwdHMgdGhhdCBXZWJLaXRET01TdG9yYWdl
SW5mby5oIGFuZAotICAgIFdlYktpdERPTVN0b3JhZ2VJbmZvLmNwcCBhcmUgY3JlYXRlZCBmb3Ig
U3RvcmFnZUluZm8uaWRsLCBhbmQgdGh1cwotICAgIHByZXZlbnQgdGhlIGJ1aWxkIHNjcmlwdHMg
ZnJvbSB0cnlpbmcgdG8gZ2VuZXJhdGUgV2ViS2l0RE9NU3RvcmFnZUluZm8uaCBhbmQKLSAgICBX
ZWJLaXRET01TdG9yYWdlSW5mby5jcHAgYXQgZXZlcnkgYnVpbGQuIFRoaXMgZmlsZSBtdXN0IG5v
dCBiZSB0cmllZCB0byBjb21waWxlLgotKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NU3RvcmFnZVByaXZh
dGUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9E
T00vV2ViS2l0RE9NU3RvcmFnZVByaXZhdGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMWMyYmY5ZC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVN0b3JhZ2VQcml2YXRlLmgKKysrIC9kZXYv
bnVsbApAQCAtMSwzMyArMCwwIEBACi0vKgotICogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBX
ZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAqICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJh
dGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQotICoKLSAqICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
Ci0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
Ci0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0g
KiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKLSAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0j
aWZuZGVmIFdlYktpdERPTVN0b3JhZ2VQcml2YXRlX2gKLSNkZWZpbmUgV2ViS2l0RE9NU3RvcmFn
ZVByaXZhdGVfaAotCi0jaW5jbHVkZSA8V2ViQ29yZS9TdG9yYWdlLmg+Ci0jaW5jbHVkZSA8d2Vi
a2l0ZG9tL1dlYktpdERPTVN0b3JhZ2UuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci1XZWJLaXRE
T01TdG9yYWdlKiB3cmFwU3RvcmFnZShXZWJDb3JlOjpTdG9yYWdlKik7Ci1XZWJLaXRET01TdG9y
YWdlKiBraXQoV2ViQ29yZTo6U3RvcmFnZSopOwotV2ViQ29yZTo6U3RvcmFnZSogY29yZShXZWJL
aXRET01TdG9yYWdlKik7Ci19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8qIFdlYktp
dERPTVN0b3JhZ2VQcml2YXRlX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NU3RvcmFnZVF1b3RhLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00v
V2ViS2l0RE9NU3RvcmFnZVF1b3RhLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
N2RiNTYyMS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVN0b3JhZ2VRdW90YS5jcHAKKysrIC9kZXYvbnVs
bApAQCAtMSw2ICswLDAgQEAKLS8qCi0gICAgVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBqdXN0IHRv
IHRlbGwgYnVpbGQgc2NyaXB0cyB0aGF0IFdlYktpdERPTVN0b3JhZ2VRdW90YS5oIGFuZAotICAg
IFdlYktpdERPTVN0b3JhZ2VRdW90YS5jcHAgYXJlIGNyZWF0ZWQgZm9yIFN0b3JhZ2VRdW90YS5p
ZGwsIGFuZCB0aHVzCi0gICAgcHJldmVudCB0aGUgYnVpbGQgc2NyaXB0cyBmcm9tIHRyeWluZyB0
byBnZW5lcmF0ZSBXZWJLaXRET01TdG9yYWdlUXVvdGEuaCBhbmQKLSAgICBXZWJLaXRET01TdG9y
YWdlUXVvdGEuY3BwIGF0IGV2ZXJ5IGJ1aWxkLiBUaGlzIGZpbGUgbXVzdCBub3QgYmUgdHJpZWQg
dG8gY29tcGlsZS4KLSovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVN0b3JhZ2VRdW90YS5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01T
dG9yYWdlUXVvdGEuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2RiNTYyMS4uMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
dGsvRE9NL1dlYktpdERPTVN0b3JhZ2VRdW90YS5oCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCww
IEBACi0vKgotICAgIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQganVzdCB0byB0ZWxsIGJ1aWxkIHNj
cmlwdHMgdGhhdCBXZWJLaXRET01TdG9yYWdlUXVvdGEuaCBhbmQKLSAgICBXZWJLaXRET01TdG9y
YWdlUXVvdGEuY3BwIGFyZSBjcmVhdGVkIGZvciBTdG9yYWdlUXVvdGEuaWRsLCBhbmQgdGh1cwot
ICAgIHByZXZlbnQgdGhlIGJ1aWxkIHNjcmlwdHMgZnJvbSB0cnlpbmcgdG8gZ2VuZXJhdGUgV2Vi
S2l0RE9NU3RvcmFnZVF1b3RhLmggYW5kCi0gICAgV2ViS2l0RE9NU3RvcmFnZVF1b3RhLmNwcCBh
dCBldmVyeSBidWlsZC4gVGhpcyBmaWxlIG11c3Qgbm90IGJlIHRyaWVkIHRvIGNvbXBpbGUuCi0q
LwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ3RrL0RPTS9XZWJLaXRET01TdHlsZU1lZGlhLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NU3R5bGVNZWRpYS5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkwNTQxMWYuLjAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRE
T01TdHlsZU1lZGlhLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1NSArMCwwIEBACi0vKgotICog
IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAq
ICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBE
TyBOT1QgTU9ESUZZIQotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
Ci0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQotICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO
Ry5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
V2ViS2l0RE9NU3R5bGVNZWRpYS5oIgotCi0jaW5jbHVkZSA8V2ViQ29yZS9DU1NJbXBvcnRSdWxl
Lmg+Ci0jaW5jbHVkZSAiRE9NT2JqZWN0Q2FjaGUuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0RvY3Vt
ZW50Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9FeGNlcHRpb25Db2RlLmg+Ci0jaW5jbHVkZSA8V2Vi
Q29yZS9FeGNlcHRpb25Db2RlRGVzY3JpcHRpb24uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0pTTWFp
blRocmVhZEV4ZWNTdGF0ZS5oPgotI2luY2x1ZGUgIldlYktpdERPTVByaXZhdGUuaCIKLSNpbmNs
dWRlICJXZWJLaXRET01TdHlsZU1lZGlhUHJpdmF0ZS5oIgotI2luY2x1ZGUgIkNvbnZlcnRUb1VU
RjhTdHJpbmcuaCIKLSNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgotCi0jZGVmaW5lIFdFQktJVF9ET01fU1RZTEVfTUVESUFfR0VUX1BSSVZBVEUob2JqKSBH
X1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUob2JqLCBXRUJLSVRfRE9NX1RZUEVfU1RZTEVfTUVE
SUEsIFdlYktpdERPTVN0eWxlTWVkaWFQcml2YXRlKQotCi10eXBlZGVmIHN0cnVjdCBfV2ViS2l0
RE9NU3R5bGVNZWRpYVByaXZhdGUgewotICAgIFJlZlB0cjxXZWJDb3JlOjpTdHlsZU1lZGlhPiBj
b3JlT2JqZWN0OwotfSBXZWJLaXRET01TdHlsZU1lZGlhUHJpdmF0ZTsKLQotbmFtZXNwYWNlIFdl
YktpdCB7Ci0KLVdlYktpdERPTVN0eWxlTWVkaWEqIGtpdChXZWJDb3JlOjpTdHlsZU1lZGlhKiBv
YmopCi17Ci0gICAgaWYgKCFvYmopCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgaWYgKGdwb2lu
dGVyIHJldCA9IERPTU9iamVjdENhY2hlOjpnZXQob2JqKSkKLSAgICAgICAgcmV0dXJuIFdFQktJ
VF9ET01fU1RZTEVfTUVESUEocmV0KTsKLQotICAgIHJldHVybiB3cmFwU3R5bGVNZWRpYShvYmop
OwotfQotCi1XZWJDb3JlOjpTdHlsZU1lZGlhKiBjb3JlKFdlYktpdERPTVN0eWxlTWVkaWEqIHJl
cXVlc3QpCi17Ci0gICAgcmV0dXJuIHJlcXVlc3QgPyBzdGF0aWNfY2FzdDxXZWJDb3JlOjpTdHls
ZU1lZGlhKj4oV0VCS0lUX0RPTV9PQkpFQ1QocmVxdWVzdCktPmNvcmVPYmplY3QpIDogMDsKLX0K
LQotV2ViS2l0RE9NU3R5bGVNZWRpYSogd3JhcFN0eWxlTWVkaWEoV2ViQ29yZTo6U3R5bGVNZWRp
YSogY29yZU9iamVjdCkKLXsKLSAgICBBU1NFUlQoY29yZU9iamVjdCk7Ci0gICAgcmV0dXJuIFdF
QktJVF9ET01fU1RZTEVfTUVESUEoZ19vYmplY3RfbmV3KFdFQktJVF9ET01fVFlQRV9TVFlMRV9N
RURJQSwgImNvcmUtb2JqZWN0IiwgY29yZU9iamVjdCwgbnVsbHB0cikpOwotfQotCi19IC8vIG5h
bWVzcGFjZSBXZWJLaXQKLQotR19ERUZJTkVfVFlQRShXZWJLaXRET01TdHlsZU1lZGlhLCB3ZWJr
aXRfZG9tX3N0eWxlX21lZGlhLCBXRUJLSVRfRE9NX1RZUEVfT0JKRUNUKQotCi1lbnVtIHsKLSAg
ICBQUk9QXzAsCi0gICAgUFJPUF9UWVBFLAotfTsKLQotc3RhdGljIHZvaWQgd2Via2l0X2RvbV9z
dHlsZV9tZWRpYV9maW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCi17Ci0gICAgV2ViS2l0RE9NU3R5
bGVNZWRpYVByaXZhdGUqIHByaXYgPSBXRUJLSVRfRE9NX1NUWUxFX01FRElBX0dFVF9QUklWQVRF
KG9iamVjdCk7Ci0KLSAgICBXZWJLaXQ6OkRPTU9iamVjdENhY2hlOjpmb3JnZXQocHJpdi0+Y29y
ZU9iamVjdC5nZXQoKSk7Ci0KLSAgICBwcml2LT5+V2ViS2l0RE9NU3R5bGVNZWRpYVByaXZhdGUo
KTsKLSAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfZG9tX3N0eWxlX21lZGlhX3BhcmVudF9jbGFz
cyktPmZpbmFsaXplKG9iamVjdCk7Ci19Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdF9kb21fc3R5bGVf
bWVkaWFfZ2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcGVydHlJZCwgR1Zh
bHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpCi17Ci0gICAgV2ViS2l0RE9NU3R5bGVNZWRp
YSogc2VsZiA9IFdFQktJVF9ET01fU1RZTEVfTUVESUEob2JqZWN0KTsKLQotICAgIHN3aXRjaCAo
cHJvcGVydHlJZCkgewotICAgIGNhc2UgUFJPUF9UWVBFOgotICAgICAgICBnX3ZhbHVlX3Rha2Vf
c3RyaW5nKHZhbHVlLCB3ZWJraXRfZG9tX3N0eWxlX21lZGlhX2dldF9tZWRpYV90eXBlKHNlbGYp
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgR19PQkpFQ1RfV0FSTl9J
TlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcGVydHlJZCwgcHNwZWMpOwotICAgICAgICBi
cmVhazsKLSAgICB9Ci19Ci0KLXN0YXRpYyBHT2JqZWN0KiB3ZWJraXRfZG9tX3N0eWxlX21lZGlh
X2NvbnN0cnVjdG9yKEdUeXBlIHR5cGUsIGd1aW50IGNvbnN0cnVjdFByb3BlcnRpZXNDb3VudCwg
R09iamVjdENvbnN0cnVjdFBhcmFtKiBjb25zdHJ1Y3RQcm9wZXJ0aWVzKQotewotICAgIEdPYmpl
Y3QqIG9iamVjdCA9IEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9kb21fc3R5bGVfbWVkaWFfcGFyZW50
X2NsYXNzKS0+Y29uc3RydWN0b3IodHlwZSwgY29uc3RydWN0UHJvcGVydGllc0NvdW50LCBjb25z
dHJ1Y3RQcm9wZXJ0aWVzKTsKLQotICAgIFdlYktpdERPTVN0eWxlTWVkaWFQcml2YXRlKiBwcml2
ID0gV0VCS0lUX0RPTV9TVFlMRV9NRURJQV9HRVRfUFJJVkFURShvYmplY3QpOwotICAgIHByaXYt
PmNvcmVPYmplY3QgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpTdHlsZU1lZGlhKj4oV0VCS0lUX0RP
TV9PQkpFQ1Qob2JqZWN0KS0+Y29yZU9iamVjdCk7Ci0gICAgV2ViS2l0OjpET01PYmplY3RDYWNo
ZTo6cHV0KHByaXYtPmNvcmVPYmplY3QuZ2V0KCksIG9iamVjdCk7Ci0KLSAgICByZXR1cm4gb2Jq
ZWN0OwotfQotCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3N0eWxlX21lZGlhX2NsYXNzX2luaXQo
V2ViS2l0RE9NU3R5bGVNZWRpYUNsYXNzKiByZXF1ZXN0Q2xhc3MpCi17Ci0gICAgR09iamVjdENs
YXNzKiBnb2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhyZXF1ZXN0Q2xhc3MpOwotICAgIGdf
dHlwZV9jbGFzc19hZGRfcHJpdmF0ZShnb2JqZWN0Q2xhc3MsIHNpemVvZihXZWJLaXRET01TdHls
ZU1lZGlhUHJpdmF0ZSkpOwotICAgIGdvYmplY3RDbGFzcy0+Y29uc3RydWN0b3IgPSB3ZWJraXRf
ZG9tX3N0eWxlX21lZGlhX2NvbnN0cnVjdG9yOwotICAgIGdvYmplY3RDbGFzcy0+ZmluYWxpemUg
PSB3ZWJraXRfZG9tX3N0eWxlX21lZGlhX2ZpbmFsaXplOwotICAgIGdvYmplY3RDbGFzcy0+Z2V0
X3Byb3BlcnR5ID0gd2Via2l0X2RvbV9zdHlsZV9tZWRpYV9nZXRfcHJvcGVydHk7Ci0KLSAgICBn
X29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAotICAgICAgICBnb2JqZWN0Q2xhc3MsCi0g
ICAgICAgIFBST1BfVFlQRSwKLSAgICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZygKLSAgICAgICAg
ICAgICJ0eXBlIiwKLSAgICAgICAgICAgICJTdHlsZU1lZGlhOnR5cGUiLAotICAgICAgICAgICAg
InJlYWQtb25seSBnY2hhciogU3R5bGVNZWRpYTp0eXBlIiwKLSAgICAgICAgICAgICIiLAotICAg
ICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7Ci0KLX0KLQotc3RhdGljIHZvaWQgd2Vi
a2l0X2RvbV9zdHlsZV9tZWRpYV9pbml0KFdlYktpdERPTVN0eWxlTWVkaWEqIHJlcXVlc3QpCi17
Ci0gICAgV2ViS2l0RE9NU3R5bGVNZWRpYVByaXZhdGUqIHByaXYgPSBXRUJLSVRfRE9NX1NUWUxF
X01FRElBX0dFVF9QUklWQVRFKHJlcXVlc3QpOwotICAgIG5ldyAocHJpdikgV2ViS2l0RE9NU3R5
bGVNZWRpYVByaXZhdGUoKTsKLX0KLQotZ2Jvb2xlYW4gd2Via2l0X2RvbV9zdHlsZV9tZWRpYV9t
YXRjaF9tZWRpdW0oV2ViS2l0RE9NU3R5bGVNZWRpYSogc2VsZiwgY29uc3QgZ2NoYXIqIG1lZGlh
cXVlcnkpCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAg
IGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfU1RZTEVfTUVESUEoc2VsZiksIEZB
TFNFKTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChtZWRpYXF1ZXJ5LCBGQUxTRSk7Ci0gICAg
V2ViQ29yZTo6U3R5bGVNZWRpYSogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBXVEY6
OlN0cmluZyBjb252ZXJ0ZWRNZWRpYXF1ZXJ5ID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KG1lZGlh
cXVlcnkpOwotICAgIGdib29sZWFuIHJlc3VsdCA9IGl0ZW0tPm1hdGNoTWVkaXVtKGNvbnZlcnRl
ZE1lZGlhcXVlcnkpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLWdjaGFyKiB3ZWJraXRfZG9t
X3N0eWxlX21lZGlhX2dldF9tZWRpYV90eXBlKFdlYktpdERPTVN0eWxlTWVkaWEqIHNlbGYpCi17
Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfU1RZTEVfTUVESUEoc2VsZiksIDApOwotICAgIFdl
YkNvcmU6OlN0eWxlTWVkaWEqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ2NoYXIq
IHJlc3VsdCA9IGNvbnZlcnRUb1VURjhTdHJpbmcoaXRlbS0+dHlwZSgpKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVN0eWxlTWVkaWEuaCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NU3R5bGVN
ZWRpYS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5Y2E3YjM1Li4wMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00v
V2ViS2l0RE9NU3R5bGVNZWRpYS5oCisrKyAvZGV2L251bGwKQEAgLTEsNzYgKzAsMCBAQAotLyoK
LSAqICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3Qu
Ci0gKiAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5w
bC4gRE8gTk9UIE1PRElGWSEKLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiAgQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBXZWJLaXRET01TdHlsZU1lZGlh
X2gKLSNkZWZpbmUgV2ViS2l0RE9NU3R5bGVNZWRpYV9oCi0KLSNpZmRlZiBXRUJLSVRfRE9NX1VT
RV9VTlNUQUJMRV9BUEkKLQotI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+Ci0jaW5jbHVkZSA8d2Vi
a2l0ZG9tL1dlYktpdERPTU9iamVjdC5oPgotI2luY2x1ZGUgPHdlYmtpdGRvbS93ZWJraXRkb21k
ZWZpbmVzLXVuc3RhYmxlLmg+Ci0KLUdfQkVHSU5fREVDTFMKLQotI2RlZmluZSBXRUJLSVRfRE9N
X1RZUEVfU1RZTEVfTUVESUEgICAgICAgICAgICAod2Via2l0X2RvbV9zdHlsZV9tZWRpYV9nZXRf
dHlwZSgpKQotI2RlZmluZSBXRUJLSVRfRE9NX1NUWUxFX01FRElBKG9iaikgICAgICAgICAgICAo
R19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9ET01fVFlQRV9TVFlMRV9N
RURJQSwgV2ViS2l0RE9NU3R5bGVNZWRpYSkpCi0jZGVmaW5lIFdFQktJVF9ET01fU1RZTEVfTUVE
SUFfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLCAgV0VC
S0lUX0RPTV9UWVBFX1NUWUxFX01FRElBLCBXZWJLaXRET01TdHlsZU1lZGlhQ2xhc3MpCi0jZGVm
aW5lIFdFQktJVF9ET01fSVNfU1RZTEVfTUVESUEob2JqKSAgICAgICAgIChHX1RZUEVfQ0hFQ0tf
SU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX0RPTV9UWVBFX1NUWUxFX01FRElBKSkKLSNkZWZp
bmUgV0VCS0lUX0RPTV9JU19TVFlMRV9NRURJQV9DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19D
TEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfRE9NX1RZUEVfU1RZTEVfTUVESUEpKQotI2RlZmlu
ZSBXRUJLSVRfRE9NX1NUWUxFX01FRElBX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNF
X0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9ET01fVFlQRV9TVFlMRV9NRURJQSwgV2ViS2l0RE9N
U3R5bGVNZWRpYUNsYXNzKSkKLQotc3RydWN0IF9XZWJLaXRET01TdHlsZU1lZGlhIHsKLSAgICBX
ZWJLaXRET01PYmplY3QgcGFyZW50X2luc3RhbmNlOwotfTsKLQotc3RydWN0IF9XZWJLaXRET01T
dHlsZU1lZGlhQ2xhc3MgewotICAgIFdlYktpdERPTU9iamVjdENsYXNzIHBhcmVudF9jbGFzczsK
LX07Ci0KLVdFQktJVF9BUEkgR1R5cGUKLXdlYmtpdF9kb21fc3R5bGVfbWVkaWFfZ2V0X3R5cGUo
dm9pZCk7Ci0KLS8qKgotICogd2Via2l0X2RvbV9zdHlsZV9tZWRpYV9tYXRjaF9tZWRpdW06Ci0g
KiBAc2VsZjogQSAjV2ViS2l0RE9NU3R5bGVNZWRpYQotICogQG1lZGlhcXVlcnk6IEEgI2djaGFy
Ci0gKgotICogUmV0dXJuczogQSAjZ2Jvb2xlYW4KLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxl
Ci0qKi8KLVdFQktJVF9BUEkgZ2Jvb2xlYW4KLXdlYmtpdF9kb21fc3R5bGVfbWVkaWFfbWF0Y2hf
bWVkaXVtKFdlYktpdERPTVN0eWxlTWVkaWEqIHNlbGYsIGNvbnN0IGdjaGFyKiBtZWRpYXF1ZXJ5
KTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX3N0eWxlX21lZGlhX2dldF9tZWRpYV90eXBlOgotICog
QHNlbGY6IEEgI1dlYktpdERPTVN0eWxlTWVkaWEKLSAqCi0gKiBSZXR1cm5zOiBBICNnY2hhcgot
ICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSBnY2hhcioKLXdlYmtp
dF9kb21fc3R5bGVfbWVkaWFfZ2V0X21lZGlhX3R5cGUoV2ViS2l0RE9NU3R5bGVNZWRpYSogc2Vs
Zik7Ci0KLUdfRU5EX0RFQ0xTCi0KLSNlbmRpZiAvKiBXRUJLSVRfRE9NX1VTRV9VTlNUQUJMRV9B
UEkgKi8KLSNlbmRpZiAvKiBXZWJLaXRET01TdHlsZU1lZGlhX2ggKi8KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0
RE9NU3R5bGVNZWRpYVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NU3R5bGVNZWRpYVByaXZhdGUuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDk0YmMyNy4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVN0eWxl
TWVkaWFQcml2YXRlLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi0vKgotICogIFRo
aXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAqICBU
aGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBO
T1QgTU9ESUZZIQotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0g
KgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQotICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaWZuZGVmIFdlYktpdERPTVN0eWxlTWVkaWFQcml2YXRl
X2gKLSNkZWZpbmUgV2ViS2l0RE9NU3R5bGVNZWRpYVByaXZhdGVfaAotCi0jaW5jbHVkZSA8V2Vi
Q29yZS9TdHlsZU1lZGlhLmg+Ci0jaW5jbHVkZSA8d2Via2l0ZG9tL1dlYktpdERPTVN0eWxlTWVk
aWEuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci1XZWJLaXRET01TdHlsZU1lZGlhKiB3cmFwU3R5
bGVNZWRpYShXZWJDb3JlOjpTdHlsZU1lZGlhKik7Ci1XZWJLaXRET01TdHlsZU1lZGlhKiBraXQo
V2ViQ29yZTo6U3R5bGVNZWRpYSopOwotV2ViQ29yZTo6U3R5bGVNZWRpYSogY29yZShXZWJLaXRE
T01TdHlsZU1lZGlhKik7Ci19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8qIFdlYktp
dERPTVN0eWxlTWVkaWFQcml2YXRlX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NVGV4dFRyYWNrLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00v
V2ViS2l0RE9NVGV4dFRyYWNrLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTIz
YjU3Mi4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVRleHRUcmFjay5jcHAKKysrIC9kZXYvbnVsbApAQCAt
MSw0MTMgKzAsMCBAQAotLyoKLSAqICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9w
ZW4gc291cmNlIHByb2plY3QuCi0gKiAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBn
ZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKLSAqCi0gKiAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
Ci0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCi0gKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCi0gKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYktpdERPTVRleHRUcmFjay5oIgotCi0jaW5jbHVkZSA8
V2ViQ29yZS9DU1NJbXBvcnRSdWxlLmg+Ci0jaW5jbHVkZSAiRE9NT2JqZWN0Q2FjaGUuaCIKLSNp
bmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9FeGNlcHRpb25D
b2RlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9FeGNlcHRpb25Db2RlRGVzY3JpcHRpb24uaD4KLSNp
bmNsdWRlICJHT2JqZWN0RXZlbnRMaXN0ZW5lci5oIgotI2luY2x1ZGUgPFdlYkNvcmUvSlNNYWlu
VGhyZWFkRXhlY1N0YXRlLmg+Ci0jaW5jbHVkZSAiV2ViS2l0RE9NRXZlbnRQcml2YXRlLmgiCi0j
aW5jbHVkZSAiV2ViS2l0RE9NRXZlbnRUYXJnZXQuaCIKLSNpbmNsdWRlICJXZWJLaXRET01Qcml2
YXRlLmgiCi0jaW5jbHVkZSAiV2ViS2l0RE9NVGV4dFRyYWNrQ3VlTGlzdFByaXZhdGUuaCIKLSNp
bmNsdWRlICJXZWJLaXRET01UZXh0VHJhY2tDdWVQcml2YXRlLmgiCi0jaW5jbHVkZSAiV2ViS2l0
RE9NVGV4dFRyYWNrUHJpdmF0ZS5oIgotI2luY2x1ZGUgIkNvbnZlcnRUb1VURjhTdHJpbmcuaCIK
LSNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi0jZGVm
aW5lIFdFQktJVF9ET01fVEVYVF9UUkFDS19HRVRfUFJJVkFURShvYmopIEdfVFlQRV9JTlNUQU5D
RV9HRVRfUFJJVkFURShvYmosIFdFQktJVF9ET01fVFlQRV9URVhUX1RSQUNLLCBXZWJLaXRET01U
ZXh0VHJhY2tQcml2YXRlKQotCi10eXBlZGVmIHN0cnVjdCBfV2ViS2l0RE9NVGV4dFRyYWNrUHJp
dmF0ZSB7Ci0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgIFJlZlB0cjxXZWJDb3JlOjpUZXh0
VHJhY2s+IGNvcmVPYmplY3Q7Ci0jZW5kaWYgLy8gRU5BQkxFKFZJREVPX1RSQUNLKQotfSBXZWJL
aXRET01UZXh0VHJhY2tQcml2YXRlOwotCi0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotCi1uYW1l
c3BhY2UgV2ViS2l0IHsKLQotV2ViS2l0RE9NVGV4dFRyYWNrKiBraXQoV2ViQ29yZTo6VGV4dFRy
YWNrKiBvYmopCi17Ci0gICAgaWYgKCFvYmopCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgaWYg
KGdwb2ludGVyIHJldCA9IERPTU9iamVjdENhY2hlOjpnZXQob2JqKSkKLSAgICAgICAgcmV0dXJu
IFdFQktJVF9ET01fVEVYVF9UUkFDSyhyZXQpOwotCi0gICAgcmV0dXJuIHdyYXBUZXh0VHJhY2so
b2JqKTsKLX0KLQotV2ViQ29yZTo6VGV4dFRyYWNrKiBjb3JlKFdlYktpdERPTVRleHRUcmFjayog
cmVxdWVzdCkKLXsKLSAgICByZXR1cm4gcmVxdWVzdCA/IHN0YXRpY19jYXN0PFdlYkNvcmU6OlRl
eHRUcmFjayo+KFdFQktJVF9ET01fT0JKRUNUKHJlcXVlc3QpLT5jb3JlT2JqZWN0KSA6IDA7Ci19
Ci0KLVdlYktpdERPTVRleHRUcmFjayogd3JhcFRleHRUcmFjayhXZWJDb3JlOjpUZXh0VHJhY2sq
IGNvcmVPYmplY3QpCi17Ci0gICAgQVNTRVJUKGNvcmVPYmplY3QpOwotICAgIHJldHVybiBXRUJL
SVRfRE9NX1RFWFRfVFJBQ0soZ19vYmplY3RfbmV3KFdFQktJVF9ET01fVFlQRV9URVhUX1RSQUNL
LCAiY29yZS1vYmplY3QiLCBjb3JlT2JqZWN0LCBudWxscHRyKSk7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFZJREVPX1RSQUNLKQotCi1zdGF0aWMgZ2Jv
b2xlYW4gd2Via2l0X2RvbV90ZXh0X3RyYWNrX2Rpc3BhdGNoX2V2ZW50KFdlYktpdERPTUV2ZW50
VGFyZ2V0KiB0YXJnZXQsIFdlYktpdERPTUV2ZW50KiBldmVudCwgR0Vycm9yKiogZXJyb3IpCi17
Ci0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgIFdlYkNvcmU6OkV2ZW50KiBjb3JlRXZlbnQg
PSBXZWJLaXQ6OmNvcmUoZXZlbnQpOwotICAgIGlmICghY29yZUV2ZW50KQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgV2ViQ29yZTo6VGV4dFRyYWNrKiBjb3JlVGFyZ2V0ID0gc3RhdGljX2Nh
c3Q8V2ViQ29yZTo6VGV4dFRyYWNrKj4oV0VCS0lUX0RPTV9PQkpFQ1QodGFyZ2V0KS0+Y29yZU9i
amVjdCk7Ci0KLSAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBnYm9vbGVh
biByZXN1bHQgPSBjb3JlVGFyZ2V0LT5kaXNwYXRjaEV2ZW50Rm9yQmluZGluZ3MoKmNvcmVFdmVu
dCwgZWMpOwotICAgIGlmIChlYykgewotICAgICAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlRGVz
Y3JpcHRpb24gZGVzY3JpcHRpb24oZWMpOwotICAgICAgICBnX3NldF9lcnJvcl9saXRlcmFsKGVy
cm9yLCBnX3F1YXJrX2Zyb21fc3RyaW5nKCJXRUJLSVRfRE9NIiksIGRlc2NyaXB0aW9uLmNvZGUs
IGRlc2NyaXB0aW9uLm5hbWUpOwotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OwotI2Vsc2UKLSAg
ICBVTlVTRURfUEFSQU0odGFyZ2V0KTsKLSAgICBVTlVTRURfUEFSQU0oZXZlbnQpOwotICAgIFVO
VVNFRF9QQVJBTShlcnJvcik7Ci0gICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgi
VmlkZW8gVHJhY2siKQotICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZiAvLyBFTkFCTEUoVklERU9f
VFJBQ0spCi19Ci0KLXN0YXRpYyBnYm9vbGVhbiB3ZWJraXRfZG9tX3RleHRfdHJhY2tfYWRkX2V2
ZW50X2xpc3RlbmVyKFdlYktpdERPTUV2ZW50VGFyZ2V0KiB0YXJnZXQsIGNvbnN0IGNoYXIqIGV2
ZW50TmFtZSwgR0Nsb3N1cmUqIGhhbmRsZXIsIGdib29sZWFuIHVzZUNhcHR1cmUpCi17Ci0jaWYg
RU5BQkxFKFZJREVPX1RSQUNLKQotICAgIFdlYkNvcmU6OlRleHRUcmFjayogY29yZVRhcmdldCA9
IHN0YXRpY19jYXN0PFdlYkNvcmU6OlRleHRUcmFjayo+KFdFQktJVF9ET01fT0JKRUNUKHRhcmdl
dCktPmNvcmVPYmplY3QpOwotICAgIHJldHVybiBXZWJLaXQ6OkdPYmplY3RFdmVudExpc3RlbmVy
OjphZGRFdmVudExpc3RlbmVyKEdfT0JKRUNUKHRhcmdldCksIGNvcmVUYXJnZXQsIGV2ZW50TmFt
ZSwgaGFuZGxlciwgdXNlQ2FwdHVyZSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTSh0YXJnZXQp
OwotICAgIFVOVVNFRF9QQVJBTShldmVudE5hbWUpOwotICAgIFVOVVNFRF9QQVJBTShoYW5kbGVy
KTsKLSAgICBVTlVTRURfUEFSQU0odXNlQ2FwdHVyZSk7Ci0gICAgV0VCS0lUX1dBUk5fRkVBVFVS
RV9OT1RfUFJFU0VOVCgiVmlkZW8gVHJhY2siKQotICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZiAv
LyBFTkFCTEUoVklERU9fVFJBQ0spCi19Ci0KLXN0YXRpYyBnYm9vbGVhbiB3ZWJraXRfZG9tX3Rl
eHRfdHJhY2tfcmVtb3ZlX2V2ZW50X2xpc3RlbmVyKFdlYktpdERPTUV2ZW50VGFyZ2V0KiB0YXJn
ZXQsIGNvbnN0IGNoYXIqIGV2ZW50TmFtZSwgR0Nsb3N1cmUqIGhhbmRsZXIsIGdib29sZWFuIHVz
ZUNhcHR1cmUpCi17Ci0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgIFdlYkNvcmU6OlRleHRU
cmFjayogY29yZVRhcmdldCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OlRleHRUcmFjayo+KFdFQktJ
VF9ET01fT0JKRUNUKHRhcmdldCktPmNvcmVPYmplY3QpOwotICAgIHJldHVybiBXZWJLaXQ6OkdP
YmplY3RFdmVudExpc3RlbmVyOjpyZW1vdmVFdmVudExpc3RlbmVyKEdfT0JKRUNUKHRhcmdldCks
IGNvcmVUYXJnZXQsIGV2ZW50TmFtZSwgaGFuZGxlciwgdXNlQ2FwdHVyZSk7Ci0jZWxzZQotICAg
IFVOVVNFRF9QQVJBTSh0YXJnZXQpOwotICAgIFVOVVNFRF9QQVJBTShldmVudE5hbWUpOwotICAg
IFVOVVNFRF9QQVJBTShoYW5kbGVyKTsKLSAgICBVTlVTRURfUEFSQU0odXNlQ2FwdHVyZSk7Ci0g
ICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiVmlkZW8gVHJhY2siKQotICAgIHJl
dHVybiBmYWxzZTsKLSNlbmRpZiAvLyBFTkFCTEUoVklERU9fVFJBQ0spCi19Ci0KLXN0YXRpYyB2
b2lkIHdlYmtpdF9kb21fZXZlbnRfdGFyZ2V0X2luaXQoV2ViS2l0RE9NRXZlbnRUYXJnZXRJZmFj
ZSogaWZhY2UpCi17Ci0gICAgaWZhY2UtPmRpc3BhdGNoX2V2ZW50ID0gd2Via2l0X2RvbV90ZXh0
X3RyYWNrX2Rpc3BhdGNoX2V2ZW50OwotICAgIGlmYWNlLT5hZGRfZXZlbnRfbGlzdGVuZXIgPSB3
ZWJraXRfZG9tX3RleHRfdHJhY2tfYWRkX2V2ZW50X2xpc3RlbmVyOwotICAgIGlmYWNlLT5yZW1v
dmVfZXZlbnRfbGlzdGVuZXIgPSB3ZWJraXRfZG9tX3RleHRfdHJhY2tfcmVtb3ZlX2V2ZW50X2xp
c3RlbmVyOwotfQotCi1HX0RFRklORV9UWVBFX1dJVEhfQ09ERShXZWJLaXRET01UZXh0VHJhY2ss
IHdlYmtpdF9kb21fdGV4dF90cmFjaywgV0VCS0lUX0RPTV9UWVBFX09CSkVDVCwgR19JTVBMRU1F
TlRfSU5URVJGQUNFKFdFQktJVF9ET01fVFlQRV9FVkVOVF9UQVJHRVQsIHdlYmtpdF9kb21fZXZl
bnRfdGFyZ2V0X2luaXQpKQotCi1lbnVtIHsKLSAgICBQUk9QXzAsCi0gICAgUFJPUF9JRCwKLSAg
ICBQUk9QX0xBQkVMLAotICAgIFBST1BfTEFOR1VBR0UsCi0gICAgUFJPUF9JTl9CQU5EX01FVEFE
QVRBX1RSQUNLX0RJU1BBVENIX1RZUEUsCi0gICAgUFJPUF9DVUVTLAotICAgIFBST1BfQUNUSVZF
X0NVRVMsCi19OwotCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3RleHRfdHJhY2tfZmluYWxpemUo
R09iamVjdCogb2JqZWN0KQotewotICAgIFdlYktpdERPTVRleHRUcmFja1ByaXZhdGUqIHByaXYg
PSBXRUJLSVRfRE9NX1RFWFRfVFJBQ0tfR0VUX1BSSVZBVEUob2JqZWN0KTsKLSNpZiBFTkFCTEUo
VklERU9fVFJBQ0spCi0gICAgV2ViS2l0OjpET01PYmplY3RDYWNoZTo6Zm9yZ2V0KHByaXYtPmNv
cmVPYmplY3QuZ2V0KCkpOwotI2VuZGlmIC8vIEVOQUJMRShWSURFT19UUkFDSykKLSAgICBwcml2
LT5+V2ViS2l0RE9NVGV4dFRyYWNrUHJpdmF0ZSgpOwotICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtp
dF9kb21fdGV4dF90cmFja19wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmplY3QpOwotfQotCi1z
dGF0aWMgdm9pZCB3ZWJraXRfZG9tX3RleHRfdHJhY2tfZ2V0X3Byb3BlcnR5KEdPYmplY3QqIG9i
amVjdCwgZ3VpbnQgcHJvcGVydHlJZCwgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMp
Ci17Ci0gICAgV2ViS2l0RE9NVGV4dFRyYWNrKiBzZWxmID0gV0VCS0lUX0RPTV9URVhUX1RSQUNL
KG9iamVjdCk7Ci0KLSAgICBzd2l0Y2ggKHByb3BlcnR5SWQpIHsKLSAgICBjYXNlIFBST1BfSUQ6
Ci0gICAgICAgIGdfdmFsdWVfdGFrZV9zdHJpbmcodmFsdWUsIHdlYmtpdF9kb21fdGV4dF90cmFj
a19nZXRfaWQoc2VsZikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfTEFCRUw6Ci0g
ICAgICAgIGdfdmFsdWVfdGFrZV9zdHJpbmcodmFsdWUsIHdlYmtpdF9kb21fdGV4dF90cmFja19n
ZXRfbGFiZWwoc2VsZikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfTEFOR1VBR0U6
Ci0gICAgICAgIGdfdmFsdWVfdGFrZV9zdHJpbmcodmFsdWUsIHdlYmtpdF9kb21fdGV4dF90cmFj
a19nZXRfbGFuZ3VhZ2Uoc2VsZikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfSU5f
QkFORF9NRVRBREFUQV9UUkFDS19ESVNQQVRDSF9UWVBFOgotICAgICAgICBnX3ZhbHVlX3Rha2Vf
c3RyaW5nKHZhbHVlLCB3ZWJraXRfZG9tX3RleHRfdHJhY2tfZ2V0X2luX2JhbmRfbWV0YWRhdGFf
dHJhY2tfZGlzcGF0Y2hfdHlwZShzZWxmKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJP
UF9DVUVTOgotICAgICAgICBnX3ZhbHVlX3NldF9vYmplY3QodmFsdWUsIHdlYmtpdF9kb21fdGV4
dF90cmFja19nZXRfY3VlcyhzZWxmKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9B
Q1RJVkVfQ1VFUzoKLSAgICAgICAgZ192YWx1ZV9zZXRfb2JqZWN0KHZhbHVlLCB3ZWJraXRfZG9t
X3RleHRfdHJhY2tfZ2V0X2FjdGl2ZV9jdWVzKHNlbGYpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
ZGVmYXVsdDoKLSAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVj
dCwgcHJvcGVydHlJZCwgcHNwZWMpOwotICAgICAgICBicmVhazsKLSAgICB9Ci19Ci0KLXN0YXRp
YyBHT2JqZWN0KiB3ZWJraXRfZG9tX3RleHRfdHJhY2tfY29uc3RydWN0b3IoR1R5cGUgdHlwZSwg
Z3VpbnQgY29uc3RydWN0UHJvcGVydGllc0NvdW50LCBHT2JqZWN0Q29uc3RydWN0UGFyYW0qIGNv
bnN0cnVjdFByb3BlcnRpZXMpCi17Ci0gICAgR09iamVjdCogb2JqZWN0ID0gR19PQkpFQ1RfQ0xB
U1Mod2Via2l0X2RvbV90ZXh0X3RyYWNrX3BhcmVudF9jbGFzcyktPmNvbnN0cnVjdG9yKHR5cGUs
IGNvbnN0cnVjdFByb3BlcnRpZXNDb3VudCwgY29uc3RydWN0UHJvcGVydGllcyk7Ci0jaWYgRU5B
QkxFKFZJREVPX1RSQUNLKQotICAgIFdlYktpdERPTVRleHRUcmFja1ByaXZhdGUqIHByaXYgPSBX
RUJLSVRfRE9NX1RFWFRfVFJBQ0tfR0VUX1BSSVZBVEUob2JqZWN0KTsKLSAgICBwcml2LT5jb3Jl
T2JqZWN0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6VGV4dFRyYWNrKj4oV0VCS0lUX0RPTV9PQkpF
Q1Qob2JqZWN0KS0+Y29yZU9iamVjdCk7Ci0gICAgV2ViS2l0OjpET01PYmplY3RDYWNoZTo6cHV0
KHByaXYtPmNvcmVPYmplY3QuZ2V0KCksIG9iamVjdCk7Ci0jZW5kaWYgLy8gRU5BQkxFKFZJREVP
X1RSQUNLKQotICAgIHJldHVybiBvYmplY3Q7Ci19Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdF9kb21f
dGV4dF90cmFja19jbGFzc19pbml0KFdlYktpdERPTVRleHRUcmFja0NsYXNzKiByZXF1ZXN0Q2xh
c3MpCi17Ci0gICAgR09iamVjdENsYXNzKiBnb2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhy
ZXF1ZXN0Q2xhc3MpOwotICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShnb2JqZWN0Q2xhc3Ms
IHNpemVvZihXZWJLaXRET01UZXh0VHJhY2tQcml2YXRlKSk7Ci0gICAgZ29iamVjdENsYXNzLT5j
b25zdHJ1Y3RvciA9IHdlYmtpdF9kb21fdGV4dF90cmFja19jb25zdHJ1Y3RvcjsKLSAgICBnb2Jq
ZWN0Q2xhc3MtPmZpbmFsaXplID0gd2Via2l0X2RvbV90ZXh0X3RyYWNrX2ZpbmFsaXplOwotICAg
IGdvYmplY3RDbGFzcy0+Z2V0X3Byb3BlcnR5ID0gd2Via2l0X2RvbV90ZXh0X3RyYWNrX2dldF9w
cm9wZXJ0eTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAg
IGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9JRCwKLSAgICAgICAgZ19wYXJhbV9zcGVjX3N0
cmluZygKLSAgICAgICAgICAgICJpZCIsCi0gICAgICAgICAgICAiVGV4dFRyYWNrOmlkIiwKLSAg
ICAgICAgICAgICJyZWFkLW9ubHkgZ2NoYXIqIFRleHRUcmFjazppZCIsCi0gICAgICAgICAgICAi
IiwKLSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSkpOwotCi0gICAgZ19vYmplY3Rf
Y2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAgZ29iamVjdENsYXNzLAotICAgICAgICBQ
Uk9QX0xBQkVMLAotICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nKAotICAgICAgICAgICAgImxh
YmVsIiwKLSAgICAgICAgICAgICJUZXh0VHJhY2s6bGFiZWwiLAotICAgICAgICAgICAgInJlYWQt
b25seSBnY2hhciogVGV4dFRyYWNrOmxhYmVsIiwKLSAgICAgICAgICAgICIiLAotICAgICAgICAg
ICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7Ci0KLSAgICBnX29iamVjdF9jbGFzc19pbnN0YWxs
X3Byb3BlcnR5KAotICAgICAgICBnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBST1BfTEFOR1VBR0Us
Ci0gICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcoCi0gICAgICAgICAgICAibGFuZ3VhZ2UiLAot
ICAgICAgICAgICAgIlRleHRUcmFjazpsYW5ndWFnZSIsCi0gICAgICAgICAgICAicmVhZC1vbmx5
IGdjaGFyKiBUZXh0VHJhY2s6bGFuZ3VhZ2UiLAotICAgICAgICAgICAgIiIsCi0gICAgICAgICAg
ICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxf
cHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9JTl9CQU5EX01F
VEFEQVRBX1RSQUNLX0RJU1BBVENIX1RZUEUsCi0gICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmco
Ci0gICAgICAgICAgICAiaW4tYmFuZC1tZXRhZGF0YS10cmFjay1kaXNwYXRjaC10eXBlIiwKLSAg
ICAgICAgICAgICJUZXh0VHJhY2s6aW4tYmFuZC1tZXRhZGF0YS10cmFjay1kaXNwYXRjaC10eXBl
IiwKLSAgICAgICAgICAgICJyZWFkLW9ubHkgZ2NoYXIqIFRleHRUcmFjazppbi1iYW5kLW1ldGFk
YXRhLXRyYWNrLWRpc3BhdGNoLXR5cGUiLAotICAgICAgICAgICAgIiIsCi0gICAgICAgICAgICBX
RUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJv
cGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9DVUVTLAotICAgICAg
ICBnX3BhcmFtX3NwZWNfb2JqZWN0KAotICAgICAgICAgICAgImN1ZXMiLAotICAgICAgICAgICAg
IlRleHRUcmFjazpjdWVzIiwKLSAgICAgICAgICAgICJyZWFkLW9ubHkgV2ViS2l0RE9NVGV4dFRy
YWNrQ3VlTGlzdCogVGV4dFRyYWNrOmN1ZXMiLAotICAgICAgICAgICAgV0VCS0lUX0RPTV9UWVBF
X1RFWFRfVFJBQ0tfQ1VFX0xJU1QsCi0gICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUp
KTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmpl
Y3RDbGFzcywKLSAgICAgICAgUFJPUF9BQ1RJVkVfQ1VFUywKLSAgICAgICAgZ19wYXJhbV9zcGVj
X29iamVjdCgKLSAgICAgICAgICAgICJhY3RpdmUtY3VlcyIsCi0gICAgICAgICAgICAiVGV4dFRy
YWNrOmFjdGl2ZS1jdWVzIiwKLSAgICAgICAgICAgICJyZWFkLW9ubHkgV2ViS2l0RE9NVGV4dFRy
YWNrQ3VlTGlzdCogVGV4dFRyYWNrOmFjdGl2ZS1jdWVzIiwKLSAgICAgICAgICAgIFdFQktJVF9E
T01fVFlQRV9URVhUX1RSQUNLX0NVRV9MSVNULAotICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JF
QURBQkxFKSk7Ci0KLX0KLQotc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXh0X3RyYWNrX2luaXQo
V2ViS2l0RE9NVGV4dFRyYWNrKiByZXF1ZXN0KQotewotICAgIFdlYktpdERPTVRleHRUcmFja1By
aXZhdGUqIHByaXYgPSBXRUJLSVRfRE9NX1RFWFRfVFJBQ0tfR0VUX1BSSVZBVEUocmVxdWVzdCk7
Ci0gICAgbmV3IChwcml2KSBXZWJLaXRET01UZXh0VHJhY2tQcml2YXRlKCk7Ci19Ci0KLXZvaWQg
d2Via2l0X2RvbV90ZXh0X3RyYWNrX2FkZF9jdWUoV2ViS2l0RE9NVGV4dFRyYWNrKiBzZWxmLCBX
ZWJLaXRET01UZXh0VHJhY2tDdWUqIGN1ZSwgR0Vycm9yKiogZXJyb3IpCi17Ci0jaWYgRU5BQkxF
KFZJREVPX1RSQUNLKQotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsK
LSAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVYVF9UUkFDSyhzZWxmKSk7Ci0g
ICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFWFRfVFJBQ0tfQ1VFKGN1ZSkpOwot
ICAgIGdfcmV0dXJuX2lmX2ZhaWwoIWVycm9yIHx8ICEqZXJyb3IpOwotICAgIFdlYkNvcmU6OlRl
eHRUcmFjayogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBXZWJDb3JlOjpUZXh0VHJh
Y2tDdWUqIGNvbnZlcnRlZEN1ZSA9IFdlYktpdDo6Y29yZShjdWUpOwotICAgIFdlYkNvcmU6OkV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGl0ZW0tPmFkZEN1ZShjb252ZXJ0ZWRDdWUsIGVjKTsK
LSAgICBpZiAoZWMpIHsKLSAgICAgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9u
IGVjZGVzYyhlYyk7Ci0gICAgICAgIGdfc2V0X2Vycm9yX2xpdGVyYWwoZXJyb3IsIGdfcXVhcmtf
ZnJvbV9zdHJpbmcoIldFQktJVF9ET00iKSwgZWNkZXNjLmNvZGUsIGVjZGVzYy5uYW1lKTsKLSAg
ICB9Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKLSAgICBVTlVTRURfUEFSQU0oY3Vl
KTsKLSAgICBVTlVTRURfUEFSQU0oZXJyb3IpOwotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9U
X1BSRVNFTlQoIlZpZGVvIFRyYWNrIikKLSNlbmRpZiAvKiBFTkFCTEUoVklERU9fVFJBQ0spICov
Ci19Ci0KLXZvaWQgd2Via2l0X2RvbV90ZXh0X3RyYWNrX3JlbW92ZV9jdWUoV2ViS2l0RE9NVGV4
dFRyYWNrKiBzZWxmLCBXZWJLaXRET01UZXh0VHJhY2tDdWUqIGN1ZSwgR0Vycm9yKiogZXJyb3Ip
Ci17Ci0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51
bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVYVF9U
UkFDSyhzZWxmKSk7Ci0gICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFWFRfVFJB
Q0tfQ1VFKGN1ZSkpOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwoIWVycm9yIHx8ICEqZXJyb3IpOwot
ICAgIFdlYkNvcmU6OlRleHRUcmFjayogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBX
ZWJDb3JlOjpUZXh0VHJhY2tDdWUqIGNvbnZlcnRlZEN1ZSA9IFdlYktpdDo6Y29yZShjdWUpOwot
ICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGl0ZW0tPnJlbW92ZUN1ZShj
b252ZXJ0ZWRDdWUsIGVjKTsKLSAgICBpZiAoZWMpIHsKLSAgICAgICAgV2ViQ29yZTo6RXhjZXB0
aW9uQ29kZURlc2NyaXB0aW9uIGVjZGVzYyhlYyk7Ci0gICAgICAgIGdfc2V0X2Vycm9yX2xpdGVy
YWwoZXJyb3IsIGdfcXVhcmtfZnJvbV9zdHJpbmcoIldFQktJVF9ET00iKSwgZWNkZXNjLmNvZGUs
IGVjZGVzYy5uYW1lKTsKLSAgICB9Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKLSAg
ICBVTlVTRURfUEFSQU0oY3VlKTsKLSAgICBVTlVTRURfUEFSQU0oZXJyb3IpOwotICAgIFdFQktJ
VF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIlZpZGVvIFRyYWNrIikKLSNlbmRpZiAvKiBFTkFC
TEUoVklERU9fVFJBQ0spICovCi19Ci0KLWdjaGFyKiB3ZWJraXRfZG9tX3RleHRfdHJhY2tfZ2V0
X2lkKFdlYktpdERPTVRleHRUcmFjayogc2VsZikKLXsKLSNpZiBFTkFCTEUoVklERU9fVFJBQ0sp
Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVYVF9UUkFDSyhzZWxmKSwgMCk7Ci0gICAgV2Vi
Q29yZTo6VGV4dFRyYWNrKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdjaGFyKiBy
ZXN1bHQgPSBjb252ZXJ0VG9VVEY4U3RyaW5nKGl0ZW0tPmlkKCkpOwotICAgIHJldHVybiByZXN1
bHQ7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKLSAgICBXRUJLSVRfV0FSTl9GRUFU
VVJFX05PVF9QUkVTRU5UKCJWaWRlbyBUcmFjayIpCi0gICAgcmV0dXJuIDA7Ci0jZW5kaWYgLyog
RU5BQkxFKFZJREVPX1RSQUNLKSAqLwotfQotCi1nY2hhciogd2Via2l0X2RvbV90ZXh0X3RyYWNr
X2dldF9sYWJlbChXZWJLaXRET01UZXh0VHJhY2sqIHNlbGYpCi17Ci0jaWYgRU5BQkxFKFZJREVP
X1RSQUNLKQotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBn
X3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFWFRfVFJBQ0soc2VsZiksIDApOwot
ICAgIFdlYkNvcmU6OlRleHRUcmFjayogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBn
Y2hhciogcmVzdWx0ID0gY29udmVydFRvVVRGOFN0cmluZyhpdGVtLT5sYWJlbCgpKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc2VsZik7Ci0gICAgV0VCS0lU
X1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiVmlkZW8gVHJhY2siKQotICAgIHJldHVybiAwOwot
I2VuZGlmIC8qIEVOQUJMRShWSURFT19UUkFDSykgKi8KLX0KLQotZ2NoYXIqIHdlYmtpdF9kb21f
dGV4dF90cmFja19nZXRfbGFuZ3VhZ2UoV2ViS2l0RE9NVGV4dFRyYWNrKiBzZWxmKQotewotI2lm
IEVOQUJMRShWSURFT19UUkFDSykKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUg
c3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVhUX1RSQUNL
KHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpUZXh0VHJhY2sqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUo
c2VsZik7Ci0gICAgZ2NoYXIqIHJlc3VsdCA9IGNvbnZlcnRUb1VURjhTdHJpbmcoaXRlbS0+bGFu
Z3VhZ2UoKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHNl
bGYpOwotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIlZpZGVvIFRyYWNrIikK
LSAgICByZXR1cm4gMDsKLSNlbmRpZiAvKiBFTkFCTEUoVklERU9fVFJBQ0spICovCi19Ci0KLWdj
aGFyKiB3ZWJraXRfZG9tX3RleHRfdHJhY2tfZ2V0X2luX2JhbmRfbWV0YWRhdGFfdHJhY2tfZGlz
cGF0Y2hfdHlwZShXZWJLaXRET01UZXh0VHJhY2sqIHNlbGYpCi17Ci0jaWYgRU5BQkxFKFZJREVP
X1RSQUNLKQotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBn
X3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFWFRfVFJBQ0soc2VsZiksIDApOwot
ICAgIFdlYkNvcmU6OlRleHRUcmFjayogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBn
Y2hhciogcmVzdWx0ID0gY29udmVydFRvVVRGOFN0cmluZyhpdGVtLT5pbkJhbmRNZXRhZGF0YVRy
YWNrRGlzcGF0Y2hUeXBlKCkpOwotICAgIHJldHVybiByZXN1bHQ7Ci0jZWxzZQotICAgIFVOVVNF
RF9QQVJBTShzZWxmKTsKLSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJWaWRl
byBUcmFjayIpCi0gICAgcmV0dXJuIDA7Ci0jZW5kaWYgLyogRU5BQkxFKFZJREVPX1RSQUNLKSAq
LwotfQotCi1XZWJLaXRET01UZXh0VHJhY2tDdWVMaXN0KiB3ZWJraXRfZG9tX3RleHRfdHJhY2tf
Z2V0X2N1ZXMoV2ViS2l0RE9NVGV4dFRyYWNrKiBzZWxmKQotewotI2lmIEVOQUJMRShWSURFT19U
UkFDSykKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVhUX1RSQUNLKHNlbGYpLCAwKTsKLSAg
ICBXZWJDb3JlOjpUZXh0VHJhY2sqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgUmVm
UHRyPFdlYkNvcmU6OlRleHRUcmFja0N1ZUxpc3Q+IGdvYmplY3RSZXN1bHQgPSBXVEY6OmdldFB0
cihpdGVtLT5jdWVzKCkpOwotICAgIHJldHVybiBXZWJLaXQ6OmtpdChnb2JqZWN0UmVzdWx0Lmdl
dCgpKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHNlbGYpOwotICAgIFdFQktJVF9XQVJOX0ZF
QVRVUkVfTk9UX1BSRVNFTlQoIlZpZGVvIFRyYWNrIikKLSAgICByZXR1cm4gMDsKLSNlbmRpZiAv
KiBFTkFCTEUoVklERU9fVFJBQ0spICovCi19Ci0KLVdlYktpdERPTVRleHRUcmFja0N1ZUxpc3Qq
IHdlYmtpdF9kb21fdGV4dF90cmFja19nZXRfYWN0aXZlX2N1ZXMoV2ViS2l0RE9NVGV4dFRyYWNr
KiBzZWxmKQotewotI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICBXZWJDb3JlOjpKU01haW5U
aHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RP
TV9JU19URVhUX1RSQUNLKHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpUZXh0VHJhY2sqIGl0ZW0g
PSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlRleHRUcmFja0N1ZUxp
c3Q+IGdvYmplY3RSZXN1bHQgPSBXVEY6OmdldFB0cihpdGVtLT5hY3RpdmVDdWVzKCkpOwotICAg
IHJldHVybiBXZWJLaXQ6OmtpdChnb2JqZWN0UmVzdWx0LmdldCgpKTsKLSNlbHNlCi0gICAgVU5V
U0VEX1BBUkFNKHNlbGYpOwotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIlZp
ZGVvIFRyYWNrIikKLSAgICByZXR1cm4gMDsKLSNlbmRpZiAvKiBFTkFCTEUoVklERU9fVFJBQ0sp
ICovCi19Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NVGV4dFRyYWNrLmggYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVRleHRUcmFjay5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NDEzYTNkLi4wMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0
RE9NVGV4dFRyYWNrLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNDEgKzAsMCBAQAotLyoKLSAqICBU
aGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCi0gKiAg
VGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8g
Tk9UIE1PRElGWSEKLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgot
ICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiAgQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBXZWJLaXRET01UZXh0VHJhY2tfaAotI2Rl
ZmluZSBXZWJLaXRET01UZXh0VHJhY2tfaAotCi0jaWZkZWYgV0VCS0lUX0RPTV9VU0VfVU5TVEFC
TEVfQVBJCi0KLSNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgotI2luY2x1ZGUgPHdlYmtpdGRvbS9X
ZWJLaXRET01PYmplY3QuaD4KLSNpbmNsdWRlIDx3ZWJraXRkb20vd2Via2l0ZG9tZGVmaW5lcy11
bnN0YWJsZS5oPgotCi1HX0JFR0lOX0RFQ0xTCi0KLSNkZWZpbmUgV0VCS0lUX0RPTV9UWVBFX1RF
WFRfVFJBQ0sgICAgICAgICAgICAod2Via2l0X2RvbV90ZXh0X3RyYWNrX2dldF90eXBlKCkpCi0j
ZGVmaW5lIFdFQktJVF9ET01fVEVYVF9UUkFDSyhvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVD
S19JTlNUQU5DRV9DQVNUKChvYmopLCBXRUJLSVRfRE9NX1RZUEVfVEVYVF9UUkFDSywgV2ViS2l0
RE9NVGV4dFRyYWNrKSkKLSNkZWZpbmUgV0VCS0lUX0RPTV9URVhUX1RSQUNLX0NMQVNTKGtsYXNz
KSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJVF9ET01fVFlQRV9U
RVhUX1RSQUNLLCBXZWJLaXRET01UZXh0VHJhY2tDbGFzcykKLSNkZWZpbmUgV0VCS0lUX0RPTV9J
U19URVhUX1RSQUNLKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9i
aiksIFdFQktJVF9ET01fVFlQRV9URVhUX1RSQUNLKSkKLSNkZWZpbmUgV0VCS0lUX0RPTV9JU19U
RVhUX1RSQUNLX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwg
IFdFQktJVF9ET01fVFlQRV9URVhUX1RSQUNLKSkKLSNkZWZpbmUgV0VCS0lUX0RPTV9URVhUX1RS
QUNLX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdF
QktJVF9ET01fVFlQRV9URVhUX1RSQUNLLCBXZWJLaXRET01UZXh0VHJhY2tDbGFzcykpCi0KLXN0
cnVjdCBfV2ViS2l0RE9NVGV4dFRyYWNrIHsKLSAgICBXZWJLaXRET01PYmplY3QgcGFyZW50X2lu
c3RhbmNlOwotfTsKLQotc3RydWN0IF9XZWJLaXRET01UZXh0VHJhY2tDbGFzcyB7Ci0gICAgV2Vi
S2l0RE9NT2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOwotfTsKLQotV0VCS0lUX0FQSSBHVHlwZQot
d2Via2l0X2RvbV90ZXh0X3RyYWNrX2dldF90eXBlKHZvaWQpOwotCi0vKioKLSAqIHdlYmtpdF9k
b21fdGV4dF90cmFja19hZGRfY3VlOgotICogQHNlbGY6IEEgI1dlYktpdERPTVRleHRUcmFjawot
ICogQGN1ZTogQSAjV2ViS2l0RE9NVGV4dFRyYWNrQ3VlCi0gKiBAZXJyb3I6ICNHRXJyb3IKLSAq
Ci0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgdm9pZAotd2Via2l0X2Rv
bV90ZXh0X3RyYWNrX2FkZF9jdWUoV2ViS2l0RE9NVGV4dFRyYWNrKiBzZWxmLCBXZWJLaXRET01U
ZXh0VHJhY2tDdWUqIGN1ZSwgR0Vycm9yKiogZXJyb3IpOwotCi0vKioKLSAqIHdlYmtpdF9kb21f
dGV4dF90cmFja19yZW1vdmVfY3VlOgotICogQHNlbGY6IEEgI1dlYktpdERPTVRleHRUcmFjawot
ICogQGN1ZTogQSAjV2ViS2l0RE9NVGV4dFRyYWNrQ3VlCi0gKiBAZXJyb3I6ICNHRXJyb3IKLSAq
Ci0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgdm9pZAotd2Via2l0X2Rv
bV90ZXh0X3RyYWNrX3JlbW92ZV9jdWUoV2ViS2l0RE9NVGV4dFRyYWNrKiBzZWxmLCBXZWJLaXRE
T01UZXh0VHJhY2tDdWUqIGN1ZSwgR0Vycm9yKiogZXJyb3IpOwotCi0vKioKLSAqIHdlYmtpdF9k
b21fdGV4dF90cmFja19nZXRfaWQ6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NVGV4dFRyYWNrCi0g
KgotICogUmV0dXJuczogQSAjZ2NoYXIKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8K
LVdFQktJVF9BUEkgZ2NoYXIqCi13ZWJraXRfZG9tX3RleHRfdHJhY2tfZ2V0X2lkKFdlYktpdERP
TVRleHRUcmFjayogc2VsZik7Ci0KLS8qKgotICogd2Via2l0X2RvbV90ZXh0X3RyYWNrX2dldF9s
YWJlbDoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01UZXh0VHJhY2sKLSAqCi0gKiBSZXR1cm5zOiBB
ICNnY2hhcgotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSBnY2hh
cioKLXdlYmtpdF9kb21fdGV4dF90cmFja19nZXRfbGFiZWwoV2ViS2l0RE9NVGV4dFRyYWNrKiBz
ZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX3RleHRfdHJhY2tfZ2V0X2xhbmd1YWdlOgotICog
QHNlbGY6IEEgI1dlYktpdERPTVRleHRUcmFjawotICoKLSAqIFJldHVybnM6IEEgI2djaGFyCi0g
KgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIGdjaGFyKgotd2Via2l0
X2RvbV90ZXh0X3RyYWNrX2dldF9sYW5ndWFnZShXZWJLaXRET01UZXh0VHJhY2sqIHNlbGYpOwot
Ci0vKioKLSAqIHdlYmtpdF9kb21fdGV4dF90cmFja19nZXRfaW5fYmFuZF9tZXRhZGF0YV90cmFj
a19kaXNwYXRjaF90eXBlOgotICogQHNlbGY6IEEgI1dlYktpdERPTVRleHRUcmFjawotICoKLSAq
IFJldHVybnM6IEEgI2djaGFyCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJL
SVRfQVBJIGdjaGFyKgotd2Via2l0X2RvbV90ZXh0X3RyYWNrX2dldF9pbl9iYW5kX21ldGFkYXRh
X3RyYWNrX2Rpc3BhdGNoX3R5cGUoV2ViS2l0RE9NVGV4dFRyYWNrKiBzZWxmKTsKLQotLyoqCi0g
KiB3ZWJraXRfZG9tX3RleHRfdHJhY2tfZ2V0X2N1ZXM6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9N
VGV4dFRyYWNrCi0gKgotICogUmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiBBICNXZWJLaXRET01U
ZXh0VHJhY2tDdWVMaXN0Ci0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRf
QVBJIFdlYktpdERPTVRleHRUcmFja0N1ZUxpc3QqCi13ZWJraXRfZG9tX3RleHRfdHJhY2tfZ2V0
X2N1ZXMoV2ViS2l0RE9NVGV4dFRyYWNrKiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX3Rl
eHRfdHJhY2tfZ2V0X2FjdGl2ZV9jdWVzOgotICogQHNlbGY6IEEgI1dlYktpdERPTVRleHRUcmFj
awotICoKLSAqIFJldHVybnM6ICh0cmFuc2ZlciBmdWxsKTogQSAjV2ViS2l0RE9NVGV4dFRyYWNr
Q3VlTGlzdAotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSBXZWJL
aXRET01UZXh0VHJhY2tDdWVMaXN0Kgotd2Via2l0X2RvbV90ZXh0X3RyYWNrX2dldF9hY3RpdmVf
Y3VlcyhXZWJLaXRET01UZXh0VHJhY2sqIHNlbGYpOwotCi1HX0VORF9ERUNMUwotCi0jZW5kaWYg
LyogV0VCS0lUX0RPTV9VU0VfVU5TVEFCTEVfQVBJICovCi0jZW5kaWYgLyogV2ViS2l0RE9NVGV4
dFRyYWNrX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NVGV4dFRyYWNrQ3VlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NVGV4
dFRyYWNrQ3VlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzUyZDY4MS4uMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
dGsvRE9NL1dlYktpdERPTVRleHRUcmFja0N1ZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MzMg
KzAsMCBAQAotLyoKLSAqICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291
cmNlIHByb2plY3QuCi0gKiAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0
ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiAg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
Ci0gKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0g
KgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
Ci0gKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIldlYktpdERPTVRleHRUcmFja0N1ZS5oIgotCi0jaW5jbHVkZSA8V2Vi
Q29yZS9DU1NJbXBvcnRSdWxlLmg+Ci0jaW5jbHVkZSAiRE9NT2JqZWN0Q2FjaGUuaCIKLSNpbmNs
dWRlIDxXZWJDb3JlL0RvY3VtZW50Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9FeGNlcHRpb25Db2Rl
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9FeGNlcHRpb25Db2RlRGVzY3JpcHRpb24uaD4KLSNpbmNs
dWRlICJHT2JqZWN0RXZlbnRMaXN0ZW5lci5oIgotI2luY2x1ZGUgPFdlYkNvcmUvSlNNYWluVGhy
ZWFkRXhlY1N0YXRlLmg+Ci0jaW5jbHVkZSAiV2ViS2l0RE9NRXZlbnRQcml2YXRlLmgiCi0jaW5j
bHVkZSAiV2ViS2l0RE9NRXZlbnRUYXJnZXQuaCIKLSNpbmNsdWRlICJXZWJLaXRET01Qcml2YXRl
LmgiCi0jaW5jbHVkZSAiV2ViS2l0RE9NVGV4dFRyYWNrQ3VlUHJpdmF0ZS5oIgotI2luY2x1ZGUg
IldlYktpdERPTVRleHRUcmFja1ByaXZhdGUuaCIKLSNpbmNsdWRlICJDb252ZXJ0VG9VVEY4U3Ry
aW5nLmgiCi0jaW5jbHVkZSA8d3RmL0dldFB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
LQotI2RlZmluZSBXRUJLSVRfRE9NX1RFWFRfVFJBQ0tfQ1VFX0dFVF9QUklWQVRFKG9iaikgR19U
WVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKG9iaiwgV0VCS0lUX0RPTV9UWVBFX1RFWFRfVFJBQ0tf
Q1VFLCBXZWJLaXRET01UZXh0VHJhY2tDdWVQcml2YXRlKQotCi10eXBlZGVmIHN0cnVjdCBfV2Vi
S2l0RE9NVGV4dFRyYWNrQ3VlUHJpdmF0ZSB7Ci0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAg
IFJlZlB0cjxXZWJDb3JlOjpUZXh0VHJhY2tDdWU+IGNvcmVPYmplY3Q7Ci0jZW5kaWYgLy8gRU5B
QkxFKFZJREVPX1RSQUNLKQotfSBXZWJLaXRET01UZXh0VHJhY2tDdWVQcml2YXRlOwotCi0jaWYg
RU5BQkxFKFZJREVPX1RSQUNLKQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotV2ViS2l0RE9NVGV4
dFRyYWNrQ3VlKiBraXQoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlKiBvYmopCi17Ci0gICAgaWYgKCFv
YmopCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgaWYgKGdwb2ludGVyIHJldCA9IERPTU9iamVj
dENhY2hlOjpnZXQob2JqKSkKLSAgICAgICAgcmV0dXJuIFdFQktJVF9ET01fVEVYVF9UUkFDS19D
VUUocmV0KTsKLQotICAgIHJldHVybiB3cmFwKG9iaik7Ci19Ci0KLVdlYkNvcmU6OlRleHRUcmFj
a0N1ZSogY29yZShXZWJLaXRET01UZXh0VHJhY2tDdWUqIHJlcXVlc3QpCi17Ci0gICAgcmV0dXJu
IHJlcXVlc3QgPyBzdGF0aWNfY2FzdDxXZWJDb3JlOjpUZXh0VHJhY2tDdWUqPihXRUJLSVRfRE9N
X09CSkVDVChyZXF1ZXN0KS0+Y29yZU9iamVjdCkgOiAwOwotfQotCi1XZWJLaXRET01UZXh0VHJh
Y2tDdWUqIHdyYXBUZXh0VHJhY2tDdWUoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlKiBjb3JlT2JqZWN0
KQotewotICAgIEFTU0VSVChjb3JlT2JqZWN0KTsKLSAgICByZXR1cm4gV0VCS0lUX0RPTV9URVhU
X1RSQUNLX0NVRShnX29iamVjdF9uZXcoV0VCS0lUX0RPTV9UWVBFX1RFWFRfVFJBQ0tfQ1VFLCAi
Y29yZS1vYmplY3QiLCBjb3JlT2JqZWN0LCBudWxscHRyKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFZJREVPX1RSQUNLKQotCi1zdGF0aWMgZ2Jvb2xl
YW4gd2Via2l0X2RvbV90ZXh0X3RyYWNrX2N1ZV9kaXNwYXRjaF9ldmVudChXZWJLaXRET01FdmVu
dFRhcmdldCogdGFyZ2V0LCBXZWJLaXRET01FdmVudCogZXZlbnQsIEdFcnJvcioqIGVycm9yKQot
ewotI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICBXZWJDb3JlOjpFdmVudCogY29yZUV2ZW50
ID0gV2ViS2l0Ojpjb3JlKGV2ZW50KTsKLSAgICBpZiAoIWNvcmVFdmVudCkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIFdlYkNvcmU6OlRleHRUcmFja0N1ZSogY29yZVRhcmdldCA9IHN0YXRp
Y19jYXN0PFdlYkNvcmU6OlRleHRUcmFja0N1ZSo+KFdFQktJVF9ET01fT0JKRUNUKHRhcmdldCkt
PmNvcmVPYmplY3QpOwotCi0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAg
Z2Jvb2xlYW4gcmVzdWx0ID0gY29yZVRhcmdldC0+ZGlzcGF0Y2hFdmVudEZvckJpbmRpbmdzKCpj
b3JlRXZlbnQsIGVjKTsKLSAgICBpZiAoZWMpIHsKLSAgICAgICAgV2ViQ29yZTo6RXhjZXB0aW9u
Q29kZURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKGVjKTsKLSAgICAgICAgZ19zZXRfZXJyb3JfbGl0
ZXJhbChlcnJvciwgZ19xdWFya19mcm9tX3N0cmluZygiV0VCS0lUX0RPTSIpLCBkZXNjcmlwdGlv
bi5jb2RlLCBkZXNjcmlwdGlvbi5uYW1lKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSNl
bHNlCi0gICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7Ci0gICAgVU5VU0VEX1BBUkFNKGV2ZW50KTsK
LSAgICBVTlVTRURfUEFSQU0oZXJyb3IpOwotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BS
RVNFTlQoIlZpZGVvIFRyYWNrIikKLSAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYgLy8gRU5BQkxF
KFZJREVPX1RSQUNLKQotfQotCi1zdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X2RvbV90ZXh0X3RyYWNr
X2N1ZV9hZGRfZXZlbnRfbGlzdGVuZXIoV2ViS2l0RE9NRXZlbnRUYXJnZXQqIHRhcmdldCwgY29u
c3QgY2hhciogZXZlbnROYW1lLCBHQ2xvc3VyZSogaGFuZGxlciwgZ2Jvb2xlYW4gdXNlQ2FwdHVy
ZSkKLXsKLSNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0gICAgV2ViQ29yZTo6VGV4dFRyYWNrQ3Vl
KiBjb3JlVGFyZ2V0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6VGV4dFRyYWNrQ3VlKj4oV0VCS0lU
X0RPTV9PQkpFQ1QodGFyZ2V0KS0+Y29yZU9iamVjdCk7Ci0gICAgcmV0dXJuIFdlYktpdDo6R09i
amVjdEV2ZW50TGlzdGVuZXI6OmFkZEV2ZW50TGlzdGVuZXIoR19PQkpFQ1QodGFyZ2V0KSwgY29y
ZVRhcmdldCwgZXZlbnROYW1lLCBoYW5kbGVyLCB1c2VDYXB0dXJlKTsKLSNlbHNlCi0gICAgVU5V
U0VEX1BBUkFNKHRhcmdldCk7Ci0gICAgVU5VU0VEX1BBUkFNKGV2ZW50TmFtZSk7Ci0gICAgVU5V
U0VEX1BBUkFNKGhhbmRsZXIpOwotICAgIFVOVVNFRF9QQVJBTSh1c2VDYXB0dXJlKTsKLSAgICBX
RUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJWaWRlbyBUcmFjayIpCi0gICAgcmV0dXJu
IGZhbHNlOwotI2VuZGlmIC8vIEVOQUJMRShWSURFT19UUkFDSykKLX0KLQotc3RhdGljIGdib29s
ZWFuIHdlYmtpdF9kb21fdGV4dF90cmFja19jdWVfcmVtb3ZlX2V2ZW50X2xpc3RlbmVyKFdlYktp
dERPTUV2ZW50VGFyZ2V0KiB0YXJnZXQsIGNvbnN0IGNoYXIqIGV2ZW50TmFtZSwgR0Nsb3N1cmUq
IGhhbmRsZXIsIGdib29sZWFuIHVzZUNhcHR1cmUpCi17Ci0jaWYgRU5BQkxFKFZJREVPX1RSQUNL
KQotICAgIFdlYkNvcmU6OlRleHRUcmFja0N1ZSogY29yZVRhcmdldCA9IHN0YXRpY19jYXN0PFdl
YkNvcmU6OlRleHRUcmFja0N1ZSo+KFdFQktJVF9ET01fT0JKRUNUKHRhcmdldCktPmNvcmVPYmpl
Y3QpOwotICAgIHJldHVybiBXZWJLaXQ6OkdPYmplY3RFdmVudExpc3RlbmVyOjpyZW1vdmVFdmVu
dExpc3RlbmVyKEdfT0JKRUNUKHRhcmdldCksIGNvcmVUYXJnZXQsIGV2ZW50TmFtZSwgaGFuZGxl
ciwgdXNlQ2FwdHVyZSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTSh0YXJnZXQpOwotICAgIFVO
VVNFRF9QQVJBTShldmVudE5hbWUpOwotICAgIFVOVVNFRF9QQVJBTShoYW5kbGVyKTsKLSAgICBV
TlVTRURfUEFSQU0odXNlQ2FwdHVyZSk7Ci0gICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJF
U0VOVCgiVmlkZW8gVHJhY2siKQotICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZiAvLyBFTkFCTEUo
VklERU9fVFJBQ0spCi19Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdF9kb21fZXZlbnRfdGFyZ2V0X2lu
aXQoV2ViS2l0RE9NRXZlbnRUYXJnZXRJZmFjZSogaWZhY2UpCi17Ci0gICAgaWZhY2UtPmRpc3Bh
dGNoX2V2ZW50ID0gd2Via2l0X2RvbV90ZXh0X3RyYWNrX2N1ZV9kaXNwYXRjaF9ldmVudDsKLSAg
ICBpZmFjZS0+YWRkX2V2ZW50X2xpc3RlbmVyID0gd2Via2l0X2RvbV90ZXh0X3RyYWNrX2N1ZV9h
ZGRfZXZlbnRfbGlzdGVuZXI7Ci0gICAgaWZhY2UtPnJlbW92ZV9ldmVudF9saXN0ZW5lciA9IHdl
YmtpdF9kb21fdGV4dF90cmFja19jdWVfcmVtb3ZlX2V2ZW50X2xpc3RlbmVyOwotfQotCi1HX0RF
RklORV9UWVBFX1dJVEhfQ09ERShXZWJLaXRET01UZXh0VHJhY2tDdWUsIHdlYmtpdF9kb21fdGV4
dF90cmFja19jdWUsIFdFQktJVF9ET01fVFlQRV9PQkpFQ1QsIEdfSU1QTEVNRU5UX0lOVEVSRkFD
RShXRUJLSVRfRE9NX1RZUEVfRVZFTlRfVEFSR0VULCB3ZWJraXRfZG9tX2V2ZW50X3RhcmdldF9p
bml0KSkKLQotZW51bSB7Ci0gICAgUFJPUF8wLAotICAgIFBST1BfVFJBQ0ssCi0gICAgUFJPUF9J
RCwKLSAgICBQUk9QX1NUQVJUX1RJTUUsCi0gICAgUFJPUF9FTkRfVElNRSwKLSAgICBQUk9QX1BB
VVNFX09OX0VYSVQsCi19OwotCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3RleHRfdHJhY2tfY3Vl
X2ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKLXsKLSAgICBXZWJLaXRET01UZXh0VHJhY2tDdWVQ
cml2YXRlKiBwcml2ID0gV0VCS0lUX0RPTV9URVhUX1RSQUNLX0NVRV9HRVRfUFJJVkFURShvYmpl
Y3QpOwotI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICBXZWJLaXQ6OkRPTU9iamVjdENhY2hl
Ojpmb3JnZXQocHJpdi0+Y29yZU9iamVjdC5nZXQoKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKFZJREVP
X1RSQUNLKQotICAgIHByaXYtPn5XZWJLaXRET01UZXh0VHJhY2tDdWVQcml2YXRlKCk7Ci0gICAg
R19PQkpFQ1RfQ0xBU1Mod2Via2l0X2RvbV90ZXh0X3RyYWNrX2N1ZV9wYXJlbnRfY2xhc3MpLT5m
aW5hbGl6ZShvYmplY3QpOwotfQotCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3RleHRfdHJhY2tf
Y3VlX3NldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BlcnR5SWQsIGNvbnN0
IEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKQotewotICAgIFdlYktpdERPTVRleHRU
cmFja0N1ZSogc2VsZiA9IFdFQktJVF9ET01fVEVYVF9UUkFDS19DVUUob2JqZWN0KTsKLQotICAg
IHN3aXRjaCAocHJvcGVydHlJZCkgewotICAgIGNhc2UgUFJPUF9JRDoKLSAgICAgICAgd2Via2l0
X2RvbV90ZXh0X3RyYWNrX2N1ZV9zZXRfaWQoc2VsZiwgZ192YWx1ZV9nZXRfc3RyaW5nKHZhbHVl
KSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9TVEFSVF9USU1FOgotICAgICAgICB3
ZWJraXRfZG9tX3RleHRfdHJhY2tfY3VlX3NldF9zdGFydF90aW1lKHNlbGYsIGdfdmFsdWVfZ2V0
X2RvdWJsZSh2YWx1ZSksIG51bGxwdHIpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1Bf
RU5EX1RJTUU6Ci0gICAgICAgIHdlYmtpdF9kb21fdGV4dF90cmFja19jdWVfc2V0X2VuZF90aW1l
KHNlbGYsIGdfdmFsdWVfZ2V0X2RvdWJsZSh2YWx1ZSksIG51bGxwdHIpOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIFBST1BfUEFVU0VfT05fRVhJVDoKLSAgICAgICAgd2Via2l0X2RvbV90ZXh0
X3RyYWNrX2N1ZV9zZXRfcGF1c2Vfb25fZXhpdChzZWxmLCBnX3ZhbHVlX2dldF9ib29sZWFuKHZh
bHVlKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEdfT0JKRUNUX1dB
Uk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BlcnR5SWQsIHBzcGVjKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgfQotfQotCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3RleHRfdHJhY2tf
Y3VlX2dldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BlcnR5SWQsIEdWYWx1
ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKQotewotICAgIFdlYktpdERPTVRleHRUcmFja0N1
ZSogc2VsZiA9IFdFQktJVF9ET01fVEVYVF9UUkFDS19DVUUob2JqZWN0KTsKLQotICAgIHN3aXRj
aCAocHJvcGVydHlJZCkgewotICAgIGNhc2UgUFJPUF9UUkFDSzoKLSAgICAgICAgZ192YWx1ZV9z
ZXRfb2JqZWN0KHZhbHVlLCB3ZWJraXRfZG9tX3RleHRfdHJhY2tfY3VlX2dldF90cmFjayhzZWxm
KSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9JRDoKLSAgICAgICAgZ192YWx1ZV90
YWtlX3N0cmluZyh2YWx1ZSwgd2Via2l0X2RvbV90ZXh0X3RyYWNrX2N1ZV9nZXRfaWQoc2VsZikp
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfU1RBUlRfVElNRToKLSAgICAgICAgZ192
YWx1ZV9zZXRfZG91YmxlKHZhbHVlLCB3ZWJraXRfZG9tX3RleHRfdHJhY2tfY3VlX2dldF9zdGFy
dF90aW1lKHNlbGYpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX0VORF9USU1FOgot
ICAgICAgICBnX3ZhbHVlX3NldF9kb3VibGUodmFsdWUsIHdlYmtpdF9kb21fdGV4dF90cmFja19j
dWVfZ2V0X2VuZF90aW1lKHNlbGYpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX1BB
VVNFX09OX0VYSVQ6Ci0gICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF9k
b21fdGV4dF90cmFja19jdWVfZ2V0X3BhdXNlX29uX2V4aXQoc2VsZikpOwotICAgICAgICBicmVh
azsKLSAgICBkZWZhdWx0OgotICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlf
SUQob2JqZWN0LCBwcm9wZXJ0eUlkLCBwc3BlYyk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLX0K
LQotc3RhdGljIEdPYmplY3QqIHdlYmtpdF9kb21fdGV4dF90cmFja19jdWVfY29uc3RydWN0b3Io
R1R5cGUgdHlwZSwgZ3VpbnQgY29uc3RydWN0UHJvcGVydGllc0NvdW50LCBHT2JqZWN0Q29uc3Ry
dWN0UGFyYW0qIGNvbnN0cnVjdFByb3BlcnRpZXMpCi17Ci0gICAgR09iamVjdCogb2JqZWN0ID0g
R19PQkpFQ1RfQ0xBU1Mod2Via2l0X2RvbV90ZXh0X3RyYWNrX2N1ZV9wYXJlbnRfY2xhc3MpLT5j
b25zdHJ1Y3Rvcih0eXBlLCBjb25zdHJ1Y3RQcm9wZXJ0aWVzQ291bnQsIGNvbnN0cnVjdFByb3Bl
cnRpZXMpOwotI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICBXZWJLaXRET01UZXh0VHJhY2tD
dWVQcml2YXRlKiBwcml2ID0gV0VCS0lUX0RPTV9URVhUX1RSQUNLX0NVRV9HRVRfUFJJVkFURShv
YmplY3QpOwotICAgIHByaXYtPmNvcmVPYmplY3QgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpUZXh0
VHJhY2tDdWUqPihXRUJLSVRfRE9NX09CSkVDVChvYmplY3QpLT5jb3JlT2JqZWN0KTsKLSAgICBX
ZWJLaXQ6OkRPTU9iamVjdENhY2hlOjpwdXQocHJpdi0+Y29yZU9iamVjdC5nZXQoKSwgb2JqZWN0
KTsKLSNlbmRpZiAvLyBFTkFCTEUoVklERU9fVFJBQ0spCi0gICAgcmV0dXJuIG9iamVjdDsKLX0K
LQotc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXh0X3RyYWNrX2N1ZV9jbGFzc19pbml0KFdlYktp
dERPTVRleHRUcmFja0N1ZUNsYXNzKiByZXF1ZXN0Q2xhc3MpCi17Ci0gICAgR09iamVjdENsYXNz
KiBnb2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhyZXF1ZXN0Q2xhc3MpOwotICAgIGdfdHlw
ZV9jbGFzc19hZGRfcHJpdmF0ZShnb2JqZWN0Q2xhc3MsIHNpemVvZihXZWJLaXRET01UZXh0VHJh
Y2tDdWVQcml2YXRlKSk7Ci0gICAgZ29iamVjdENsYXNzLT5jb25zdHJ1Y3RvciA9IHdlYmtpdF9k
b21fdGV4dF90cmFja19jdWVfY29uc3RydWN0b3I7Ci0gICAgZ29iamVjdENsYXNzLT5maW5hbGl6
ZSA9IHdlYmtpdF9kb21fdGV4dF90cmFja19jdWVfZmluYWxpemU7Ci0gICAgZ29iamVjdENsYXNz
LT5zZXRfcHJvcGVydHkgPSB3ZWJraXRfZG9tX3RleHRfdHJhY2tfY3VlX3NldF9wcm9wZXJ0eTsK
LSAgICBnb2JqZWN0Q2xhc3MtPmdldF9wcm9wZXJ0eSA9IHdlYmtpdF9kb21fdGV4dF90cmFja19j
dWVfZ2V0X3Byb3BlcnR5OwotCi0gICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgK
LSAgICAgICAgZ29iamVjdENsYXNzLAotICAgICAgICBQUk9QX1RSQUNLLAotICAgICAgICBnX3Bh
cmFtX3NwZWNfb2JqZWN0KAotICAgICAgICAgICAgInRyYWNrIiwKLSAgICAgICAgICAgICJUZXh0
VHJhY2tDdWU6dHJhY2siLAotICAgICAgICAgICAgInJlYWQtb25seSBXZWJLaXRET01UZXh0VHJh
Y2sqIFRleHRUcmFja0N1ZTp0cmFjayIsCi0gICAgICAgICAgICBXRUJLSVRfRE9NX1RZUEVfVEVY
VF9UUkFDSywKLSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSkpOwotCi0gICAgZ19v
YmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAgZ29iamVjdENsYXNzLAotICAg
ICAgICBQUk9QX0lELAotICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nKAotICAgICAgICAgICAg
ImlkIiwKLSAgICAgICAgICAgICJUZXh0VHJhY2tDdWU6aWQiLAotICAgICAgICAgICAgInJlYWQt
d3JpdGUgZ2NoYXIqIFRleHRUcmFja0N1ZTppZCIsCi0gICAgICAgICAgICAiIiwKLSAgICAgICAg
ICAgIFdFQktJVF9QQVJBTV9SRUFEV1JJVEUpKTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3Rh
bGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9TVEFSVF9U
SU1FLAotICAgICAgICBnX3BhcmFtX3NwZWNfZG91YmxlKAotICAgICAgICAgICAgInN0YXJ0LXRp
bWUiLAotICAgICAgICAgICAgIlRleHRUcmFja0N1ZTpzdGFydC10aW1lIiwKLSAgICAgICAgICAg
ICJyZWFkLXdyaXRlIGdkb3VibGUgVGV4dFRyYWNrQ3VlOnN0YXJ0LXRpbWUiLAotICAgICAgICAg
ICAgLUdfTUFYRE9VQkxFLCBHX01BWERPVUJMRSwgMCwKLSAgICAgICAgICAgIFdFQktJVF9QQVJB
TV9SRUFEV1JJVEUpKTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0g
ICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9FTkRfVElNRSwKLSAgICAgICAgZ19w
YXJhbV9zcGVjX2RvdWJsZSgKLSAgICAgICAgICAgICJlbmQtdGltZSIsCi0gICAgICAgICAgICAi
VGV4dFRyYWNrQ3VlOmVuZC10aW1lIiwKLSAgICAgICAgICAgICJyZWFkLXdyaXRlIGdkb3VibGUg
VGV4dFRyYWNrQ3VlOmVuZC10aW1lIiwKLSAgICAgICAgICAgIC1HX01BWERPVUJMRSwgR19NQVhE
T1VCTEUsIDAsCi0gICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBRFdSSVRFKSk7Ci0KLSAgICBn
X29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAotICAgICAgICBnb2JqZWN0Q2xhc3MsCi0g
ICAgICAgIFBST1BfUEFVU0VfT05fRVhJVCwKLSAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4o
Ci0gICAgICAgICAgICAicGF1c2Utb24tZXhpdCIsCi0gICAgICAgICAgICAiVGV4dFRyYWNrQ3Vl
OnBhdXNlLW9uLWV4aXQiLAotICAgICAgICAgICAgInJlYWQtd3JpdGUgZ2Jvb2xlYW4gVGV4dFRy
YWNrQ3VlOnBhdXNlLW9uLWV4aXQiLAotICAgICAgICAgICAgRkFMU0UsCi0gICAgICAgICAgICBX
RUJLSVRfUEFSQU1fUkVBRFdSSVRFKSk7Ci0KLX0KLQotc3RhdGljIHZvaWQgd2Via2l0X2RvbV90
ZXh0X3RyYWNrX2N1ZV9pbml0KFdlYktpdERPTVRleHRUcmFja0N1ZSogcmVxdWVzdCkKLXsKLSAg
ICBXZWJLaXRET01UZXh0VHJhY2tDdWVQcml2YXRlKiBwcml2ID0gV0VCS0lUX0RPTV9URVhUX1RS
QUNLX0NVRV9HRVRfUFJJVkFURShyZXF1ZXN0KTsKLSAgICBuZXcgKHByaXYpIFdlYktpdERPTVRl
eHRUcmFja0N1ZVByaXZhdGUoKTsKLX0KLQotV2ViS2l0RE9NVGV4dFRyYWNrKiB3ZWJraXRfZG9t
X3RleHRfdHJhY2tfY3VlX2dldF90cmFjayhXZWJLaXRET01UZXh0VHJhY2tDdWUqIHNlbGYpCi17
Ci0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxT
dGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFWFRf
VFJBQ0tfQ1VFKHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpUZXh0VHJhY2tDdWUqIGl0ZW0gPSBX
ZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlRleHRUcmFjaz4gZ29iamVj
dFJlc3VsdCA9IFdURjo6Z2V0UHRyKGl0ZW0tPnRyYWNrKCkpOwotICAgIHJldHVybiBXZWJLaXQ6
OmtpdChnb2JqZWN0UmVzdWx0LmdldCgpKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHNlbGYp
OwotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIlZpZGVvIFRyYWNrIikKLSAg
ICByZXR1cm4gMDsKLSNlbmRpZiAvKiBFTkFCTEUoVklERU9fVFJBQ0spICovCi19Ci0KLWdjaGFy
KiB3ZWJraXRfZG9tX3RleHRfdHJhY2tfY3VlX2dldF9pZChXZWJLaXRET01UZXh0VHJhY2tDdWUq
IHNlbGYpCi17Ci0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgIFdlYkNvcmU6OkpTTWFpblRo
cmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9N
X0lTX1RFWFRfVFJBQ0tfQ1VFKHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpUZXh0VHJhY2tDdWUq
IGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ2NoYXIqIHJlc3VsdCA9IGNvbnZlcnRU
b1VURjhTdHJpbmcoaXRlbS0+aWQoKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSNlbHNlCi0gICAg
VU5VU0VEX1BBUkFNKHNlbGYpOwotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQo
IlZpZGVvIFRyYWNrIikKLSAgICByZXR1cm4gMDsKLSNlbmRpZiAvKiBFTkFCTEUoVklERU9fVFJB
Q0spICovCi19Ci0KLXZvaWQgd2Via2l0X2RvbV90ZXh0X3RyYWNrX2N1ZV9zZXRfaWQoV2ViS2l0
RE9NVGV4dFRyYWNrQ3VlKiBzZWxmLCBjb25zdCBnY2hhciogdmFsdWUpCi17Ci0jaWYgRU5BQkxF
KFZJREVPX1RSQUNLKQotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsK
LSAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVYVF9UUkFDS19DVUUoc2VsZikp
OwotICAgIGdfcmV0dXJuX2lmX2ZhaWwodmFsdWUpOwotICAgIFdlYkNvcmU6OlRleHRUcmFja0N1
ZSogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRW
YWx1ZSA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOCh2YWx1ZSk7Ci0gICAgaXRlbS0+c2V0SWQoY29u
dmVydGVkVmFsdWUpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc2VsZik7Ci0gICAgVU5VU0VE
X1BBUkFNKHZhbHVlKTsKLSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJWaWRl
byBUcmFjayIpCi0jZW5kaWYgLyogRU5BQkxFKFZJREVPX1RSQUNLKSAqLwotfQotCi1nZG91Ymxl
IHdlYmtpdF9kb21fdGV4dF90cmFja19jdWVfZ2V0X3N0YXJ0X3RpbWUoV2ViS2l0RE9NVGV4dFRy
YWNrQ3VlKiBzZWxmKQotewotI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICBXZWJDb3JlOjpK
U01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VC
S0lUX0RPTV9JU19URVhUX1RSQUNLX0NVRShzZWxmKSwgMCk7Ci0gICAgV2ViQ29yZTo6VGV4dFRy
YWNrQ3VlKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdkb3VibGUgcmVzdWx0ID0g
aXRlbS0+c3RhcnRUaW1lKCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSNlbHNlCi0gICAgVU5VU0VE
X1BBUkFNKHNlbGYpOwotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIlZpZGVv
IFRyYWNrIikKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Z2RvdWJsZT4oMCk7Ci0jZW5kaWYgLyog
RU5BQkxFKFZJREVPX1RSQUNLKSAqLwotfQotCi12b2lkIHdlYmtpdF9kb21fdGV4dF90cmFja19j
dWVfc2V0X3N0YXJ0X3RpbWUoV2ViS2l0RE9NVGV4dFRyYWNrQ3VlKiBzZWxmLCBnZG91YmxlIHZh
bHVlLCBHRXJyb3IqKiBlcnJvcikKLXsKLSNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0gICAgV2Vi
Q29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwo
V0VCS0lUX0RPTV9JU19URVhUX1RSQUNLX0NVRShzZWxmKSk7Ci0gICAgZ19yZXR1cm5faWZfZmFp
bCghZXJyb3IgfHwgISplcnJvcik7Ci0gICAgV2ViQ29yZTo6VGV4dFRyYWNrQ3VlKiBpdGVtID0g
V2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwot
ICAgIGl0ZW0tPnNldFN0YXJ0VGltZSh2YWx1ZSwgZWMpOwotICAgIGlmIChlYykgewotICAgICAg
ICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24gZWNkZXNjKGVjKTsKLSAgICAgICAg
Z19zZXRfZXJyb3JfbGl0ZXJhbChlcnJvciwgZ19xdWFya19mcm9tX3N0cmluZygiV0VCS0lUX0RP
TSIpLCBlY2Rlc2MuY29kZSwgZWNkZXNjLm5hbWUpOwotICAgIH0KLSNlbHNlCi0gICAgVU5VU0VE
X1BBUkFNKHNlbGYpOwotICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFN
KGVycm9yKTsKLSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJWaWRlbyBUcmFj
ayIpCi0jZW5kaWYgLyogRU5BQkxFKFZJREVPX1RSQUNLKSAqLwotfQotCi1nZG91YmxlIHdlYmtp
dF9kb21fdGV4dF90cmFja19jdWVfZ2V0X2VuZF90aW1lKFdlYktpdERPTVRleHRUcmFja0N1ZSog
c2VsZikKLXsKLSNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0gICAgV2ViQ29yZTo6SlNNYWluVGhy
ZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01f
SVNfVEVYVF9UUkFDS19DVUUoc2VsZiksIDApOwotICAgIFdlYkNvcmU6OlRleHRUcmFja0N1ZSog
aXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBnZG91YmxlIHJlc3VsdCA9IGl0ZW0tPmVu
ZFRpbWUoKTsKLSAgICByZXR1cm4gcmVzdWx0OwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc2Vs
Zik7Ci0gICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiVmlkZW8gVHJhY2siKQot
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxnZG91YmxlPigwKTsKLSNlbmRpZiAvKiBFTkFCTEUoVklE
RU9fVFJBQ0spICovCi19Ci0KLXZvaWQgd2Via2l0X2RvbV90ZXh0X3RyYWNrX2N1ZV9zZXRfZW5k
X3RpbWUoV2ViS2l0RE9NVGV4dFRyYWNrQ3VlKiBzZWxmLCBnZG91YmxlIHZhbHVlLCBHRXJyb3Iq
KiBlcnJvcikKLXsKLSNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0gICAgV2ViQ29yZTo6SlNNYWlu
VGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9J
U19URVhUX1RSQUNLX0NVRShzZWxmKSk7Ci0gICAgZ19yZXR1cm5faWZfZmFpbCghZXJyb3IgfHwg
ISplcnJvcik7Ci0gICAgV2ViQ29yZTo6VGV4dFRyYWNrQ3VlKiBpdGVtID0gV2ViS2l0Ojpjb3Jl
KHNlbGYpOwotICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGl0ZW0tPnNl
dEVuZFRpbWUodmFsdWUsIGVjKTsKLSAgICBpZiAoZWMpIHsKLSAgICAgICAgV2ViQ29yZTo6RXhj
ZXB0aW9uQ29kZURlc2NyaXB0aW9uIGVjZGVzYyhlYyk7Ci0gICAgICAgIGdfc2V0X2Vycm9yX2xp
dGVyYWwoZXJyb3IsIGdfcXVhcmtfZnJvbV9zdHJpbmcoIldFQktJVF9ET00iKSwgZWNkZXNjLmNv
ZGUsIGVjZGVzYy5uYW1lKTsKLSAgICB9Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShzZWxmKTsK
LSAgICBVTlVTRURfUEFSQU0odmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTShlcnJvcik7Ci0gICAg
V0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiVmlkZW8gVHJhY2siKQotI2VuZGlmIC8q
IEVOQUJMRShWSURFT19UUkFDSykgKi8KLX0KLQotZ2Jvb2xlYW4gd2Via2l0X2RvbV90ZXh0X3Ry
YWNrX2N1ZV9nZXRfcGF1c2Vfb25fZXhpdChXZWJLaXRET01UZXh0VHJhY2tDdWUqIHNlbGYpCi17
Ci0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxT
dGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFWFRf
VFJBQ0tfQ1VFKHNlbGYpLCBGQUxTRSk7Ci0gICAgV2ViQ29yZTo6VGV4dFRyYWNrQ3VlKiBpdGVt
ID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdib29sZWFuIHJlc3VsdCA9IGl0ZW0tPnBhdXNl
T25FeGl0KCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHNl
bGYpOwotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIlZpZGVvIFRyYWNrIikK
LSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Z2Jvb2xlYW4+KDApOwotI2VuZGlmIC8qIEVOQUJMRShW
SURFT19UUkFDSykgKi8KLX0KLQotdm9pZCB3ZWJraXRfZG9tX3RleHRfdHJhY2tfY3VlX3NldF9w
YXVzZV9vbl9leGl0KFdlYktpdERPTVRleHRUcmFja0N1ZSogc2VsZiwgZ2Jvb2xlYW4gdmFsdWUp
Ci17Ci0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51
bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVYVF9U
UkFDS19DVUUoc2VsZikpOwotICAgIFdlYkNvcmU6OlRleHRUcmFja0N1ZSogaXRlbSA9IFdlYktp
dDo6Y29yZShzZWxmKTsKLSAgICBpdGVtLT5zZXRQYXVzZU9uRXhpdCh2YWx1ZSk7Ci0jZWxzZQot
ICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKLSAgICBVTlVTRURfUEFSQU0odmFsdWUpOwotICAgIFdF
QktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIlZpZGVvIFRyYWNrIikKLSNlbmRpZiAvKiBF
TkFCTEUoVklERU9fVFJBQ0spICovCi19Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NVGV4dFRyYWNrQ3Vl
LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9N
L1dlYktpdERPTVRleHRUcmFja0N1ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBj
MzQ4ZGM2Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NVGV4dFRyYWNrQ3VlLmgKKysrIC9kZXYvbnVsbApA
QCAtMSwxNTAgKzAsMCBAQAotLyoKLSAqICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0
IG9wZW4gc291cmNlIHByb2plY3QuCi0gKiAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBi
eSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKLSAqCi0gKiAgVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICog
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICog
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCi0gKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCi0gKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRl
ZiBXZWJLaXRET01UZXh0VHJhY2tDdWVfaAotI2RlZmluZSBXZWJLaXRET01UZXh0VHJhY2tDdWVf
aAotCi0jaWZkZWYgV0VCS0lUX0RPTV9VU0VfVU5TVEFCTEVfQVBJCi0KLSNpbmNsdWRlIDxnbGli
LW9iamVjdC5oPgotI2luY2x1ZGUgPHdlYmtpdGRvbS9XZWJLaXRET01PYmplY3QuaD4KLSNpbmNs
dWRlIDx3ZWJraXRkb20vd2Via2l0ZG9tZGVmaW5lcy11bnN0YWJsZS5oPgotCi1HX0JFR0lOX0RF
Q0xTCi0KLSNkZWZpbmUgV0VCS0lUX0RPTV9UWVBFX1RFWFRfVFJBQ0tfQ1VFICAgICAgICAgICAg
KHdlYmtpdF9kb21fdGV4dF90cmFja19jdWVfZ2V0X3R5cGUoKSkKLSNkZWZpbmUgV0VCS0lUX0RP
TV9URVhUX1RSQUNLX0NVRShvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9D
QVNUKChvYmopLCBXRUJLSVRfRE9NX1RZUEVfVEVYVF9UUkFDS19DVUUsIFdlYktpdERPTVRleHRU
cmFja0N1ZSkpCi0jZGVmaW5lIFdFQktJVF9ET01fVEVYVF9UUkFDS19DVUVfQ0xBU1Moa2xhc3Mp
ICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLCAgV0VCS0lUX0RPTV9UWVBFX1RF
WFRfVFJBQ0tfQ1VFLCBXZWJLaXRET01UZXh0VHJhY2tDdWVDbGFzcykKLSNkZWZpbmUgV0VCS0lU
X0RPTV9JU19URVhUX1RSQUNLX0NVRShvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5D
RV9UWVBFKChvYmopLCBXRUJLSVRfRE9NX1RZUEVfVEVYVF9UUkFDS19DVUUpKQotI2RlZmluZSBX
RUJLSVRfRE9NX0lTX1RFWFRfVFJBQ0tfQ1VFX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NM
QVNTX1RZUEUoKGtsYXNzKSwgIFdFQktJVF9ET01fVFlQRV9URVhUX1RSQUNLX0NVRSkpCi0jZGVm
aW5lIFdFQktJVF9ET01fVEVYVF9UUkFDS19DVUVfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5T
VEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgV0VCS0lUX0RPTV9UWVBFX1RFWFRfVFJBQ0tfQ1VFLCBX
ZWJLaXRET01UZXh0VHJhY2tDdWVDbGFzcykpCi0KLXN0cnVjdCBfV2ViS2l0RE9NVGV4dFRyYWNr
Q3VlIHsKLSAgICBXZWJLaXRET01PYmplY3QgcGFyZW50X2luc3RhbmNlOwotfTsKLQotc3RydWN0
IF9XZWJLaXRET01UZXh0VHJhY2tDdWVDbGFzcyB7Ci0gICAgV2ViS2l0RE9NT2JqZWN0Q2xhc3Mg
cGFyZW50X2NsYXNzOwotfTsKLQotV0VCS0lUX0FQSSBHVHlwZQotd2Via2l0X2RvbV90ZXh0X3Ry
YWNrX2N1ZV9nZXRfdHlwZSh2b2lkKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX3RleHRfdHJhY2tf
Y3VlX2dldF90cmFjazoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01UZXh0VHJhY2tDdWUKLSAqCi0g
KiBSZXR1cm5zOiAodHJhbnNmZXIgZnVsbCk6IEEgI1dlYktpdERPTVRleHRUcmFjawotICoKLSAq
IFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSBXZWJLaXRET01UZXh0VHJhY2sq
Ci13ZWJraXRfZG9tX3RleHRfdHJhY2tfY3VlX2dldF90cmFjayhXZWJLaXRET01UZXh0VHJhY2tD
dWUqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9kb21fdGV4dF90cmFja19jdWVfZ2V0X2lkOgot
ICogQHNlbGY6IEEgI1dlYktpdERPTVRleHRUcmFja0N1ZQotICoKLSAqIFJldHVybnM6IEEgI2dj
aGFyCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIGdjaGFyKgot
d2Via2l0X2RvbV90ZXh0X3RyYWNrX2N1ZV9nZXRfaWQoV2ViS2l0RE9NVGV4dFRyYWNrQ3VlKiBz
ZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX3RleHRfdHJhY2tfY3VlX3NldF9pZDoKLSAqIEBz
ZWxmOiBBICNXZWJLaXRET01UZXh0VHJhY2tDdWUKLSAqIEB2YWx1ZTogQSAjZ2NoYXIKLSAqCi0g
KiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgdm9pZAotd2Via2l0X2RvbV90
ZXh0X3RyYWNrX2N1ZV9zZXRfaWQoV2ViS2l0RE9NVGV4dFRyYWNrQ3VlKiBzZWxmLCBjb25zdCBn
Y2hhciogdmFsdWUpOwotCi0vKioKLSAqIHdlYmtpdF9kb21fdGV4dF90cmFja19jdWVfZ2V0X3N0
YXJ0X3RpbWU6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NVGV4dFRyYWNrQ3VlCi0gKgotICogUmV0
dXJuczogQSAjZ2RvdWJsZQotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lU
X0FQSSBnZG91YmxlCi13ZWJraXRfZG9tX3RleHRfdHJhY2tfY3VlX2dldF9zdGFydF90aW1lKFdl
YktpdERPTVRleHRUcmFja0N1ZSogc2VsZik7Ci0KLS8qKgotICogd2Via2l0X2RvbV90ZXh0X3Ry
YWNrX2N1ZV9zZXRfc3RhcnRfdGltZToKLSAqIEBzZWxmOiBBICNXZWJLaXRET01UZXh0VHJhY2tD
dWUKLSAqIEB2YWx1ZTogQSAjZ2RvdWJsZQotICogQGVycm9yOiAjR0Vycm9yCi0gKgotICogU3Rh
YmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIHZvaWQKLXdlYmtpdF9kb21fdGV4dF90
cmFja19jdWVfc2V0X3N0YXJ0X3RpbWUoV2ViS2l0RE9NVGV4dFRyYWNrQ3VlKiBzZWxmLCBnZG91
YmxlIHZhbHVlLCBHRXJyb3IqKiBlcnJvcik7Ci0KLS8qKgotICogd2Via2l0X2RvbV90ZXh0X3Ry
YWNrX2N1ZV9nZXRfZW5kX3RpbWU6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NVGV4dFRyYWNrQ3Vl
Ci0gKgotICogUmV0dXJuczogQSAjZ2RvdWJsZQotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUK
LSoqLwotV0VCS0lUX0FQSSBnZG91YmxlCi13ZWJraXRfZG9tX3RleHRfdHJhY2tfY3VlX2dldF9l
bmRfdGltZShXZWJLaXRET01UZXh0VHJhY2tDdWUqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9k
b21fdGV4dF90cmFja19jdWVfc2V0X2VuZF90aW1lOgotICogQHNlbGY6IEEgI1dlYktpdERPTVRl
eHRUcmFja0N1ZQotICogQHZhbHVlOiBBICNnZG91YmxlCi0gKiBAZXJyb3I6ICNHRXJyb3IKLSAq
Ci0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgdm9pZAotd2Via2l0X2Rv
bV90ZXh0X3RyYWNrX2N1ZV9zZXRfZW5kX3RpbWUoV2ViS2l0RE9NVGV4dFRyYWNrQ3VlKiBzZWxm
LCBnZG91YmxlIHZhbHVlLCBHRXJyb3IqKiBlcnJvcik7Ci0KLS8qKgotICogd2Via2l0X2RvbV90
ZXh0X3RyYWNrX2N1ZV9nZXRfcGF1c2Vfb25fZXhpdDoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01U
ZXh0VHJhY2tDdWUKLSAqCi0gKiBSZXR1cm5zOiBBICNnYm9vbGVhbgotICoKLSAqIFN0YWJpbGl0
eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSBnYm9vbGVhbgotd2Via2l0X2RvbV90ZXh0X3Ry
YWNrX2N1ZV9nZXRfcGF1c2Vfb25fZXhpdChXZWJLaXRET01UZXh0VHJhY2tDdWUqIHNlbGYpOwot
Ci0vKioKLSAqIHdlYmtpdF9kb21fdGV4dF90cmFja19jdWVfc2V0X3BhdXNlX29uX2V4aXQ6Ci0g
KiBAc2VsZjogQSAjV2ViS2l0RE9NVGV4dFRyYWNrQ3VlCi0gKiBAdmFsdWU6IEEgI2dib29sZWFu
Ci0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIHZvaWQKLXdlYmtp
dF9kb21fdGV4dF90cmFja19jdWVfc2V0X3BhdXNlX29uX2V4aXQoV2ViS2l0RE9NVGV4dFRyYWNr
Q3VlKiBzZWxmLCBnYm9vbGVhbiB2YWx1ZSk7Ci0KLUdfRU5EX0RFQ0xTCi0KLSNlbmRpZiAvKiBX
RUJLSVRfRE9NX1VTRV9VTlNUQUJMRV9BUEkgKi8KLSNlbmRpZiAvKiBXZWJLaXRET01UZXh0VHJh
Y2tDdWVfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01UZXh0VHJhY2tDdWVMaXN0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9N
VGV4dFRyYWNrQ3VlTGlzdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk2ODQ0
YjUuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01UZXh0VHJhY2tDdWVMaXN0LmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDE5MSArMCwwIEBACi0vKgotICogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJL
aXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAqICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVk
IGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQotICoKLSAqICBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0g
KiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0g
KiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiAg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKLSAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViS2l0RE9NVGV4dFRyYWNrQ3VlTGlzdC5oIgot
Ci0jaW5jbHVkZSA8V2ViQ29yZS9DU1NJbXBvcnRSdWxlLmg+Ci0jaW5jbHVkZSAiRE9NT2JqZWN0
Q2FjaGUuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50Lmg+Ci0jaW5jbHVkZSA8V2ViQ29y
ZS9FeGNlcHRpb25Db2RlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9FeGNlcHRpb25Db2RlRGVzY3Jp
cHRpb24uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5oPgotI2lu
Y2x1ZGUgIldlYktpdERPTVByaXZhdGUuaCIKLSNpbmNsdWRlICJXZWJLaXRET01UZXh0VHJhY2tD
dWVMaXN0UHJpdmF0ZS5oIgotI2luY2x1ZGUgIldlYktpdERPTVRleHRUcmFja0N1ZVByaXZhdGUu
aCIKLSNpbmNsdWRlICJDb252ZXJ0VG9VVEY4U3RyaW5nLmgiCi0jaW5jbHVkZSA8d3RmL0dldFB0
ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotI2RlZmluZSBXRUJLSVRfRE9NX1RFWFRf
VFJBQ0tfQ1VFX0xJU1RfR0VUX1BSSVZBVEUob2JqKSBHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZB
VEUob2JqLCBXRUJLSVRfRE9NX1RZUEVfVEVYVF9UUkFDS19DVUVfTElTVCwgV2ViS2l0RE9NVGV4
dFRyYWNrQ3VlTGlzdFByaXZhdGUpCi0KLXR5cGVkZWYgc3RydWN0IF9XZWJLaXRET01UZXh0VHJh
Y2tDdWVMaXN0UHJpdmF0ZSB7Ci0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgIFJlZlB0cjxX
ZWJDb3JlOjpUZXh0VHJhY2tDdWVMaXN0PiBjb3JlT2JqZWN0OwotI2VuZGlmIC8vIEVOQUJMRShW
SURFT19UUkFDSykKLX0gV2ViS2l0RE9NVGV4dFRyYWNrQ3VlTGlzdFByaXZhdGU7Ci0KLSNpZiBF
TkFCTEUoVklERU9fVFJBQ0spCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1XZWJLaXRET01UZXh0
VHJhY2tDdWVMaXN0KiBraXQoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlTGlzdCogb2JqKQotewotICAg
IGlmICghb2JqKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIGlmIChncG9pbnRlciByZXQgPSBE
T01PYmplY3RDYWNoZTo6Z2V0KG9iaikpCi0gICAgICAgIHJldHVybiBXRUJLSVRfRE9NX1RFWFRf
VFJBQ0tfQ1VFX0xJU1QocmV0KTsKLQotICAgIHJldHVybiB3cmFwVGV4dFRyYWNrQ3VlTGlzdChv
YmopOwotfQotCi1XZWJDb3JlOjpUZXh0VHJhY2tDdWVMaXN0KiBjb3JlKFdlYktpdERPTVRleHRU
cmFja0N1ZUxpc3QqIHJlcXVlc3QpCi17Ci0gICAgcmV0dXJuIHJlcXVlc3QgPyBzdGF0aWNfY2Fz
dDxXZWJDb3JlOjpUZXh0VHJhY2tDdWVMaXN0Kj4oV0VCS0lUX0RPTV9PQkpFQ1QocmVxdWVzdCkt
PmNvcmVPYmplY3QpIDogMDsKLX0KLQotV2ViS2l0RE9NVGV4dFRyYWNrQ3VlTGlzdCogd3JhcFRl
eHRUcmFja0N1ZUxpc3QoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlTGlzdCogY29yZU9iamVjdCkKLXsK
LSAgICBBU1NFUlQoY29yZU9iamVjdCk7Ci0gICAgcmV0dXJuIFdFQktJVF9ET01fVEVYVF9UUkFD
S19DVUVfTElTVChnX29iamVjdF9uZXcoV0VCS0lUX0RPTV9UWVBFX1RFWFRfVFJBQ0tfQ1VFX0xJ
U1QsICJjb3JlLW9iamVjdCIsIGNvcmVPYmplY3QsIG51bGxwdHIpKTsKLX0KLQotfSAvLyBuYW1l
c3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoVklERU9fVFJBQ0spCi0KLUdfREVGSU5F
X1RZUEUoV2ViS2l0RE9NVGV4dFRyYWNrQ3VlTGlzdCwgd2Via2l0X2RvbV90ZXh0X3RyYWNrX2N1
ZV9saXN0LCBXRUJLSVRfRE9NX1RZUEVfT0JKRUNUKQotCi1lbnVtIHsKLSAgICBQUk9QXzAsCi0g
ICAgUFJPUF9MRU5HVEgsCi19OwotCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3RleHRfdHJhY2tf
Y3VlX2xpc3RfZmluYWxpemUoR09iamVjdCogb2JqZWN0KQotewotICAgIFdlYktpdERPTVRleHRU
cmFja0N1ZUxpc3RQcml2YXRlKiBwcml2ID0gV0VCS0lUX0RPTV9URVhUX1RSQUNLX0NVRV9MSVNU
X0dFVF9QUklWQVRFKG9iamVjdCk7Ci0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgIFdlYktp
dDo6RE9NT2JqZWN0Q2FjaGU6OmZvcmdldChwcml2LT5jb3JlT2JqZWN0LmdldCgpKTsKLSNlbmRp
ZiAvLyBFTkFCTEUoVklERU9fVFJBQ0spCi0gICAgcHJpdi0+fldlYktpdERPTVRleHRUcmFja0N1
ZUxpc3RQcml2YXRlKCk7Ci0gICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X2RvbV90ZXh0X3RyYWNr
X2N1ZV9saXN0X3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7Ci19Ci0KLXN0YXRpYyB2
b2lkIHdlYmtpdF9kb21fdGV4dF90cmFja19jdWVfbGlzdF9nZXRfcHJvcGVydHkoR09iamVjdCog
b2JqZWN0LCBndWludCBwcm9wZXJ0eUlkLCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3Bl
YykKLXsKLSAgICBXZWJLaXRET01UZXh0VHJhY2tDdWVMaXN0KiBzZWxmID0gV0VCS0lUX0RPTV9U
RVhUX1RSQUNLX0NVRV9MSVNUKG9iamVjdCk7Ci0KLSAgICBzd2l0Y2ggKHByb3BlcnR5SWQpIHsK
LSAgICBjYXNlIFBST1BfTEVOR1RIOgotICAgICAgICBnX3ZhbHVlX3NldF91bG9uZyh2YWx1ZSwg
d2Via2l0X2RvbV90ZXh0X3RyYWNrX2N1ZV9saXN0X2dldF9sZW5ndGgoc2VsZikpOwotICAgICAg
ICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJP
UEVSVFlfSUQob2JqZWN0LCBwcm9wZXJ0eUlkLCBwc3BlYyk7Ci0gICAgICAgIGJyZWFrOwotICAg
IH0KLX0KLQotc3RhdGljIEdPYmplY3QqIHdlYmtpdF9kb21fdGV4dF90cmFja19jdWVfbGlzdF9j
b25zdHJ1Y3RvcihHVHlwZSB0eXBlLCBndWludCBjb25zdHJ1Y3RQcm9wZXJ0aWVzQ291bnQsIEdP
YmplY3RDb25zdHJ1Y3RQYXJhbSogY29uc3RydWN0UHJvcGVydGllcykKLXsKLSAgICBHT2JqZWN0
KiBvYmplY3QgPSBHX09CSkVDVF9DTEFTUyh3ZWJraXRfZG9tX3RleHRfdHJhY2tfY3VlX2xpc3Rf
cGFyZW50X2NsYXNzKS0+Y29uc3RydWN0b3IodHlwZSwgY29uc3RydWN0UHJvcGVydGllc0NvdW50
LCBjb25zdHJ1Y3RQcm9wZXJ0aWVzKTsKLSNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0gICAgV2Vi
S2l0RE9NVGV4dFRyYWNrQ3VlTGlzdFByaXZhdGUqIHByaXYgPSBXRUJLSVRfRE9NX1RFWFRfVFJB
Q0tfQ1VFX0xJU1RfR0VUX1BSSVZBVEUob2JqZWN0KTsKLSAgICBwcml2LT5jb3JlT2JqZWN0ID0g
c3RhdGljX2Nhc3Q8V2ViQ29yZTo6VGV4dFRyYWNrQ3VlTGlzdCo+KFdFQktJVF9ET01fT0JKRUNU
KG9iamVjdCktPmNvcmVPYmplY3QpOwotICAgIFdlYktpdDo6RE9NT2JqZWN0Q2FjaGU6OnB1dChw
cml2LT5jb3JlT2JqZWN0LmdldCgpLCBvYmplY3QpOwotI2VuZGlmIC8vIEVOQUJMRShWSURFT19U
UkFDSykKLSAgICByZXR1cm4gb2JqZWN0OwotfQotCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rl
eHRfdHJhY2tfY3VlX2xpc3RfY2xhc3NfaW5pdChXZWJLaXRET01UZXh0VHJhY2tDdWVMaXN0Q2xh
c3MqIHJlcXVlc3RDbGFzcykKLXsKLSAgICBHT2JqZWN0Q2xhc3MqIGdvYmplY3RDbGFzcyA9IEdf
T0JKRUNUX0NMQVNTKHJlcXVlc3RDbGFzcyk7Ci0gICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRl
KGdvYmplY3RDbGFzcywgc2l6ZW9mKFdlYktpdERPTVRleHRUcmFja0N1ZUxpc3RQcml2YXRlKSk7
Ci0gICAgZ29iamVjdENsYXNzLT5jb25zdHJ1Y3RvciA9IHdlYmtpdF9kb21fdGV4dF90cmFja19j
dWVfbGlzdF9jb25zdHJ1Y3RvcjsKLSAgICBnb2JqZWN0Q2xhc3MtPmZpbmFsaXplID0gd2Via2l0
X2RvbV90ZXh0X3RyYWNrX2N1ZV9saXN0X2ZpbmFsaXplOwotICAgIGdvYmplY3RDbGFzcy0+Z2V0
X3Byb3BlcnR5ID0gd2Via2l0X2RvbV90ZXh0X3RyYWNrX2N1ZV9saXN0X2dldF9wcm9wZXJ0eTsK
LQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RD
bGFzcywKLSAgICAgICAgUFJPUF9MRU5HVEgsCi0gICAgICAgIGdfcGFyYW1fc3BlY191bG9uZygK
LSAgICAgICAgICAgICJsZW5ndGgiLAotICAgICAgICAgICAgIlRleHRUcmFja0N1ZUxpc3Q6bGVu
Z3RoIiwKLSAgICAgICAgICAgICJyZWFkLW9ubHkgZ3Vsb25nIFRleHRUcmFja0N1ZUxpc3Q6bGVu
Z3RoIiwKLSAgICAgICAgICAgIDAsIEdfTUFYVUxPTkcsIDAsCi0gICAgICAgICAgICBXRUJLSVRf
UEFSQU1fUkVBREFCTEUpKTsKLQotfQotCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3RleHRfdHJh
Y2tfY3VlX2xpc3RfaW5pdChXZWJLaXRET01UZXh0VHJhY2tDdWVMaXN0KiByZXF1ZXN0KQotewot
ICAgIFdlYktpdERPTVRleHRUcmFja0N1ZUxpc3RQcml2YXRlKiBwcml2ID0gV0VCS0lUX0RPTV9U
RVhUX1RSQUNLX0NVRV9MSVNUX0dFVF9QUklWQVRFKHJlcXVlc3QpOwotICAgIG5ldyAocHJpdikg
V2ViS2l0RE9NVGV4dFRyYWNrQ3VlTGlzdFByaXZhdGUoKTsKLX0KLQotV2ViS2l0RE9NVGV4dFRy
YWNrQ3VlKiB3ZWJraXRfZG9tX3RleHRfdHJhY2tfY3VlX2xpc3RfaXRlbShXZWJLaXRET01UZXh0
VHJhY2tDdWVMaXN0KiBzZWxmLCBndWxvbmcgaW5kZXgpCi17Ci0jaWYgRU5BQkxFKFZJREVPX1RS
QUNLKQotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3Jl
dHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFWFRfVFJBQ0tfQ1VFX0xJU1Qoc2VsZiks
IDApOwotICAgIFdlYkNvcmU6OlRleHRUcmFja0N1ZUxpc3QqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUo
c2VsZik7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlRleHRUcmFja0N1ZT4gZ29iamVjdFJlc3VsdCA9
IFdURjo6Z2V0UHRyKGl0ZW0tPml0ZW0oaW5kZXgpKTsKLSAgICByZXR1cm4gV2ViS2l0OjpraXQo
Z29iamVjdFJlc3VsdC5nZXQoKSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKLSAg
ICBVTlVTRURfUEFSQU0oaW5kZXgpOwotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNF
TlQoIlZpZGVvIFRyYWNrIikKLSAgICByZXR1cm4gMDsKLSNlbmRpZiAvKiBFTkFCTEUoVklERU9f
VFJBQ0spICovCi19Ci0KLVdlYktpdERPTVRleHRUcmFja0N1ZSogd2Via2l0X2RvbV90ZXh0X3Ry
YWNrX2N1ZV9saXN0X2dldF9jdWVfYnlfaWQoV2ViS2l0RE9NVGV4dFRyYWNrQ3VlTGlzdCogc2Vs
ZiwgY29uc3QgZ2NoYXIqIGlkKQotewotI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICBXZWJD
b3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwoV0VCS0lUX0RPTV9JU19URVhUX1RSQUNLX0NVRV9MSVNUKHNlbGYpLCAwKTsKLSAgICBnX3Jl
dHVybl92YWxfaWZfZmFpbChpZCwgMCk7Ci0gICAgV2ViQ29yZTo6VGV4dFRyYWNrQ3VlTGlzdCog
aXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRJZCA9
IFdURjo6U3RyaW5nOjpmcm9tVVRGOChpZCk7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlRleHRUcmFj
a0N1ZT4gZ29iamVjdFJlc3VsdCA9IFdURjo6Z2V0UHRyKGl0ZW0tPmdldEN1ZUJ5SWQoY29udmVy
dGVkSWQpKTsKLSAgICByZXR1cm4gV2ViS2l0OjpraXQoZ29iamVjdFJlc3VsdC5nZXQoKSk7Ci0j
ZWxzZQotICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKLSAgICBVTlVTRURfUEFSQU0oaWQpOwotICAg
IFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIlZpZGVvIFRyYWNrIikKLSAgICByZXR1
cm4gMDsKLSNlbmRpZiAvKiBFTkFCTEUoVklERU9fVFJBQ0spICovCi19Ci0KLWd1bG9uZyB3ZWJr
aXRfZG9tX3RleHRfdHJhY2tfY3VlX2xpc3RfZ2V0X2xlbmd0aChXZWJLaXRET01UZXh0VHJhY2tD
dWVMaXN0KiBzZWxmKQotewotI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICBXZWJDb3JlOjpK
U01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VC
S0lUX0RPTV9JU19URVhUX1RSQUNLX0NVRV9MSVNUKHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpU
ZXh0VHJhY2tDdWVMaXN0KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGd1bG9uZyBy
ZXN1bHQgPSBpdGVtLT5sZW5ndGgoKTsKLSAgICByZXR1cm4gcmVzdWx0OwotI2Vsc2UKLSAgICBV
TlVTRURfUEFSQU0oc2VsZik7Ci0gICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgi
VmlkZW8gVHJhY2siKQotICAgIHJldHVybiBzdGF0aWNfY2FzdDxndWxvbmc+KDApOwotI2VuZGlm
IC8qIEVOQUJMRShWSURFT19UUkFDSykgKi8KLX0KLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01UZXh0VHJh
Y2tDdWVMaXN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9ndGsvRE9NL1dlYktpdERPTVRleHRUcmFja0N1ZUxpc3QuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMWZmODJmNy4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVRleHRUcmFja0N1ZUxpc3Qu
aAorKysgL2Rldi9udWxsCkBAIC0xLDg4ICswLDAgQEAKLS8qCi0gKiAgVGhpcyBmaWxlIGlzIHBh
cnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICogIFRoaXMgZmlsZSBoYXMg
YmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0g
KgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
Ci0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgotICovCi0KLSNpZm5kZWYgV2ViS2l0RE9NVGV4dFRyYWNrQ3VlTGlzdF9oCi0jZGVmaW5lIFdl
YktpdERPTVRleHRUcmFja0N1ZUxpc3RfaAotCi0jaWZkZWYgV0VCS0lUX0RPTV9VU0VfVU5TVEFC
TEVfQVBJCi0KLSNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgotI2luY2x1ZGUgPHdlYmtpdGRvbS9X
ZWJLaXRET01PYmplY3QuaD4KLSNpbmNsdWRlIDx3ZWJraXRkb20vd2Via2l0ZG9tZGVmaW5lcy11
bnN0YWJsZS5oPgotCi1HX0JFR0lOX0RFQ0xTCi0KLSNkZWZpbmUgV0VCS0lUX0RPTV9UWVBFX1RF
WFRfVFJBQ0tfQ1VFX0xJU1QgICAgICAgICAgICAod2Via2l0X2RvbV90ZXh0X3RyYWNrX2N1ZV9s
aXN0X2dldF90eXBlKCkpCi0jZGVmaW5lIFdFQktJVF9ET01fVEVYVF9UUkFDS19DVUVfTElTVChv
YmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBXRUJLSVRf
RE9NX1RZUEVfVEVYVF9UUkFDS19DVUVfTElTVCwgV2ViS2l0RE9NVGV4dFRyYWNrQ3VlTGlzdCkp
Ci0jZGVmaW5lIFdFQktJVF9ET01fVEVYVF9UUkFDS19DVUVfTElTVF9DTEFTUyhrbGFzcykgICAg
KEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksICBXRUJLSVRfRE9NX1RZUEVfVEVYVF9U
UkFDS19DVUVfTElTVCwgV2ViS2l0RE9NVGV4dFRyYWNrQ3VlTGlzdENsYXNzKQotI2RlZmluZSBX
RUJLSVRfRE9NX0lTX1RFWFRfVFJBQ0tfQ1VFX0xJU1Qob2JqKSAgICAgICAgIChHX1RZUEVfQ0hF
Q0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX0RPTV9UWVBFX1RFWFRfVFJBQ0tfQ1VFX0xJ
U1QpKQotI2RlZmluZSBXRUJLSVRfRE9NX0lTX1RFWFRfVFJBQ0tfQ1VFX0xJU1RfQ0xBU1Moa2xh
c3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX0RPTV9UWVBFX1RF
WFRfVFJBQ0tfQ1VFX0xJU1QpKQotI2RlZmluZSBXRUJLSVRfRE9NX1RFWFRfVFJBQ0tfQ1VFX0xJ
U1RfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgV0VC
S0lUX0RPTV9UWVBFX1RFWFRfVFJBQ0tfQ1VFX0xJU1QsIFdlYktpdERPTVRleHRUcmFja0N1ZUxp
c3RDbGFzcykpCi0KLXN0cnVjdCBfV2ViS2l0RE9NVGV4dFRyYWNrQ3VlTGlzdCB7Ci0gICAgV2Vi
S2l0RE9NT2JqZWN0IHBhcmVudF9pbnN0YW5jZTsKLX07Ci0KLXN0cnVjdCBfV2ViS2l0RE9NVGV4
dFRyYWNrQ3VlTGlzdENsYXNzIHsKLSAgICBXZWJLaXRET01PYmplY3RDbGFzcyBwYXJlbnRfY2xh
c3M7Ci19OwotCi1XRUJLSVRfQVBJIEdUeXBlCi13ZWJraXRfZG9tX3RleHRfdHJhY2tfY3VlX2xp
c3RfZ2V0X3R5cGUodm9pZCk7Ci0KLS8qKgotICogd2Via2l0X2RvbV90ZXh0X3RyYWNrX2N1ZV9s
aXN0X2l0ZW06Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NVGV4dFRyYWNrQ3VlTGlzdAotICogQGlu
ZGV4OiBBICNndWxvbmcKLSAqCi0gKiBSZXR1cm5zOiAodHJhbnNmZXIgZnVsbCk6IEEgI1dlYktp
dERPTVRleHRUcmFja0N1ZQotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lU
X0FQSSBXZWJLaXRET01UZXh0VHJhY2tDdWUqCi13ZWJraXRfZG9tX3RleHRfdHJhY2tfY3VlX2xp
c3RfaXRlbShXZWJLaXRET01UZXh0VHJhY2tDdWVMaXN0KiBzZWxmLCBndWxvbmcgaW5kZXgpOwot
Ci0vKioKLSAqIHdlYmtpdF9kb21fdGV4dF90cmFja19jdWVfbGlzdF9nZXRfY3VlX2J5X2lkOgot
ICogQHNlbGY6IEEgI1dlYktpdERPTVRleHRUcmFja0N1ZUxpc3QKLSAqIEBpZDogQSAjZ2NoYXIK
LSAqCi0gKiBSZXR1cm5zOiAodHJhbnNmZXIgZnVsbCk6IEEgI1dlYktpdERPTVRleHRUcmFja0N1
ZQotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSBXZWJLaXRET01U
ZXh0VHJhY2tDdWUqCi13ZWJraXRfZG9tX3RleHRfdHJhY2tfY3VlX2xpc3RfZ2V0X2N1ZV9ieV9p
ZChXZWJLaXRET01UZXh0VHJhY2tDdWVMaXN0KiBzZWxmLCBjb25zdCBnY2hhciogaWQpOwotCi0v
KioKLSAqIHdlYmtpdF9kb21fdGV4dF90cmFja19jdWVfbGlzdF9nZXRfbGVuZ3RoOgotICogQHNl
bGY6IEEgI1dlYktpdERPTVRleHRUcmFja0N1ZUxpc3QKLSAqCi0gKiBSZXR1cm5zOiBBICNndWxv
bmcKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgZ3Vsb25nCi13
ZWJraXRfZG9tX3RleHRfdHJhY2tfY3VlX2xpc3RfZ2V0X2xlbmd0aChXZWJLaXRET01UZXh0VHJh
Y2tDdWVMaXN0KiBzZWxmKTsKLQotR19FTkRfREVDTFMKLQotI2VuZGlmIC8qIFdFQktJVF9ET01f
VVNFX1VOU1RBQkxFX0FQSSAqLwotI2VuZGlmIC8qIFdlYktpdERPTVRleHRUcmFja0N1ZUxpc3Rf
aCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01UZXh0VHJhY2tDdWVMaXN0UHJpdmF0ZS5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01U
ZXh0VHJhY2tDdWVMaXN0UHJpdmF0ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAy
ZDg3NjVkLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NVGV4dFRyYWNrQ3VlTGlzdFByaXZhdGUuaAorKysg
L2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLS8qCi0gKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2Yg
dGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICogIFRoaXMgZmlsZSBoYXMgYmVlbiBn
ZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICog
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAg
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICov
Ci0KLSNpZm5kZWYgV2ViS2l0RE9NVGV4dFRyYWNrQ3VlTGlzdFByaXZhdGVfaAotI2RlZmluZSBX
ZWJLaXRET01UZXh0VHJhY2tDdWVMaXN0UHJpdmF0ZV9oCi0KLSNpbmNsdWRlIDxXZWJDb3JlL1Rl
eHRUcmFja0N1ZUxpc3QuaD4KLSNpbmNsdWRlIDx3ZWJraXRkb20vV2ViS2l0RE9NVGV4dFRyYWNr
Q3VlTGlzdC5oPgotI2lmIEVOQUJMRShWSURFT19UUkFDSykKLQotbmFtZXNwYWNlIFdlYktpdCB7
Ci1XZWJLaXRET01UZXh0VHJhY2tDdWVMaXN0KiB3cmFwVGV4dFRyYWNrQ3VlTGlzdChXZWJDb3Jl
OjpUZXh0VHJhY2tDdWVMaXN0Kik7Ci1XZWJLaXRET01UZXh0VHJhY2tDdWVMaXN0KiBraXQoV2Vi
Q29yZTo6VGV4dFRyYWNrQ3VlTGlzdCopOwotV2ViQ29yZTo6VGV4dFRyYWNrQ3VlTGlzdCogY29y
ZShXZWJLaXRET01UZXh0VHJhY2tDdWVMaXN0Kik7Ci19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQot
I2VuZGlmIC8qIEVOQUJMRShWSURFT19UUkFDSykgKi8KLQotI2VuZGlmIC8qIFdlYktpdERPTVRl
eHRUcmFja0N1ZUxpc3RQcml2YXRlX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NVGV4dFRyYWNrQ3Vl
UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z3RrL0RPTS9XZWJLaXRET01UZXh0VHJhY2tDdWVQcml2YXRlLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDUwMDYzZmEuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01UZXh0VHJhY2tDdWVQcml2
YXRlLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi0vKgotICogIFRoaXMgZmlsZSBp
cyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAqICBUaGlzIGZpbGUg
aGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZ
IQotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICog
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KLSAqLwotCi0jaWZuZGVmIFdlYktpdERPTVRleHRUcmFja0N1ZVByaXZhdGVfaAotI2Rl
ZmluZSBXZWJLaXRET01UZXh0VHJhY2tDdWVQcml2YXRlX2gKLQotI2luY2x1ZGUgPFdlYkNvcmUv
VGV4dFRyYWNrQ3VlLmg+Ci0jaW5jbHVkZSA8d2Via2l0ZG9tL1dlYktpdERPTVRleHRUcmFja0N1
ZS5oPgotI2lmIEVOQUJMRShWSURFT19UUkFDSykKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci1XZWJL
aXRET01UZXh0VHJhY2tDdWUqIHdyYXBUZXh0VHJhY2tDdWUoV2ViQ29yZTo6VGV4dFRyYWNrQ3Vl
Kik7Ci1XZWJLaXRET01UZXh0VHJhY2tDdWUqIGtpdChXZWJDb3JlOjpUZXh0VHJhY2tDdWUqKTsK
LVdlYkNvcmU6OlRleHRUcmFja0N1ZSogY29yZShXZWJLaXRET01UZXh0VHJhY2tDdWUqKTsKLX0g
Ly8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLyogRU5BQkxFKFZJREVPX1RSQUNLKSAqLwot
Ci0jZW5kaWYgLyogV2ViS2l0RE9NVGV4dFRyYWNrQ3VlUHJpdmF0ZV9oICovCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dl
YktpdERPTVRleHRUcmFja0xpc3QuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01UZXh0VHJhY2tMaXN0LmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDE1YzJkZS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVRleHRU
cmFja0xpc3QuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjU1ICswLDAgQEAKLS8qCi0gKiAgVGhp
cyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICogIFRo
aXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5P
VCBNT0RJRlkhCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAq
Ci0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJL
aXRET01UZXh0VHJhY2tMaXN0LmgiCi0KLSNpbmNsdWRlIDxXZWJDb3JlL0NTU0ltcG9ydFJ1bGUu
aD4KLSNpbmNsdWRlICJET01PYmplY3RDYWNoZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1l
bnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0V4Y2VwdGlvbkNvZGUuaD4KLSNpbmNsdWRlIDxXZWJD
b3JlL0V4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbi5oPgotI2luY2x1ZGUgIkdPYmplY3RFdmVudExp
c3RlbmVyLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9KU01haW5UaHJlYWRFeGVjU3RhdGUuaD4KLSNp
bmNsdWRlICJXZWJLaXRET01FdmVudFByaXZhdGUuaCIKLSNpbmNsdWRlICJXZWJLaXRET01FdmVu
dFRhcmdldC5oIgotI2luY2x1ZGUgIldlYktpdERPTVByaXZhdGUuaCIKLSNpbmNsdWRlICJXZWJL
aXRET01UZXh0VHJhY2tMaXN0UHJpdmF0ZS5oIgotI2luY2x1ZGUgIldlYktpdERPTVRleHRUcmFj
a1ByaXZhdGUuaCIKLSNpbmNsdWRlICJDb252ZXJ0VG9VVEY4U3RyaW5nLmgiCi0jaW5jbHVkZSA8
d3RmL0dldFB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotI2RlZmluZSBXRUJLSVRf
RE9NX1RFWFRfVFJBQ0tfTElTVF9HRVRfUFJJVkFURShvYmopIEdfVFlQRV9JTlNUQU5DRV9HRVRf
UFJJVkFURShvYmosIFdFQktJVF9ET01fVFlQRV9URVhUX1RSQUNLX0xJU1QsIFdlYktpdERPTVRl
eHRUcmFja0xpc3RQcml2YXRlKQotCi10eXBlZGVmIHN0cnVjdCBfV2ViS2l0RE9NVGV4dFRyYWNr
TGlzdFByaXZhdGUgewotI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICBSZWZQdHI8V2ViQ29y
ZTo6VGV4dFRyYWNrTGlzdD4gY29yZU9iamVjdDsKLSNlbmRpZiAvLyBFTkFCTEUoVklERU9fVFJB
Q0spCi19IFdlYktpdERPTVRleHRUcmFja0xpc3RQcml2YXRlOwotCi0jaWYgRU5BQkxFKFZJREVP
X1RSQUNLKQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotV2ViS2l0RE9NVGV4dFRyYWNrTGlzdCog
a2l0KFdlYkNvcmU6OlRleHRUcmFja0xpc3QqIG9iaikKLXsKLSAgICBpZiAoIW9iaikKLSAgICAg
ICAgcmV0dXJuIDA7Ci0KLSAgICBpZiAoZ3BvaW50ZXIgcmV0ID0gRE9NT2JqZWN0Q2FjaGU6Omdl
dChvYmopKQotICAgICAgICByZXR1cm4gV0VCS0lUX0RPTV9URVhUX1RSQUNLX0xJU1QocmV0KTsK
LQotICAgIHJldHVybiB3cmFwVGV4dFRyYWNrTGlzdChvYmopOwotfQotCi1XZWJDb3JlOjpUZXh0
VHJhY2tMaXN0KiBjb3JlKFdlYktpdERPTVRleHRUcmFja0xpc3QqIHJlcXVlc3QpCi17Ci0gICAg
cmV0dXJuIHJlcXVlc3QgPyBzdGF0aWNfY2FzdDxXZWJDb3JlOjpUZXh0VHJhY2tMaXN0Kj4oV0VC
S0lUX0RPTV9PQkpFQ1QocmVxdWVzdCktPmNvcmVPYmplY3QpIDogMDsKLX0KLQotV2ViS2l0RE9N
VGV4dFRyYWNrTGlzdCogd3JhcFRleHRUcmFja0xpc3QoV2ViQ29yZTo6VGV4dFRyYWNrTGlzdCog
Y29yZU9iamVjdCkKLXsKLSAgICBBU1NFUlQoY29yZU9iamVjdCk7Ci0gICAgcmV0dXJuIFdFQktJ
VF9ET01fVEVYVF9UUkFDS19MSVNUKGdfb2JqZWN0X25ldyhXRUJLSVRfRE9NX1RZUEVfVEVYVF9U
UkFDS19MSVNULCAiY29yZS1vYmplY3QiLCBjb3JlT2JqZWN0LCBudWxscHRyKSk7Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFZJREVPX1RSQUNLKQotCi1z
dGF0aWMgZ2Jvb2xlYW4gd2Via2l0X2RvbV90ZXh0X3RyYWNrX2xpc3RfZGlzcGF0Y2hfZXZlbnQo
V2ViS2l0RE9NRXZlbnRUYXJnZXQqIHRhcmdldCwgV2ViS2l0RE9NRXZlbnQqIGV2ZW50LCBHRXJy
b3IqKiBlcnJvcikKLXsKLSNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0gICAgV2ViQ29yZTo6RXZl
bnQqIGNvcmVFdmVudCA9IFdlYktpdDo6Y29yZShldmVudCk7Ci0gICAgaWYgKCFjb3JlRXZlbnQp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBXZWJDb3JlOjpUZXh0VHJhY2tMaXN0KiBjb3Jl
VGFyZ2V0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6VGV4dFRyYWNrTGlzdCo+KFdFQktJVF9ET01f
T0JKRUNUKHRhcmdldCktPmNvcmVPYmplY3QpOwotCi0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29k
ZSBlYyA9IDA7Ci0gICAgZ2Jvb2xlYW4gcmVzdWx0ID0gY29yZVRhcmdldC0+ZGlzcGF0Y2hFdmVu
dEZvckJpbmRpbmdzKCpjb3JlRXZlbnQsIGVjKTsKLSAgICBpZiAoZWMpIHsKLSAgICAgICAgV2Vi
Q29yZTo6RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKGVjKTsKLSAgICAgICAg
Z19zZXRfZXJyb3JfbGl0ZXJhbChlcnJvciwgZ19xdWFya19mcm9tX3N0cmluZygiV0VCS0lUX0RP
TSIpLCBkZXNjcmlwdGlvbi5jb2RlLCBkZXNjcmlwdGlvbi5uYW1lKTsKLSAgICB9Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7Ci0gICAgVU5VU0VE
X1BBUkFNKGV2ZW50KTsKLSAgICBVTlVTRURfUEFSQU0oZXJyb3IpOwotICAgIFdFQktJVF9XQVJO
X0ZFQVRVUkVfTk9UX1BSRVNFTlQoIlZpZGVvIFRyYWNrIikKLSAgICByZXR1cm4gZmFsc2U7Ci0j
ZW5kaWYgLy8gRU5BQkxFKFZJREVPX1RSQUNLKQotfQotCi1zdGF0aWMgZ2Jvb2xlYW4gd2Via2l0
X2RvbV90ZXh0X3RyYWNrX2xpc3RfYWRkX2V2ZW50X2xpc3RlbmVyKFdlYktpdERPTUV2ZW50VGFy
Z2V0KiB0YXJnZXQsIGNvbnN0IGNoYXIqIGV2ZW50TmFtZSwgR0Nsb3N1cmUqIGhhbmRsZXIsIGdi
b29sZWFuIHVzZUNhcHR1cmUpCi17Ci0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgIFdlYkNv
cmU6OlRleHRUcmFja0xpc3QqIGNvcmVUYXJnZXQgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpUZXh0
VHJhY2tMaXN0Kj4oV0VCS0lUX0RPTV9PQkpFQ1QodGFyZ2V0KS0+Y29yZU9iamVjdCk7Ci0gICAg
cmV0dXJuIFdlYktpdDo6R09iamVjdEV2ZW50TGlzdGVuZXI6OmFkZEV2ZW50TGlzdGVuZXIoR19P
QkpFQ1QodGFyZ2V0KSwgY29yZVRhcmdldCwgZXZlbnROYW1lLCBoYW5kbGVyLCB1c2VDYXB0dXJl
KTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7Ci0gICAgVU5VU0VEX1BBUkFNKGV2
ZW50TmFtZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGhhbmRsZXIpOwotICAgIFVOVVNFRF9QQVJBTSh1
c2VDYXB0dXJlKTsKLSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJWaWRlbyBU
cmFjayIpCi0gICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmIC8vIEVOQUJMRShWSURFT19UUkFDSykK
LX0KLQotc3RhdGljIGdib29sZWFuIHdlYmtpdF9kb21fdGV4dF90cmFja19saXN0X3JlbW92ZV9l
dmVudF9saXN0ZW5lcihXZWJLaXRET01FdmVudFRhcmdldCogdGFyZ2V0LCBjb25zdCBjaGFyKiBl
dmVudE5hbWUsIEdDbG9zdXJlKiBoYW5kbGVyLCBnYm9vbGVhbiB1c2VDYXB0dXJlKQotewotI2lm
IEVOQUJMRShWSURFT19UUkFDSykKLSAgICBXZWJDb3JlOjpUZXh0VHJhY2tMaXN0KiBjb3JlVGFy
Z2V0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6VGV4dFRyYWNrTGlzdCo+KFdFQktJVF9ET01fT0JK
RUNUKHRhcmdldCktPmNvcmVPYmplY3QpOwotICAgIHJldHVybiBXZWJLaXQ6OkdPYmplY3RFdmVu
dExpc3RlbmVyOjpyZW1vdmVFdmVudExpc3RlbmVyKEdfT0JKRUNUKHRhcmdldCksIGNvcmVUYXJn
ZXQsIGV2ZW50TmFtZSwgaGFuZGxlciwgdXNlQ2FwdHVyZSk7Ci0jZWxzZQotICAgIFVOVVNFRF9Q
QVJBTSh0YXJnZXQpOwotICAgIFVOVVNFRF9QQVJBTShldmVudE5hbWUpOwotICAgIFVOVVNFRF9Q
QVJBTShoYW5kbGVyKTsKLSAgICBVTlVTRURfUEFSQU0odXNlQ2FwdHVyZSk7Ci0gICAgV0VCS0lU
X1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiVmlkZW8gVHJhY2siKQotICAgIHJldHVybiBmYWxz
ZTsKLSNlbmRpZiAvLyBFTkFCTEUoVklERU9fVFJBQ0spCi19Ci0KLXN0YXRpYyB2b2lkIHdlYmtp
dF9kb21fZXZlbnRfdGFyZ2V0X2luaXQoV2ViS2l0RE9NRXZlbnRUYXJnZXRJZmFjZSogaWZhY2Up
Ci17Ci0gICAgaWZhY2UtPmRpc3BhdGNoX2V2ZW50ID0gd2Via2l0X2RvbV90ZXh0X3RyYWNrX2xp
c3RfZGlzcGF0Y2hfZXZlbnQ7Ci0gICAgaWZhY2UtPmFkZF9ldmVudF9saXN0ZW5lciA9IHdlYmtp
dF9kb21fdGV4dF90cmFja19saXN0X2FkZF9ldmVudF9saXN0ZW5lcjsKLSAgICBpZmFjZS0+cmVt
b3ZlX2V2ZW50X2xpc3RlbmVyID0gd2Via2l0X2RvbV90ZXh0X3RyYWNrX2xpc3RfcmVtb3ZlX2V2
ZW50X2xpc3RlbmVyOwotfQotCi1HX0RFRklORV9UWVBFX1dJVEhfQ09ERShXZWJLaXRET01UZXh0
VHJhY2tMaXN0LCB3ZWJraXRfZG9tX3RleHRfdHJhY2tfbGlzdCwgV0VCS0lUX0RPTV9UWVBFX09C
SkVDVCwgR19JTVBMRU1FTlRfSU5URVJGQUNFKFdFQktJVF9ET01fVFlQRV9FVkVOVF9UQVJHRVQs
IHdlYmtpdF9kb21fZXZlbnRfdGFyZ2V0X2luaXQpKQotCi1lbnVtIHsKLSAgICBQUk9QXzAsCi0g
ICAgUFJPUF9MRU5HVEgsCi19OwotCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3RleHRfdHJhY2tf
bGlzdF9maW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCi17Ci0gICAgV2ViS2l0RE9NVGV4dFRyYWNr
TGlzdFByaXZhdGUqIHByaXYgPSBXRUJLSVRfRE9NX1RFWFRfVFJBQ0tfTElTVF9HRVRfUFJJVkFU
RShvYmplY3QpOwotI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICBXZWJLaXQ6OkRPTU9iamVj
dENhY2hlOjpmb3JnZXQocHJpdi0+Y29yZU9iamVjdC5nZXQoKSk7Ci0jZW5kaWYgLy8gRU5BQkxF
KFZJREVPX1RSQUNLKQotICAgIHByaXYtPn5XZWJLaXRET01UZXh0VHJhY2tMaXN0UHJpdmF0ZSgp
OwotICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9kb21fdGV4dF90cmFja19saXN0X3BhcmVudF9j
bGFzcyktPmZpbmFsaXplKG9iamVjdCk7Ci19Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGV4
dF90cmFja19saXN0X2dldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BlcnR5
SWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKQotewotICAgIFdlYktpdERPTVRl
eHRUcmFja0xpc3QqIHNlbGYgPSBXRUJLSVRfRE9NX1RFWFRfVFJBQ0tfTElTVChvYmplY3QpOwot
Ci0gICAgc3dpdGNoIChwcm9wZXJ0eUlkKSB7Ci0gICAgY2FzZSBQUk9QX0xFTkdUSDoKLSAgICAg
ICAgZ192YWx1ZV9zZXRfdWxvbmcodmFsdWUsIHdlYmtpdF9kb21fdGV4dF90cmFja19saXN0X2dl
dF9sZW5ndGgoc2VsZikpOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBH
X09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wZXJ0eUlkLCBwc3Bl
Yyk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLX0KLQotc3RhdGljIEdPYmplY3QqIHdlYmtpdF9k
b21fdGV4dF90cmFja19saXN0X2NvbnN0cnVjdG9yKEdUeXBlIHR5cGUsIGd1aW50IGNvbnN0cnVj
dFByb3BlcnRpZXNDb3VudCwgR09iamVjdENvbnN0cnVjdFBhcmFtKiBjb25zdHJ1Y3RQcm9wZXJ0
aWVzKQotewotICAgIEdPYmplY3QqIG9iamVjdCA9IEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9kb21f
dGV4dF90cmFja19saXN0X3BhcmVudF9jbGFzcyktPmNvbnN0cnVjdG9yKHR5cGUsIGNvbnN0cnVj
dFByb3BlcnRpZXNDb3VudCwgY29uc3RydWN0UHJvcGVydGllcyk7Ci0jaWYgRU5BQkxFKFZJREVP
X1RSQUNLKQotICAgIFdlYktpdERPTVRleHRUcmFja0xpc3RQcml2YXRlKiBwcml2ID0gV0VCS0lU
X0RPTV9URVhUX1RSQUNLX0xJU1RfR0VUX1BSSVZBVEUob2JqZWN0KTsKLSAgICBwcml2LT5jb3Jl
T2JqZWN0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6VGV4dFRyYWNrTGlzdCo+KFdFQktJVF9ET01f
T0JKRUNUKG9iamVjdCktPmNvcmVPYmplY3QpOwotICAgIFdlYktpdDo6RE9NT2JqZWN0Q2FjaGU6
OnB1dChwcml2LT5jb3JlT2JqZWN0LmdldCgpLCBvYmplY3QpOwotI2VuZGlmIC8vIEVOQUJMRShW
SURFT19UUkFDSykKLSAgICByZXR1cm4gb2JqZWN0OwotfQotCi1zdGF0aWMgdm9pZCB3ZWJraXRf
ZG9tX3RleHRfdHJhY2tfbGlzdF9jbGFzc19pbml0KFdlYktpdERPTVRleHRUcmFja0xpc3RDbGFz
cyogcmVxdWVzdENsYXNzKQotewotICAgIEdPYmplY3RDbGFzcyogZ29iamVjdENsYXNzID0gR19P
QkpFQ1RfQ0xBU1MocmVxdWVzdENsYXNzKTsKLSAgICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUo
Z29iamVjdENsYXNzLCBzaXplb2YoV2ViS2l0RE9NVGV4dFRyYWNrTGlzdFByaXZhdGUpKTsKLSAg
ICBnb2JqZWN0Q2xhc3MtPmNvbnN0cnVjdG9yID0gd2Via2l0X2RvbV90ZXh0X3RyYWNrX2xpc3Rf
Y29uc3RydWN0b3I7Ci0gICAgZ29iamVjdENsYXNzLT5maW5hbGl6ZSA9IHdlYmtpdF9kb21fdGV4
dF90cmFja19saXN0X2ZpbmFsaXplOwotICAgIGdvYmplY3RDbGFzcy0+Z2V0X3Byb3BlcnR5ID0g
d2Via2l0X2RvbV90ZXh0X3RyYWNrX2xpc3RfZ2V0X3Byb3BlcnR5OwotCi0gICAgZ19vYmplY3Rf
Y2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAgZ29iamVjdENsYXNzLAotICAgICAgICBQ
Uk9QX0xFTkdUSCwKLSAgICAgICAgZ19wYXJhbV9zcGVjX3Vsb25nKAotICAgICAgICAgICAgImxl
bmd0aCIsCi0gICAgICAgICAgICAiVGV4dFRyYWNrTGlzdDpsZW5ndGgiLAotICAgICAgICAgICAg
InJlYWQtb25seSBndWxvbmcgVGV4dFRyYWNrTGlzdDpsZW5ndGgiLAotICAgICAgICAgICAgMCwg
R19NQVhVTE9ORywgMCwKLSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSkpOwotCi19
Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGV4dF90cmFja19saXN0X2luaXQoV2ViS2l0RE9N
VGV4dFRyYWNrTGlzdCogcmVxdWVzdCkKLXsKLSAgICBXZWJLaXRET01UZXh0VHJhY2tMaXN0UHJp
dmF0ZSogcHJpdiA9IFdFQktJVF9ET01fVEVYVF9UUkFDS19MSVNUX0dFVF9QUklWQVRFKHJlcXVl
c3QpOwotICAgIG5ldyAocHJpdikgV2ViS2l0RE9NVGV4dFRyYWNrTGlzdFByaXZhdGUoKTsKLX0K
LQotV2ViS2l0RE9NVGV4dFRyYWNrKiB3ZWJraXRfZG9tX3RleHRfdHJhY2tfbGlzdF9pdGVtKFdl
YktpdERPTVRleHRUcmFja0xpc3QqIHNlbGYsIGd1bG9uZyBpbmRleCkKLXsKLSNpZiBFTkFCTEUo
VklERU9fVFJBQ0spCi0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwot
ICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVYVF9UUkFDS19MSVNUKHNl
bGYpLCAwKTsKLSAgICBXZWJDb3JlOjpUZXh0VHJhY2tMaXN0KiBpdGVtID0gV2ViS2l0Ojpjb3Jl
KHNlbGYpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpUZXh0VHJhY2s+IGdvYmplY3RSZXN1bHQgPSBX
VEY6OmdldFB0cihpdGVtLT5pdGVtKGluZGV4KSk7Ci0gICAgcmV0dXJuIFdlYktpdDo6a2l0KGdv
YmplY3RSZXN1bHQuZ2V0KCkpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc2VsZik7Ci0gICAg
VU5VU0VEX1BBUkFNKGluZGV4KTsKLSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5U
KCJWaWRlbyBUcmFjayIpCi0gICAgcmV0dXJuIDA7Ci0jZW5kaWYgLyogRU5BQkxFKFZJREVPX1RS
QUNLKSAqLwotfQotCi1XZWJLaXRET01UZXh0VHJhY2sqIHdlYmtpdF9kb21fdGV4dF90cmFja19s
aXN0X2dldF90cmFja19ieV9pZChXZWJLaXRET01UZXh0VHJhY2tMaXN0KiBzZWxmLCBjb25zdCBn
Y2hhciogaWQpCi17Ci0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgIFdlYkNvcmU6OkpTTWFp
blRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRf
RE9NX0lTX1RFWFRfVFJBQ0tfTElTVChzZWxmKSwgMCk7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwoaWQsIDApOwotICAgIFdlYkNvcmU6OlRleHRUcmFja0xpc3QqIGl0ZW0gPSBXZWJLaXQ6OmNv
cmUoc2VsZik7Ci0gICAgV1RGOjpTdHJpbmcgY29udmVydGVkSWQgPSBXVEY6OlN0cmluZzo6ZnJv
bVVURjgoaWQpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpUZXh0VHJhY2s+IGdvYmplY3RSZXN1bHQg
PSBXVEY6OmdldFB0cihpdGVtLT5nZXRUcmFja0J5SWQoY29udmVydGVkSWQpKTsKLSAgICByZXR1
cm4gV2ViS2l0OjpraXQoZ29iamVjdFJlc3VsdC5nZXQoKSk7Ci0jZWxzZQotICAgIFVOVVNFRF9Q
QVJBTShzZWxmKTsKLSAgICBVTlVTRURfUEFSQU0oaWQpOwotICAgIFdFQktJVF9XQVJOX0ZFQVRV
UkVfTk9UX1BSRVNFTlQoIlZpZGVvIFRyYWNrIikKLSAgICByZXR1cm4gMDsKLSNlbmRpZiAvKiBF
TkFCTEUoVklERU9fVFJBQ0spICovCi19Ci0KLWd1bG9uZyB3ZWJraXRfZG9tX3RleHRfdHJhY2tf
bGlzdF9nZXRfbGVuZ3RoKFdlYktpdERPTVRleHRUcmFja0xpc3QqIHNlbGYpCi17Ci0jaWYgRU5B
QkxFKFZJREVPX1RSQUNLKQotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0
ZTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFWFRfVFJBQ0tfTElT
VChzZWxmKSwgMCk7Ci0gICAgV2ViQ29yZTo6VGV4dFRyYWNrTGlzdCogaXRlbSA9IFdlYktpdDo6
Y29yZShzZWxmKTsKLSAgICBndWxvbmcgcmVzdWx0ID0gaXRlbS0+bGVuZ3RoKCk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHNlbGYpOwotICAgIFdFQktJVF9X
QVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIlZpZGVvIFRyYWNrIikKLSAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8Z3Vsb25nPigwKTsKLSNlbmRpZiAvKiBFTkFCTEUoVklERU9fVFJBQ0spICovCi19Ci0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2d0ay9ET00vV2ViS2l0RE9NVGV4dFRyYWNrTGlzdC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01UZXh0VHJhY2tMaXN0LmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdmMWQxZDkuLjAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRE
T01UZXh0VHJhY2tMaXN0LmgKKysrIC9kZXYvbnVsbApAQCAtMSw4OCArMCwwIEBACi0vKgotICog
IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAq
ICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBE
TyBOT1QgTU9ESUZZIQotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
Ci0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQotICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO
Ry5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaWZuZGVmIFdlYktpdERPTVRleHRUcmFja0xpc3Rf
aAotI2RlZmluZSBXZWJLaXRET01UZXh0VHJhY2tMaXN0X2gKLQotI2lmZGVmIFdFQktJVF9ET01f
VVNFX1VOU1RBQkxFX0FQSQotCi0jaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KLSNpbmNsdWRlIDx3
ZWJraXRkb20vV2ViS2l0RE9NT2JqZWN0Lmg+Ci0jaW5jbHVkZSA8d2Via2l0ZG9tL3dlYmtpdGRv
bWRlZmluZXMtdW5zdGFibGUuaD4KLQotR19CRUdJTl9ERUNMUwotCi0jZGVmaW5lIFdFQktJVF9E
T01fVFlQRV9URVhUX1RSQUNLX0xJU1QgICAgICAgICAgICAod2Via2l0X2RvbV90ZXh0X3RyYWNr
X2xpc3RfZ2V0X3R5cGUoKSkKLSNkZWZpbmUgV0VCS0lUX0RPTV9URVhUX1RSQUNLX0xJU1Qob2Jq
KSAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwgV0VCS0lUX0RP
TV9UWVBFX1RFWFRfVFJBQ0tfTElTVCwgV2ViS2l0RE9NVGV4dFRyYWNrTGlzdCkpCi0jZGVmaW5l
IFdFQktJVF9ET01fVEVYVF9UUkFDS19MSVNUX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNL
X0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJVF9ET01fVFlQRV9URVhUX1RSQUNLX0xJU1QsIFdl
YktpdERPTVRleHRUcmFja0xpc3RDbGFzcykKLSNkZWZpbmUgV0VCS0lUX0RPTV9JU19URVhUX1RS
QUNLX0xJU1Qob2JqKSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwg
V0VCS0lUX0RPTV9UWVBFX1RFWFRfVFJBQ0tfTElTVCkpCi0jZGVmaW5lIFdFQktJVF9ET01fSVNf
VEVYVF9UUkFDS19MSVNUX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGts
YXNzKSwgIFdFQktJVF9ET01fVFlQRV9URVhUX1RSQUNLX0xJU1QpKQotI2RlZmluZSBXRUJLSVRf
RE9NX1RFWFRfVFJBQ0tfTElTVF9HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRf
Q0xBU1MoKG9iaiksICBXRUJLSVRfRE9NX1RZUEVfVEVYVF9UUkFDS19MSVNULCBXZWJLaXRET01U
ZXh0VHJhY2tMaXN0Q2xhc3MpKQotCi1zdHJ1Y3QgX1dlYktpdERPTVRleHRUcmFja0xpc3Qgewot
ICAgIFdlYktpdERPTU9iamVjdCBwYXJlbnRfaW5zdGFuY2U7Ci19OwotCi1zdHJ1Y3QgX1dlYktp
dERPTVRleHRUcmFja0xpc3RDbGFzcyB7Ci0gICAgV2ViS2l0RE9NT2JqZWN0Q2xhc3MgcGFyZW50
X2NsYXNzOwotfTsKLQotV0VCS0lUX0FQSSBHVHlwZQotd2Via2l0X2RvbV90ZXh0X3RyYWNrX2xp
c3RfZ2V0X3R5cGUodm9pZCk7Ci0KLS8qKgotICogd2Via2l0X2RvbV90ZXh0X3RyYWNrX2xpc3Rf
aXRlbToKLSAqIEBzZWxmOiBBICNXZWJLaXRET01UZXh0VHJhY2tMaXN0Ci0gKiBAaW5kZXg6IEEg
I2d1bG9uZwotICoKLSAqIFJldHVybnM6ICh0cmFuc2ZlciBmdWxsKTogQSAjV2ViS2l0RE9NVGV4
dFRyYWNrCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIFdlYktp
dERPTVRleHRUcmFjayoKLXdlYmtpdF9kb21fdGV4dF90cmFja19saXN0X2l0ZW0oV2ViS2l0RE9N
VGV4dFRyYWNrTGlzdCogc2VsZiwgZ3Vsb25nIGluZGV4KTsKLQotLyoqCi0gKiB3ZWJraXRfZG9t
X3RleHRfdHJhY2tfbGlzdF9nZXRfdHJhY2tfYnlfaWQ6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9N
VGV4dFRyYWNrTGlzdAotICogQGlkOiBBICNnY2hhcgotICoKLSAqIFJldHVybnM6ICh0cmFuc2Zl
ciBmdWxsKTogQSAjV2ViS2l0RE9NVGV4dFRyYWNrCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJs
ZQotKiovCi1XRUJLSVRfQVBJIFdlYktpdERPTVRleHRUcmFjayoKLXdlYmtpdF9kb21fdGV4dF90
cmFja19saXN0X2dldF90cmFja19ieV9pZChXZWJLaXRET01UZXh0VHJhY2tMaXN0KiBzZWxmLCBj
b25zdCBnY2hhciogaWQpOwotCi0vKioKLSAqIHdlYmtpdF9kb21fdGV4dF90cmFja19saXN0X2dl
dF9sZW5ndGg6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NVGV4dFRyYWNrTGlzdAotICoKLSAqIFJl
dHVybnM6IEEgI2d1bG9uZwotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lU
X0FQSSBndWxvbmcKLXdlYmtpdF9kb21fdGV4dF90cmFja19saXN0X2dldF9sZW5ndGgoV2ViS2l0
RE9NVGV4dFRyYWNrTGlzdCogc2VsZik7Ci0KLUdfRU5EX0RFQ0xTCi0KLSNlbmRpZiAvKiBXRUJL
SVRfRE9NX1VTRV9VTlNUQUJMRV9BUEkgKi8KLSNlbmRpZiAvKiBXZWJLaXRET01UZXh0VHJhY2tM
aXN0X2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NVGV4dFRyYWNrTGlzdFByaXZhdGUuaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9N
VGV4dFRyYWNrTGlzdFByaXZhdGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjA4
ZTdmMi4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVRleHRUcmFja0xpc3RQcml2YXRlLmgKKysrIC9kZXYv
bnVsbApAQCAtMSwzNiArMCwwIEBACi0vKgotICogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBX
ZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAqICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJh
dGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQotICoKLSAqICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
Ci0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
Ci0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0g
KiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKLSAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0j
aWZuZGVmIFdlYktpdERPTVRleHRUcmFja0xpc3RQcml2YXRlX2gKLSNkZWZpbmUgV2ViS2l0RE9N
VGV4dFRyYWNrTGlzdFByaXZhdGVfaAotCi0jaW5jbHVkZSA8V2ViQ29yZS9UZXh0VHJhY2tMaXN0
Lmg+Ci0jaW5jbHVkZSA8d2Via2l0ZG9tL1dlYktpdERPTVRleHRUcmFja0xpc3QuaD4KLSNpZiBF
TkFCTEUoVklERU9fVFJBQ0spCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotV2ViS2l0RE9NVGV4dFRy
YWNrTGlzdCogd3JhcFRleHRUcmFja0xpc3QoV2ViQ29yZTo6VGV4dFRyYWNrTGlzdCopOwotV2Vi
S2l0RE9NVGV4dFRyYWNrTGlzdCoga2l0KFdlYkNvcmU6OlRleHRUcmFja0xpc3QqKTsKLVdlYkNv
cmU6OlRleHRUcmFja0xpc3QqIGNvcmUoV2ViS2l0RE9NVGV4dFRyYWNrTGlzdCopOwotfSAvLyBu
YW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvKiBFTkFCTEUoVklERU9fVFJBQ0spICovCi0KLSNl
bmRpZiAvKiBXZWJLaXRET01UZXh0VHJhY2tMaXN0UHJpdmF0ZV9oICovCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktp
dERPTVRleHRUcmFja1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NVGV4dFRyYWNrUHJpdmF0ZS5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NmQ4Mzk0Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NVGV4dFRy
YWNrUHJpdmF0ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotLyoKLSAqICBUaGlz
IGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCi0gKiAgVGhp
cyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9U
IE1PRElGWSEKLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoK
LSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiAgQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBXZWJLaXRET01UZXh0VHJhY2tQcml2YXRlX2gK
LSNkZWZpbmUgV2ViS2l0RE9NVGV4dFRyYWNrUHJpdmF0ZV9oCi0KLSNpbmNsdWRlIDxXZWJDb3Jl
L1RleHRUcmFjay5oPgotI2luY2x1ZGUgPHdlYmtpdGRvbS9XZWJLaXRET01UZXh0VHJhY2suaD4K
LSNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotV2ViS2l0RE9N
VGV4dFRyYWNrKiB3cmFwVGV4dFRyYWNrKFdlYkNvcmU6OlRleHRUcmFjayopOwotV2ViS2l0RE9N
VGV4dFRyYWNrKiBraXQoV2ViQ29yZTo6VGV4dFRyYWNrKik7Ci1XZWJDb3JlOjpUZXh0VHJhY2sq
IGNvcmUoV2ViS2l0RE9NVGV4dFRyYWNrKik7Ci19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2Vu
ZGlmIC8qIEVOQUJMRShWSURFT19UUkFDSykgKi8KLQotI2VuZGlmIC8qIFdlYktpdERPTVRleHRU
cmFja1ByaXZhdGVfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01UaW1lUmFuZ2VzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9N
VGltZVJhbmdlcy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY2MTczMWQuLjAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z3RrL0RPTS9XZWJLaXRET01UaW1lUmFuZ2VzLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIwMiAr
MCwwIEBACi0vKgotICogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3Vy
Y2UgcHJvamVjdC4KLSAqICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRl
LWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqICBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
LSAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAq
Ci0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiAgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
LSAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiV2ViS2l0RE9NVGltZVJhbmdlcy5oIgotCi0jaW5jbHVkZSA8V2ViQ29y
ZS9DU1NJbXBvcnRSdWxlLmg+Ci0jaW5jbHVkZSAiRE9NT2JqZWN0Q2FjaGUuaCIKLSNpbmNsdWRl
IDxXZWJDb3JlL0RvY3VtZW50Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9FeGNlcHRpb25Db2RlLmg+
Ci0jaW5jbHVkZSA8V2ViQ29yZS9FeGNlcHRpb25Db2RlRGVzY3JpcHRpb24uaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5oPgotI2luY2x1ZGUgIldlYktpdERPTVBy
aXZhdGUuaCIKLSNpbmNsdWRlICJXZWJLaXRET01UaW1lUmFuZ2VzUHJpdmF0ZS5oIgotI2luY2x1
ZGUgIkNvbnZlcnRUb1VURjhTdHJpbmcuaCIKLSNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+Ci0jaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgotCi0jZGVmaW5lIFdFQktJVF9ET01fVElNRV9SQU5HRVNfR0VU
X1BSSVZBVEUob2JqKSBHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUob2JqLCBXRUJLSVRfRE9N
X1RZUEVfVElNRV9SQU5HRVMsIFdlYktpdERPTVRpbWVSYW5nZXNQcml2YXRlKQotCi10eXBlZGVm
IHN0cnVjdCBfV2ViS2l0RE9NVGltZVJhbmdlc1ByaXZhdGUgewotI2lmIEVOQUJMRShWSURFTykK
LSAgICBSZWZQdHI8V2ViQ29yZTo6VGltZVJhbmdlcz4gY29yZU9iamVjdDsKLSNlbmRpZiAvLyBF
TkFCTEUoVklERU8pCi19IFdlYktpdERPTVRpbWVSYW5nZXNQcml2YXRlOwotCi0jaWYgRU5BQkxF
KFZJREVPKQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotV2ViS2l0RE9NVGltZVJhbmdlcyoga2l0
KFdlYkNvcmU6OlRpbWVSYW5nZXMqIG9iaikKLXsKLSAgICBpZiAoIW9iaikKLSAgICAgICAgcmV0
dXJuIDA7Ci0KLSAgICBpZiAoZ3BvaW50ZXIgcmV0ID0gRE9NT2JqZWN0Q2FjaGU6OmdldChvYmop
KQotICAgICAgICByZXR1cm4gV0VCS0lUX0RPTV9USU1FX1JBTkdFUyhyZXQpOwotCi0gICAgcmV0
dXJuIHdyYXBUaW1lUmFuZ2VzKG9iaik7Ci19Ci0KLVdlYkNvcmU6OlRpbWVSYW5nZXMqIGNvcmUo
V2ViS2l0RE9NVGltZVJhbmdlcyogcmVxdWVzdCkKLXsKLSAgICByZXR1cm4gcmVxdWVzdCA/IHN0
YXRpY19jYXN0PFdlYkNvcmU6OlRpbWVSYW5nZXMqPihXRUJLSVRfRE9NX09CSkVDVChyZXF1ZXN0
KS0+Y29yZU9iamVjdCkgOiAwOwotfQotCi1XZWJLaXRET01UaW1lUmFuZ2VzKiB3cmFwVGltZVJh
bmdlcyhXZWJDb3JlOjpUaW1lUmFuZ2VzKiBjb3JlT2JqZWN0KQotewotICAgIEFTU0VSVChjb3Jl
T2JqZWN0KTsKLSAgICByZXR1cm4gV0VCS0lUX0RPTV9USU1FX1JBTkdFUyhnX29iamVjdF9uZXco
V0VCS0lUX0RPTV9UWVBFX1RJTUVfUkFOR0VTLCAiY29yZS1vYmplY3QiLCBjb3JlT2JqZWN0LCBu
dWxscHRyKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxF
KFZJREVPKQotCi1HX0RFRklORV9UWVBFKFdlYktpdERPTVRpbWVSYW5nZXMsIHdlYmtpdF9kb21f
dGltZV9yYW5nZXMsIFdFQktJVF9ET01fVFlQRV9PQkpFQ1QpCi0KLWVudW0gewotICAgIFBST1Bf
MCwKLSAgICBQUk9QX0xFTkdUSCwKLX07Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGltZV9y
YW5nZXNfZmluYWxpemUoR09iamVjdCogb2JqZWN0KQotewotICAgIFdlYktpdERPTVRpbWVSYW5n
ZXNQcml2YXRlKiBwcml2ID0gV0VCS0lUX0RPTV9USU1FX1JBTkdFU19HRVRfUFJJVkFURShvYmpl
Y3QpOwotI2lmIEVOQUJMRShWSURFTykKLSAgICBXZWJLaXQ6OkRPTU9iamVjdENhY2hlOjpmb3Jn
ZXQocHJpdi0+Y29yZU9iamVjdC5nZXQoKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKFZJREVPKQotICAg
IHByaXYtPn5XZWJLaXRET01UaW1lUmFuZ2VzUHJpdmF0ZSgpOwotICAgIEdfT0JKRUNUX0NMQVNT
KHdlYmtpdF9kb21fdGltZV9yYW5nZXNfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsK
LX0KLQotc3RhdGljIHZvaWQgd2Via2l0X2RvbV90aW1lX3Jhbmdlc19nZXRfcHJvcGVydHkoR09i
amVjdCogb2JqZWN0LCBndWludCBwcm9wZXJ0eUlkLCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVj
KiBwc3BlYykKLXsKLSAgICBXZWJLaXRET01UaW1lUmFuZ2VzKiBzZWxmID0gV0VCS0lUX0RPTV9U
SU1FX1JBTkdFUyhvYmplY3QpOwotCi0gICAgc3dpdGNoIChwcm9wZXJ0eUlkKSB7Ci0gICAgY2Fz
ZSBQUk9QX0xFTkdUSDoKLSAgICAgICAgZ192YWx1ZV9zZXRfdWxvbmcodmFsdWUsIHdlYmtpdF9k
b21fdGltZV9yYW5nZXNfZ2V0X2xlbmd0aChzZWxmKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGRl
ZmF1bHQ6Ci0gICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3Qs
IHByb3BlcnR5SWQsIHBzcGVjKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotfQotCi1zdGF0aWMg
R09iamVjdCogd2Via2l0X2RvbV90aW1lX3Jhbmdlc19jb25zdHJ1Y3RvcihHVHlwZSB0eXBlLCBn
dWludCBjb25zdHJ1Y3RQcm9wZXJ0aWVzQ291bnQsIEdPYmplY3RDb25zdHJ1Y3RQYXJhbSogY29u
c3RydWN0UHJvcGVydGllcykKLXsKLSAgICBHT2JqZWN0KiBvYmplY3QgPSBHX09CSkVDVF9DTEFT
Uyh3ZWJraXRfZG9tX3RpbWVfcmFuZ2VzX3BhcmVudF9jbGFzcyktPmNvbnN0cnVjdG9yKHR5cGUs
IGNvbnN0cnVjdFByb3BlcnRpZXNDb3VudCwgY29uc3RydWN0UHJvcGVydGllcyk7Ci0jaWYgRU5B
QkxFKFZJREVPKQotICAgIFdlYktpdERPTVRpbWVSYW5nZXNQcml2YXRlKiBwcml2ID0gV0VCS0lU
X0RPTV9USU1FX1JBTkdFU19HRVRfUFJJVkFURShvYmplY3QpOwotICAgIHByaXYtPmNvcmVPYmpl
Y3QgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpUaW1lUmFuZ2VzKj4oV0VCS0lUX0RPTV9PQkpFQ1Qo
b2JqZWN0KS0+Y29yZU9iamVjdCk7Ci0gICAgV2ViS2l0OjpET01PYmplY3RDYWNoZTo6cHV0KHBy
aXYtPmNvcmVPYmplY3QuZ2V0KCksIG9iamVjdCk7Ci0jZW5kaWYgLy8gRU5BQkxFKFZJREVPKQot
ICAgIHJldHVybiBvYmplY3Q7Ci19Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGltZV9yYW5n
ZXNfY2xhc3NfaW5pdChXZWJLaXRET01UaW1lUmFuZ2VzQ2xhc3MqIHJlcXVlc3RDbGFzcykKLXsK
LSAgICBHT2JqZWN0Q2xhc3MqIGdvYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKHJlcXVlc3RD
bGFzcyk7Ci0gICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKGdvYmplY3RDbGFzcywgc2l6ZW9m
KFdlYktpdERPTVRpbWVSYW5nZXNQcml2YXRlKSk7Ci0gICAgZ29iamVjdENsYXNzLT5jb25zdHJ1
Y3RvciA9IHdlYmtpdF9kb21fdGltZV9yYW5nZXNfY29uc3RydWN0b3I7Ci0gICAgZ29iamVjdENs
YXNzLT5maW5hbGl6ZSA9IHdlYmtpdF9kb21fdGltZV9yYW5nZXNfZmluYWxpemU7Ci0gICAgZ29i
amVjdENsYXNzLT5nZXRfcHJvcGVydHkgPSB3ZWJraXRfZG9tX3RpbWVfcmFuZ2VzX2dldF9wcm9w
ZXJ0eTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdv
YmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9MRU5HVEgsCi0gICAgICAgIGdfcGFyYW1fc3BlY191
bG9uZygKLSAgICAgICAgICAgICJsZW5ndGgiLAotICAgICAgICAgICAgIlRpbWVSYW5nZXM6bGVu
Z3RoIiwKLSAgICAgICAgICAgICJyZWFkLW9ubHkgZ3Vsb25nIFRpbWVSYW5nZXM6bGVuZ3RoIiwK
LSAgICAgICAgICAgIDAsIEdfTUFYVUxPTkcsIDAsCi0gICAgICAgICAgICBXRUJLSVRfUEFSQU1f
UkVBREFCTEUpKTsKLQotfQotCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3RpbWVfcmFuZ2VzX2lu
aXQoV2ViS2l0RE9NVGltZVJhbmdlcyogcmVxdWVzdCkKLXsKLSAgICBXZWJLaXRET01UaW1lUmFu
Z2VzUHJpdmF0ZSogcHJpdiA9IFdFQktJVF9ET01fVElNRV9SQU5HRVNfR0VUX1BSSVZBVEUocmVx
dWVzdCk7Ci0gICAgbmV3IChwcml2KSBXZWJLaXRET01UaW1lUmFuZ2VzUHJpdmF0ZSgpOwotfQot
Ci1nZG91YmxlIHdlYmtpdF9kb21fdGltZV9yYW5nZXNfc3RhcnQoV2ViS2l0RE9NVGltZVJhbmdl
cyogc2VsZiwgZ3Vsb25nIGluZGV4LCBHRXJyb3IqKiBlcnJvcikKLXsKLSNpZiBFTkFCTEUoVklE
RU8pCi0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0
dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfVElNRV9SQU5HRVMoc2VsZiksIDApOwotICAg
IGdfcmV0dXJuX3ZhbF9pZl9mYWlsKCFlcnJvciB8fCAhKmVycm9yLCAwKTsKLSAgICBXZWJDb3Jl
OjpUaW1lUmFuZ2VzKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIFdlYkNvcmU6OkV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGdkb3VibGUgcmVzdWx0ID0gaXRlbS0+c3RhcnQoaW5k
ZXgsIGVjKTsKLSAgICBpZiAoZWMpIHsKLSAgICAgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZURl
c2NyaXB0aW9uIGVjZGVzYyhlYyk7Ci0gICAgICAgIGdfc2V0X2Vycm9yX2xpdGVyYWwoZXJyb3Is
IGdfcXVhcmtfZnJvbV9zdHJpbmcoIldFQktJVF9ET00iKSwgZWNkZXNjLmNvZGUsIGVjZGVzYy5u
YW1lKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFN
KHNlbGYpOwotICAgIFVOVVNFRF9QQVJBTShpbmRleCk7Ci0gICAgVU5VU0VEX1BBUkFNKGVycm9y
KTsKLSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJWaWRlbyIpCi0gICAgcmV0
dXJuIHN0YXRpY19jYXN0PGdkb3VibGU+KDApOwotI2VuZGlmIC8qIEVOQUJMRShWSURFTykgKi8K
LX0KLQotZ2RvdWJsZSB3ZWJraXRfZG9tX3RpbWVfcmFuZ2VzX2VuZChXZWJLaXRET01UaW1lUmFu
Z2VzKiBzZWxmLCBndWxvbmcgaW5kZXgsIEdFcnJvcioqIGVycm9yKQotewotI2lmIEVOQUJMRShW
SURFTykKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19USU1FX1JBTkdFUyhzZWxmKSwgMCk7Ci0g
ICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoIWVycm9yIHx8ICEqZXJyb3IsIDApOwotICAgIFdlYkNv
cmU6OlRpbWVSYW5nZXMqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgV2ViQ29yZTo6
RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgZ2RvdWJsZSByZXN1bHQgPSBpdGVtLT5lbmQoaW5k
ZXgsIGVjKTsKLSAgICBpZiAoZWMpIHsKLSAgICAgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZURl
c2NyaXB0aW9uIGVjZGVzYyhlYyk7Ci0gICAgICAgIGdfc2V0X2Vycm9yX2xpdGVyYWwoZXJyb3Is
IGdfcXVhcmtfZnJvbV9zdHJpbmcoIldFQktJVF9ET00iKSwgZWNkZXNjLmNvZGUsIGVjZGVzYy5u
YW1lKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFN
KHNlbGYpOwotICAgIFVOVVNFRF9QQVJBTShpbmRleCk7Ci0gICAgVU5VU0VEX1BBUkFNKGVycm9y
KTsKLSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJWaWRlbyIpCi0gICAgcmV0
dXJuIHN0YXRpY19jYXN0PGdkb3VibGU+KDApOwotI2VuZGlmIC8qIEVOQUJMRShWSURFTykgKi8K
LX0KLQotZ3Vsb25nIHdlYmtpdF9kb21fdGltZV9yYW5nZXNfZ2V0X2xlbmd0aChXZWJLaXRET01U
aW1lUmFuZ2VzKiBzZWxmKQotewotI2lmIEVOQUJMRShWSURFTykKLSAgICBXZWJDb3JlOjpKU01h
aW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lU
X0RPTV9JU19USU1FX1JBTkdFUyhzZWxmKSwgMCk7Ci0gICAgV2ViQ29yZTo6VGltZVJhbmdlcyog
aXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBndWxvbmcgcmVzdWx0ID0gaXRlbS0+bGVu
Z3RoKCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHNlbGYp
OwotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIlZpZGVvIikKLSAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8Z3Vsb25nPigwKTsKLSNlbmRpZiAvKiBFTkFCTEUoVklERU8pICovCi19
Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2d0ay9ET00vV2ViS2l0RE9NVGltZVJhbmdlcy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01UaW1lUmFuZ2VzLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMyODRkZWQuLjAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01U
aW1lUmFuZ2VzLmgKKysrIC9kZXYvbnVsbApAQCAtMSw5MCArMCwwIEBACi0vKgotICogIFRoaXMg
ZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAqICBUaGlz
IGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1Qg
TU9ESUZZIQotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgot
ICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQotICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KLSAqLwotCi0jaWZuZGVmIFdlYktpdERPTVRpbWVSYW5nZXNfaAotI2RlZmlu
ZSBXZWJLaXRET01UaW1lUmFuZ2VzX2gKLQotI2lmZGVmIFdFQktJVF9ET01fVVNFX1VOU1RBQkxF
X0FQSQotCi0jaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KLSNpbmNsdWRlIDx3ZWJraXRkb20vV2Vi
S2l0RE9NT2JqZWN0Lmg+Ci0jaW5jbHVkZSA8d2Via2l0ZG9tL3dlYmtpdGRvbWRlZmluZXMtdW5z
dGFibGUuaD4KLQotR19CRUdJTl9ERUNMUwotCi0jZGVmaW5lIFdFQktJVF9ET01fVFlQRV9USU1F
X1JBTkdFUyAgICAgICAgICAgICh3ZWJraXRfZG9tX3RpbWVfcmFuZ2VzX2dldF90eXBlKCkpCi0j
ZGVmaW5lIFdFQktJVF9ET01fVElNRV9SQU5HRVMob2JqKSAgICAgICAgICAgIChHX1RZUEVfQ0hF
Q0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwgV0VCS0lUX0RPTV9UWVBFX1RJTUVfUkFOR0VTLCBXZWJL
aXRET01UaW1lUmFuZ2VzKSkKLSNkZWZpbmUgV0VCS0lUX0RPTV9USU1FX1JBTkdFU19DTEFTUyhr
bGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksICBXRUJLSVRfRE9NX1RZ
UEVfVElNRV9SQU5HRVMsIFdlYktpdERPTVRpbWVSYW5nZXNDbGFzcykKLSNkZWZpbmUgV0VCS0lU
X0RPTV9JU19USU1FX1JBTkdFUyhvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9U
WVBFKChvYmopLCBXRUJLSVRfRE9NX1RZUEVfVElNRV9SQU5HRVMpKQotI2RlZmluZSBXRUJLSVRf
RE9NX0lTX1RJTUVfUkFOR0VTX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUo
KGtsYXNzKSwgIFdFQktJVF9ET01fVFlQRV9USU1FX1JBTkdFUykpCi0jZGVmaW5lIFdFQktJVF9E
T01fVElNRV9SQU5HRVNfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNT
KChvYmopLCAgV0VCS0lUX0RPTV9UWVBFX1RJTUVfUkFOR0VTLCBXZWJLaXRET01UaW1lUmFuZ2Vz
Q2xhc3MpKQotCi1zdHJ1Y3QgX1dlYktpdERPTVRpbWVSYW5nZXMgewotICAgIFdlYktpdERPTU9i
amVjdCBwYXJlbnRfaW5zdGFuY2U7Ci19OwotCi1zdHJ1Y3QgX1dlYktpdERPTVRpbWVSYW5nZXND
bGFzcyB7Ci0gICAgV2ViS2l0RE9NT2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOwotfTsKLQotV0VC
S0lUX0FQSSBHVHlwZQotd2Via2l0X2RvbV90aW1lX3Jhbmdlc19nZXRfdHlwZSh2b2lkKTsKLQot
LyoqCi0gKiB3ZWJraXRfZG9tX3RpbWVfcmFuZ2VzX3N0YXJ0OgotICogQHNlbGY6IEEgI1dlYktp
dERPTVRpbWVSYW5nZXMKLSAqIEBpbmRleDogQSAjZ3Vsb25nCi0gKiBAZXJyb3I6ICNHRXJyb3IK
LSAqCi0gKiBSZXR1cm5zOiBBICNnZG91YmxlCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQot
KiovCi1XRUJLSVRfQVBJIGdkb3VibGUKLXdlYmtpdF9kb21fdGltZV9yYW5nZXNfc3RhcnQoV2Vi
S2l0RE9NVGltZVJhbmdlcyogc2VsZiwgZ3Vsb25nIGluZGV4LCBHRXJyb3IqKiBlcnJvcik7Ci0K
LS8qKgotICogd2Via2l0X2RvbV90aW1lX3Jhbmdlc19lbmQ6Ci0gKiBAc2VsZjogQSAjV2ViS2l0
RE9NVGltZVJhbmdlcwotICogQGluZGV4OiBBICNndWxvbmcKLSAqIEBlcnJvcjogI0dFcnJvcgot
ICoKLSAqIFJldHVybnM6IEEgI2dkb3VibGUKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0q
Ki8KLVdFQktJVF9BUEkgZ2RvdWJsZQotd2Via2l0X2RvbV90aW1lX3Jhbmdlc19lbmQoV2ViS2l0
RE9NVGltZVJhbmdlcyogc2VsZiwgZ3Vsb25nIGluZGV4LCBHRXJyb3IqKiBlcnJvcik7Ci0KLS8q
KgotICogd2Via2l0X2RvbV90aW1lX3Jhbmdlc19nZXRfbGVuZ3RoOgotICogQHNlbGY6IEEgI1dl
YktpdERPTVRpbWVSYW5nZXMKLSAqCi0gKiBSZXR1cm5zOiBBICNndWxvbmcKLSAqCi0gKiBTdGFi
aWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgZ3Vsb25nCi13ZWJraXRfZG9tX3RpbWVf
cmFuZ2VzX2dldF9sZW5ndGgoV2ViS2l0RE9NVGltZVJhbmdlcyogc2VsZik7Ci0KLUdfRU5EX0RF
Q0xTCi0KLSNlbmRpZiAvKiBXRUJLSVRfRE9NX1VTRV9VTlNUQUJMRV9BUEkgKi8KLSNlbmRpZiAv
KiBXZWJLaXRET01UaW1lUmFuZ2VzX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NVGltZVJhbmdlc1By
aXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0
ay9ET00vV2ViS2l0RE9NVGltZVJhbmdlc1ByaXZhdGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZmY4MWIyNi4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVRpbWVSYW5nZXNQcml2YXRlLmgK
KysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi0vKgotICogIFRoaXMgZmlsZSBpcyBwYXJ0
IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAqICBUaGlzIGZpbGUgaGFzIGJl
ZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQotICoK
LSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAot
ICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
LSAqLwotCi0jaWZuZGVmIFdlYktpdERPTVRpbWVSYW5nZXNQcml2YXRlX2gKLSNkZWZpbmUgV2Vi
S2l0RE9NVGltZVJhbmdlc1ByaXZhdGVfaAotCi0jaW5jbHVkZSA8V2ViQ29yZS9UaW1lUmFuZ2Vz
Lmg+Ci0jaW5jbHVkZSA8d2Via2l0ZG9tL1dlYktpdERPTVRpbWVSYW5nZXMuaD4KLSNpZiBFTkFC
TEUoVklERU8pCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotV2ViS2l0RE9NVGltZVJhbmdlcyogd3Jh
cFRpbWVSYW5nZXMoV2ViQ29yZTo6VGltZVJhbmdlcyopOwotV2ViS2l0RE9NVGltZVJhbmdlcyog
a2l0KFdlYkNvcmU6OlRpbWVSYW5nZXMqKTsKLVdlYkNvcmU6OlRpbWVSYW5nZXMqIGNvcmUoV2Vi
S2l0RE9NVGltZVJhbmdlcyopOwotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvKiBF
TkFCTEUoVklERU8pICovCi0KLSNlbmRpZiAvKiBXZWJLaXRET01UaW1lUmFuZ2VzUHJpdmF0ZV9o
ICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9ndGsvRE9NL1dlYktpdERPTVRvdWNoLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NVG91Y2guY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MWMyNTlmLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NVG91Y2gu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDc2ICswLDAgQEAKLS8qCi0gKiAgVGhpcyBmaWxlIGlz
IHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICogIFRoaXMgZmlsZSBo
YXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkh
Ci0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAg
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJLaXRET01Ub3Vj
aC5oIgotCi0jaW5jbHVkZSA8V2ViQ29yZS9DU1NJbXBvcnRSdWxlLmg+Ci0jaW5jbHVkZSAiRE9N
T2JqZWN0Q2FjaGUuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50Lmg+Ci0jaW5jbHVkZSA8
V2ViQ29yZS9FeGNlcHRpb25Db2RlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9FeGNlcHRpb25Db2Rl
RGVzY3JpcHRpb24uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5o
PgotI2luY2x1ZGUgIldlYktpdERPTUV2ZW50VGFyZ2V0UHJpdmF0ZS5oIgotI2luY2x1ZGUgIldl
YktpdERPTVByaXZhdGUuaCIKLSNpbmNsdWRlICJXZWJLaXRET01Ub3VjaFByaXZhdGUuaCIKLSNp
bmNsdWRlICJDb252ZXJ0VG9VVEY4U3RyaW5nLmgiCi0jaW5jbHVkZSA8d3RmL0dldFB0ci5oPgot
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotI2RlZmluZSBXRUJLSVRfRE9NX1RPVUNIX0dFVF9Q
UklWQVRFKG9iaikgR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKG9iaiwgV0VCS0lUX0RPTV9U
WVBFX1RPVUNILCBXZWJLaXRET01Ub3VjaFByaXZhdGUpCi0KLXR5cGVkZWYgc3RydWN0IF9XZWJL
aXRET01Ub3VjaFByaXZhdGUgewotI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi0gICAgUmVmUHRy
PFdlYkNvcmU6OlRvdWNoPiBjb3JlT2JqZWN0OwotI2VuZGlmIC8vIEVOQUJMRShUT1VDSF9FVkVO
VFMpCi19IFdlYktpdERPTVRvdWNoUHJpdmF0ZTsKLQotI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMp
Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1XZWJLaXRET01Ub3VjaCoga2l0KFdlYkNvcmU6OlRv
dWNoKiBvYmopCi17Ci0gICAgaWYgKCFvYmopCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgaWYg
KGdwb2ludGVyIHJldCA9IERPTU9iamVjdENhY2hlOjpnZXQob2JqKSkKLSAgICAgICAgcmV0dXJu
IFdFQktJVF9ET01fVE9VQ0gocmV0KTsKLQotICAgIHJldHVybiB3cmFwVG91Y2gob2JqKTsKLX0K
LQotV2ViQ29yZTo6VG91Y2gqIGNvcmUoV2ViS2l0RE9NVG91Y2gqIHJlcXVlc3QpCi17Ci0gICAg
cmV0dXJuIHJlcXVlc3QgPyBzdGF0aWNfY2FzdDxXZWJDb3JlOjpUb3VjaCo+KFdFQktJVF9ET01f
T0JKRUNUKHJlcXVlc3QpLT5jb3JlT2JqZWN0KSA6IDA7Ci19Ci0KLVdlYktpdERPTVRvdWNoKiB3
cmFwVG91Y2goV2ViQ29yZTo6VG91Y2gqIGNvcmVPYmplY3QpCi17Ci0gICAgQVNTRVJUKGNvcmVP
YmplY3QpOwotICAgIHJldHVybiBXRUJLSVRfRE9NX1RPVUNIKGdfb2JqZWN0X25ldyhXRUJLSVRf
RE9NX1RZUEVfVE9VQ0gsICJjb3JlLW9iamVjdCIsIGNvcmVPYmplY3QsIG51bGxwdHIpKTsKLX0K
LQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoVE9VQ0hfRVZFTlRT
KQotCi1HX0RFRklORV9UWVBFKFdlYktpdERPTVRvdWNoLCB3ZWJraXRfZG9tX3RvdWNoLCBXRUJL
SVRfRE9NX1RZUEVfT0JKRUNUKQotCi1lbnVtIHsKLSAgICBQUk9QXzAsCi0gICAgUFJPUF9DTElF
TlRfWCwKLSAgICBQUk9QX0NMSUVOVF9ZLAotICAgIFBST1BfU0NSRUVOX1gsCi0gICAgUFJPUF9T
Q1JFRU5fWSwKLSAgICBQUk9QX1BBR0VfWCwKLSAgICBQUk9QX1BBR0VfWSwKLSAgICBQUk9QX1RB
UkdFVCwKLSAgICBQUk9QX0lERU5USUZJRVIsCi0gICAgUFJPUF9XRUJLSVRfUkFESVVTX1gsCi0g
ICAgUFJPUF9XRUJLSVRfUkFESVVTX1ksCi0gICAgUFJPUF9XRUJLSVRfUk9UQVRJT05fQU5HTEUs
Ci0gICAgUFJPUF9XRUJLSVRfRk9SQ0UsCi19OwotCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rv
dWNoX2ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKLXsKLSAgICBXZWJLaXRET01Ub3VjaFByaXZh
dGUqIHByaXYgPSBXRUJLSVRfRE9NX1RPVUNIX0dFVF9QUklWQVRFKG9iamVjdCk7Ci0jaWYgRU5B
QkxFKFRPVUNIX0VWRU5UUykKLSAgICBXZWJLaXQ6OkRPTU9iamVjdENhY2hlOjpmb3JnZXQocHJp
di0+Y29yZU9iamVjdC5nZXQoKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAg
ICBwcml2LT5+V2ViS2l0RE9NVG91Y2hQcml2YXRlKCk7Ci0gICAgR19PQkpFQ1RfQ0xBU1Mod2Vi
a2l0X2RvbV90b3VjaF9wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmplY3QpOwotfQotCi1zdGF0
aWMgdm9pZCB3ZWJraXRfZG9tX3RvdWNoX2dldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1
aW50IHByb3BlcnR5SWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKQotewotICAg
IFdlYktpdERPTVRvdWNoKiBzZWxmID0gV0VCS0lUX0RPTV9UT1VDSChvYmplY3QpOwotCi0gICAg
c3dpdGNoIChwcm9wZXJ0eUlkKSB7Ci0gICAgY2FzZSBQUk9QX0NMSUVOVF9YOgotICAgICAgICBn
X3ZhbHVlX3NldF9sb25nKHZhbHVlLCB3ZWJraXRfZG9tX3RvdWNoX2dldF9jbGllbnRfeChzZWxm
KSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9DTElFTlRfWToKLSAgICAgICAgZ192
YWx1ZV9zZXRfbG9uZyh2YWx1ZSwgd2Via2l0X2RvbV90b3VjaF9nZXRfY2xpZW50X3koc2VsZikp
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfU0NSRUVOX1g6Ci0gICAgICAgIGdfdmFs
dWVfc2V0X2xvbmcodmFsdWUsIHdlYmtpdF9kb21fdG91Y2hfZ2V0X3NjcmVlbl94KHNlbGYpKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX1NDUkVFTl9ZOgotICAgICAgICBnX3ZhbHVl
X3NldF9sb25nKHZhbHVlLCB3ZWJraXRfZG9tX3RvdWNoX2dldF9zY3JlZW5feShzZWxmKSk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9QQUdFX1g6Ci0gICAgICAgIGdfdmFsdWVfc2V0
X2xvbmcodmFsdWUsIHdlYmtpdF9kb21fdG91Y2hfZ2V0X3BhZ2VfeChzZWxmKSk7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgUFJPUF9QQUdFX1k6Ci0gICAgICAgIGdfdmFsdWVfc2V0X2xvbmco
dmFsdWUsIHdlYmtpdF9kb21fdG91Y2hfZ2V0X3BhZ2VfeShzZWxmKSk7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgUFJPUF9UQVJHRVQ6Ci0gICAgICAgIGdfdmFsdWVfc2V0X29iamVjdCh2YWx1
ZSwgd2Via2l0X2RvbV90b3VjaF9nZXRfdGFyZ2V0KHNlbGYpKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBQUk9QX0lERU5USUZJRVI6Ci0gICAgICAgIGdfdmFsdWVfc2V0X3Vsb25nKHZhbHVl
LCB3ZWJraXRfZG9tX3RvdWNoX2dldF9pZGVudGlmaWVyKHNlbGYpKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBQUk9QX1dFQktJVF9SQURJVVNfWDoKLSAgICAgICAgZ192YWx1ZV9zZXRfbG9u
Zyh2YWx1ZSwgd2Via2l0X2RvbV90b3VjaF9nZXRfd2Via2l0X3JhZGl1c194KHNlbGYpKTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX1dFQktJVF9SQURJVVNfWToKLSAgICAgICAgZ192
YWx1ZV9zZXRfbG9uZyh2YWx1ZSwgd2Via2l0X2RvbV90b3VjaF9nZXRfd2Via2l0X3JhZGl1c195
KHNlbGYpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX1dFQktJVF9ST1RBVElPTl9B
TkdMRToKLSAgICAgICAgZ192YWx1ZV9zZXRfZmxvYXQodmFsdWUsIHdlYmtpdF9kb21fdG91Y2hf
Z2V0X3dlYmtpdF9yb3RhdGlvbl9hbmdsZShzZWxmKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgUFJPUF9XRUJLSVRfRk9SQ0U6Ci0gICAgICAgIGdfdmFsdWVfc2V0X2Zsb2F0KHZhbHVlLCB3
ZWJraXRfZG9tX3RvdWNoX2dldF93ZWJraXRfZm9yY2Uoc2VsZikpOwotICAgICAgICBicmVhazsK
LSAgICBkZWZhdWx0OgotICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQo
b2JqZWN0LCBwcm9wZXJ0eUlkLCBwc3BlYyk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLX0KLQot
c3RhdGljIEdPYmplY3QqIHdlYmtpdF9kb21fdG91Y2hfY29uc3RydWN0b3IoR1R5cGUgdHlwZSwg
Z3VpbnQgY29uc3RydWN0UHJvcGVydGllc0NvdW50LCBHT2JqZWN0Q29uc3RydWN0UGFyYW0qIGNv
bnN0cnVjdFByb3BlcnRpZXMpCi17Ci0gICAgR09iamVjdCogb2JqZWN0ID0gR19PQkpFQ1RfQ0xB
U1Mod2Via2l0X2RvbV90b3VjaF9wYXJlbnRfY2xhc3MpLT5jb25zdHJ1Y3Rvcih0eXBlLCBjb25z
dHJ1Y3RQcm9wZXJ0aWVzQ291bnQsIGNvbnN0cnVjdFByb3BlcnRpZXMpOwotI2lmIEVOQUJMRShU
T1VDSF9FVkVOVFMpCi0gICAgV2ViS2l0RE9NVG91Y2hQcml2YXRlKiBwcml2ID0gV0VCS0lUX0RP
TV9UT1VDSF9HRVRfUFJJVkFURShvYmplY3QpOwotICAgIHByaXYtPmNvcmVPYmplY3QgPSBzdGF0
aWNfY2FzdDxXZWJDb3JlOjpUb3VjaCo+KFdFQktJVF9ET01fT0JKRUNUKG9iamVjdCktPmNvcmVP
YmplY3QpOwotICAgIFdlYktpdDo6RE9NT2JqZWN0Q2FjaGU6OnB1dChwcml2LT5jb3JlT2JqZWN0
LmdldCgpLCBvYmplY3QpOwotI2VuZGlmIC8vIEVOQUJMRShUT1VDSF9FVkVOVFMpCi0gICAgcmV0
dXJuIG9iamVjdDsKLX0KLQotc3RhdGljIHZvaWQgd2Via2l0X2RvbV90b3VjaF9jbGFzc19pbml0
KFdlYktpdERPTVRvdWNoQ2xhc3MqIHJlcXVlc3RDbGFzcykKLXsKLSAgICBHT2JqZWN0Q2xhc3Mq
IGdvYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKHJlcXVlc3RDbGFzcyk7Ci0gICAgZ190eXBl
X2NsYXNzX2FkZF9wcml2YXRlKGdvYmplY3RDbGFzcywgc2l6ZW9mKFdlYktpdERPTVRvdWNoUHJp
dmF0ZSkpOwotICAgIGdvYmplY3RDbGFzcy0+Y29uc3RydWN0b3IgPSB3ZWJraXRfZG9tX3RvdWNo
X2NvbnN0cnVjdG9yOwotICAgIGdvYmplY3RDbGFzcy0+ZmluYWxpemUgPSB3ZWJraXRfZG9tX3Rv
dWNoX2ZpbmFsaXplOwotICAgIGdvYmplY3RDbGFzcy0+Z2V0X3Byb3BlcnR5ID0gd2Via2l0X2Rv
bV90b3VjaF9nZXRfcHJvcGVydHk7Ci0KLSAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3Bl
cnR5KAotICAgICAgICBnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBST1BfQ0xJRU5UX1gsCi0gICAg
ICAgIGdfcGFyYW1fc3BlY19sb25nKAotICAgICAgICAgICAgImNsaWVudC14IiwKLSAgICAgICAg
ICAgICJUb3VjaDpjbGllbnQteCIsCi0gICAgICAgICAgICAicmVhZC1vbmx5IGdsb25nIFRvdWNo
OmNsaWVudC14IiwKLSAgICAgICAgICAgIEdfTUlOTE9ORywgR19NQVhMT05HLCAwLAotICAgICAg
ICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7Ci0KLSAgICBnX29iamVjdF9jbGFzc19pbnN0
YWxsX3Byb3BlcnR5KAotICAgICAgICBnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBST1BfQ0xJRU5U
X1ksCi0gICAgICAgIGdfcGFyYW1fc3BlY19sb25nKAotICAgICAgICAgICAgImNsaWVudC15IiwK
LSAgICAgICAgICAgICJUb3VjaDpjbGllbnQteSIsCi0gICAgICAgICAgICAicmVhZC1vbmx5IGds
b25nIFRvdWNoOmNsaWVudC15IiwKLSAgICAgICAgICAgIEdfTUlOTE9ORywgR19NQVhMT05HLCAw
LAotICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7Ci0KLSAgICBnX29iamVjdF9j
bGFzc19pbnN0YWxsX3Byb3BlcnR5KAotICAgICAgICBnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBS
T1BfU0NSRUVOX1gsCi0gICAgICAgIGdfcGFyYW1fc3BlY19sb25nKAotICAgICAgICAgICAgInNj
cmVlbi14IiwKLSAgICAgICAgICAgICJUb3VjaDpzY3JlZW4teCIsCi0gICAgICAgICAgICAicmVh
ZC1vbmx5IGdsb25nIFRvdWNoOnNjcmVlbi14IiwKLSAgICAgICAgICAgIEdfTUlOTE9ORywgR19N
QVhMT05HLCAwLAotICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7Ci0KLSAgICBn
X29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAotICAgICAgICBnb2JqZWN0Q2xhc3MsCi0g
ICAgICAgIFBST1BfU0NSRUVOX1ksCi0gICAgICAgIGdfcGFyYW1fc3BlY19sb25nKAotICAgICAg
ICAgICAgInNjcmVlbi15IiwKLSAgICAgICAgICAgICJUb3VjaDpzY3JlZW4teSIsCi0gICAgICAg
ICAgICAicmVhZC1vbmx5IGdsb25nIFRvdWNoOnNjcmVlbi15IiwKLSAgICAgICAgICAgIEdfTUlO
TE9ORywgR19NQVhMT05HLCAwLAotICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7
Ci0KLSAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAotICAgICAgICBnb2JqZWN0
Q2xhc3MsCi0gICAgICAgIFBST1BfUEFHRV9YLAotICAgICAgICBnX3BhcmFtX3NwZWNfbG9uZygK
LSAgICAgICAgICAgICJwYWdlLXgiLAotICAgICAgICAgICAgIlRvdWNoOnBhZ2UteCIsCi0gICAg
ICAgICAgICAicmVhZC1vbmx5IGdsb25nIFRvdWNoOnBhZ2UteCIsCi0gICAgICAgICAgICBHX01J
TkxPTkcsIEdfTUFYTE9ORywgMCwKLSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSkp
OwotCi0gICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAgZ29iamVj
dENsYXNzLAotICAgICAgICBQUk9QX1BBR0VfWSwKLSAgICAgICAgZ19wYXJhbV9zcGVjX2xvbmco
Ci0gICAgICAgICAgICAicGFnZS15IiwKLSAgICAgICAgICAgICJUb3VjaDpwYWdlLXkiLAotICAg
ICAgICAgICAgInJlYWQtb25seSBnbG9uZyBUb3VjaDpwYWdlLXkiLAotICAgICAgICAgICAgR19N
SU5MT05HLCBHX01BWExPTkcsIDAsCi0gICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUp
KTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmpl
Y3RDbGFzcywKLSAgICAgICAgUFJPUF9UQVJHRVQsCi0gICAgICAgIGdfcGFyYW1fc3BlY19vYmpl
Y3QoCi0gICAgICAgICAgICAidGFyZ2V0IiwKLSAgICAgICAgICAgICJUb3VjaDp0YXJnZXQiLAot
ICAgICAgICAgICAgInJlYWQtb25seSBXZWJLaXRET01FdmVudFRhcmdldCogVG91Y2g6dGFyZ2V0
IiwKLSAgICAgICAgICAgIFdFQktJVF9ET01fVFlQRV9FVkVOVF9UQVJHRVQsCi0gICAgICAgICAg
ICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxf
cHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9JREVOVElGSUVS
LAotICAgICAgICBnX3BhcmFtX3NwZWNfdWxvbmcoCi0gICAgICAgICAgICAiaWRlbnRpZmllciIs
Ci0gICAgICAgICAgICAiVG91Y2g6aWRlbnRpZmllciIsCi0gICAgICAgICAgICAicmVhZC1vbmx5
IGd1bG9uZyBUb3VjaDppZGVudGlmaWVyIiwKLSAgICAgICAgICAgIDAsIEdfTUFYVUxPTkcsIDAs
Ci0gICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKLQotICAgIGdfb2JqZWN0X2Ns
YXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJP
UF9XRUJLSVRfUkFESVVTX1gsCi0gICAgICAgIGdfcGFyYW1fc3BlY19sb25nKAotICAgICAgICAg
ICAgIndlYmtpdC1yYWRpdXMteCIsCi0gICAgICAgICAgICAiVG91Y2g6d2Via2l0LXJhZGl1cy14
IiwKLSAgICAgICAgICAgICJyZWFkLW9ubHkgZ2xvbmcgVG91Y2g6d2Via2l0LXJhZGl1cy14IiwK
LSAgICAgICAgICAgIEdfTUlOTE9ORywgR19NQVhMT05HLCAwLAotICAgICAgICAgICAgV0VCS0lU
X1BBUkFNX1JFQURBQkxFKSk7Ci0KLSAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5
KAotICAgICAgICBnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBST1BfV0VCS0lUX1JBRElVU19ZLAot
ICAgICAgICBnX3BhcmFtX3NwZWNfbG9uZygKLSAgICAgICAgICAgICJ3ZWJraXQtcmFkaXVzLXki
LAotICAgICAgICAgICAgIlRvdWNoOndlYmtpdC1yYWRpdXMteSIsCi0gICAgICAgICAgICAicmVh
ZC1vbmx5IGdsb25nIFRvdWNoOndlYmtpdC1yYWRpdXMteSIsCi0gICAgICAgICAgICBHX01JTkxP
TkcsIEdfTUFYTE9ORywgMCwKLSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSkpOwot
Ci0gICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAgZ29iamVjdENs
YXNzLAotICAgICAgICBQUk9QX1dFQktJVF9ST1RBVElPTl9BTkdMRSwKLSAgICAgICAgZ19wYXJh
bV9zcGVjX2Zsb2F0KAotICAgICAgICAgICAgIndlYmtpdC1yb3RhdGlvbi1hbmdsZSIsCi0gICAg
ICAgICAgICAiVG91Y2g6d2Via2l0LXJvdGF0aW9uLWFuZ2xlIiwKLSAgICAgICAgICAgICJyZWFk
LW9ubHkgZ2Zsb2F0IFRvdWNoOndlYmtpdC1yb3RhdGlvbi1hbmdsZSIsCi0gICAgICAgICAgICAt
R19NQVhGTE9BVCwgR19NQVhGTE9BVCwgMCwKLSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFE
QUJMRSkpOwotCi0gICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAg
Z29iamVjdENsYXNzLAotICAgICAgICBQUk9QX1dFQktJVF9GT1JDRSwKLSAgICAgICAgZ19wYXJh
bV9zcGVjX2Zsb2F0KAotICAgICAgICAgICAgIndlYmtpdC1mb3JjZSIsCi0gICAgICAgICAgICAi
VG91Y2g6d2Via2l0LWZvcmNlIiwKLSAgICAgICAgICAgICJyZWFkLW9ubHkgZ2Zsb2F0IFRvdWNo
OndlYmtpdC1mb3JjZSIsCi0gICAgICAgICAgICAtR19NQVhGTE9BVCwgR19NQVhGTE9BVCwgMCwK
LSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSkpOwotCi19Ci0KLXN0YXRpYyB2b2lk
IHdlYmtpdF9kb21fdG91Y2hfaW5pdChXZWJLaXRET01Ub3VjaCogcmVxdWVzdCkKLXsKLSAgICBX
ZWJLaXRET01Ub3VjaFByaXZhdGUqIHByaXYgPSBXRUJLSVRfRE9NX1RPVUNIX0dFVF9QUklWQVRF
KHJlcXVlc3QpOwotICAgIG5ldyAocHJpdikgV2ViS2l0RE9NVG91Y2hQcml2YXRlKCk7Ci19Ci0K
LWdsb25nIHdlYmtpdF9kb21fdG91Y2hfZ2V0X2NsaWVudF94KFdlYktpdERPTVRvdWNoKiBzZWxm
KQotewotI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFk
TnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNf
VE9VQ0goc2VsZiksIDApOwotICAgIFdlYkNvcmU6OlRvdWNoKiBpdGVtID0gV2ViS2l0Ojpjb3Jl
KHNlbGYpOwotICAgIGdsb25nIHJlc3VsdCA9IGl0ZW0tPmNsaWVudFgoKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc2VsZik7Ci0gICAgV0VCS0lUX1dBUk5f
RkVBVFVSRV9OT1RfUFJFU0VOVCgiVG91Y2ggRXZlbnRzIikKLSAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8Z2xvbmc+KDApOwotI2VuZGlmIC8qIEVOQUJMRShUT1VDSF9FVkVOVFMpICovCi19Ci0KLWds
b25nIHdlYmtpdF9kb21fdG91Y2hfZ2V0X2NsaWVudF95KFdlYktpdERPTVRvdWNoKiBzZWxmKQot
ewotI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVs
bFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfVE9V
Q0goc2VsZiksIDApOwotICAgIFdlYkNvcmU6OlRvdWNoKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNl
bGYpOwotICAgIGdsb25nIHJlc3VsdCA9IGl0ZW0tPmNsaWVudFkoKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc2VsZik7Ci0gICAgV0VCS0lUX1dBUk5fRkVB
VFVSRV9OT1RfUFJFU0VOVCgiVG91Y2ggRXZlbnRzIikKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
Z2xvbmc+KDApOwotI2VuZGlmIC8qIEVOQUJMRShUT1VDSF9FVkVOVFMpICovCi19Ci0KLWdsb25n
IHdlYmtpdF9kb21fdG91Y2hfZ2V0X3NjcmVlbl94KFdlYktpdERPTVRvdWNoKiBzZWxmKQotewot
I2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0
YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfVE9VQ0go
c2VsZiksIDApOwotICAgIFdlYkNvcmU6OlRvdWNoKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYp
OwotICAgIGdsb25nIHJlc3VsdCA9IGl0ZW0tPnNjcmVlblgoKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc2VsZik7Ci0gICAgV0VCS0lUX1dBUk5fRkVBVFVS
RV9OT1RfUFJFU0VOVCgiVG91Y2ggRXZlbnRzIikKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Z2xv
bmc+KDApOwotI2VuZGlmIC8qIEVOQUJMRShUT1VDSF9FVkVOVFMpICovCi19Ci0KLWdsb25nIHdl
YmtpdF9kb21fdG91Y2hfZ2V0X3NjcmVlbl95KFdlYktpdERPTVRvdWNoKiBzZWxmKQotewotI2lm
IEVOQUJMRShUT1VDSF9FVkVOVFMpCi0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRl
IHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfVE9VQ0goc2Vs
ZiksIDApOwotICAgIFdlYkNvcmU6OlRvdWNoKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwot
ICAgIGdsb25nIHJlc3VsdCA9IGl0ZW0tPnNjcmVlblkoKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
I2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc2VsZik7Ci0gICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9O
T1RfUFJFU0VOVCgiVG91Y2ggRXZlbnRzIikKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Z2xvbmc+
KDApOwotI2VuZGlmIC8qIEVOQUJMRShUT1VDSF9FVkVOVFMpICovCi19Ci0KLWdsb25nIHdlYmtp
dF9kb21fdG91Y2hfZ2V0X3BhZ2VfeChXZWJLaXRET01Ub3VjaCogc2VsZikKLXsKLSNpZiBFTkFC
TEUoVE9VQ0hfRVZFTlRTKQotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0
ZTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX1RPVUNIKHNlbGYpLCAw
KTsKLSAgICBXZWJDb3JlOjpUb3VjaCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBn
bG9uZyByZXN1bHQgPSBpdGVtLT5wYWdlWCgpOwotICAgIHJldHVybiByZXN1bHQ7Ci0jZWxzZQot
ICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKLSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVT
RU5UKCJUb3VjaCBFdmVudHMiKQotICAgIHJldHVybiBzdGF0aWNfY2FzdDxnbG9uZz4oMCk7Ci0j
ZW5kaWYgLyogRU5BQkxFKFRPVUNIX0VWRU5UUykgKi8KLX0KLQotZ2xvbmcgd2Via2l0X2RvbV90
b3VjaF9nZXRfcGFnZV95KFdlYktpdERPTVRvdWNoKiBzZWxmKQotewotI2lmIEVOQUJMRShUT1VD
SF9FVkVOVFMpCi0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAg
IGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfVE9VQ0goc2VsZiksIDApOwotICAg
IFdlYkNvcmU6OlRvdWNoKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdsb25nIHJl
c3VsdCA9IGl0ZW0tPnBhZ2VZKCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSNlbHNlCi0gICAgVU5V
U0VEX1BBUkFNKHNlbGYpOwotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIlRv
dWNoIEV2ZW50cyIpCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGdsb25nPigwKTsKLSNlbmRpZiAv
KiBFTkFCTEUoVE9VQ0hfRVZFTlRTKSAqLwotfQotCi1XZWJLaXRET01FdmVudFRhcmdldCogd2Vi
a2l0X2RvbV90b3VjaF9nZXRfdGFyZ2V0KFdlYktpdERPTVRvdWNoKiBzZWxmKQotewotI2lmIEVO
QUJMRShUT1VDSF9FVkVOVFMpCi0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0
YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfVE9VQ0goc2VsZiks
IDApOwotICAgIFdlYkNvcmU6OlRvdWNoKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAg
IFJlZlB0cjxXZWJDb3JlOjpFdmVudFRhcmdldD4gZ29iamVjdFJlc3VsdCA9IFdURjo6Z2V0UHRy
KGl0ZW0tPnRhcmdldCgpKTsKLSAgICByZXR1cm4gV2ViS2l0OjpraXQoZ29iamVjdFJlc3VsdC5n
ZXQoKSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKLSAgICBXRUJLSVRfV0FSTl9G
RUFUVVJFX05PVF9QUkVTRU5UKCJUb3VjaCBFdmVudHMiKQotICAgIHJldHVybiAwOwotI2VuZGlm
IC8qIEVOQUJMRShUT1VDSF9FVkVOVFMpICovCi19Ci0KLWd1bG9uZyB3ZWJraXRfZG9tX3RvdWNo
X2dldF9pZGVudGlmaWVyKFdlYktpdERPTVRvdWNoKiBzZWxmKQotewotI2lmIEVOQUJMRShUT1VD
SF9FVkVOVFMpCi0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAg
IGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfVE9VQ0goc2VsZiksIDApOwotICAg
IFdlYkNvcmU6OlRvdWNoKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGd1bG9uZyBy
ZXN1bHQgPSBpdGVtLT5pZGVudGlmaWVyKCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSNlbHNlCi0g
ICAgVU5VU0VEX1BBUkFNKHNlbGYpOwotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNF
TlQoIlRvdWNoIEV2ZW50cyIpCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGd1bG9uZz4oMCk7Ci0j
ZW5kaWYgLyogRU5BQkxFKFRPVUNIX0VWRU5UUykgKi8KLX0KLQotZ2xvbmcgd2Via2l0X2RvbV90
b3VjaF9nZXRfd2Via2l0X3JhZGl1c194KFdlYktpdERPTVRvdWNoKiBzZWxmKQotewotI2lmIEVO
QUJMRShUT1VDSF9FVkVOVFMpCi0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0
YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfVE9VQ0goc2VsZiks
IDApOwotICAgIFdlYkNvcmU6OlRvdWNoKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAg
IGdsb25nIHJlc3VsdCA9IGl0ZW0tPndlYmtpdFJhZGl1c1goKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc2VsZik7Ci0gICAgV0VCS0lUX1dBUk5fRkVBVFVS
RV9OT1RfUFJFU0VOVCgiVG91Y2ggRXZlbnRzIikKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Z2xv
bmc+KDApOwotI2VuZGlmIC8qIEVOQUJMRShUT1VDSF9FVkVOVFMpICovCi19Ci0KLWdsb25nIHdl
YmtpdF9kb21fdG91Y2hfZ2V0X3dlYmtpdF9yYWRpdXNfeShXZWJLaXRET01Ub3VjaCogc2VsZikK
LXsKLSNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51
bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX1RP
VUNIKHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpUb3VjaCogaXRlbSA9IFdlYktpdDo6Y29yZShz
ZWxmKTsKLSAgICBnbG9uZyByZXN1bHQgPSBpdGVtLT53ZWJraXRSYWRpdXNZKCk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHNlbGYpOwotICAgIFdFQktJVF9X
QVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIlRvdWNoIEV2ZW50cyIpCi0gICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGdsb25nPigwKTsKLSNlbmRpZiAvKiBFTkFCTEUoVE9VQ0hfRVZFTlRTKSAqLwotfQot
Ci1nZmxvYXQgd2Via2l0X2RvbV90b3VjaF9nZXRfd2Via2l0X3JvdGF0aW9uX2FuZ2xlKFdlYktp
dERPTVRvdWNoKiBzZWxmKQotewotI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi0gICAgV2ViQ29y
ZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWls
KFdFQktJVF9ET01fSVNfVE9VQ0goc2VsZiksIDApOwotICAgIFdlYkNvcmU6OlRvdWNoKiBpdGVt
ID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdmbG9hdCByZXN1bHQgPSBpdGVtLT53ZWJraXRS
b3RhdGlvbkFuZ2xlKCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSNlbHNlCi0gICAgVU5VU0VEX1BB
UkFNKHNlbGYpOwotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIlRvdWNoIEV2
ZW50cyIpCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGdmbG9hdD4oMCk7Ci0jZW5kaWYgLyogRU5B
QkxFKFRPVUNIX0VWRU5UUykgKi8KLX0KLQotZ2Zsb2F0IHdlYmtpdF9kb21fdG91Y2hfZ2V0X3dl
YmtpdF9mb3JjZShXZWJLaXRET01Ub3VjaCogc2VsZikKLXsKLSNpZiBFTkFCTEUoVE9VQ0hfRVZF
TlRTKQotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3Jl
dHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX1RPVUNIKHNlbGYpLCAwKTsKLSAgICBXZWJD
b3JlOjpUb3VjaCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBnZmxvYXQgcmVzdWx0
ID0gaXRlbS0+d2Via2l0Rm9yY2UoKTsKLSAgICByZXR1cm4gcmVzdWx0OwotI2Vsc2UKLSAgICBV
TlVTRURfUEFSQU0oc2VsZik7Ci0gICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgi
VG91Y2ggRXZlbnRzIikKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Z2Zsb2F0PigwKTsKLSNlbmRp
ZiAvKiBFTkFCTEUoVE9VQ0hfRVZFTlRTKSAqLwotfQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVRvdWNo
LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9N
L1dlYktpdERPTVRvdWNoLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU4NDlkNzMu
LjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ3RrL0RPTS9XZWJLaXRET01Ub3VjaC5oCisrKyAvZGV2L251bGwKQEAgLTEsMTg1ICswLDAg
QEAKLS8qCi0gKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBw
cm9qZWN0LgotICogIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmlu
ZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgot
ICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICog
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAq
ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICog
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgV2ViS2l0RE9NVG91
Y2hfaAotI2RlZmluZSBXZWJLaXRET01Ub3VjaF9oCi0KLSNpZmRlZiBXRUJLSVRfRE9NX1VTRV9V
TlNUQUJMRV9BUEkKLQotI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+Ci0jaW5jbHVkZSA8d2Via2l0
ZG9tL1dlYktpdERPTU9iamVjdC5oPgotI2luY2x1ZGUgPHdlYmtpdGRvbS93ZWJraXRkb21kZWZp
bmVzLXVuc3RhYmxlLmg+Ci0KLUdfQkVHSU5fREVDTFMKLQotI2RlZmluZSBXRUJLSVRfRE9NX1RZ
UEVfVE9VQ0ggICAgICAgICAgICAod2Via2l0X2RvbV90b3VjaF9nZXRfdHlwZSgpKQotI2RlZmlu
ZSBXRUJLSVRfRE9NX1RPVUNIKG9iaikgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNF
X0NBU1QoKG9iaiksIFdFQktJVF9ET01fVFlQRV9UT1VDSCwgV2ViS2l0RE9NVG91Y2gpKQotI2Rl
ZmluZSBXRUJLSVRfRE9NX1RPVUNIX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNT
X0NBU1QoKGtsYXNzKSwgIFdFQktJVF9ET01fVFlQRV9UT1VDSCwgV2ViS2l0RE9NVG91Y2hDbGFz
cykKLSNkZWZpbmUgV0VCS0lUX0RPTV9JU19UT1VDSChvYmopICAgICAgICAgKEdfVFlQRV9DSEVD
S19JTlNUQU5DRV9UWVBFKChvYmopLCBXRUJLSVRfRE9NX1RZUEVfVE9VQ0gpKQotI2RlZmluZSBX
RUJLSVRfRE9NX0lTX1RPVUNIX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUo
KGtsYXNzKSwgIFdFQktJVF9ET01fVFlQRV9UT1VDSCkpCi0jZGVmaW5lIFdFQktJVF9ET01fVE9V
Q0hfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgV0VC
S0lUX0RPTV9UWVBFX1RPVUNILCBXZWJLaXRET01Ub3VjaENsYXNzKSkKLQotc3RydWN0IF9XZWJL
aXRET01Ub3VjaCB7Ci0gICAgV2ViS2l0RE9NT2JqZWN0IHBhcmVudF9pbnN0YW5jZTsKLX07Ci0K
LXN0cnVjdCBfV2ViS2l0RE9NVG91Y2hDbGFzcyB7Ci0gICAgV2ViS2l0RE9NT2JqZWN0Q2xhc3Mg
cGFyZW50X2NsYXNzOwotfTsKLQotV0VCS0lUX0FQSSBHVHlwZQotd2Via2l0X2RvbV90b3VjaF9n
ZXRfdHlwZSh2b2lkKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX3RvdWNoX2dldF9jbGllbnRfeDoK
LSAqIEBzZWxmOiBBICNXZWJLaXRET01Ub3VjaAotICoKLSAqIFJldHVybnM6IEEgI2dsb25nCi0g
KgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIGdsb25nCi13ZWJraXRf
ZG9tX3RvdWNoX2dldF9jbGllbnRfeChXZWJLaXRET01Ub3VjaCogc2VsZik7Ci0KLS8qKgotICog
d2Via2l0X2RvbV90b3VjaF9nZXRfY2xpZW50X3k6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NVG91
Y2gKLSAqCi0gKiBSZXR1cm5zOiBBICNnbG9uZwotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUK
LSoqLwotV0VCS0lUX0FQSSBnbG9uZwotd2Via2l0X2RvbV90b3VjaF9nZXRfY2xpZW50X3koV2Vi
S2l0RE9NVG91Y2gqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9kb21fdG91Y2hfZ2V0X3NjcmVl
bl94OgotICogQHNlbGY6IEEgI1dlYktpdERPTVRvdWNoCi0gKgotICogUmV0dXJuczogQSAjZ2xv
bmcKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgZ2xvbmcKLXdl
YmtpdF9kb21fdG91Y2hfZ2V0X3NjcmVlbl94KFdlYktpdERPTVRvdWNoKiBzZWxmKTsKLQotLyoq
Ci0gKiB3ZWJraXRfZG9tX3RvdWNoX2dldF9zY3JlZW5feToKLSAqIEBzZWxmOiBBICNXZWJLaXRE
T01Ub3VjaAotICoKLSAqIFJldHVybnM6IEEgI2dsb25nCi0gKgotICogU3RhYmlsaXR5OiBVbnN0
YWJsZQotKiovCi1XRUJLSVRfQVBJIGdsb25nCi13ZWJraXRfZG9tX3RvdWNoX2dldF9zY3JlZW5f
eShXZWJLaXRET01Ub3VjaCogc2VsZik7Ci0KLS8qKgotICogd2Via2l0X2RvbV90b3VjaF9nZXRf
cGFnZV94OgotICogQHNlbGY6IEEgI1dlYktpdERPTVRvdWNoCi0gKgotICogUmV0dXJuczogQSAj
Z2xvbmcKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgZ2xvbmcK
LXdlYmtpdF9kb21fdG91Y2hfZ2V0X3BhZ2VfeChXZWJLaXRET01Ub3VjaCogc2VsZik7Ci0KLS8q
KgotICogd2Via2l0X2RvbV90b3VjaF9nZXRfcGFnZV95OgotICogQHNlbGY6IEEgI1dlYktpdERP
TVRvdWNoCi0gKgotICogUmV0dXJuczogQSAjZ2xvbmcKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3Rh
YmxlCi0qKi8KLVdFQktJVF9BUEkgZ2xvbmcKLXdlYmtpdF9kb21fdG91Y2hfZ2V0X3BhZ2VfeShX
ZWJLaXRET01Ub3VjaCogc2VsZik7Ci0KLS8qKgotICogd2Via2l0X2RvbV90b3VjaF9nZXRfdGFy
Z2V0OgotICogQHNlbGY6IEEgI1dlYktpdERPTVRvdWNoCi0gKgotICogUmV0dXJuczogKHRyYW5z
ZmVyIGZ1bGwpOiBBICNXZWJLaXRET01FdmVudFRhcmdldAotICoKLSAqIFN0YWJpbGl0eTogVW5z
dGFibGUKLSoqLwotV0VCS0lUX0FQSSBXZWJLaXRET01FdmVudFRhcmdldCoKLXdlYmtpdF9kb21f
dG91Y2hfZ2V0X3RhcmdldChXZWJLaXRET01Ub3VjaCogc2VsZik7Ci0KLS8qKgotICogd2Via2l0
X2RvbV90b3VjaF9nZXRfaWRlbnRpZmllcjoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01Ub3VjaAot
ICoKLSAqIFJldHVybnM6IEEgI2d1bG9uZwotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoq
LwotV0VCS0lUX0FQSSBndWxvbmcKLXdlYmtpdF9kb21fdG91Y2hfZ2V0X2lkZW50aWZpZXIoV2Vi
S2l0RE9NVG91Y2gqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9kb21fdG91Y2hfZ2V0X3dlYmtp
dF9yYWRpdXNfeDoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01Ub3VjaAotICoKLSAqIFJldHVybnM6
IEEgI2dsb25nCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIGds
b25nCi13ZWJraXRfZG9tX3RvdWNoX2dldF93ZWJraXRfcmFkaXVzX3goV2ViS2l0RE9NVG91Y2gq
IHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9kb21fdG91Y2hfZ2V0X3dlYmtpdF9yYWRpdXNfeToK
LSAqIEBzZWxmOiBBICNXZWJLaXRET01Ub3VjaAotICoKLSAqIFJldHVybnM6IEEgI2dsb25nCi0g
KgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIGdsb25nCi13ZWJraXRf
ZG9tX3RvdWNoX2dldF93ZWJraXRfcmFkaXVzX3koV2ViS2l0RE9NVG91Y2gqIHNlbGYpOwotCi0v
KioKLSAqIHdlYmtpdF9kb21fdG91Y2hfZ2V0X3dlYmtpdF9yb3RhdGlvbl9hbmdsZToKLSAqIEBz
ZWxmOiBBICNXZWJLaXRET01Ub3VjaAotICoKLSAqIFJldHVybnM6IEEgI2dmbG9hdAotICoKLSAq
IFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSBnZmxvYXQKLXdlYmtpdF9kb21f
dG91Y2hfZ2V0X3dlYmtpdF9yb3RhdGlvbl9hbmdsZShXZWJLaXRET01Ub3VjaCogc2VsZik7Ci0K
LS8qKgotICogd2Via2l0X2RvbV90b3VjaF9nZXRfd2Via2l0X2ZvcmNlOgotICogQHNlbGY6IEEg
I1dlYktpdERPTVRvdWNoCi0gKgotICogUmV0dXJuczogQSAjZ2Zsb2F0Ci0gKgotICogU3RhYmls
aXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIGdmbG9hdAotd2Via2l0X2RvbV90b3VjaF9n
ZXRfd2Via2l0X2ZvcmNlKFdlYktpdERPTVRvdWNoKiBzZWxmKTsKLQotR19FTkRfREVDTFMKLQot
I2VuZGlmIC8qIFdFQktJVF9ET01fVVNFX1VOU1RBQkxFX0FQSSAqLwotI2VuZGlmIC8qIFdlYktp
dERPTVRvdWNoX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NVG91Y2hQcml2YXRlLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVRv
dWNoUHJpdmF0ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZmMwZmM1Li4wMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0
ay9ET00vV2ViS2l0RE9NVG91Y2hQcml2YXRlLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCww
IEBACi0vKgotICogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2Ug
cHJvamVjdC4KLSAqICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJp
bmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
LSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAq
ICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0g
KiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQotICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiAgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAq
ICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaWZuZGVmIFdlYktpdERPTVRv
dWNoUHJpdmF0ZV9oCi0jZGVmaW5lIFdlYktpdERPTVRvdWNoUHJpdmF0ZV9oCi0KLSNpbmNsdWRl
IDxXZWJDb3JlL1RvdWNoLmg+Ci0jaW5jbHVkZSA8d2Via2l0ZG9tL1dlYktpdERPTVRvdWNoLmg+
Ci0jaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci1XZWJLaXRE
T01Ub3VjaCogd3JhcFRvdWNoKFdlYkNvcmU6OlRvdWNoKik7Ci1XZWJLaXRET01Ub3VjaCoga2l0
KFdlYkNvcmU6OlRvdWNoKik7Ci1XZWJDb3JlOjpUb3VjaCogY29yZShXZWJLaXRET01Ub3VjaCop
OwotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvKiBFTkFCTEUoVE9VQ0hfRVZFTlRT
KSAqLwotCi0jZW5kaWYgLyogV2ViS2l0RE9NVG91Y2hQcml2YXRlX2ggKi8KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2Vi
S2l0RE9NVHJhY2tFdmVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVRyYWNrRXZlbnQuY3BwCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwN2M0YmU3Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NVHJhY2tFdmVudC5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi0vKgotICogIFRoaXMgZmlsZSBpcyBw
YXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAqICBUaGlzIGZpbGUgaGFz
IGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQot
ICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViS2l0RE9NVHJhY2tF
dmVudC5oIgotCi0jaW5jbHVkZSA8V2ViQ29yZS9DU1NJbXBvcnRSdWxlLmg+Ci0jaW5jbHVkZSAi
RE9NT2JqZWN0Q2FjaGUuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50Lmg+Ci0jaW5jbHVk
ZSA8V2ViQ29yZS9FeGNlcHRpb25Db2RlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9FeGNlcHRpb25D
b2RlRGVzY3JpcHRpb24uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0pTTWFpblRocmVhZEV4ZWNTdGF0
ZS5oPgotI2luY2x1ZGUgIldlYktpdERPTUV2ZW50UHJpdmF0ZS5oIgotI2luY2x1ZGUgIldlYktp
dERPTVByaXZhdGUuaCIKLSNpbmNsdWRlICJXZWJLaXRET01UcmFja0V2ZW50UHJpdmF0ZS5oIgot
I2luY2x1ZGUgIkNvbnZlcnRUb1VURjhTdHJpbmcuaCIKLSNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+
Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotCi1u
YW1lc3BhY2UgV2ViS2l0IHsKLQotV2ViS2l0RE9NVHJhY2tFdmVudCoga2l0KFdlYkNvcmU6OlRy
YWNrRXZlbnQqIG9iaikKLXsKLSAgICByZXR1cm4gV0VCS0lUX0RPTV9UUkFDS19FVkVOVChraXQo
c3RhdGljX2Nhc3Q8V2ViQ29yZTo6RXZlbnQqPihvYmopKSk7Ci19Ci0KLVdlYkNvcmU6OlRyYWNr
RXZlbnQqIGNvcmUoV2ViS2l0RE9NVHJhY2tFdmVudCogcmVxdWVzdCkKLXsKLSAgICByZXR1cm4g
cmVxdWVzdCA/IHN0YXRpY19jYXN0PFdlYkNvcmU6OlRyYWNrRXZlbnQqPihXRUJLSVRfRE9NX09C
SkVDVChyZXF1ZXN0KS0+Y29yZU9iamVjdCkgOiAwOwotfQotCi1XZWJLaXRET01UcmFja0V2ZW50
KiB3cmFwVHJhY2tFdmVudChXZWJDb3JlOjpUcmFja0V2ZW50KiBjb3JlT2JqZWN0KQotewotICAg
IEFTU0VSVChjb3JlT2JqZWN0KTsKLSAgICByZXR1cm4gV0VCS0lUX0RPTV9UUkFDS19FVkVOVChn
X29iamVjdF9uZXcoV0VCS0lUX0RPTV9UWVBFX1RSQUNLX0VWRU5ULCAiY29yZS1vYmplY3QiLCBj
b3JlT2JqZWN0LCBudWxscHRyKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5k
aWYgLy8gRU5BQkxFKFZJREVPX1RSQUNLKQotCi1HX0RFRklORV9UWVBFKFdlYktpdERPTVRyYWNr
RXZlbnQsIHdlYmtpdF9kb21fdHJhY2tfZXZlbnQsIFdFQktJVF9ET01fVFlQRV9FVkVOVCkKLQot
c3RhdGljIHZvaWQgd2Via2l0X2RvbV90cmFja19ldmVudF9jbGFzc19pbml0KFdlYktpdERPTVRy
YWNrRXZlbnRDbGFzcyogcmVxdWVzdENsYXNzKQotewotICAgIFVOVVNFRF9QQVJBTShyZXF1ZXN0
Q2xhc3MpOwotfQotCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3RyYWNrX2V2ZW50X2luaXQoV2Vi
S2l0RE9NVHJhY2tFdmVudCogcmVxdWVzdCkKLXsKLSAgICBVTlVTRURfUEFSQU0ocmVxdWVzdCk7
Ci19Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NVHJhY2tFdmVudC5oIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01UcmFja0V2ZW50LmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzNjg3MzIuLjAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRE
T01UcmFja0V2ZW50LmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0vKgotICogIFRo
aXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAqICBU
aGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBO
T1QgTU9ESUZZIQotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0g
KgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQotICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaWZuZGVmIFdlYktpdERPTVRyYWNrRXZlbnRfaAotI2Rl
ZmluZSBXZWJLaXRET01UcmFja0V2ZW50X2gKLQotI2lmZGVmIFdFQktJVF9ET01fVVNFX1VOU1RB
QkxFX0FQSQotCi0jaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KLSNpbmNsdWRlIDx3ZWJraXRkb20v
V2ViS2l0RE9NRXZlbnQuaD4KLSNpbmNsdWRlIDx3ZWJraXRkb20vd2Via2l0ZG9tZGVmaW5lcy11
bnN0YWJsZS5oPgotCi1HX0JFR0lOX0RFQ0xTCi0KLSNkZWZpbmUgV0VCS0lUX0RPTV9UWVBFX1RS
QUNLX0VWRU5UICAgICAgICAgICAgKHdlYmtpdF9kb21fdHJhY2tfZXZlbnRfZ2V0X3R5cGUoKSkK
LSNkZWZpbmUgV0VCS0lUX0RPTV9UUkFDS19FVkVOVChvYmopICAgICAgICAgICAgKEdfVFlQRV9D
SEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBXRUJLSVRfRE9NX1RZUEVfVFJBQ0tfRVZFTlQsIFdl
YktpdERPTVRyYWNrRXZlbnQpKQotI2RlZmluZSBXRUJLSVRfRE9NX1RSQUNLX0VWRU5UX0NMQVNT
KGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJVF9ET01f
VFlQRV9UUkFDS19FVkVOVCwgV2ViS2l0RE9NVHJhY2tFdmVudENsYXNzKQotI2RlZmluZSBXRUJL
SVRfRE9NX0lTX1RSQUNLX0VWRU5UKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNF
X1RZUEUoKG9iaiksIFdFQktJVF9ET01fVFlQRV9UUkFDS19FVkVOVCkpCi0jZGVmaW5lIFdFQktJ
VF9ET01fSVNfVFJBQ0tfRVZFTlRfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQ
RSgoa2xhc3MpLCAgV0VCS0lUX0RPTV9UWVBFX1RSQUNLX0VWRU5UKSkKLSNkZWZpbmUgV0VCS0lU
X0RPTV9UUkFDS19FVkVOVF9HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xB
U1MoKG9iaiksICBXRUJLSVRfRE9NX1RZUEVfVFJBQ0tfRVZFTlQsIFdlYktpdERPTVRyYWNrRXZl
bnRDbGFzcykpCi0KLXN0cnVjdCBfV2ViS2l0RE9NVHJhY2tFdmVudCB7Ci0gICAgV2ViS2l0RE9N
RXZlbnQgcGFyZW50X2luc3RhbmNlOwotfTsKLQotc3RydWN0IF9XZWJLaXRET01UcmFja0V2ZW50
Q2xhc3MgewotICAgIFdlYktpdERPTUV2ZW50Q2xhc3MgcGFyZW50X2NsYXNzOwotfTsKLQotV0VC
S0lUX0FQSSBHVHlwZQotd2Via2l0X2RvbV90cmFja19ldmVudF9nZXRfdHlwZSh2b2lkKTsKLQot
R19FTkRfREVDTFMKLQotI2VuZGlmIC8qIFdFQktJVF9ET01fVVNFX1VOU1RBQkxFX0FQSSAqLwot
I2VuZGlmIC8qIFdlYktpdERPTVRyYWNrRXZlbnRfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01UcmFj
a0V2ZW50UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01UcmFja0V2ZW50UHJpdmF0ZS5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBmZWU5ZmM4Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NVHJhY2tFdmVudFBy
aXZhdGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLS8qCi0gKiAgVGhpcyBmaWxl
IGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICogIFRoaXMgZmls
ZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJ
RlkhCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAg
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0g
KiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgotICovCi0KLSNpZm5kZWYgV2ViS2l0RE9NVHJhY2tFdmVudFByaXZhdGVfaAotI2Rl
ZmluZSBXZWJLaXRET01UcmFja0V2ZW50UHJpdmF0ZV9oCi0KLSNpbmNsdWRlIDxXZWJDb3JlL1Ry
YWNrRXZlbnQuaD4KLSNpbmNsdWRlIDx3ZWJraXRkb20vV2ViS2l0RE9NVHJhY2tFdmVudC5oPgot
I2lmIEVOQUJMRShWSURFT19UUkFDSykKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci1XZWJLaXRET01U
cmFja0V2ZW50KiB3cmFwVHJhY2tFdmVudChXZWJDb3JlOjpUcmFja0V2ZW50Kik7Ci1XZWJLaXRE
T01UcmFja0V2ZW50KiBraXQoV2ViQ29yZTo6VHJhY2tFdmVudCopOwotV2ViQ29yZTo6VHJhY2tF
dmVudCogY29yZShXZWJLaXRET01UcmFja0V2ZW50Kik7Ci19IC8vIG5hbWVzcGFjZSBXZWJLaXQK
LQotI2VuZGlmIC8qIEVOQUJMRShWSURFT19UUkFDSykgKi8KLQotI2VuZGlmIC8qIFdlYktpdERP
TVRyYWNrRXZlbnRQcml2YXRlX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NVUlFdmVudC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktp
dERPTVVJRXZlbnQuY3BwCmluZGV4IDBiYzQ1MWQuLjVkYWQzNjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9N
VUlFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01VSUV2ZW50LmNwcApAQCAtMzIsNyArMzIsNiBAQAogI2lu
Y2x1ZGUgIldlYktpdERPTVByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRET01VSUV2ZW50UHJp
dmF0ZS5oIgogI2luY2x1ZGUgIkNvbnZlcnRUb1VURjhTdHJpbmcuaCIKLSNpbmNsdWRlICJXZWJL
aXRET01VSUV2ZW50VW5zdGFibGUuaCIKICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgogCkBAIC02OCw3ICs2Nyw2IEBAIGVudW0gewogICAgIFBST1BfTEFZ
RVJfWSwKICAgICBQUk9QX1BBR0VfWCwKICAgICBQUk9QX1BBR0VfWSwKLSAgICBQUk9QX1dISUNI
LAogfTsKIAogc3RhdGljIHZvaWQgd2Via2l0X2RvbV91aV9ldmVudF9nZXRfcHJvcGVydHkoR09i
amVjdCogb2JqZWN0LCBndWludCBwcm9wZXJ0eUlkLCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVj
KiBwc3BlYykKQEAgLTEwMCw5ICs5OCw2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdWlfZXZl
bnRfZ2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcGVydHlJZCwKICAgICBj
YXNlIFBST1BfUEFHRV9ZOgogICAgICAgICBnX3ZhbHVlX3NldF9sb25nKHZhbHVlLCB3ZWJraXRf
ZG9tX3VpX2V2ZW50X2dldF9wYWdlX3koc2VsZikpOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IFBST1BfV0hJQ0g6Ci0gICAgICAgIGdfdmFsdWVfc2V0X2xvbmcodmFsdWUsIHdlYmtpdF9kb21f
dWlfZXZlbnRfZ2V0X3doaWNoKHNlbGYpKTsKLSAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoK
ICAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcGVy
dHlJZCwgcHNwZWMpOwogICAgICAgICBicmVhazsKQEAgLTE5MywxNyArMTg4LDYgQEAgc3RhdGlj
IHZvaWQgd2Via2l0X2RvbV91aV9ldmVudF9jbGFzc19pbml0KFdlYktpdERPTVVJRXZlbnRDbGFz
cyogcmVxdWVzdENsYXNzKQogICAgICAgICAgICAgInJlYWQtb25seSBnbG9uZyBVSUV2ZW50OnBh
Z2UteSIsCiAgICAgICAgICAgICBHX01JTkxPTkcsIEdfTUFYTE9ORywgMCwKICAgICAgICAgICAg
IFdFQktJVF9QQVJBTV9SRUFEQUJMRSkpOwotCi0gICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9w
cm9wZXJ0eSgKLSAgICAgICAgZ29iamVjdENsYXNzLAotICAgICAgICBQUk9QX1dISUNILAotICAg
ICAgICBnX3BhcmFtX3NwZWNfbG9uZygKLSAgICAgICAgICAgICJ3aGljaCIsCi0gICAgICAgICAg
ICAiVUlFdmVudDp3aGljaCIsCi0gICAgICAgICAgICAicmVhZC1vbmx5IGdsb25nIFVJRXZlbnQ6
d2hpY2giLAotICAgICAgICAgICAgR19NSU5MT05HLCBHX01BWExPTkcsIDAsCi0gICAgICAgICAg
ICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKLQogfQogCiBzdGF0aWMgdm9pZCB3ZWJraXRfZG9t
X3VpX2V2ZW50X2luaXQoV2ViS2l0RE9NVUlFdmVudCogcmVxdWVzdCkKQEAgLTI5NCwxMyArMjc4
LDMgQEAgZ2xvbmcgd2Via2l0X2RvbV91aV9ldmVudF9nZXRfcGFnZV95KFdlYktpdERPTVVJRXZl
bnQqIHNlbGYpCiAgICAgZ2xvbmcgcmVzdWx0ID0gaXRlbS0+cGFnZVkoKTsKICAgICByZXR1cm4g
cmVzdWx0OwogfQotCi1nbG9uZyB3ZWJraXRfZG9tX3VpX2V2ZW50X2dldF93aGljaChXZWJLaXRE
T01VSUV2ZW50KiBzZWxmKQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBz
dGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX1VJX0VWRU5UKHNl
bGYpLCAwKTsKLSAgICBXZWJDb3JlOjpVSUV2ZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYp
OwotICAgIGdsb25nIHJlc3VsdCA9IGl0ZW0tPndoaWNoKCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01VSUV2ZW50VW5zdGFibGUuaCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NVUlFdmVudFVu
c3RhYmxlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFhZDE5MTYuLjAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RP
TS9XZWJLaXRET01VSUV2ZW50VW5zdGFibGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAg
QEAKLS8qCi0gKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBw
cm9qZWN0LgotICogIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmlu
ZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgot
ICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICog
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAq
ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICog
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgV2ViS2l0RE9NVUlF
dmVudFVuc3RhYmxlX2gKLSNkZWZpbmUgV2ViS2l0RE9NVUlFdmVudFVuc3RhYmxlX2gKLQotI2lm
ZGVmIFdFQktJVF9ET01fVVNFX1VOU1RBQkxFX0FQSQotCi0jaW5jbHVkZSA8d2Via2l0ZG9tL3dl
YmtpdGRvbWRlZmluZXMtdW5zdGFibGUuaD4KLQotR19CRUdJTl9ERUNMUwotCi0vKioKLSAqIHdl
YmtpdF9kb21fdWlfZXZlbnRfZ2V0X3doaWNoOgotICogQHNlbGY6IEEgI1dlYktpdERPTVVJRXZl
bnQKLSAqCi0gKiBSZXR1cm5zOiBBICNnbG9uZwotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUK
LSoqLwotV0VCS0lUX0FQSSBnbG9uZwotd2Via2l0X2RvbV91aV9ldmVudF9nZXRfd2hpY2goV2Vi
S2l0RE9NVUlFdmVudCogc2VsZik7Ci0KLQotR19FTkRfREVDTFMKLQotI2VuZGlmIC8qIFdFQktJ
VF9ET01fVVNFX1VOU1RBQkxFX0FQSSAqLwotI2VuZGlmIC8qIFdlYktpdERPTVVJRXZlbnRVbnN0
YWJsZV9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVVzZXJNZXNzYWdlSGFuZGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERP
TVVzZXJNZXNzYWdlSGFuZGxlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3
Y2ZmMGYuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01Vc2VyTWVzc2FnZUhhbmRsZXIuY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsMTMzICswLDAgQEAKLS8qCi0gKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhl
IFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICogIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5l
cmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICogIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
LSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJLaXRET01Vc2VyTWVzc2FnZUhhbmRs
ZXIuaCIKLQotI2luY2x1ZGUgPFdlYkNvcmUvQ1NTSW1wb3J0UnVsZS5oPgotI2luY2x1ZGUgIkRP
TU9iamVjdENhY2hlLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudC5oPgotI2luY2x1ZGUg
PFdlYkNvcmUvRXhjZXB0aW9uQ29kZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRXhjZXB0aW9uQ29k
ZURlc2NyaXB0aW9uLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9KU01haW5UaHJlYWRFeGVjU3RhdGUu
aD4KLSNpbmNsdWRlIDxXZWJDb3JlL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oPgotI2luY2x1ZGUg
IldlYktpdERPTVByaXZhdGUuaCIKLSNpbmNsdWRlICJXZWJLaXRET01Vc2VyTWVzc2FnZUhhbmRs
ZXJQcml2YXRlLmgiCi0jaW5jbHVkZSAiQ29udmVydFRvVVRGOFN0cmluZy5oIgotI2luY2x1ZGUg
PHd0Zi9HZXRQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLSNkZWZpbmUgV0VCS0lU
X0RPTV9VU0VSX01FU1NBR0VfSEFORExFUl9HRVRfUFJJVkFURShvYmopIEdfVFlQRV9JTlNUQU5D
RV9HRVRfUFJJVkFURShvYmosIFdFQktJVF9ET01fVFlQRV9VU0VSX01FU1NBR0VfSEFORExFUiwg
V2ViS2l0RE9NVXNlck1lc3NhZ2VIYW5kbGVyUHJpdmF0ZSkKLQotdHlwZWRlZiBzdHJ1Y3QgX1dl
YktpdERPTVVzZXJNZXNzYWdlSGFuZGxlclByaXZhdGUgewotI2lmIEVOQUJMRShVU0VSX01FU1NB
R0VfSEFORExFUlMpCi0gICAgUmVmUHRyPFdlYkNvcmU6OlVzZXJNZXNzYWdlSGFuZGxlcj4gY29y
ZU9iamVjdDsKLSNlbmRpZiAvLyBFTkFCTEUoVVNFUl9NRVNTQUdFX0hBTkRMRVJTKQotfSBXZWJL
aXRET01Vc2VyTWVzc2FnZUhhbmRsZXJQcml2YXRlOwotCi0jaWYgRU5BQkxFKFVTRVJfTUVTU0FH
RV9IQU5ETEVSUykKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVdlYktpdERPTVVzZXJNZXNzYWdl
SGFuZGxlcioga2l0KFdlYkNvcmU6OlVzZXJNZXNzYWdlSGFuZGxlciogb2JqKQotewotICAgIGlm
ICghb2JqKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIGlmIChncG9pbnRlciByZXQgPSBET01P
YmplY3RDYWNoZTo6Z2V0KG9iaikpCi0gICAgICAgIHJldHVybiBXRUJLSVRfRE9NX1VTRVJfTUVT
U0FHRV9IQU5ETEVSKHJldCk7Ci0KLSAgICByZXR1cm4gd3JhcFVzZXJNZXNzYWdlSGFuZGxlcihv
YmopOwotfQotCi1XZWJDb3JlOjpVc2VyTWVzc2FnZUhhbmRsZXIqIGNvcmUoV2ViS2l0RE9NVXNl
ck1lc3NhZ2VIYW5kbGVyKiByZXF1ZXN0KQotewotICAgIHJldHVybiByZXF1ZXN0ID8gc3RhdGlj
X2Nhc3Q8V2ViQ29yZTo6VXNlck1lc3NhZ2VIYW5kbGVyKj4oV0VCS0lUX0RPTV9PQkpFQ1QocmVx
dWVzdCktPmNvcmVPYmplY3QpIDogMDsKLX0KLQotV2ViS2l0RE9NVXNlck1lc3NhZ2VIYW5kbGVy
KiB3cmFwVXNlck1lc3NhZ2VIYW5kbGVyKFdlYkNvcmU6OlVzZXJNZXNzYWdlSGFuZGxlciogY29y
ZU9iamVjdCkKLXsKLSAgICBBU1NFUlQoY29yZU9iamVjdCk7Ci0gICAgcmV0dXJuIFdFQktJVF9E
T01fVVNFUl9NRVNTQUdFX0hBTkRMRVIoZ19vYmplY3RfbmV3KFdFQktJVF9ET01fVFlQRV9VU0VS
X01FU1NBR0VfSEFORExFUiwgImNvcmUtb2JqZWN0IiwgY29yZU9iamVjdCwgbnVsbHB0cikpOwot
fQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShVU0VSX01FU1NB
R0VfSEFORExFUlMpCi0KLUdfREVGSU5FX1RZUEUoV2ViS2l0RE9NVXNlck1lc3NhZ2VIYW5kbGVy
LCB3ZWJraXRfZG9tX3VzZXJfbWVzc2FnZV9oYW5kbGVyLCBXRUJLSVRfRE9NX1RZUEVfT0JKRUNU
KQotCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3VzZXJfbWVzc2FnZV9oYW5kbGVyX2ZpbmFsaXpl
KEdPYmplY3QqIG9iamVjdCkKLXsKLSAgICBXZWJLaXRET01Vc2VyTWVzc2FnZUhhbmRsZXJQcml2
YXRlKiBwcml2ID0gV0VCS0lUX0RPTV9VU0VSX01FU1NBR0VfSEFORExFUl9HRVRfUFJJVkFURShv
YmplY3QpOwotI2lmIEVOQUJMRShVU0VSX01FU1NBR0VfSEFORExFUlMpCi0gICAgV2ViS2l0OjpE
T01PYmplY3RDYWNoZTo6Zm9yZ2V0KHByaXYtPmNvcmVPYmplY3QuZ2V0KCkpOwotI2VuZGlmIC8v
IEVOQUJMRShVU0VSX01FU1NBR0VfSEFORExFUlMpCi0gICAgcHJpdi0+fldlYktpdERPTVVzZXJN
ZXNzYWdlSGFuZGxlclByaXZhdGUoKTsKLSAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfZG9tX3Vz
ZXJfbWVzc2FnZV9oYW5kbGVyX3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7Ci19Ci0K
LXN0YXRpYyBHT2JqZWN0KiB3ZWJraXRfZG9tX3VzZXJfbWVzc2FnZV9oYW5kbGVyX2NvbnN0cnVj
dG9yKEdUeXBlIHR5cGUsIGd1aW50IGNvbnN0cnVjdFByb3BlcnRpZXNDb3VudCwgR09iamVjdENv
bnN0cnVjdFBhcmFtKiBjb25zdHJ1Y3RQcm9wZXJ0aWVzKQotewotICAgIEdPYmplY3QqIG9iamVj
dCA9IEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9kb21fdXNlcl9tZXNzYWdlX2hhbmRsZXJfcGFyZW50
X2NsYXNzKS0+Y29uc3RydWN0b3IodHlwZSwgY29uc3RydWN0UHJvcGVydGllc0NvdW50LCBjb25z
dHJ1Y3RQcm9wZXJ0aWVzKTsKLSNpZiBFTkFCTEUoVVNFUl9NRVNTQUdFX0hBTkRMRVJTKQotICAg
IFdlYktpdERPTVVzZXJNZXNzYWdlSGFuZGxlclByaXZhdGUqIHByaXYgPSBXRUJLSVRfRE9NX1VT
RVJfTUVTU0FHRV9IQU5ETEVSX0dFVF9QUklWQVRFKG9iamVjdCk7Ci0gICAgcHJpdi0+Y29yZU9i
amVjdCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OlVzZXJNZXNzYWdlSGFuZGxlcio+KFdFQktJVF9E
T01fT0JKRUNUKG9iamVjdCktPmNvcmVPYmplY3QpOwotICAgIFdlYktpdDo6RE9NT2JqZWN0Q2Fj
aGU6OnB1dChwcml2LT5jb3JlT2JqZWN0LmdldCgpLCBvYmplY3QpOwotI2VuZGlmIC8vIEVOQUJM
RShVU0VSX01FU1NBR0VfSEFORExFUlMpCi0gICAgcmV0dXJuIG9iamVjdDsKLX0KLQotc3RhdGlj
IHZvaWQgd2Via2l0X2RvbV91c2VyX21lc3NhZ2VfaGFuZGxlcl9jbGFzc19pbml0KFdlYktpdERP
TVVzZXJNZXNzYWdlSGFuZGxlckNsYXNzKiByZXF1ZXN0Q2xhc3MpCi17Ci0gICAgR09iamVjdENs
YXNzKiBnb2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhyZXF1ZXN0Q2xhc3MpOwotICAgIGdf
dHlwZV9jbGFzc19hZGRfcHJpdmF0ZShnb2JqZWN0Q2xhc3MsIHNpemVvZihXZWJLaXRET01Vc2Vy
TWVzc2FnZUhhbmRsZXJQcml2YXRlKSk7Ci0gICAgZ29iamVjdENsYXNzLT5jb25zdHJ1Y3RvciA9
IHdlYmtpdF9kb21fdXNlcl9tZXNzYWdlX2hhbmRsZXJfY29uc3RydWN0b3I7Ci0gICAgZ29iamVj
dENsYXNzLT5maW5hbGl6ZSA9IHdlYmtpdF9kb21fdXNlcl9tZXNzYWdlX2hhbmRsZXJfZmluYWxp
emU7Ci19Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdXNlcl9tZXNzYWdlX2hhbmRsZXJfaW5p
dChXZWJLaXRET01Vc2VyTWVzc2FnZUhhbmRsZXIqIHJlcXVlc3QpCi17Ci0gICAgV2ViS2l0RE9N
VXNlck1lc3NhZ2VIYW5kbGVyUHJpdmF0ZSogcHJpdiA9IFdFQktJVF9ET01fVVNFUl9NRVNTQUdF
X0hBTkRMRVJfR0VUX1BSSVZBVEUocmVxdWVzdCk7Ci0gICAgbmV3IChwcml2KSBXZWJLaXRET01V
c2VyTWVzc2FnZUhhbmRsZXJQcml2YXRlKCk7Ci19Ci0KLXZvaWQgd2Via2l0X2RvbV91c2VyX21l
c3NhZ2VfaGFuZGxlcl9wb3N0X21lc3NhZ2UoV2ViS2l0RE9NVXNlck1lc3NhZ2VIYW5kbGVyKiBz
ZWxmLCBjb25zdCBnY2hhciogbWVzc2FnZSwgR0Vycm9yKiogZXJyb3IpCi17Ci0jaWYgRU5BQkxF
KFVTRVJfTUVTU0FHRV9IQU5ETEVSUykKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3Rh
dGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX1VTRVJfTUVTU0FH
RV9IQU5ETEVSKHNlbGYpKTsKLSAgICBnX3JldHVybl9pZl9mYWlsKG1lc3NhZ2UpOwotICAgIGdf
cmV0dXJuX2lmX2ZhaWwoIWVycm9yIHx8ICEqZXJyb3IpOwotICAgIFdlYkNvcmU6OlVzZXJNZXNz
YWdlSGFuZGxlciogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBXZWJDb3JlOjpFeGNl
cHRpb25Db2RlIGVjID0gMDsKLSAgICBpdGVtLT5wb3N0TWVzc2FnZShXZWJDb3JlOjpTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OmNyZWF0ZShXVEY6OlN0cmluZzo6ZnJvbVVURjgobWVzc2FnZSkpLCBl
Yyk7Ci0gICAgaWYgKGVjKSB7Ci0gICAgICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGVEZXNjcmlw
dGlvbiBlY2Rlc2MoZWMpOwotICAgICAgICBnX3NldF9lcnJvcl9saXRlcmFsKGVycm9yLCBnX3F1
YXJrX2Zyb21fc3RyaW5nKCJXRUJLSVRfRE9NIiksIGVjZGVzYy5jb2RlLCBlY2Rlc2MubmFtZSk7
Ci0gICAgfQotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc2VsZik7Ci0gICAgVU5VU0VEX1BBUkFN
KG1lc3NhZ2UpOwotICAgIFVOVVNFRF9QQVJBTShlcnJvcik7Ci0gICAgV0VCS0lUX1dBUk5fRkVB
VFVSRV9OT1RfUFJFU0VOVCgiVXNlciBNZXNzYWdlIEhhbmRsZXJzIikKLSNlbmRpZiAvKiBFTkFC
TEUoVVNFUl9NRVNTQUdFX0hBTkRMRVJTKSAqLwotfQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVVzZXJN
ZXNzYWdlSGFuZGxlci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01Vc2VyTWVzc2FnZUhhbmRsZXIuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggOGY3MDQyYS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVVzZXJNZXNzYWdl
SGFuZGxlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBAQAotLyoKLSAqICBUaGlzIGZp
bGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCi0gKiAgVGhpcyBm
aWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1P
RElGWSEKLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAq
ICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
LSAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiAgQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBXZWJLaXRET01Vc2VyTWVzc2FnZUhhbmRsZXJfaAot
I2RlZmluZSBXZWJLaXRET01Vc2VyTWVzc2FnZUhhbmRsZXJfaAotCi0jaWZkZWYgV0VCS0lUX0RP
TV9VU0VfVU5TVEFCTEVfQVBJCi0KLSNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgotI2luY2x1ZGUg
PHdlYmtpdGRvbS9XZWJLaXRET01PYmplY3QuaD4KLSNpbmNsdWRlIDx3ZWJraXRkb20vd2Via2l0
ZG9tZGVmaW5lcy11bnN0YWJsZS5oPgotCi1HX0JFR0lOX0RFQ0xTCi0KLSNkZWZpbmUgV0VCS0lU
X0RPTV9UWVBFX1VTRVJfTUVTU0FHRV9IQU5ETEVSICAgICAgICAgICAgKHdlYmtpdF9kb21fdXNl
cl9tZXNzYWdlX2hhbmRsZXJfZ2V0X3R5cGUoKSkKLSNkZWZpbmUgV0VCS0lUX0RPTV9VU0VSX01F
U1NBR0VfSEFORExFUihvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNU
KChvYmopLCBXRUJLSVRfRE9NX1RZUEVfVVNFUl9NRVNTQUdFX0hBTkRMRVIsIFdlYktpdERPTVVz
ZXJNZXNzYWdlSGFuZGxlcikpCi0jZGVmaW5lIFdFQktJVF9ET01fVVNFUl9NRVNTQUdFX0hBTkRM
RVJfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLCAgV0VC
S0lUX0RPTV9UWVBFX1VTRVJfTUVTU0FHRV9IQU5ETEVSLCBXZWJLaXRET01Vc2VyTWVzc2FnZUhh
bmRsZXJDbGFzcykKLSNkZWZpbmUgV0VCS0lUX0RPTV9JU19VU0VSX01FU1NBR0VfSEFORExFUihv
YmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLCBXRUJLSVRfRE9N
X1RZUEVfVVNFUl9NRVNTQUdFX0hBTkRMRVIpKQotI2RlZmluZSBXRUJLSVRfRE9NX0lTX1VTRVJf
TUVTU0FHRV9IQU5ETEVSX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGts
YXNzKSwgIFdFQktJVF9ET01fVFlQRV9VU0VSX01FU1NBR0VfSEFORExFUikpCi0jZGVmaW5lIFdF
QktJVF9ET01fVVNFUl9NRVNTQUdFX0hBTkRMRVJfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5T
VEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgV0VCS0lUX0RPTV9UWVBFX1VTRVJfTUVTU0FHRV9IQU5E
TEVSLCBXZWJLaXRET01Vc2VyTWVzc2FnZUhhbmRsZXJDbGFzcykpCi0KLXN0cnVjdCBfV2ViS2l0
RE9NVXNlck1lc3NhZ2VIYW5kbGVyIHsKLSAgICBXZWJLaXRET01PYmplY3QgcGFyZW50X2luc3Rh
bmNlOwotfTsKLQotc3RydWN0IF9XZWJLaXRET01Vc2VyTWVzc2FnZUhhbmRsZXJDbGFzcyB7Ci0g
ICAgV2ViS2l0RE9NT2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOwotfTsKLQotV0VCS0lUX0FQSSBH
VHlwZQotd2Via2l0X2RvbV91c2VyX21lc3NhZ2VfaGFuZGxlcl9nZXRfdHlwZSh2b2lkKTsKLQot
LyoqCi0gKiB3ZWJraXRfZG9tX3VzZXJfbWVzc2FnZV9oYW5kbGVyX3Bvc3RfbWVzc2FnZToKLSAq
IEBzZWxmOiBBICNXZWJLaXRET01Vc2VyTWVzc2FnZUhhbmRsZXIKLSAqIEBtZXNzYWdlOiBBICNn
Y2hhcgotICogQGVycm9yOiAjR0Vycm9yCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiov
Ci1XRUJLSVRfQVBJIHZvaWQKLXdlYmtpdF9kb21fdXNlcl9tZXNzYWdlX2hhbmRsZXJfcG9zdF9t
ZXNzYWdlKFdlYktpdERPTVVzZXJNZXNzYWdlSGFuZGxlciogc2VsZiwgY29uc3QgZ2NoYXIqIG1l
c3NhZ2UsIEdFcnJvcioqIGVycm9yKTsKLQotR19FTkRfREVDTFMKLQotI2VuZGlmIC8qIFdFQktJ
VF9ET01fVVNFX1VOU1RBQkxFX0FQSSAqLwotI2VuZGlmIC8qIFdlYktpdERPTVVzZXJNZXNzYWdl
SGFuZGxlcl9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVVzZXJNZXNzYWdlSGFuZGxlclByaXZhdGUu
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00v
V2ViS2l0RE9NVXNlck1lc3NhZ2VIYW5kbGVyUHJpdmF0ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBiNGFiYTU0Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NVXNlck1lc3NhZ2VIYW5kbGVy
UHJpdmF0ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotLyoKLSAqICBUaGlzIGZp
bGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCi0gKiAgVGhpcyBm
aWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1P
RElGWSEKLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAq
ICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
LSAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiAgQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBXZWJLaXRET01Vc2VyTWVzc2FnZUhhbmRsZXJQcml2
YXRlX2gKLSNkZWZpbmUgV2ViS2l0RE9NVXNlck1lc3NhZ2VIYW5kbGVyUHJpdmF0ZV9oCi0KLSNp
bmNsdWRlIDxXZWJDb3JlL1VzZXJNZXNzYWdlSGFuZGxlci5oPgotI2luY2x1ZGUgPHdlYmtpdGRv
bS9XZWJLaXRET01Vc2VyTWVzc2FnZUhhbmRsZXIuaD4KLSNpZiBFTkFCTEUoVVNFUl9NRVNTQUdF
X0hBTkRMRVJTKQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLVdlYktpdERPTVVzZXJNZXNzYWdlSGFu
ZGxlciogd3JhcFVzZXJNZXNzYWdlSGFuZGxlcihXZWJDb3JlOjpVc2VyTWVzc2FnZUhhbmRsZXIq
KTsKLVdlYktpdERPTVVzZXJNZXNzYWdlSGFuZGxlcioga2l0KFdlYkNvcmU6OlVzZXJNZXNzYWdl
SGFuZGxlciopOwotV2ViQ29yZTo6VXNlck1lc3NhZ2VIYW5kbGVyKiBjb3JlKFdlYktpdERPTVVz
ZXJNZXNzYWdlSGFuZGxlciopOwotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvKiBF
TkFCTEUoVVNFUl9NRVNTQUdFX0hBTkRMRVJTKSAqLwotCi0jZW5kaWYgLyogV2ViS2l0RE9NVXNl
ck1lc3NhZ2VIYW5kbGVyUHJpdmF0ZV9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVVzZXJNZXNzYWdl
SGFuZGxlcnNOYW1lc3BhY2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01Vc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNl
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWZiNGZhMi4uMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dl
YktpdERPTVVzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2UuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsMTE4ICswLDAgQEAKLS8qCi0gKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBv
cGVuIHNvdXJjZSBwcm9qZWN0LgotICogIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkg
Z2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICogIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJLaXRET01Vc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNw
YWNlLmgiCi0KLSNpbmNsdWRlIDxXZWJDb3JlL0NTU0ltcG9ydFJ1bGUuaD4KLSNpbmNsdWRlICJE
T01PYmplY3RDYWNoZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnQuaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL0V4Y2VwdGlvbkNvZGUuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0V4Y2VwdGlvbkNv
ZGVEZXNjcmlwdGlvbi5oPgotI2luY2x1ZGUgPFdlYkNvcmUvSlNNYWluVGhyZWFkRXhlY1N0YXRl
Lmg+Ci0jaW5jbHVkZSAiV2ViS2l0RE9NUHJpdmF0ZS5oIgotI2luY2x1ZGUgIldlYktpdERPTVVz
ZXJNZXNzYWdlSGFuZGxlclByaXZhdGUuaCIKLSNpbmNsdWRlICJXZWJLaXRET01Vc2VyTWVzc2Fn
ZUhhbmRsZXJzTmFtZXNwYWNlUHJpdmF0ZS5oIgotI2luY2x1ZGUgIkNvbnZlcnRUb1VURjhTdHJp
bmcuaCIKLSNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgot
Ci0jZGVmaW5lIFdFQktJVF9ET01fVVNFUl9NRVNTQUdFX0hBTkRMRVJTX05BTUVTUEFDRV9HRVRf
UFJJVkFURShvYmopIEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURShvYmosIFdFQktJVF9ET01f
VFlQRV9VU0VSX01FU1NBR0VfSEFORExFUlNfTkFNRVNQQUNFLCBXZWJLaXRET01Vc2VyTWVzc2Fn
ZUhhbmRsZXJzTmFtZXNwYWNlUHJpdmF0ZSkKLQotdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdERPTVVz
ZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2VQcml2YXRlIHsKLSNpZiBFTkFCTEUoVVNFUl9NRVNT
QUdFX0hBTkRMRVJTKQotICAgIFJlZlB0cjxXZWJDb3JlOjpVc2VyTWVzc2FnZUhhbmRsZXJzTmFt
ZXNwYWNlPiBjb3JlT2JqZWN0OwotI2VuZGlmIC8vIEVOQUJMRShVU0VSX01FU1NBR0VfSEFORExF
UlMpCi19IFdlYktpdERPTVVzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2VQcml2YXRlOwotCi0j
aWYgRU5BQkxFKFVTRVJfTUVTU0FHRV9IQU5ETEVSUykKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0K
LVdlYktpdERPTVVzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2UqIGtpdChXZWJDb3JlOjpVc2Vy
TWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlKiBvYmopCi17Ci0gICAgaWYgKCFvYmopCi0gICAgICAg
IHJldHVybiAwOwotCi0gICAgaWYgKGdwb2ludGVyIHJldCA9IERPTU9iamVjdENhY2hlOjpnZXQo
b2JqKSkKLSAgICAgICAgcmV0dXJuIFdFQktJVF9ET01fVVNFUl9NRVNTQUdFX0hBTkRMRVJTX05B
TUVTUEFDRShyZXQpOwotCi0gICAgcmV0dXJuIHdyYXBVc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNw
YWNlKG9iaik7Ci19Ci0KLVdlYkNvcmU6OlVzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2UqIGNv
cmUoV2ViS2l0RE9NVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZSogcmVxdWVzdCkKLXsKLSAg
ICByZXR1cm4gcmVxdWVzdCA/IHN0YXRpY19jYXN0PFdlYkNvcmU6OlVzZXJNZXNzYWdlSGFuZGxl
cnNOYW1lc3BhY2UqPihXRUJLSVRfRE9NX09CSkVDVChyZXF1ZXN0KS0+Y29yZU9iamVjdCkgOiAw
OwotfQotCi1XZWJLaXRET01Vc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlKiB3cmFwVXNlck1l
c3NhZ2VIYW5kbGVyc05hbWVzcGFjZShXZWJDb3JlOjpVc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNw
YWNlKiBjb3JlT2JqZWN0KQotewotICAgIEFTU0VSVChjb3JlT2JqZWN0KTsKLSAgICByZXR1cm4g
V0VCS0lUX0RPTV9VU0VSX01FU1NBR0VfSEFORExFUlNfTkFNRVNQQUNFKGdfb2JqZWN0X25ldyhX
RUJLSVRfRE9NX1RZUEVfVVNFUl9NRVNTQUdFX0hBTkRMRVJTX05BTUVTUEFDRSwgImNvcmUtb2Jq
ZWN0IiwgY29yZU9iamVjdCwgbnVsbHB0cikpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQK
LQotI2VuZGlmIC8vIEVOQUJMRShVU0VSX01FU1NBR0VfSEFORExFUlMpCi0KLUdfREVGSU5FX1RZ
UEUoV2ViS2l0RE9NVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZSwgd2Via2l0X2RvbV91c2Vy
X21lc3NhZ2VfaGFuZGxlcnNfbmFtZXNwYWNlLCBXRUJLSVRfRE9NX1RZUEVfT0JKRUNUKQotCi1z
dGF0aWMgdm9pZCB3ZWJraXRfZG9tX3VzZXJfbWVzc2FnZV9oYW5kbGVyc19uYW1lc3BhY2VfZmlu
YWxpemUoR09iamVjdCogb2JqZWN0KQotewotICAgIFdlYktpdERPTVVzZXJNZXNzYWdlSGFuZGxl
cnNOYW1lc3BhY2VQcml2YXRlKiBwcml2ID0gV0VCS0lUX0RPTV9VU0VSX01FU1NBR0VfSEFORExF
UlNfTkFNRVNQQUNFX0dFVF9QUklWQVRFKG9iamVjdCk7Ci0jaWYgRU5BQkxFKFVTRVJfTUVTU0FH
RV9IQU5ETEVSUykKLSAgICBXZWJLaXQ6OkRPTU9iamVjdENhY2hlOjpmb3JnZXQocHJpdi0+Y29y
ZU9iamVjdC5nZXQoKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKFVTRVJfTUVTU0FHRV9IQU5ETEVSUykK
LSAgICBwcml2LT5+V2ViS2l0RE9NVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZVByaXZhdGUo
KTsKLSAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfZG9tX3VzZXJfbWVzc2FnZV9oYW5kbGVyc19u
YW1lc3BhY2VfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKLX0KLQotc3RhdGljIEdP
YmplY3QqIHdlYmtpdF9kb21fdXNlcl9tZXNzYWdlX2hhbmRsZXJzX25hbWVzcGFjZV9jb25zdHJ1
Y3RvcihHVHlwZSB0eXBlLCBndWludCBjb25zdHJ1Y3RQcm9wZXJ0aWVzQ291bnQsIEdPYmplY3RD
b25zdHJ1Y3RQYXJhbSogY29uc3RydWN0UHJvcGVydGllcykKLXsKLSAgICBHT2JqZWN0KiBvYmpl
Y3QgPSBHX09CSkVDVF9DTEFTUyh3ZWJraXRfZG9tX3VzZXJfbWVzc2FnZV9oYW5kbGVyc19uYW1l
c3BhY2VfcGFyZW50X2NsYXNzKS0+Y29uc3RydWN0b3IodHlwZSwgY29uc3RydWN0UHJvcGVydGll
c0NvdW50LCBjb25zdHJ1Y3RQcm9wZXJ0aWVzKTsKLSNpZiBFTkFCTEUoVVNFUl9NRVNTQUdFX0hB
TkRMRVJTKQotICAgIFdlYktpdERPTVVzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2VQcml2YXRl
KiBwcml2ID0gV0VCS0lUX0RPTV9VU0VSX01FU1NBR0VfSEFORExFUlNfTkFNRVNQQUNFX0dFVF9Q
UklWQVRFKG9iamVjdCk7Ci0gICAgcHJpdi0+Y29yZU9iamVjdCA9IHN0YXRpY19jYXN0PFdlYkNv
cmU6OlVzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2UqPihXRUJLSVRfRE9NX09CSkVDVChvYmpl
Y3QpLT5jb3JlT2JqZWN0KTsKLSAgICBXZWJLaXQ6OkRPTU9iamVjdENhY2hlOjpwdXQocHJpdi0+
Y29yZU9iamVjdC5nZXQoKSwgb2JqZWN0KTsKLSNlbmRpZiAvLyBFTkFCTEUoVVNFUl9NRVNTQUdF
X0hBTkRMRVJTKQotICAgIHJldHVybiBvYmplY3Q7Ci19Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdF9k
b21fdXNlcl9tZXNzYWdlX2hhbmRsZXJzX25hbWVzcGFjZV9jbGFzc19pbml0KFdlYktpdERPTVVz
ZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2VDbGFzcyogcmVxdWVzdENsYXNzKQotewotICAgIEdP
YmplY3RDbGFzcyogZ29iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1MocmVxdWVzdENsYXNzKTsK
LSAgICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUoZ29iamVjdENsYXNzLCBzaXplb2YoV2ViS2l0
RE9NVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZVByaXZhdGUpKTsKLSAgICBnb2JqZWN0Q2xh
c3MtPmNvbnN0cnVjdG9yID0gd2Via2l0X2RvbV91c2VyX21lc3NhZ2VfaGFuZGxlcnNfbmFtZXNw
YWNlX2NvbnN0cnVjdG9yOwotICAgIGdvYmplY3RDbGFzcy0+ZmluYWxpemUgPSB3ZWJraXRfZG9t
X3VzZXJfbWVzc2FnZV9oYW5kbGVyc19uYW1lc3BhY2VfZmluYWxpemU7Ci19Ci0KLXN0YXRpYyB2
b2lkIHdlYmtpdF9kb21fdXNlcl9tZXNzYWdlX2hhbmRsZXJzX25hbWVzcGFjZV9pbml0KFdlYktp
dERPTVVzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2UqIHJlcXVlc3QpCi17Ci0gICAgV2ViS2l0
RE9NVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZVByaXZhdGUqIHByaXYgPSBXRUJLSVRfRE9N
X1VTRVJfTUVTU0FHRV9IQU5ETEVSU19OQU1FU1BBQ0VfR0VUX1BSSVZBVEUocmVxdWVzdCk7Ci0g
ICAgbmV3IChwcml2KSBXZWJLaXRET01Vc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlUHJpdmF0
ZSgpOwotfQotCi1XZWJLaXRET01Vc2VyTWVzc2FnZUhhbmRsZXIqIHdlYmtpdF9kb21fdXNlcl9t
ZXNzYWdlX2hhbmRsZXJzX25hbWVzcGFjZV9nZXRfaGFuZGxlcihXZWJLaXRET01Vc2VyTWVzc2Fn
ZUhhbmRsZXJzTmFtZXNwYWNlKiBoYW5kbGVyc05hbWVzcGFjZSwgY29uc3QgZ2NoYXIqIG5hbWUp
Ci17Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19VU0VSX01FU1NBR0Vf
SEFORExFUlNfTkFNRVNQQUNFKGhhbmRsZXJzTmFtZXNwYWNlKSwgbnVsbHB0cik7Ci0gICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwobmFtZSwgbnVsbHB0cik7Ci0KLSAgICByZXR1cm4gV2ViS2l0Ojpr
aXQoV2ViS2l0Ojpjb3JlKGhhbmRsZXJzTmFtZXNwYWNlKS0+aGFuZGxlcihTdHJpbmc6OmZyb21V
VEY4KG5hbWUpLCBXZWJDb3JlOjptYWluVGhyZWFkTm9ybWFsV29ybGQoKSkpOwotfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RP
TS9XZWJLaXRET01Vc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlLmggYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVVzZXJNZXNz
YWdlSGFuZGxlcnNOYW1lc3BhY2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2M0
ZjBlMy4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVVzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2UuaAor
KysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLS8qCi0gKiAgVGhpcyBmaWxlIGlzIHBhcnQg
b2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICogIFRoaXMgZmlsZSBoYXMgYmVl
biBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0gKgot
ICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0g
KiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgot
ICovCi0KLSNpZm5kZWYgV2ViS2l0RE9NVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZV9oCi0j
ZGVmaW5lIFdlYktpdERPTVVzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2VfaAotCi0jaWZkZWYg
V0VCS0lUX0RPTV9VU0VfVU5TVEFCTEVfQVBJCi0KLSNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgot
I2luY2x1ZGUgPHdlYmtpdGRvbS9XZWJLaXRET01PYmplY3QuaD4KLSNpbmNsdWRlIDx3ZWJraXRk
b20vd2Via2l0ZG9tZGVmaW5lcy11bnN0YWJsZS5oPgotCi1HX0JFR0lOX0RFQ0xTCi0KLSNkZWZp
bmUgV0VCS0lUX0RPTV9UWVBFX1VTRVJfTUVTU0FHRV9IQU5ETEVSU19OQU1FU1BBQ0UgICAgICAg
ICAgICAod2Via2l0X2RvbV91c2VyX21lc3NhZ2VfaGFuZGxlcnNfbmFtZXNwYWNlX2dldF90eXBl
KCkpCi0jZGVmaW5lIFdFQktJVF9ET01fVVNFUl9NRVNTQUdFX0hBTkRMRVJTX05BTUVTUEFDRShv
YmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBXRUJLSVRf
RE9NX1RZUEVfVVNFUl9NRVNTQUdFX0hBTkRMRVJTX05BTUVTUEFDRSwgV2ViS2l0RE9NVXNlck1l
c3NhZ2VIYW5kbGVyc05hbWVzcGFjZSkpCi0jZGVmaW5lIFdFQktJVF9ET01fVVNFUl9NRVNTQUdF
X0hBTkRMRVJTX05BTUVTUEFDRV9DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19D
QVNUKChrbGFzcyksICBXRUJLSVRfRE9NX1RZUEVfVVNFUl9NRVNTQUdFX0hBTkRMRVJTX05BTUVT
UEFDRSwgV2ViS2l0RE9NVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZUNsYXNzKQotI2RlZmlu
ZSBXRUJLSVRfRE9NX0lTX1VTRVJfTUVTU0FHRV9IQU5ETEVSU19OQU1FU1BBQ0Uob2JqKSAgICAg
ICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX0RPTV9UWVBFX1VT
RVJfTUVTU0FHRV9IQU5ETEVSU19OQU1FU1BBQ0UpKQotI2RlZmluZSBXRUJLSVRfRE9NX0lTX1VT
RVJfTUVTU0FHRV9IQU5ETEVSU19OQU1FU1BBQ0VfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tf
Q0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX0RPTV9UWVBFX1VTRVJfTUVTU0FHRV9IQU5ETEVS
U19OQU1FU1BBQ0UpKQotI2RlZmluZSBXRUJLSVRfRE9NX1VTRVJfTUVTU0FHRV9IQU5ETEVSU19O
QU1FU1BBQ0VfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmop
LCAgV0VCS0lUX0RPTV9UWVBFX1VTRVJfTUVTU0FHRV9IQU5ETEVSU19OQU1FU1BBQ0UsIFdlYktp
dERPTVVzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2VDbGFzcykpCi0KLXN0cnVjdCBfV2ViS2l0
RE9NVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZSB7Ci0gICAgV2ViS2l0RE9NT2JqZWN0IHBh
cmVudF9pbnN0YW5jZTsKLX07Ci0KLXN0cnVjdCBfV2ViS2l0RE9NVXNlck1lc3NhZ2VIYW5kbGVy
c05hbWVzcGFjZUNsYXNzIHsKLSAgICBXZWJLaXRET01PYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7
Ci19OwotCi1XRUJLSVRfQVBJIEdUeXBlCi13ZWJraXRfZG9tX3VzZXJfbWVzc2FnZV9oYW5kbGVy
c19uYW1lc3BhY2VfZ2V0X3R5cGUodm9pZCk7Ci0KLS8qKgotICogd2Via2l0X2RvbV91c2VyX21l
c3NhZ2VfaGFuZGxlcnNfbmFtZXNwYWNlX2dldF9oYW5kbGVyOgotICogQHNlbGY6IEEgI1dlYktp
dERPTVVzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2UKLSAqIEBuYW1lOiBhICNnY2hhcgotICoK
LSAqIFJldHVybnM6ICh0cmFuc2ZlciBmdWxsKTogQSAjV2ViS2l0RE9NVXNlck1lc3NhZ2VIYW5k
bGVyCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotICovCi1XRUJLSVRfQVBJIFdlYktpdERP
TVVzZXJNZXNzYWdlSGFuZGxlciAqCi13ZWJraXRfZG9tX3VzZXJfbWVzc2FnZV9oYW5kbGVyc19u
YW1lc3BhY2VfZ2V0X2hhbmRsZXIoV2ViS2l0RE9NVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFj
ZSogc2VsZiwgY29uc3QgZ2NoYXIqIG5hbWUpOwotCi1HX0VORF9ERUNMUwotCi0jZW5kaWYgLyog
V0VCS0lUX0RPTV9VU0VfVU5TVEFCTEVfQVBJICovCi0jZW5kaWYgLyogV2ViS2l0RE9NVXNlck1l
c3NhZ2VIYW5kbGVyc05hbWVzcGFjZV9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVVzZXJNZXNzYWdl
SGFuZGxlcnNOYW1lc3BhY2VQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVVzZXJNZXNzYWdlSGFuZGxlcnNOYW1l
c3BhY2VQcml2YXRlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAyNDFlMGIuLjAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z3RrL0RPTS9XZWJLaXRET01Vc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlUHJpdmF0ZS5oCisr
KyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotLyoKLSAqICBUaGlzIGZpbGUgaXMgcGFydCBv
ZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCi0gKiAgVGhpcyBmaWxlIGhhcyBiZWVu
IGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKLSAqCi0g
KiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAq
ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqICBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0g
Ki8KLQotI2lmbmRlZiBXZWJLaXRET01Vc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlUHJpdmF0
ZV9oCi0jZGVmaW5lIFdlYktpdERPTVVzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2VQcml2YXRl
X2gKLQotI2luY2x1ZGUgPFdlYkNvcmUvVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZS5oPgot
I2luY2x1ZGUgPHdlYmtpdGRvbS9XZWJLaXRET01Vc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNl
Lmg+Ci0jaWYgRU5BQkxFKFVTRVJfTUVTU0FHRV9IQU5ETEVSUykKLQotbmFtZXNwYWNlIFdlYktp
dCB7Ci1XZWJLaXRET01Vc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlKiB3cmFwVXNlck1lc3Nh
Z2VIYW5kbGVyc05hbWVzcGFjZShXZWJDb3JlOjpVc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNl
Kik7Ci1XZWJLaXRET01Vc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlKiBraXQoV2ViQ29yZTo6
VXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZSopOwotV2ViQ29yZTo6VXNlck1lc3NhZ2VIYW5k
bGVyc05hbWVzcGFjZSogY29yZShXZWJLaXRET01Vc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNl
Kik7Ci19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8qIEVOQUJMRShVU0VSX01FU1NB
R0VfSEFORExFUlMpICovCi0KLSNlbmRpZiAvKiBXZWJLaXRET01Vc2VyTWVzc2FnZUhhbmRsZXJz
TmFtZXNwYWNlUHJpdmF0ZV9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVZUVEN1ZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERP
TVZUVEN1ZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ5NTJmNzEuLjAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3Rr
L0RPTS9XZWJLaXRET01WVFRDdWUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNTkyICswLDAgQEAK
LS8qCi0gKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9q
ZWN0LgotICogIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGlu
Z3MucGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICog
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJXZWJLaXRET01WVFRDdWUuaCIKLQotI2luY2x1ZGUgPFdlYkNvcmUvQ1NTSW1wb3J0
UnVsZS5oPgotI2luY2x1ZGUgIkRPTU9iamVjdENhY2hlLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9E
b2N1bWVudC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRXhjZXB0aW9uQ29kZS5oPgotI2luY2x1ZGUg
PFdlYkNvcmUvRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uLmg+Ci0jaW5jbHVkZSAiR09iamVjdEV2
ZW50TGlzdGVuZXIuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5o
PgotI2luY2x1ZGUgIldlYktpdERPTURvY3VtZW50RnJhZ21lbnRQcml2YXRlLmgiCi0jaW5jbHVk
ZSAiV2ViS2l0RE9NRXZlbnRQcml2YXRlLmgiCi0jaW5jbHVkZSAiV2ViS2l0RE9NRXZlbnRUYXJn
ZXQuaCIKLSNpbmNsdWRlICJXZWJLaXRET01Qcml2YXRlLmgiCi0jaW5jbHVkZSAiV2ViS2l0RE9N
VGV4dFRyYWNrQ3VlUHJpdmF0ZS5oIgotI2luY2x1ZGUgIldlYktpdERPTVZUVEN1ZVByaXZhdGUu
aCIKLSNpbmNsdWRlICJDb252ZXJ0VG9VVEY4U3RyaW5nLmgiCi0jaW5jbHVkZSA8d3RmL0dldFB0
ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotI2lmIEVOQUJMRShWSURFT19UUkFDSykK
LQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVdlYktpdERPTVZUVEN1ZSoga2l0KFdlYkNvcmU6OlZU
VEN1ZSogb2JqKQotewotICAgIHJldHVybiBXRUJLSVRfRE9NX1ZUVF9DVUUoa2l0KHN0YXRpY19j
YXN0PFdlYkNvcmU6OlRleHRUcmFja0N1ZSo+KG9iaikpKTsKLX0KLQotV2ViQ29yZTo6VlRUQ3Vl
KiBjb3JlKFdlYktpdERPTVZUVEN1ZSogcmVxdWVzdCkKLXsKLSAgICByZXR1cm4gcmVxdWVzdCA/
IHN0YXRpY19jYXN0PFdlYkNvcmU6OlZUVEN1ZSo+KFdFQktJVF9ET01fT0JKRUNUKHJlcXVlc3Qp
LT5jb3JlT2JqZWN0KSA6IDA7Ci19Ci0KLVdlYktpdERPTVZUVEN1ZSogd3JhcFZUVEN1ZShXZWJD
b3JlOjpWVFRDdWUqIGNvcmVPYmplY3QpCi17Ci0gICAgQVNTRVJUKGNvcmVPYmplY3QpOwotICAg
IHJldHVybiBXRUJLSVRfRE9NX1ZUVF9DVUUoZ19vYmplY3RfbmV3KFdFQktJVF9ET01fVFlQRV9W
VFRfQ1VFLCAiY29yZS1vYmplY3QiLCBjb3JlT2JqZWN0LCBudWxscHRyKSk7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFZJREVPX1RSQUNLKQotCi1zdGF0
aWMgZ2Jvb2xlYW4gd2Via2l0X2RvbV92dHRfY3VlX2Rpc3BhdGNoX2V2ZW50KFdlYktpdERPTUV2
ZW50VGFyZ2V0KiB0YXJnZXQsIFdlYktpdERPTUV2ZW50KiBldmVudCwgR0Vycm9yKiogZXJyb3Ip
Ci17Ci0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgIFdlYkNvcmU6OkV2ZW50KiBjb3JlRXZl
bnQgPSBXZWJLaXQ6OmNvcmUoZXZlbnQpOwotICAgIGlmICghY29yZUV2ZW50KQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgV2ViQ29yZTo6VlRUQ3VlKiBjb3JlVGFyZ2V0ID0gc3RhdGljX2Nh
c3Q8V2ViQ29yZTo6VlRUQ3VlKj4oV0VCS0lUX0RPTV9PQkpFQ1QodGFyZ2V0KS0+Y29yZU9iamVj
dCk7Ci0KLSAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBnYm9vbGVhbiBy
ZXN1bHQgPSBjb3JlVGFyZ2V0LT5kaXNwYXRjaEV2ZW50Rm9yQmluZGluZ3MoKmNvcmVFdmVudCwg
ZWMpOwotICAgIGlmIChlYykgewotICAgICAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlRGVzY3Jp
cHRpb24gZGVzY3JpcHRpb24oZWMpOwotICAgICAgICBnX3NldF9lcnJvcl9saXRlcmFsKGVycm9y
LCBnX3F1YXJrX2Zyb21fc3RyaW5nKCJXRUJLSVRfRE9NIiksIGRlc2NyaXB0aW9uLmNvZGUsIGRl
c2NyaXB0aW9uLm5hbWUpOwotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OwotI2Vsc2UKLSAgICBV
TlVTRURfUEFSQU0odGFyZ2V0KTsKLSAgICBVTlVTRURfUEFSQU0oZXZlbnQpOwotICAgIFVOVVNF
RF9QQVJBTShlcnJvcik7Ci0gICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiVmlk
ZW8gVHJhY2siKQotICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZiAvLyBFTkFCTEUoVklERU9fVFJB
Q0spCi19Ci0KLXN0YXRpYyBnYm9vbGVhbiB3ZWJraXRfZG9tX3Z0dF9jdWVfYWRkX2V2ZW50X2xp
c3RlbmVyKFdlYktpdERPTUV2ZW50VGFyZ2V0KiB0YXJnZXQsIGNvbnN0IGNoYXIqIGV2ZW50TmFt
ZSwgR0Nsb3N1cmUqIGhhbmRsZXIsIGdib29sZWFuIHVzZUNhcHR1cmUpCi17Ci0jaWYgRU5BQkxF
KFZJREVPX1RSQUNLKQotICAgIFdlYkNvcmU6OlZUVEN1ZSogY29yZVRhcmdldCA9IHN0YXRpY19j
YXN0PFdlYkNvcmU6OlZUVEN1ZSo+KFdFQktJVF9ET01fT0JKRUNUKHRhcmdldCktPmNvcmVPYmpl
Y3QpOwotICAgIHJldHVybiBXZWJLaXQ6OkdPYmplY3RFdmVudExpc3RlbmVyOjphZGRFdmVudExp
c3RlbmVyKEdfT0JKRUNUKHRhcmdldCksIGNvcmVUYXJnZXQsIGV2ZW50TmFtZSwgaGFuZGxlciwg
dXNlQ2FwdHVyZSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTSh0YXJnZXQpOwotICAgIFVOVVNF
RF9QQVJBTShldmVudE5hbWUpOwotICAgIFVOVVNFRF9QQVJBTShoYW5kbGVyKTsKLSAgICBVTlVT
RURfUEFSQU0odXNlQ2FwdHVyZSk7Ci0gICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VO
VCgiVmlkZW8gVHJhY2siKQotICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZiAvLyBFTkFCTEUoVklE
RU9fVFJBQ0spCi19Ci0KLXN0YXRpYyBnYm9vbGVhbiB3ZWJraXRfZG9tX3Z0dF9jdWVfcmVtb3Zl
X2V2ZW50X2xpc3RlbmVyKFdlYktpdERPTUV2ZW50VGFyZ2V0KiB0YXJnZXQsIGNvbnN0IGNoYXIq
IGV2ZW50TmFtZSwgR0Nsb3N1cmUqIGhhbmRsZXIsIGdib29sZWFuIHVzZUNhcHR1cmUpCi17Ci0j
aWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgIFdlYkNvcmU6OlZUVEN1ZSogY29yZVRhcmdldCA9
IHN0YXRpY19jYXN0PFdlYkNvcmU6OlZUVEN1ZSo+KFdFQktJVF9ET01fT0JKRUNUKHRhcmdldCkt
PmNvcmVPYmplY3QpOwotICAgIHJldHVybiBXZWJLaXQ6OkdPYmplY3RFdmVudExpc3RlbmVyOjpy
ZW1vdmVFdmVudExpc3RlbmVyKEdfT0JKRUNUKHRhcmdldCksIGNvcmVUYXJnZXQsIGV2ZW50TmFt
ZSwgaGFuZGxlciwgdXNlQ2FwdHVyZSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTSh0YXJnZXQp
OwotICAgIFVOVVNFRF9QQVJBTShldmVudE5hbWUpOwotICAgIFVOVVNFRF9QQVJBTShoYW5kbGVy
KTsKLSAgICBVTlVTRURfUEFSQU0odXNlQ2FwdHVyZSk7Ci0gICAgV0VCS0lUX1dBUk5fRkVBVFVS
RV9OT1RfUFJFU0VOVCgiVmlkZW8gVHJhY2siKQotICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZiAv
LyBFTkFCTEUoVklERU9fVFJBQ0spCi19Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdF9kb21fZXZlbnRf
dGFyZ2V0X2luaXQoV2ViS2l0RE9NRXZlbnRUYXJnZXRJZmFjZSogaWZhY2UpCi17Ci0gICAgaWZh
Y2UtPmRpc3BhdGNoX2V2ZW50ID0gd2Via2l0X2RvbV92dHRfY3VlX2Rpc3BhdGNoX2V2ZW50Owot
ICAgIGlmYWNlLT5hZGRfZXZlbnRfbGlzdGVuZXIgPSB3ZWJraXRfZG9tX3Z0dF9jdWVfYWRkX2V2
ZW50X2xpc3RlbmVyOwotICAgIGlmYWNlLT5yZW1vdmVfZXZlbnRfbGlzdGVuZXIgPSB3ZWJraXRf
ZG9tX3Z0dF9jdWVfcmVtb3ZlX2V2ZW50X2xpc3RlbmVyOwotfQotCi1HX0RFRklORV9UWVBFX1dJ
VEhfQ09ERShXZWJLaXRET01WVFRDdWUsIHdlYmtpdF9kb21fdnR0X2N1ZSwgV0VCS0lUX0RPTV9U
WVBFX1RFWFRfVFJBQ0tfQ1VFLCBHX0lNUExFTUVOVF9JTlRFUkZBQ0UoV0VCS0lUX0RPTV9UWVBF
X0VWRU5UX1RBUkdFVCwgd2Via2l0X2RvbV9ldmVudF90YXJnZXRfaW5pdCkpCi0KLWVudW0gewot
ICAgIFBST1BfMCwKLSAgICBQUk9QX1ZFUlRJQ0FMLAotICAgIFBST1BfU05BUF9UT19MSU5FUywK
LSAgICBQUk9QX0xJTkUsCi0gICAgUFJPUF9QT1NJVElPTiwKLSAgICBQUk9QX1NJWkUsCi0gICAg
UFJPUF9BTElHTiwKLSAgICBQUk9QX1RFWFQsCi0gICAgUFJPUF9SRUdJT05fSUQsCi19OwotCi1z
dGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Z0dF9jdWVfc2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVj
dCwgZ3VpbnQgcHJvcGVydHlJZCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNw
ZWMpCi17Ci0gICAgV2ViS2l0RE9NVlRUQ3VlKiBzZWxmID0gV0VCS0lUX0RPTV9WVFRfQ1VFKG9i
amVjdCk7Ci0KLSAgICBzd2l0Y2ggKHByb3BlcnR5SWQpIHsKLSAgICBjYXNlIFBST1BfVkVSVElD
QUw6Ci0gICAgICAgIHdlYmtpdF9kb21fdnR0X2N1ZV9zZXRfdmVydGljYWwoc2VsZiwgZ192YWx1
ZV9nZXRfc3RyaW5nKHZhbHVlKSwgbnVsbHB0cik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
UFJPUF9TTkFQX1RPX0xJTkVTOgotICAgICAgICB3ZWJraXRfZG9tX3Z0dF9jdWVfc2V0X3NuYXBf
dG9fbGluZXMoc2VsZiwgZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIFBST1BfTElORToKLSAgICAgICAgd2Via2l0X2RvbV92dHRfY3VlX3NldF9s
aW5lKHNlbGYsIGdfdmFsdWVfZ2V0X2RvdWJsZSh2YWx1ZSksIG51bGxwdHIpOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIFBST1BfUE9TSVRJT046Ci0gICAgICAgIHdlYmtpdF9kb21fdnR0X2N1
ZV9zZXRfcG9zaXRpb24oc2VsZiwgZ192YWx1ZV9nZXRfZG91YmxlKHZhbHVlKSwgbnVsbHB0cik7
Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9TSVpFOgotICAgICAgICB3ZWJraXRfZG9t
X3Z0dF9jdWVfc2V0X3NpemUoc2VsZiwgZ192YWx1ZV9nZXRfZG91YmxlKHZhbHVlKSwgbnVsbHB0
cik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9BTElHTjoKLSAgICAgICAgd2Via2l0
X2RvbV92dHRfY3VlX3NldF9hbGlnbihzZWxmLCBnX3ZhbHVlX2dldF9zdHJpbmcodmFsdWUpLCBu
dWxscHRyKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX1RFWFQ6Ci0gICAgICAgIHdl
YmtpdF9kb21fdnR0X2N1ZV9zZXRfdGV4dChzZWxmLCBnX3ZhbHVlX2dldF9zdHJpbmcodmFsdWUp
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX1JFR0lPTl9JRDoKLSAgICAgICAgd2Vi
a2l0X2RvbV92dHRfY3VlX3NldF9yZWdpb25faWQoc2VsZiwgZ192YWx1ZV9nZXRfc3RyaW5nKHZh
bHVlKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEdfT0JKRUNUX1dB
Uk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BlcnR5SWQsIHBzcGVjKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgfQotfQotCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Z0dF9jdWVfZ2V0
X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcGVydHlJZCwgR1ZhbHVlKiB2YWx1
ZSwgR1BhcmFtU3BlYyogcHNwZWMpCi17Ci0gICAgV2ViS2l0RE9NVlRUQ3VlKiBzZWxmID0gV0VC
S0lUX0RPTV9WVFRfQ1VFKG9iamVjdCk7Ci0KLSAgICBzd2l0Y2ggKHByb3BlcnR5SWQpIHsKLSAg
ICBjYXNlIFBST1BfVkVSVElDQUw6Ci0gICAgICAgIGdfdmFsdWVfdGFrZV9zdHJpbmcodmFsdWUs
IHdlYmtpdF9kb21fdnR0X2N1ZV9nZXRfdmVydGljYWwoc2VsZikpOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIFBST1BfU05BUF9UT19MSU5FUzoKLSAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVh
bih2YWx1ZSwgd2Via2l0X2RvbV92dHRfY3VlX2dldF9zbmFwX3RvX2xpbmVzKHNlbGYpKTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX0xJTkU6Ci0gICAgICAgIGdfdmFsdWVfc2V0X2Rv
dWJsZSh2YWx1ZSwgd2Via2l0X2RvbV92dHRfY3VlX2dldF9saW5lKHNlbGYpKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBQUk9QX1BPU0lUSU9OOgotICAgICAgICBnX3ZhbHVlX3NldF9kb3Vi
bGUodmFsdWUsIHdlYmtpdF9kb21fdnR0X2N1ZV9nZXRfcG9zaXRpb24oc2VsZikpOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIFBST1BfU0laRToKLSAgICAgICAgZ192YWx1ZV9zZXRfZG91Ymxl
KHZhbHVlLCB3ZWJraXRfZG9tX3Z0dF9jdWVfZ2V0X3NpemUoc2VsZikpOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIFBST1BfQUxJR046Ci0gICAgICAgIGdfdmFsdWVfdGFrZV9zdHJpbmcodmFs
dWUsIHdlYmtpdF9kb21fdnR0X2N1ZV9nZXRfYWxpZ24oc2VsZikpOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIFBST1BfVEVYVDoKLSAgICAgICAgZ192YWx1ZV90YWtlX3N0cmluZyh2YWx1ZSwg
d2Via2l0X2RvbV92dHRfY3VlX2dldF90ZXh0KHNlbGYpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBQUk9QX1JFR0lPTl9JRDoKLSAgICAgICAgZ192YWx1ZV90YWtlX3N0cmluZyh2YWx1ZSwg
d2Via2l0X2RvbV92dHRfY3VlX2dldF9yZWdpb25faWQoc2VsZikpOwotICAgICAgICBicmVhazsK
LSAgICBkZWZhdWx0OgotICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQo
b2JqZWN0LCBwcm9wZXJ0eUlkLCBwc3BlYyk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLX0KLQot
c3RhdGljIHZvaWQgd2Via2l0X2RvbV92dHRfY3VlX2NsYXNzX2luaXQoV2ViS2l0RE9NVlRUQ3Vl
Q2xhc3MqIHJlcXVlc3RDbGFzcykKLXsKLSAgICBHT2JqZWN0Q2xhc3MqIGdvYmplY3RDbGFzcyA9
IEdfT0JKRUNUX0NMQVNTKHJlcXVlc3RDbGFzcyk7Ci0gICAgZ29iamVjdENsYXNzLT5zZXRfcHJv
cGVydHkgPSB3ZWJraXRfZG9tX3Z0dF9jdWVfc2V0X3Byb3BlcnR5OwotICAgIGdvYmplY3RDbGFz
cy0+Z2V0X3Byb3BlcnR5ID0gd2Via2l0X2RvbV92dHRfY3VlX2dldF9wcm9wZXJ0eTsKLQotICAg
IGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywK
LSAgICAgICAgUFJPUF9WRVJUSUNBTCwKLSAgICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZygKLSAg
ICAgICAgICAgICJ2ZXJ0aWNhbCIsCi0gICAgICAgICAgICAiVlRUQ3VlOnZlcnRpY2FsIiwKLSAg
ICAgICAgICAgICJyZWFkLXdyaXRlIGdjaGFyKiBWVFRDdWU6dmVydGljYWwiLAotICAgICAgICAg
ICAgIiIsCi0gICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBRFdSSVRFKSk7Ci0KLSAgICBnX29i
amVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAotICAgICAgICBnb2JqZWN0Q2xhc3MsCi0gICAg
ICAgIFBST1BfU05BUF9UT19MSU5FUywKLSAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oCi0g
ICAgICAgICAgICAic25hcC10by1saW5lcyIsCi0gICAgICAgICAgICAiVlRUQ3VlOnNuYXAtdG8t
bGluZXMiLAotICAgICAgICAgICAgInJlYWQtd3JpdGUgZ2Jvb2xlYW4gVlRUQ3VlOnNuYXAtdG8t
bGluZXMiLAotICAgICAgICAgICAgRkFMU0UsCi0gICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVB
RFdSSVRFKSk7Ci0KLSAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAotICAgICAg
ICBnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBST1BfTElORSwKLSAgICAgICAgZ19wYXJhbV9zcGVj
X2RvdWJsZSgKLSAgICAgICAgICAgICJsaW5lIiwKLSAgICAgICAgICAgICJWVFRDdWU6bGluZSIs
Ci0gICAgICAgICAgICAicmVhZC13cml0ZSBnZG91YmxlIFZUVEN1ZTpsaW5lIiwKLSAgICAgICAg
ICAgIC1HX01BWERPVUJMRSwgR19NQVhET1VCTEUsIDAsCi0gICAgICAgICAgICBXRUJLSVRfUEFS
QU1fUkVBRFdSSVRFKSk7Ci0KLSAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAot
ICAgICAgICBnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBST1BfUE9TSVRJT04sCi0gICAgICAgIGdf
cGFyYW1fc3BlY19kb3VibGUoCi0gICAgICAgICAgICAicG9zaXRpb24iLAotICAgICAgICAgICAg
IlZUVEN1ZTpwb3NpdGlvbiIsCi0gICAgICAgICAgICAicmVhZC13cml0ZSBnZG91YmxlIFZUVEN1
ZTpwb3NpdGlvbiIsCi0gICAgICAgICAgICAtR19NQVhET1VCTEUsIEdfTUFYRE9VQkxFLCAwLAot
ICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURXUklURSkpOwotCi0gICAgZ19vYmplY3RfY2xh
c3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAgZ29iamVjdENsYXNzLAotICAgICAgICBQUk9Q
X1NJWkUsCi0gICAgICAgIGdfcGFyYW1fc3BlY19kb3VibGUoCi0gICAgICAgICAgICAic2l6ZSIs
Ci0gICAgICAgICAgICAiVlRUQ3VlOnNpemUiLAotICAgICAgICAgICAgInJlYWQtd3JpdGUgZ2Rv
dWJsZSBWVFRDdWU6c2l6ZSIsCi0gICAgICAgICAgICAtR19NQVhET1VCTEUsIEdfTUFYRE9VQkxF
LCAwLAotICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURXUklURSkpOwotCi0gICAgZ19vYmpl
Y3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAgZ29iamVjdENsYXNzLAotICAgICAg
ICBQUk9QX0FMSUdOLAotICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nKAotICAgICAgICAgICAg
ImFsaWduIiwKLSAgICAgICAgICAgICJWVFRDdWU6YWxpZ24iLAotICAgICAgICAgICAgInJlYWQt
d3JpdGUgZ2NoYXIqIFZUVEN1ZTphbGlnbiIsCi0gICAgICAgICAgICAiIiwKLSAgICAgICAgICAg
IFdFQktJVF9QQVJBTV9SRUFEV1JJVEUpKTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxf
cHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9URVhULAotICAg
ICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nKAotICAgICAgICAgICAgInRleHQiLAotICAgICAgICAg
ICAgIlZUVEN1ZTp0ZXh0IiwKLSAgICAgICAgICAgICJyZWFkLXdyaXRlIGdjaGFyKiBWVFRDdWU6
dGV4dCIsCi0gICAgICAgICAgICAiIiwKLSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEV1JJ
VEUpKTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdv
YmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9SRUdJT05fSUQsCi0gICAgICAgIGdfcGFyYW1fc3Bl
Y19zdHJpbmcoCi0gICAgICAgICAgICAicmVnaW9uLWlkIiwKLSAgICAgICAgICAgICJWVFRDdWU6
cmVnaW9uLWlkIiwKLSAgICAgICAgICAgICJyZWFkLXdyaXRlIGdjaGFyKiBWVFRDdWU6cmVnaW9u
LWlkIiwKLSAgICAgICAgICAgICIiLAotICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURXUklU
RSkpOwotCi19Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdnR0X2N1ZV9pbml0KFdlYktpdERP
TVZUVEN1ZSogcmVxdWVzdCkKLXsKLSAgICBVTlVTRURfUEFSQU0ocmVxdWVzdCk7Ci19Ci0KLVdl
YktpdERPTURvY3VtZW50RnJhZ21lbnQqIHdlYmtpdF9kb21fdnR0X2N1ZV9nZXRfY3VlX2FzX2h0
bWwoV2ViS2l0RE9NVlRUQ3VlKiBzZWxmKQotewotI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAg
ICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFs
X2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19WVFRfQ1VFKHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpW
VFRDdWUqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkRv
Y3VtZW50RnJhZ21lbnQ+IGdvYmplY3RSZXN1bHQgPSBXVEY6OmdldFB0cihpdGVtLT5nZXRDdWVB
c0hUTUwoKSk7Ci0gICAgcmV0dXJuIFdlYktpdDo6a2l0KGdvYmplY3RSZXN1bHQuZ2V0KCkpOwot
I2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc2VsZik7Ci0gICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9O
T1RfUFJFU0VOVCgiVmlkZW8gVHJhY2siKQotICAgIHJldHVybiAwOwotI2VuZGlmIC8qIEVOQUJM
RShWSURFT19UUkFDSykgKi8KLX0KLQotZ2NoYXIqIHdlYmtpdF9kb21fdnR0X2N1ZV9nZXRfdmVy
dGljYWwoV2ViS2l0RE9NVlRUQ3VlKiBzZWxmKQotewotI2lmIEVOQUJMRShWSURFT19UUkFDSykK
LSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5f
dmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19WVFRfQ1VFKHNlbGYpLCAwKTsKLSAgICBXZWJDb3Jl
OjpWVFRDdWUqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ2NoYXIqIHJlc3VsdCA9
IGNvbnZlcnRUb1VURjhTdHJpbmcoaXRlbS0+dmVydGljYWwoKSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHNlbGYpOwotICAgIFdFQktJVF9XQVJOX0ZFQVRV
UkVfTk9UX1BSRVNFTlQoIlZpZGVvIFRyYWNrIikKLSAgICByZXR1cm4gMDsKLSNlbmRpZiAvKiBF
TkFCTEUoVklERU9fVFJBQ0spICovCi19Ci0KLXZvaWQgd2Via2l0X2RvbV92dHRfY3VlX3NldF92
ZXJ0aWNhbChXZWJLaXRET01WVFRDdWUqIHNlbGYsIGNvbnN0IGdjaGFyKiB2YWx1ZSwgR0Vycm9y
KiogZXJyb3IpCi17Ci0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgIFdlYkNvcmU6OkpTTWFp
blRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01f
SVNfVlRUX0NVRShzZWxmKSk7Ci0gICAgZ19yZXR1cm5faWZfZmFpbCh2YWx1ZSk7Ci0gICAgZ19y
ZXR1cm5faWZfZmFpbCghZXJyb3IgfHwgISplcnJvcik7Ci0gICAgV2ViQ29yZTo6VlRUQ3VlKiBp
dGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIFdURjo6U3RyaW5nIGNvbnZlcnRlZFZhbHVl
ID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KHZhbHVlKTsKLSAgICBXZWJDb3JlOjpFeGNlcHRpb25D
b2RlIGVjID0gMDsKLSAgICBpdGVtLT5zZXRWZXJ0aWNhbChjb252ZXJ0ZWRWYWx1ZSwgZWMpOwot
ICAgIGlmIChlYykgewotICAgICAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24g
ZWNkZXNjKGVjKTsKLSAgICAgICAgZ19zZXRfZXJyb3JfbGl0ZXJhbChlcnJvciwgZ19xdWFya19m
cm9tX3N0cmluZygiV0VCS0lUX0RPTSIpLCBlY2Rlc2MuY29kZSwgZWNkZXNjLm5hbWUpOwotICAg
IH0KLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHNlbGYpOwotICAgIFVOVVNFRF9QQVJBTSh2YWx1
ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGVycm9yKTsKLSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05P
VF9QUkVTRU5UKCJWaWRlbyBUcmFjayIpCi0jZW5kaWYgLyogRU5BQkxFKFZJREVPX1RSQUNLKSAq
LwotfQotCi1nYm9vbGVhbiB3ZWJraXRfZG9tX3Z0dF9jdWVfZ2V0X3NuYXBfdG9fbGluZXMoV2Vi
S2l0RE9NVlRUQ3VlKiBzZWxmKQotewotI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICBXZWJD
b3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwoV0VCS0lUX0RPTV9JU19WVFRfQ1VFKHNlbGYpLCBGQUxTRSk7Ci0gICAgV2ViQ29yZTo6VlRU
Q3VlKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdib29sZWFuIHJlc3VsdCA9IGl0
ZW0tPnNuYXBUb0xpbmVzKCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSNlbHNlCi0gICAgVU5VU0VE
X1BBUkFNKHNlbGYpOwotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIlZpZGVv
IFRyYWNrIikKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Z2Jvb2xlYW4+KDApOwotI2VuZGlmIC8q
IEVOQUJMRShWSURFT19UUkFDSykgKi8KLX0KLQotdm9pZCB3ZWJraXRfZG9tX3Z0dF9jdWVfc2V0
X3NuYXBfdG9fbGluZXMoV2ViS2l0RE9NVlRUQ3VlKiBzZWxmLCBnYm9vbGVhbiB2YWx1ZSkKLXsK
LSNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0
YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19WVFRfQ1VFKHNl
bGYpKTsKLSAgICBXZWJDb3JlOjpWVFRDdWUqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0g
ICAgaXRlbS0+c2V0U25hcFRvTGluZXModmFsdWUpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0o
c2VsZik7Ci0gICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKLSAgICBXRUJLSVRfV0FSTl9GRUFUVVJF
X05PVF9QUkVTRU5UKCJWaWRlbyBUcmFjayIpCi0jZW5kaWYgLyogRU5BQkxFKFZJREVPX1RSQUNL
KSAqLwotfQotCi1nZG91YmxlIHdlYmtpdF9kb21fdnR0X2N1ZV9nZXRfbGluZShXZWJLaXRET01W
VFRDdWUqIHNlbGYpCi17Ci0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgIFdlYkNvcmU6OkpT
TWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJL
SVRfRE9NX0lTX1ZUVF9DVUUoc2VsZiksIDApOwotICAgIFdlYkNvcmU6OlZUVEN1ZSogaXRlbSA9
IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBnZG91YmxlIHJlc3VsdCA9IGl0ZW0tPmxpbmUoKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc2VsZik7Ci0gICAg
V0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiVmlkZW8gVHJhY2siKQotICAgIHJldHVy
biBzdGF0aWNfY2FzdDxnZG91YmxlPigwKTsKLSNlbmRpZiAvKiBFTkFCTEUoVklERU9fVFJBQ0sp
ICovCi19Ci0KLXZvaWQgd2Via2l0X2RvbV92dHRfY3VlX3NldF9saW5lKFdlYktpdERPTVZUVEN1
ZSogc2VsZiwgZ2RvdWJsZSB2YWx1ZSwgR0Vycm9yKiogZXJyb3IpCi17Ci0jaWYgRU5BQkxFKFZJ
REVPX1RSQUNLKQotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAg
ICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfVlRUX0NVRShzZWxmKSk7Ci0gICAgZ19y
ZXR1cm5faWZfZmFpbCghZXJyb3IgfHwgISplcnJvcik7Ci0gICAgV2ViQ29yZTo6VlRUQ3VlKiBp
dGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMg
PSAwOwotICAgIGl0ZW0tPnNldExpbmUodmFsdWUsIGVjKTsKLSAgICBpZiAoZWMpIHsKLSAgICAg
ICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uIGVjZGVzYyhlYyk7Ci0gICAgICAg
IGdfc2V0X2Vycm9yX2xpdGVyYWwoZXJyb3IsIGdfcXVhcmtfZnJvbV9zdHJpbmcoIldFQktJVF9E
T00iKSwgZWNkZXNjLmNvZGUsIGVjZGVzYy5uYW1lKTsKLSAgICB9Ci0jZWxzZQotICAgIFVOVVNF
RF9QQVJBTShzZWxmKTsKLSAgICBVTlVTRURfUEFSQU0odmFsdWUpOwotICAgIFVOVVNFRF9QQVJB
TShlcnJvcik7Ci0gICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiVmlkZW8gVHJh
Y2siKQotI2VuZGlmIC8qIEVOQUJMRShWSURFT19UUkFDSykgKi8KLX0KLQotZ2RvdWJsZSB3ZWJr
aXRfZG9tX3Z0dF9jdWVfZ2V0X3Bvc2l0aW9uKFdlYktpdERPTVZUVEN1ZSogc2VsZikKLXsKLSNp
ZiBFTkFCTEUoVklERU9fVFJBQ0spCi0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRl
IHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfVlRUX0NVRShz
ZWxmKSwgMCk7Ci0gICAgV2ViQ29yZTo6VlRUQ3VlKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYp
OwotICAgIGdkb3VibGUgcmVzdWx0ID0gaXRlbS0+cG9zaXRpb24oKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc2VsZik7Ci0gICAgV0VCS0lUX1dBUk5fRkVB
VFVSRV9OT1RfUFJFU0VOVCgiVmlkZW8gVHJhY2siKQotICAgIHJldHVybiBzdGF0aWNfY2FzdDxn
ZG91YmxlPigwKTsKLSNlbmRpZiAvKiBFTkFCTEUoVklERU9fVFJBQ0spICovCi19Ci0KLXZvaWQg
d2Via2l0X2RvbV92dHRfY3VlX3NldF9wb3NpdGlvbihXZWJLaXRET01WVFRDdWUqIHNlbGYsIGdk
b3VibGUgdmFsdWUsIEdFcnJvcioqIGVycm9yKQotewotI2lmIEVOQUJMRShWSURFT19UUkFDSykK
LSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5f
aWZfZmFpbChXRUJLSVRfRE9NX0lTX1ZUVF9DVUUoc2VsZikpOwotICAgIGdfcmV0dXJuX2lmX2Zh
aWwoIWVycm9yIHx8ICEqZXJyb3IpOwotICAgIFdlYkNvcmU6OlZUVEN1ZSogaXRlbSA9IFdlYktp
dDo6Y29yZShzZWxmKTsKLSAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBp
dGVtLT5zZXRQb3NpdGlvbih2YWx1ZSwgZWMpOwotICAgIGlmIChlYykgewotICAgICAgICBXZWJD
b3JlOjpFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24gZWNkZXNjKGVjKTsKLSAgICAgICAgZ19zZXRf
ZXJyb3JfbGl0ZXJhbChlcnJvciwgZ19xdWFya19mcm9tX3N0cmluZygiV0VCS0lUX0RPTSIpLCBl
Y2Rlc2MuY29kZSwgZWNkZXNjLm5hbWUpOwotICAgIH0KLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFN
KHNlbGYpOwotICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGVycm9y
KTsKLSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJWaWRlbyBUcmFjayIpCi0j
ZW5kaWYgLyogRU5BQkxFKFZJREVPX1RSQUNLKSAqLwotfQotCi1nZG91YmxlIHdlYmtpdF9kb21f
dnR0X2N1ZV9nZXRfc2l6ZShXZWJLaXRET01WVFRDdWUqIHNlbGYpCi17Ci0jaWYgRU5BQkxFKFZJ
REVPX1RSQUNLKQotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX1ZUVF9DVUUoc2VsZiksIDApOwot
ICAgIFdlYkNvcmU6OlZUVEN1ZSogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBnZG91
YmxlIHJlc3VsdCA9IGl0ZW0tPnNpemUoKTsKLSAgICByZXR1cm4gcmVzdWx0OwotI2Vsc2UKLSAg
ICBVTlVTRURfUEFSQU0oc2VsZik7Ci0gICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VO
VCgiVmlkZW8gVHJhY2siKQotICAgIHJldHVybiBzdGF0aWNfY2FzdDxnZG91YmxlPigwKTsKLSNl
bmRpZiAvKiBFTkFCTEUoVklERU9fVFJBQ0spICovCi19Ci0KLXZvaWQgd2Via2l0X2RvbV92dHRf
Y3VlX3NldF9zaXplKFdlYktpdERPTVZUVEN1ZSogc2VsZiwgZ2RvdWJsZSB2YWx1ZSwgR0Vycm9y
KiogZXJyb3IpCi17Ci0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgIFdlYkNvcmU6OkpTTWFp
blRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01f
SVNfVlRUX0NVRShzZWxmKSk7Ci0gICAgZ19yZXR1cm5faWZfZmFpbCghZXJyb3IgfHwgISplcnJv
cik7Ci0gICAgV2ViQ29yZTo6VlRUQ3VlKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAg
IFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGl0ZW0tPnNldFNpemUodmFsdWUs
IGVjKTsKLSAgICBpZiAoZWMpIHsKLSAgICAgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZURlc2Ny
aXB0aW9uIGVjZGVzYyhlYyk7Ci0gICAgICAgIGdfc2V0X2Vycm9yX2xpdGVyYWwoZXJyb3IsIGdf
cXVhcmtfZnJvbV9zdHJpbmcoIldFQktJVF9ET00iKSwgZWNkZXNjLmNvZGUsIGVjZGVzYy5uYW1l
KTsKLSAgICB9Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKLSAgICBVTlVTRURfUEFS
QU0odmFsdWUpOwotICAgIFVOVVNFRF9QQVJBTShlcnJvcik7Ci0gICAgV0VCS0lUX1dBUk5fRkVB
VFVSRV9OT1RfUFJFU0VOVCgiVmlkZW8gVHJhY2siKQotI2VuZGlmIC8qIEVOQUJMRShWSURFT19U
UkFDSykgKi8KLX0KLQotZ2NoYXIqIHdlYmtpdF9kb21fdnR0X2N1ZV9nZXRfYWxpZ24oV2ViS2l0
RE9NVlRUQ3VlKiBzZWxmKQotewotI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICBXZWJDb3Jl
OjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwo
V0VCS0lUX0RPTV9JU19WVFRfQ1VFKHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpWVFRDdWUqIGl0
ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ2NoYXIqIHJlc3VsdCA9IGNvbnZlcnRUb1VU
RjhTdHJpbmcoaXRlbS0+YWxpZ24oKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSNlbHNlCi0gICAg
VU5VU0VEX1BBUkFNKHNlbGYpOwotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQo
IlZpZGVvIFRyYWNrIikKLSAgICByZXR1cm4gMDsKLSNlbmRpZiAvKiBFTkFCTEUoVklERU9fVFJB
Q0spICovCi19Ci0KLXZvaWQgd2Via2l0X2RvbV92dHRfY3VlX3NldF9hbGlnbihXZWJLaXRET01W
VFRDdWUqIHNlbGYsIGNvbnN0IGdjaGFyKiB2YWx1ZSwgR0Vycm9yKiogZXJyb3IpCi17Ci0jaWYg
RU5BQkxFKFZJREVPX1RSQUNLKQotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBz
dGF0ZTsKLSAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfVlRUX0NVRShzZWxmKSk7
Ci0gICAgZ19yZXR1cm5faWZfZmFpbCh2YWx1ZSk7Ci0gICAgZ19yZXR1cm5faWZfZmFpbCghZXJy
b3IgfHwgISplcnJvcik7Ci0gICAgV2ViQ29yZTo6VlRUQ3VlKiBpdGVtID0gV2ViS2l0Ojpjb3Jl
KHNlbGYpOwotICAgIFdURjo6U3RyaW5nIGNvbnZlcnRlZFZhbHVlID0gV1RGOjpTdHJpbmc6OmZy
b21VVEY4KHZhbHVlKTsKLSAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBp
dGVtLT5zZXRBbGlnbihjb252ZXJ0ZWRWYWx1ZSwgZWMpOwotICAgIGlmIChlYykgewotICAgICAg
ICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24gZWNkZXNjKGVjKTsKLSAgICAgICAg
Z19zZXRfZXJyb3JfbGl0ZXJhbChlcnJvciwgZ19xdWFya19mcm9tX3N0cmluZygiV0VCS0lUX0RP
TSIpLCBlY2Rlc2MuY29kZSwgZWNkZXNjLm5hbWUpOwotICAgIH0KLSNlbHNlCi0gICAgVU5VU0VE
X1BBUkFNKHNlbGYpOwotICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFN
KGVycm9yKTsKLSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJWaWRlbyBUcmFj
ayIpCi0jZW5kaWYgLyogRU5BQkxFKFZJREVPX1RSQUNLKSAqLwotfQotCi1nY2hhciogd2Via2l0
X2RvbV92dHRfY3VlX2dldF90ZXh0KFdlYktpdERPTVZUVEN1ZSogc2VsZikKLXsKLSNpZiBFTkFC
TEUoVklERU9fVFJBQ0spCi0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRl
OwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfVlRUX0NVRShzZWxmKSwg
MCk7Ci0gICAgV2ViQ29yZTo6VlRUQ3VlKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAg
IGdjaGFyKiByZXN1bHQgPSBjb252ZXJ0VG9VVEY4U3RyaW5nKGl0ZW0tPnRleHQoKSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHNlbGYpOwotICAgIFdFQktJ
VF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIlZpZGVvIFRyYWNrIikKLSAgICByZXR1cm4gMDsK
LSNlbmRpZiAvKiBFTkFCTEUoVklERU9fVFJBQ0spICovCi19Ci0KLXZvaWQgd2Via2l0X2RvbV92
dHRfY3VlX3NldF90ZXh0KFdlYktpdERPTVZUVEN1ZSogc2VsZiwgY29uc3QgZ2NoYXIqIHZhbHVl
KQotewotI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWRO
dWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX1ZUVF9D
VUUoc2VsZikpOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwodmFsdWUpOwotICAgIFdlYkNvcmU6OlZU
VEN1ZSogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBXVEY6OlN0cmluZyBjb252ZXJ0
ZWRWYWx1ZSA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOCh2YWx1ZSk7Ci0gICAgaXRlbS0+c2V0VGV4
dChjb252ZXJ0ZWRWYWx1ZSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKLSAgICBV
TlVTRURfUEFSQU0odmFsdWUpOwotICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQo
IlZpZGVvIFRyYWNrIikKLSNlbmRpZiAvKiBFTkFCTEUoVklERU9fVFJBQ0spICovCi19Ci0KLWdj
aGFyKiB3ZWJraXRfZG9tX3Z0dF9jdWVfZ2V0X3JlZ2lvbl9pZChXZWJLaXRET01WVFRDdWUqIHNl
bGYpCi17Ci0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgIFdlYkNvcmU6OkpTTWFpblRocmVh
ZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lT
X1ZUVF9DVUUoc2VsZiksIDApOwotICAgIFdlYkNvcmU6OlZUVEN1ZSogaXRlbSA9IFdlYktpdDo6
Y29yZShzZWxmKTsKLSAgICBnY2hhciogcmVzdWx0ID0gY29udmVydFRvVVRGOFN0cmluZyhpdGVt
LT5yZWdpb25JZCgpKTsKLSAgICByZXR1cm4gcmVzdWx0OwotI2Vsc2UKLSAgICBVTlVTRURfUEFS
QU0oc2VsZik7Ci0gICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiVmlkZW8gVHJh
Y2siKQotICAgIHJldHVybiAwOwotI2VuZGlmIC8qIEVOQUJMRShWSURFT19UUkFDSykgKi8KLX0K
LQotdm9pZCB3ZWJraXRfZG9tX3Z0dF9jdWVfc2V0X3JlZ2lvbl9pZChXZWJLaXRET01WVFRDdWUq
IHNlbGYsIGNvbnN0IGdjaGFyKiB2YWx1ZSkKLXsKLSNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0g
ICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX2lm
X2ZhaWwoV0VCS0lUX0RPTV9JU19WVFRfQ1VFKHNlbGYpKTsKLSAgICBnX3JldHVybl9pZl9mYWls
KHZhbHVlKTsKLSAgICBXZWJDb3JlOjpWVFRDdWUqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7
Ci0gICAgV1RGOjpTdHJpbmcgY29udmVydGVkVmFsdWUgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgo
dmFsdWUpOwotICAgIGl0ZW0tPnNldFJlZ2lvbklkKGNvbnZlcnRlZFZhbHVlKTsKLSNlbHNlCi0g
ICAgVU5VU0VEX1BBUkFNKHNlbGYpOwotICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7Ci0gICAgV0VC
S0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiVmlkZW8gVHJhY2siKQotI2VuZGlmIC8qIEVO
QUJMRShWSURFT19UUkFDSykgKi8KLX0KLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01WVFRDdWUuaCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0
RE9NVlRUQ3VlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmZWRlZjkuLjAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3Rr
L0RPTS9XZWJLaXRET01WVFRDdWUuaAorKysgL2Rldi9udWxsCkBAIC0xLDIzNyArMCwwIEBACi0v
KgotICogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVj
dC4KLSAqICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdz
LnBsLiBETyBOT1QgTU9ESUZZIQotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQotICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaWZuZGVmIFdlYktpdERPTVZUVEN1ZV9o
Ci0jZGVmaW5lIFdlYktpdERPTVZUVEN1ZV9oCi0KLSNpZmRlZiBXRUJLSVRfRE9NX1VTRV9VTlNU
QUJMRV9BUEkKLQotI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+Ci0jaW5jbHVkZSA8d2Via2l0ZG9t
L1dlYktpdERPTVRleHRUcmFja0N1ZS5oPgotI2luY2x1ZGUgPHdlYmtpdGRvbS93ZWJraXRkb21k
ZWZpbmVzLXVuc3RhYmxlLmg+Ci0KLUdfQkVHSU5fREVDTFMKLQotI2RlZmluZSBXRUJLSVRfRE9N
X1RZUEVfVlRUX0NVRSAgICAgICAgICAgICh3ZWJraXRfZG9tX3Z0dF9jdWVfZ2V0X3R5cGUoKSkK
LSNkZWZpbmUgV0VCS0lUX0RPTV9WVFRfQ1VFKG9iaikgICAgICAgICAgICAoR19UWVBFX0NIRUNL
X0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9ET01fVFlQRV9WVFRfQ1VFLCBXZWJLaXRET01W
VFRDdWUpKQotI2RlZmluZSBXRUJLSVRfRE9NX1ZUVF9DVUVfQ0xBU1Moa2xhc3MpICAgIChHX1RZ
UEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLCAgV0VCS0lUX0RPTV9UWVBFX1ZUVF9DVUUsIFdl
YktpdERPTVZUVEN1ZUNsYXNzKQotI2RlZmluZSBXRUJLSVRfRE9NX0lTX1ZUVF9DVUUob2JqKSAg
ICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX0RPTV9UWVBF
X1ZUVF9DVUUpKQotI2RlZmluZSBXRUJLSVRfRE9NX0lTX1ZUVF9DVUVfQ0xBU1Moa2xhc3MpIChH
X1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX0RPTV9UWVBFX1ZUVF9DVUUp
KQotI2RlZmluZSBXRUJLSVRfRE9NX1ZUVF9DVUVfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5T
VEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgV0VCS0lUX0RPTV9UWVBFX1ZUVF9DVUUsIFdlYktpdERP
TVZUVEN1ZUNsYXNzKSkKLQotc3RydWN0IF9XZWJLaXRET01WVFRDdWUgewotICAgIFdlYktpdERP
TVRleHRUcmFja0N1ZSBwYXJlbnRfaW5zdGFuY2U7Ci19OwotCi1zdHJ1Y3QgX1dlYktpdERPTVZU
VEN1ZUNsYXNzIHsKLSAgICBXZWJLaXRET01UZXh0VHJhY2tDdWVDbGFzcyBwYXJlbnRfY2xhc3M7
Ci19OwotCi1XRUJLSVRfQVBJIEdUeXBlCi13ZWJraXRfZG9tX3Z0dF9jdWVfZ2V0X3R5cGUodm9p
ZCk7Ci0KLS8qKgotICogd2Via2l0X2RvbV92dHRfY3VlX2dldF9jdWVfYXNfaHRtbDoKLSAqIEBz
ZWxmOiBBICNXZWJLaXRET01WVFRDdWUKLSAqCi0gKiBSZXR1cm5zOiAodHJhbnNmZXIgbm9uZSk6
IEEgI1dlYktpdERPTURvY3VtZW50RnJhZ21lbnQKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxl
Ci0qKi8KLVdFQktJVF9BUEkgV2ViS2l0RE9NRG9jdW1lbnRGcmFnbWVudCoKLXdlYmtpdF9kb21f
dnR0X2N1ZV9nZXRfY3VlX2FzX2h0bWwoV2ViS2l0RE9NVlRUQ3VlKiBzZWxmKTsKLQotLyoqCi0g
KiB3ZWJraXRfZG9tX3Z0dF9jdWVfZ2V0X3ZlcnRpY2FsOgotICogQHNlbGY6IEEgI1dlYktpdERP
TVZUVEN1ZQotICoKLSAqIFJldHVybnM6IEEgI2djaGFyCi0gKgotICogU3RhYmlsaXR5OiBVbnN0
YWJsZQotKiovCi1XRUJLSVRfQVBJIGdjaGFyKgotd2Via2l0X2RvbV92dHRfY3VlX2dldF92ZXJ0
aWNhbChXZWJLaXRET01WVFRDdWUqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9kb21fdnR0X2N1
ZV9zZXRfdmVydGljYWw6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NVlRUQ3VlCi0gKiBAdmFsdWU6
IEEgI2djaGFyCi0gKiBAZXJyb3I6ICNHRXJyb3IKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxl
Ci0qKi8KLVdFQktJVF9BUEkgdm9pZAotd2Via2l0X2RvbV92dHRfY3VlX3NldF92ZXJ0aWNhbChX
ZWJLaXRET01WVFRDdWUqIHNlbGYsIGNvbnN0IGdjaGFyKiB2YWx1ZSwgR0Vycm9yKiogZXJyb3Ip
OwotCi0vKioKLSAqIHdlYmtpdF9kb21fdnR0X2N1ZV9nZXRfc25hcF90b19saW5lczoKLSAqIEBz
ZWxmOiBBICNXZWJLaXRET01WVFRDdWUKLSAqCi0gKiBSZXR1cm5zOiBBICNnYm9vbGVhbgotICoK
LSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSBnYm9vbGVhbgotd2Via2l0
X2RvbV92dHRfY3VlX2dldF9zbmFwX3RvX2xpbmVzKFdlYktpdERPTVZUVEN1ZSogc2VsZik7Ci0K
LS8qKgotICogd2Via2l0X2RvbV92dHRfY3VlX3NldF9zbmFwX3RvX2xpbmVzOgotICogQHNlbGY6
IEEgI1dlYktpdERPTVZUVEN1ZQotICogQHZhbHVlOiBBICNnYm9vbGVhbgotICoKLSAqIFN0YWJp
bGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSB2b2lkCi13ZWJraXRfZG9tX3Z0dF9jdWVf
c2V0X3NuYXBfdG9fbGluZXMoV2ViS2l0RE9NVlRUQ3VlKiBzZWxmLCBnYm9vbGVhbiB2YWx1ZSk7
Ci0KLS8qKgotICogd2Via2l0X2RvbV92dHRfY3VlX2dldF9saW5lOgotICogQHNlbGY6IEEgI1dl
YktpdERPTVZUVEN1ZQotICoKLSAqIFJldHVybnM6IEEgI2dkb3VibGUKLSAqCi0gKiBTdGFiaWxp
dHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgZ2RvdWJsZQotd2Via2l0X2RvbV92dHRfY3Vl
X2dldF9saW5lKFdlYktpdERPTVZUVEN1ZSogc2VsZik7Ci0KLS8qKgotICogd2Via2l0X2RvbV92
dHRfY3VlX3NldF9saW5lOgotICogQHNlbGY6IEEgI1dlYktpdERPTVZUVEN1ZQotICogQHZhbHVl
OiBBICNnZG91YmxlCi0gKiBAZXJyb3I6ICNHRXJyb3IKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3Rh
YmxlCi0qKi8KLVdFQktJVF9BUEkgdm9pZAotd2Via2l0X2RvbV92dHRfY3VlX3NldF9saW5lKFdl
YktpdERPTVZUVEN1ZSogc2VsZiwgZ2RvdWJsZSB2YWx1ZSwgR0Vycm9yKiogZXJyb3IpOwotCi0v
KioKLSAqIHdlYmtpdF9kb21fdnR0X2N1ZV9nZXRfcG9zaXRpb246Ci0gKiBAc2VsZjogQSAjV2Vi
S2l0RE9NVlRUQ3VlCi0gKgotICogUmV0dXJuczogQSAjZ2RvdWJsZQotICoKLSAqIFN0YWJpbGl0
eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSBnZG91YmxlCi13ZWJraXRfZG9tX3Z0dF9jdWVf
Z2V0X3Bvc2l0aW9uKFdlYktpdERPTVZUVEN1ZSogc2VsZik7Ci0KLS8qKgotICogd2Via2l0X2Rv
bV92dHRfY3VlX3NldF9wb3NpdGlvbjoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01WVFRDdWUKLSAq
IEB2YWx1ZTogQSAjZ2RvdWJsZQotICogQGVycm9yOiAjR0Vycm9yCi0gKgotICogU3RhYmlsaXR5
OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIHZvaWQKLXdlYmtpdF9kb21fdnR0X2N1ZV9zZXRf
cG9zaXRpb24oV2ViS2l0RE9NVlRUQ3VlKiBzZWxmLCBnZG91YmxlIHZhbHVlLCBHRXJyb3IqKiBl
cnJvcik7Ci0KLS8qKgotICogd2Via2l0X2RvbV92dHRfY3VlX2dldF9zaXplOgotICogQHNlbGY6
IEEgI1dlYktpdERPTVZUVEN1ZQotICoKLSAqIFJldHVybnM6IEEgI2dkb3VibGUKLSAqCi0gKiBT
dGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgZ2RvdWJsZQotd2Via2l0X2RvbV92
dHRfY3VlX2dldF9zaXplKFdlYktpdERPTVZUVEN1ZSogc2VsZik7Ci0KLS8qKgotICogd2Via2l0
X2RvbV92dHRfY3VlX3NldF9zaXplOgotICogQHNlbGY6IEEgI1dlYktpdERPTVZUVEN1ZQotICog
QHZhbHVlOiBBICNnZG91YmxlCi0gKiBAZXJyb3I6ICNHRXJyb3IKLSAqCi0gKiBTdGFiaWxpdHk6
IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgdm9pZAotd2Via2l0X2RvbV92dHRfY3VlX3NldF9z
aXplKFdlYktpdERPTVZUVEN1ZSogc2VsZiwgZ2RvdWJsZSB2YWx1ZSwgR0Vycm9yKiogZXJyb3Ip
OwotCi0vKioKLSAqIHdlYmtpdF9kb21fdnR0X2N1ZV9nZXRfYWxpZ246Ci0gKiBAc2VsZjogQSAj
V2ViS2l0RE9NVlRUQ3VlCi0gKgotICogUmV0dXJuczogQSAjZ2NoYXIKLSAqCi0gKiBTdGFiaWxp
dHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgZ2NoYXIqCi13ZWJraXRfZG9tX3Z0dF9jdWVf
Z2V0X2FsaWduKFdlYktpdERPTVZUVEN1ZSogc2VsZik7Ci0KLS8qKgotICogd2Via2l0X2RvbV92
dHRfY3VlX3NldF9hbGlnbjoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01WVFRDdWUKLSAqIEB2YWx1
ZTogQSAjZ2NoYXIKLSAqIEBlcnJvcjogI0dFcnJvcgotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFi
bGUKLSoqLwotV0VCS0lUX0FQSSB2b2lkCi13ZWJraXRfZG9tX3Z0dF9jdWVfc2V0X2FsaWduKFdl
YktpdERPTVZUVEN1ZSogc2VsZiwgY29uc3QgZ2NoYXIqIHZhbHVlLCBHRXJyb3IqKiBlcnJvcik7
Ci0KLS8qKgotICogd2Via2l0X2RvbV92dHRfY3VlX2dldF90ZXh0OgotICogQHNlbGY6IEEgI1dl
YktpdERPTVZUVEN1ZQotICoKLSAqIFJldHVybnM6IEEgI2djaGFyCi0gKgotICogU3RhYmlsaXR5
OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIGdjaGFyKgotd2Via2l0X2RvbV92dHRfY3VlX2dl
dF90ZXh0KFdlYktpdERPTVZUVEN1ZSogc2VsZik7Ci0KLS8qKgotICogd2Via2l0X2RvbV92dHRf
Y3VlX3NldF90ZXh0OgotICogQHNlbGY6IEEgI1dlYktpdERPTVZUVEN1ZQotICogQHZhbHVlOiBB
ICNnY2hhcgotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSB2b2lk
Ci13ZWJraXRfZG9tX3Z0dF9jdWVfc2V0X3RleHQoV2ViS2l0RE9NVlRUQ3VlKiBzZWxmLCBjb25z
dCBnY2hhciogdmFsdWUpOwotCi0vKioKLSAqIHdlYmtpdF9kb21fdnR0X2N1ZV9nZXRfcmVnaW9u
X2lkOgotICogQHNlbGY6IEEgI1dlYktpdERPTVZUVEN1ZQotICoKLSAqIFJldHVybnM6IEEgI2dj
aGFyCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIGdjaGFyKgot
d2Via2l0X2RvbV92dHRfY3VlX2dldF9yZWdpb25faWQoV2ViS2l0RE9NVlRUQ3VlKiBzZWxmKTsK
LQotLyoqCi0gKiB3ZWJraXRfZG9tX3Z0dF9jdWVfc2V0X3JlZ2lvbl9pZDoKLSAqIEBzZWxmOiBB
ICNXZWJLaXRET01WVFRDdWUKLSAqIEB2YWx1ZTogQSAjZ2NoYXIKLSAqCi0gKiBTdGFiaWxpdHk6
IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgdm9pZAotd2Via2l0X2RvbV92dHRfY3VlX3NldF9y
ZWdpb25faWQoV2ViS2l0RE9NVlRUQ3VlKiBzZWxmLCBjb25zdCBnY2hhciogdmFsdWUpOwotCi1H
X0VORF9ERUNMUwotCi0jZW5kaWYgLyogV0VCS0lUX0RPTV9VU0VfVU5TVEFCTEVfQVBJICovCi0j
ZW5kaWYgLyogV2ViS2l0RE9NVlRUQ3VlX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NVlRUQ3VlUHJp
dmF0ZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3Rr
L0RPTS9XZWJLaXRET01WVFRDdWVQcml2YXRlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDM2YmJhZGUuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01WVFRDdWVQcml2YXRlLmgKKysrIC9kZXYv
bnVsbApAQCAtMSwzNiArMCwwIEBACi0vKgotICogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBX
ZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAqICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJh
dGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQotICoKLSAqICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
Ci0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
Ci0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0g
KiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKLSAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0j
aWZuZGVmIFdlYktpdERPTVZUVEN1ZVByaXZhdGVfaAotI2RlZmluZSBXZWJLaXRET01WVFRDdWVQ
cml2YXRlX2gKLQotI2luY2x1ZGUgPFdlYkNvcmUvVlRUQ3VlLmg+Ci0jaW5jbHVkZSA8d2Via2l0
ZG9tL1dlYktpdERPTVZUVEN1ZS5oPgotI2lmIEVOQUJMRShWSURFT19UUkFDSykKLQotbmFtZXNw
YWNlIFdlYktpdCB7Ci1XZWJLaXRET01WVFRDdWUqIHdyYXBWVFRDdWUoV2ViQ29yZTo6VlRUQ3Vl
Kik7Ci1XZWJLaXRET01WVFRDdWUqIGtpdChXZWJDb3JlOjpWVFRDdWUqKTsKLVdlYkNvcmU6OlZU
VEN1ZSogY29yZShXZWJLaXRET01WVFRDdWUqKTsKLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0j
ZW5kaWYgLyogRU5BQkxFKFZJREVPX1RSQUNLKSAqLwotCi0jZW5kaWYgLyogV2ViS2l0RE9NVlRU
Q3VlUHJpdmF0ZV9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVZhbGlkaXR5U3RhdGUuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRE
T01WYWxpZGl0eVN0YXRlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjQ2YzVk
Ni4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9ndGsvRE9NL1dlYktpdERPTVZhbGlkaXR5U3RhdGUuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsMzUxICswLDAgQEAKLS8qCi0gKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBv
cGVuIHNvdXJjZSBwcm9qZWN0LgotICogIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkg
Z2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICogIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJLaXRET01WYWxpZGl0eVN0YXRlLmgiCi0KLSNpbmNs
dWRlIDxXZWJDb3JlL0NTU0ltcG9ydFJ1bGUuaD4KLSNpbmNsdWRlICJET01PYmplY3RDYWNoZS5o
IgotI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0V4Y2Vw
dGlvbkNvZGUuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0V4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbi5o
PgotI2luY2x1ZGUgPFdlYkNvcmUvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmg+Ci0jaW5jbHVkZSAi
V2ViS2l0RE9NUHJpdmF0ZS5oIgotI2luY2x1ZGUgIldlYktpdERPTVZhbGlkaXR5U3RhdGVQcml2
YXRlLmgiCi0jaW5jbHVkZSAiQ29udmVydFRvVVRGOFN0cmluZy5oIgotI2luY2x1ZGUgPHd0Zi9H
ZXRQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLSNkZWZpbmUgV0VCS0lUX0RPTV9W
QUxJRElUWV9TVEFURV9HRVRfUFJJVkFURShvYmopIEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFU
RShvYmosIFdFQktJVF9ET01fVFlQRV9WQUxJRElUWV9TVEFURSwgV2ViS2l0RE9NVmFsaWRpdHlT
dGF0ZVByaXZhdGUpCi0KLXR5cGVkZWYgc3RydWN0IF9XZWJLaXRET01WYWxpZGl0eVN0YXRlUHJp
dmF0ZSB7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlZhbGlkaXR5U3RhdGU+IGNvcmVPYmplY3Q7Ci19
IFdlYktpdERPTVZhbGlkaXR5U3RhdGVQcml2YXRlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQot
V2ViS2l0RE9NVmFsaWRpdHlTdGF0ZSoga2l0KFdlYkNvcmU6OlZhbGlkaXR5U3RhdGUqIG9iaikK
LXsKLSAgICBpZiAoIW9iaikKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBpZiAoZ3BvaW50ZXIg
cmV0ID0gRE9NT2JqZWN0Q2FjaGU6OmdldChvYmopKQotICAgICAgICByZXR1cm4gV0VCS0lUX0RP
TV9WQUxJRElUWV9TVEFURShyZXQpOwotCi0gICAgcmV0dXJuIHdyYXBWYWxpZGl0eVN0YXRlKG9i
aik7Ci19Ci0KLVdlYkNvcmU6OlZhbGlkaXR5U3RhdGUqIGNvcmUoV2ViS2l0RE9NVmFsaWRpdHlT
dGF0ZSogcmVxdWVzdCkKLXsKLSAgICByZXR1cm4gcmVxdWVzdCA/IHN0YXRpY19jYXN0PFdlYkNv
cmU6OlZhbGlkaXR5U3RhdGUqPihXRUJLSVRfRE9NX09CSkVDVChyZXF1ZXN0KS0+Y29yZU9iamVj
dCkgOiAwOwotfQotCi1XZWJLaXRET01WYWxpZGl0eVN0YXRlKiB3cmFwVmFsaWRpdHlTdGF0ZShX
ZWJDb3JlOjpWYWxpZGl0eVN0YXRlKiBjb3JlT2JqZWN0KQotewotICAgIEFTU0VSVChjb3JlT2Jq
ZWN0KTsKLSAgICByZXR1cm4gV0VCS0lUX0RPTV9WQUxJRElUWV9TVEFURShnX29iamVjdF9uZXco
V0VCS0lUX0RPTV9UWVBFX1ZBTElESVRZX1NUQVRFLCAiY29yZS1vYmplY3QiLCBjb3JlT2JqZWN0
LCBudWxscHRyKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi1HX0RFRklORV9UWVBF
KFdlYktpdERPTVZhbGlkaXR5U3RhdGUsIHdlYmtpdF9kb21fdmFsaWRpdHlfc3RhdGUsIFdFQktJ
VF9ET01fVFlQRV9PQkpFQ1QpCi0KLWVudW0gewotICAgIFBST1BfMCwKLSAgICBQUk9QX1ZBTFVF
X01JU1NJTkcsCi0gICAgUFJPUF9UWVBFX01JU01BVENILAotICAgIFBST1BfUEFUVEVSTl9NSVNN
QVRDSCwKLSAgICBQUk9QX1RPT19MT05HLAotICAgIFBST1BfUkFOR0VfVU5ERVJGTE9XLAotICAg
IFBST1BfUkFOR0VfT1ZFUkZMT1csCi0gICAgUFJPUF9TVEVQX01JU01BVENILAotICAgIFBST1Bf
QkFEX0lOUFVULAotICAgIFBST1BfQ1VTVE9NX0VSUk9SLAotICAgIFBST1BfVkFMSUQsCi19Owot
Ci1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3ZhbGlkaXR5X3N0YXRlX2ZpbmFsaXplKEdPYmplY3Qq
IG9iamVjdCkKLXsKLSAgICBXZWJLaXRET01WYWxpZGl0eVN0YXRlUHJpdmF0ZSogcHJpdiA9IFdF
QktJVF9ET01fVkFMSURJVFlfU1RBVEVfR0VUX1BSSVZBVEUob2JqZWN0KTsKLQotICAgIFdlYktp
dDo6RE9NT2JqZWN0Q2FjaGU6OmZvcmdldChwcml2LT5jb3JlT2JqZWN0LmdldCgpKTsKLQotICAg
IHByaXYtPn5XZWJLaXRET01WYWxpZGl0eVN0YXRlUHJpdmF0ZSgpOwotICAgIEdfT0JKRUNUX0NM
QVNTKHdlYmtpdF9kb21fdmFsaWRpdHlfc3RhdGVfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2Jq
ZWN0KTsKLX0KLQotc3RhdGljIHZvaWQgd2Via2l0X2RvbV92YWxpZGl0eV9zdGF0ZV9nZXRfcHJv
cGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wZXJ0eUlkLCBHVmFsdWUqIHZhbHVlLCBH
UGFyYW1TcGVjKiBwc3BlYykKLXsKLSAgICBXZWJLaXRET01WYWxpZGl0eVN0YXRlKiBzZWxmID0g
V0VCS0lUX0RPTV9WQUxJRElUWV9TVEFURShvYmplY3QpOwotCi0gICAgc3dpdGNoIChwcm9wZXJ0
eUlkKSB7Ci0gICAgY2FzZSBQUk9QX1ZBTFVFX01JU1NJTkc6Ci0gICAgICAgIGdfdmFsdWVfc2V0
X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF9kb21fdmFsaWRpdHlfc3RhdGVfZ2V0X3ZhbHVlX21pc3Np
bmcoc2VsZikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfVFlQRV9NSVNNQVRDSDoK
LSAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X2RvbV92YWxpZGl0eV9z
dGF0ZV9nZXRfdHlwZV9taXNtYXRjaChzZWxmKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
UFJPUF9QQVRURVJOX01JU01BVENIOgotICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVl
LCB3ZWJraXRfZG9tX3ZhbGlkaXR5X3N0YXRlX2dldF9wYXR0ZXJuX21pc21hdGNoKHNlbGYpKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX1RPT19MT05HOgotICAgICAgICBnX3ZhbHVl
X3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfZG9tX3ZhbGlkaXR5X3N0YXRlX2dldF90b29fbG9u
ZyhzZWxmKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9SQU5HRV9VTkRFUkZMT1c6
Ci0gICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF9kb21fdmFsaWRpdHlf
c3RhdGVfZ2V0X3JhbmdlX3VuZGVyZmxvdyhzZWxmKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgUFJPUF9SQU5HRV9PVkVSRkxPVzoKLSAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1
ZSwgd2Via2l0X2RvbV92YWxpZGl0eV9zdGF0ZV9nZXRfcmFuZ2Vfb3ZlcmZsb3coc2VsZikpOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfU1RFUF9NSVNNQVRDSDoKLSAgICAgICAgZ192
YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X2RvbV92YWxpZGl0eV9zdGF0ZV9nZXRfc3Rl
cF9taXNtYXRjaChzZWxmKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9CQURfSU5Q
VVQ6Ci0gICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF9kb21fdmFsaWRp
dHlfc3RhdGVfZ2V0X2JhZF9pbnB1dChzZWxmKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
UFJPUF9DVVNUT01fRVJST1I6Ci0gICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdl
YmtpdF9kb21fdmFsaWRpdHlfc3RhdGVfZ2V0X2N1c3RvbV9lcnJvcihzZWxmKSk7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgUFJPUF9WQUxJRDoKLSAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVh
bih2YWx1ZSwgd2Via2l0X2RvbV92YWxpZGl0eV9zdGF0ZV9nZXRfdmFsaWQoc2VsZikpOwotICAg
ICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURf
UFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wZXJ0eUlkLCBwc3BlYyk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIH0KLX0KLQotc3RhdGljIEdPYmplY3QqIHdlYmtpdF9kb21fdmFsaWRpdHlfc3RhdGVfY29u
c3RydWN0b3IoR1R5cGUgdHlwZSwgZ3VpbnQgY29uc3RydWN0UHJvcGVydGllc0NvdW50LCBHT2Jq
ZWN0Q29uc3RydWN0UGFyYW0qIGNvbnN0cnVjdFByb3BlcnRpZXMpCi17Ci0gICAgR09iamVjdCog
b2JqZWN0ID0gR19PQkpFQ1RfQ0xBU1Mod2Via2l0X2RvbV92YWxpZGl0eV9zdGF0ZV9wYXJlbnRf
Y2xhc3MpLT5jb25zdHJ1Y3Rvcih0eXBlLCBjb25zdHJ1Y3RQcm9wZXJ0aWVzQ291bnQsIGNvbnN0
cnVjdFByb3BlcnRpZXMpOwotCi0gICAgV2ViS2l0RE9NVmFsaWRpdHlTdGF0ZVByaXZhdGUqIHBy
aXYgPSBXRUJLSVRfRE9NX1ZBTElESVRZX1NUQVRFX0dFVF9QUklWQVRFKG9iamVjdCk7Ci0gICAg
cHJpdi0+Y29yZU9iamVjdCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OlZhbGlkaXR5U3RhdGUqPihX
RUJLSVRfRE9NX09CSkVDVChvYmplY3QpLT5jb3JlT2JqZWN0KTsKLSAgICBXZWJLaXQ6OkRPTU9i
amVjdENhY2hlOjpwdXQocHJpdi0+Y29yZU9iamVjdC5nZXQoKSwgb2JqZWN0KTsKLQotICAgIHJl
dHVybiBvYmplY3Q7Ci19Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdmFsaWRpdHlfc3RhdGVf
Y2xhc3NfaW5pdChXZWJLaXRET01WYWxpZGl0eVN0YXRlQ2xhc3MqIHJlcXVlc3RDbGFzcykKLXsK
LSAgICBHT2JqZWN0Q2xhc3MqIGdvYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKHJlcXVlc3RD
bGFzcyk7Ci0gICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKGdvYmplY3RDbGFzcywgc2l6ZW9m
KFdlYktpdERPTVZhbGlkaXR5U3RhdGVQcml2YXRlKSk7Ci0gICAgZ29iamVjdENsYXNzLT5jb25z
dHJ1Y3RvciA9IHdlYmtpdF9kb21fdmFsaWRpdHlfc3RhdGVfY29uc3RydWN0b3I7Ci0gICAgZ29i
amVjdENsYXNzLT5maW5hbGl6ZSA9IHdlYmtpdF9kb21fdmFsaWRpdHlfc3RhdGVfZmluYWxpemU7
Ci0gICAgZ29iamVjdENsYXNzLT5nZXRfcHJvcGVydHkgPSB3ZWJraXRfZG9tX3ZhbGlkaXR5X3N0
YXRlX2dldF9wcm9wZXJ0eTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHko
Ci0gICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9WQUxVRV9NSVNTSU5HLAotICAg
ICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigKLSAgICAgICAgICAgICJ2YWx1ZS1taXNzaW5nIiwK
LSAgICAgICAgICAgICJWYWxpZGl0eVN0YXRlOnZhbHVlLW1pc3NpbmciLAotICAgICAgICAgICAg
InJlYWQtb25seSBnYm9vbGVhbiBWYWxpZGl0eVN0YXRlOnZhbHVlLW1pc3NpbmciLAotICAgICAg
ICAgICAgRkFMU0UsCi0gICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKLQotICAg
IGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywK
LSAgICAgICAgUFJPUF9UWVBFX01JU01BVENILAotICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVh
bigKLSAgICAgICAgICAgICJ0eXBlLW1pc21hdGNoIiwKLSAgICAgICAgICAgICJWYWxpZGl0eVN0
YXRlOnR5cGUtbWlzbWF0Y2giLAotICAgICAgICAgICAgInJlYWQtb25seSBnYm9vbGVhbiBWYWxp
ZGl0eVN0YXRlOnR5cGUtbWlzbWF0Y2giLAotICAgICAgICAgICAgRkFMU0UsCi0gICAgICAgICAg
ICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxf
cHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9QQVRURVJOX01J
U01BVENILAotICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigKLSAgICAgICAgICAgICJwYXR0
ZXJuLW1pc21hdGNoIiwKLSAgICAgICAgICAgICJWYWxpZGl0eVN0YXRlOnBhdHRlcm4tbWlzbWF0
Y2giLAotICAgICAgICAgICAgInJlYWQtb25seSBnYm9vbGVhbiBWYWxpZGl0eVN0YXRlOnBhdHRl
cm4tbWlzbWF0Y2giLAotICAgICAgICAgICAgRkFMU0UsCi0gICAgICAgICAgICBXRUJLSVRfUEFS
QU1fUkVBREFCTEUpKTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0g
ICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9UT09fTE9ORywKLSAgICAgICAgZ19w
YXJhbV9zcGVjX2Jvb2xlYW4oCi0gICAgICAgICAgICAidG9vLWxvbmciLAotICAgICAgICAgICAg
IlZhbGlkaXR5U3RhdGU6dG9vLWxvbmciLAotICAgICAgICAgICAgInJlYWQtb25seSBnYm9vbGVh
biBWYWxpZGl0eVN0YXRlOnRvby1sb25nIiwKLSAgICAgICAgICAgIEZBTFNFLAotICAgICAgICAg
ICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7Ci0KLSAgICBnX29iamVjdF9jbGFzc19pbnN0YWxs
X3Byb3BlcnR5KAotICAgICAgICBnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBST1BfUkFOR0VfVU5E
RVJGTE9XLAotICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigKLSAgICAgICAgICAgICJyYW5n
ZS11bmRlcmZsb3ciLAotICAgICAgICAgICAgIlZhbGlkaXR5U3RhdGU6cmFuZ2UtdW5kZXJmbG93
IiwKLSAgICAgICAgICAgICJyZWFkLW9ubHkgZ2Jvb2xlYW4gVmFsaWRpdHlTdGF0ZTpyYW5nZS11
bmRlcmZsb3ciLAotICAgICAgICAgICAgRkFMU0UsCi0gICAgICAgICAgICBXRUJLSVRfUEFSQU1f
UkVBREFCTEUpKTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAg
ICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9SQU5HRV9PVkVSRkxPVywKLSAgICAgICAg
Z19wYXJhbV9zcGVjX2Jvb2xlYW4oCi0gICAgICAgICAgICAicmFuZ2Utb3ZlcmZsb3ciLAotICAg
ICAgICAgICAgIlZhbGlkaXR5U3RhdGU6cmFuZ2Utb3ZlcmZsb3ciLAotICAgICAgICAgICAgInJl
YWQtb25seSBnYm9vbGVhbiBWYWxpZGl0eVN0YXRlOnJhbmdlLW92ZXJmbG93IiwKLSAgICAgICAg
ICAgIEZBTFNFLAotICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7Ci0KLSAgICBn
X29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAotICAgICAgICBnb2JqZWN0Q2xhc3MsCi0g
ICAgICAgIFBST1BfU1RFUF9NSVNNQVRDSCwKLSAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4o
Ci0gICAgICAgICAgICAic3RlcC1taXNtYXRjaCIsCi0gICAgICAgICAgICAiVmFsaWRpdHlTdGF0
ZTpzdGVwLW1pc21hdGNoIiwKLSAgICAgICAgICAgICJyZWFkLW9ubHkgZ2Jvb2xlYW4gVmFsaWRp
dHlTdGF0ZTpzdGVwLW1pc21hdGNoIiwKLSAgICAgICAgICAgIEZBTFNFLAotICAgICAgICAgICAg
V0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7Ci0KLSAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3By
b3BlcnR5KAotICAgICAgICBnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBST1BfQkFEX0lOUFVULAot
ICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigKLSAgICAgICAgICAgICJiYWQtaW5wdXQiLAot
ICAgICAgICAgICAgIlZhbGlkaXR5U3RhdGU6YmFkLWlucHV0IiwKLSAgICAgICAgICAgICJyZWFk
LW9ubHkgZ2Jvb2xlYW4gVmFsaWRpdHlTdGF0ZTpiYWQtaW5wdXQiLAotICAgICAgICAgICAgRkFM
U0UsCi0gICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKLQotICAgIGdfb2JqZWN0
X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAg
UFJPUF9DVVNUT01fRVJST1IsCi0gICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKAotICAgICAg
ICAgICAgImN1c3RvbS1lcnJvciIsCi0gICAgICAgICAgICAiVmFsaWRpdHlTdGF0ZTpjdXN0b20t
ZXJyb3IiLAotICAgICAgICAgICAgInJlYWQtb25seSBnYm9vbGVhbiBWYWxpZGl0eVN0YXRlOmN1
c3RvbS1lcnJvciIsCi0gICAgICAgICAgICBGQUxTRSwKLSAgICAgICAgICAgIFdFQktJVF9QQVJB
TV9SRUFEQUJMRSkpOwotCi0gICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAg
ICAgICAgZ29iamVjdENsYXNzLAotICAgICAgICBQUk9QX1ZBTElELAotICAgICAgICBnX3BhcmFt
X3NwZWNfYm9vbGVhbigKLSAgICAgICAgICAgICJ2YWxpZCIsCi0gICAgICAgICAgICAiVmFsaWRp
dHlTdGF0ZTp2YWxpZCIsCi0gICAgICAgICAgICAicmVhZC1vbmx5IGdib29sZWFuIFZhbGlkaXR5
U3RhdGU6dmFsaWQiLAotICAgICAgICAgICAgRkFMU0UsCi0gICAgICAgICAgICBXRUJLSVRfUEFS
QU1fUkVBREFCTEUpKTsKLQotfQotCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3ZhbGlkaXR5X3N0
YXRlX2luaXQoV2ViS2l0RE9NVmFsaWRpdHlTdGF0ZSogcmVxdWVzdCkKLXsKLSAgICBXZWJLaXRE
T01WYWxpZGl0eVN0YXRlUHJpdmF0ZSogcHJpdiA9IFdFQktJVF9ET01fVkFMSURJVFlfU1RBVEVf
R0VUX1BSSVZBVEUocmVxdWVzdCk7Ci0gICAgbmV3IChwcml2KSBXZWJLaXRET01WYWxpZGl0eVN0
YXRlUHJpdmF0ZSgpOwotfQotCi1nYm9vbGVhbiB3ZWJraXRfZG9tX3ZhbGlkaXR5X3N0YXRlX2dl
dF92YWx1ZV9taXNzaW5nKFdlYktpdERPTVZhbGlkaXR5U3RhdGUqIHNlbGYpCi17Ci0gICAgV2Vi
Q29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKFdFQktJVF9ET01fSVNfVkFMSURJVFlfU1RBVEUoc2VsZiksIEZBTFNFKTsKLSAgICBXZWJD
b3JlOjpWYWxpZGl0eVN0YXRlKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdib29s
ZWFuIHJlc3VsdCA9IGl0ZW0tPnZhbHVlTWlzc2luZygpOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci0KLWdib29sZWFuIHdlYmtpdF9kb21fdmFsaWRpdHlfc3RhdGVfZ2V0X3R5cGVfbWlzbWF0Y2go
V2ViS2l0RE9NVmFsaWRpdHlTdGF0ZSogc2VsZikKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJl
YWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9J
U19WQUxJRElUWV9TVEFURShzZWxmKSwgRkFMU0UpOwotICAgIFdlYkNvcmU6OlZhbGlkaXR5U3Rh
dGUqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ2Jvb2xlYW4gcmVzdWx0ID0gaXRl
bS0+dHlwZU1pc21hdGNoKCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotZ2Jvb2xlYW4gd2Vi
a2l0X2RvbV92YWxpZGl0eV9zdGF0ZV9nZXRfcGF0dGVybl9taXNtYXRjaChXZWJLaXRET01WYWxp
ZGl0eVN0YXRlKiBzZWxmKQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBz
dGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX1ZBTElESVRZX1NU
QVRFKHNlbGYpLCBGQUxTRSk7Ci0gICAgV2ViQ29yZTo6VmFsaWRpdHlTdGF0ZSogaXRlbSA9IFdl
YktpdDo6Y29yZShzZWxmKTsKLSAgICBnYm9vbGVhbiByZXN1bHQgPSBpdGVtLT5wYXR0ZXJuTWlz
bWF0Y2goKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1nYm9vbGVhbiB3ZWJraXRfZG9tX3Zh
bGlkaXR5X3N0YXRlX2dldF90b29fbG9uZyhXZWJLaXRET01WYWxpZGl0eVN0YXRlKiBzZWxmKQot
ewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVy
bl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX1ZBTElESVRZX1NUQVRFKHNlbGYpLCBGQUxTRSk7
Ci0gICAgV2ViQ29yZTo6VmFsaWRpdHlTdGF0ZSogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsK
LSAgICBnYm9vbGVhbiByZXN1bHQgPSBpdGVtLT50b29Mb25nKCk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLQotZ2Jvb2xlYW4gd2Via2l0X2RvbV92YWxpZGl0eV9zdGF0ZV9nZXRfcmFuZ2VfdW5k
ZXJmbG93KFdlYktpdERPTVZhbGlkaXR5U3RhdGUqIHNlbGYpCi17Ci0gICAgV2ViQ29yZTo6SlNN
YWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJ
VF9ET01fSVNfVkFMSURJVFlfU1RBVEUoc2VsZiksIEZBTFNFKTsKLSAgICBXZWJDb3JlOjpWYWxp
ZGl0eVN0YXRlKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdib29sZWFuIHJlc3Vs
dCA9IGl0ZW0tPnJhbmdlVW5kZXJmbG93KCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotZ2Jv
b2xlYW4gd2Via2l0X2RvbV92YWxpZGl0eV9zdGF0ZV9nZXRfcmFuZ2Vfb3ZlcmZsb3coV2ViS2l0
RE9NVmFsaWRpdHlTdGF0ZSogc2VsZikKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxs
U3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19WQUxJ
RElUWV9TVEFURShzZWxmKSwgRkFMU0UpOwotICAgIFdlYkNvcmU6OlZhbGlkaXR5U3RhdGUqIGl0
ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ2Jvb2xlYW4gcmVzdWx0ID0gaXRlbS0+cmFu
Z2VPdmVyZmxvdygpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLWdib29sZWFuIHdlYmtpdF9k
b21fdmFsaWRpdHlfc3RhdGVfZ2V0X3N0ZXBfbWlzbWF0Y2goV2ViS2l0RE9NVmFsaWRpdHlTdGF0
ZSogc2VsZikKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0g
ICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19WQUxJRElUWV9TVEFURShzZWxm
KSwgRkFMU0UpOwotICAgIFdlYkNvcmU6OlZhbGlkaXR5U3RhdGUqIGl0ZW0gPSBXZWJLaXQ6OmNv
cmUoc2VsZik7Ci0gICAgZ2Jvb2xlYW4gcmVzdWx0ID0gaXRlbS0+c3RlcE1pc21hdGNoKCk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotZ2Jvb2xlYW4gd2Via2l0X2RvbV92YWxpZGl0eV9zdGF0
ZV9nZXRfYmFkX2lucHV0KFdlYktpdERPTVZhbGlkaXR5U3RhdGUqIHNlbGYpCi17Ci0gICAgV2Vi
Q29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKFdFQktJVF9ET01fSVNfVkFMSURJVFlfU1RBVEUoc2VsZiksIEZBTFNFKTsKLSAgICBXZWJD
b3JlOjpWYWxpZGl0eVN0YXRlKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdib29s
ZWFuIHJlc3VsdCA9IGl0ZW0tPmJhZElucHV0KCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQot
Z2Jvb2xlYW4gd2Via2l0X2RvbV92YWxpZGl0eV9zdGF0ZV9nZXRfY3VzdG9tX2Vycm9yKFdlYktp
dERPTVZhbGlkaXR5U3RhdGUqIHNlbGYpCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVs
bFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfVkFM
SURJVFlfU1RBVEUoc2VsZiksIEZBTFNFKTsKLSAgICBXZWJDb3JlOjpWYWxpZGl0eVN0YXRlKiBp
dGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdib29sZWFuIHJlc3VsdCA9IGl0ZW0tPmN1
c3RvbUVycm9yKCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotZ2Jvb2xlYW4gd2Via2l0X2Rv
bV92YWxpZGl0eV9zdGF0ZV9nZXRfdmFsaWQoV2ViS2l0RE9NVmFsaWRpdHlTdGF0ZSogc2VsZikK
LXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1
cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19WQUxJRElUWV9TVEFURShzZWxmKSwgRkFMU0Up
OwotICAgIFdlYkNvcmU6OlZhbGlkaXR5U3RhdGUqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7
Ci0gICAgZ2Jvb2xlYW4gcmVzdWx0ID0gaXRlbS0+dmFsaWQoKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVZhbGlkaXR5U3RhdGUuaCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NVmFsaWRpdHlT
dGF0ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNDYxOWNhLi4wMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00v
V2ViS2l0RE9NVmFsaWRpdHlTdGF0ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTYzICswLDAgQEAK
LS8qCi0gKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9q
ZWN0LgotICogIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGlu
Z3MucGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICog
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgV2ViS2l0RE9NVmFsaWRp
dHlTdGF0ZV9oCi0jZGVmaW5lIFdlYktpdERPTVZhbGlkaXR5U3RhdGVfaAotCi0jaWZkZWYgV0VC
S0lUX0RPTV9VU0VfVU5TVEFCTEVfQVBJCi0KLSNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgotI2lu
Y2x1ZGUgPHdlYmtpdGRvbS9XZWJLaXRET01PYmplY3QuaD4KLSNpbmNsdWRlIDx3ZWJraXRkb20v
d2Via2l0ZG9tZGVmaW5lcy11bnN0YWJsZS5oPgotCi1HX0JFR0lOX0RFQ0xTCi0KLSNkZWZpbmUg
V0VCS0lUX0RPTV9UWVBFX1ZBTElESVRZX1NUQVRFICAgICAgICAgICAgKHdlYmtpdF9kb21fdmFs
aWRpdHlfc3RhdGVfZ2V0X3R5cGUoKSkKLSNkZWZpbmUgV0VCS0lUX0RPTV9WQUxJRElUWV9TVEFU
RShvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBXRUJL
SVRfRE9NX1RZUEVfVkFMSURJVFlfU1RBVEUsIFdlYktpdERPTVZhbGlkaXR5U3RhdGUpKQotI2Rl
ZmluZSBXRUJLSVRfRE9NX1ZBTElESVRZX1NUQVRFX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NI
RUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJVF9ET01fVFlQRV9WQUxJRElUWV9TVEFURSwg
V2ViS2l0RE9NVmFsaWRpdHlTdGF0ZUNsYXNzKQotI2RlZmluZSBXRUJLSVRfRE9NX0lTX1ZBTElE
SVRZX1NUQVRFKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiks
IFdFQktJVF9ET01fVFlQRV9WQUxJRElUWV9TVEFURSkpCi0jZGVmaW5lIFdFQktJVF9ET01fSVNf
VkFMSURJVFlfU1RBVEVfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xh
c3MpLCAgV0VCS0lUX0RPTV9UWVBFX1ZBTElESVRZX1NUQVRFKSkKLSNkZWZpbmUgV0VCS0lUX0RP
TV9WQUxJRElUWV9TVEFURV9HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xB
U1MoKG9iaiksICBXRUJLSVRfRE9NX1RZUEVfVkFMSURJVFlfU1RBVEUsIFdlYktpdERPTVZhbGlk
aXR5U3RhdGVDbGFzcykpCi0KLXN0cnVjdCBfV2ViS2l0RE9NVmFsaWRpdHlTdGF0ZSB7Ci0gICAg
V2ViS2l0RE9NT2JqZWN0IHBhcmVudF9pbnN0YW5jZTsKLX07Ci0KLXN0cnVjdCBfV2ViS2l0RE9N
VmFsaWRpdHlTdGF0ZUNsYXNzIHsKLSAgICBXZWJLaXRET01PYmplY3RDbGFzcyBwYXJlbnRfY2xh
c3M7Ci19OwotCi1XRUJLSVRfQVBJIEdUeXBlCi13ZWJraXRfZG9tX3ZhbGlkaXR5X3N0YXRlX2dl
dF90eXBlKHZvaWQpOwotCi0vKioKLSAqIHdlYmtpdF9kb21fdmFsaWRpdHlfc3RhdGVfZ2V0X3Zh
bHVlX21pc3Npbmc6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NVmFsaWRpdHlTdGF0ZQotICoKLSAq
IFJldHVybnM6IEEgI2dib29sZWFuCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1X
RUJLSVRfQVBJIGdib29sZWFuCi13ZWJraXRfZG9tX3ZhbGlkaXR5X3N0YXRlX2dldF92YWx1ZV9t
aXNzaW5nKFdlYktpdERPTVZhbGlkaXR5U3RhdGUqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9k
b21fdmFsaWRpdHlfc3RhdGVfZ2V0X3R5cGVfbWlzbWF0Y2g6Ci0gKiBAc2VsZjogQSAjV2ViS2l0
RE9NVmFsaWRpdHlTdGF0ZQotICoKLSAqIFJldHVybnM6IEEgI2dib29sZWFuCi0gKgotICogU3Rh
YmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIGdib29sZWFuCi13ZWJraXRfZG9tX3Zh
bGlkaXR5X3N0YXRlX2dldF90eXBlX21pc21hdGNoKFdlYktpdERPTVZhbGlkaXR5U3RhdGUqIHNl
bGYpOwotCi0vKioKLSAqIHdlYmtpdF9kb21fdmFsaWRpdHlfc3RhdGVfZ2V0X3BhdHRlcm5fbWlz
bWF0Y2g6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NVmFsaWRpdHlTdGF0ZQotICoKLSAqIFJldHVy
bnM6IEEgI2dib29sZWFuCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRf
QVBJIGdib29sZWFuCi13ZWJraXRfZG9tX3ZhbGlkaXR5X3N0YXRlX2dldF9wYXR0ZXJuX21pc21h
dGNoKFdlYktpdERPTVZhbGlkaXR5U3RhdGUqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9kb21f
dmFsaWRpdHlfc3RhdGVfZ2V0X3Rvb19sb25nOgotICogQHNlbGY6IEEgI1dlYktpdERPTVZhbGlk
aXR5U3RhdGUKLSAqCi0gKiBSZXR1cm5zOiBBICNnYm9vbGVhbgotICoKLSAqIFN0YWJpbGl0eTog
VW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSBnYm9vbGVhbgotd2Via2l0X2RvbV92YWxpZGl0eV9z
dGF0ZV9nZXRfdG9vX2xvbmcoV2ViS2l0RE9NVmFsaWRpdHlTdGF0ZSogc2VsZik7Ci0KLS8qKgot
ICogd2Via2l0X2RvbV92YWxpZGl0eV9zdGF0ZV9nZXRfcmFuZ2VfdW5kZXJmbG93OgotICogQHNl
bGY6IEEgI1dlYktpdERPTVZhbGlkaXR5U3RhdGUKLSAqCi0gKiBSZXR1cm5zOiBBICNnYm9vbGVh
bgotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSBnYm9vbGVhbgot
d2Via2l0X2RvbV92YWxpZGl0eV9zdGF0ZV9nZXRfcmFuZ2VfdW5kZXJmbG93KFdlYktpdERPTVZh
bGlkaXR5U3RhdGUqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9kb21fdmFsaWRpdHlfc3RhdGVf
Z2V0X3JhbmdlX292ZXJmbG93OgotICogQHNlbGY6IEEgI1dlYktpdERPTVZhbGlkaXR5U3RhdGUK
LSAqCi0gKiBSZXR1cm5zOiBBICNnYm9vbGVhbgotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUK
LSoqLwotV0VCS0lUX0FQSSBnYm9vbGVhbgotd2Via2l0X2RvbV92YWxpZGl0eV9zdGF0ZV9nZXRf
cmFuZ2Vfb3ZlcmZsb3coV2ViS2l0RE9NVmFsaWRpdHlTdGF0ZSogc2VsZik7Ci0KLS8qKgotICog
d2Via2l0X2RvbV92YWxpZGl0eV9zdGF0ZV9nZXRfc3RlcF9taXNtYXRjaDoKLSAqIEBzZWxmOiBB
ICNXZWJLaXRET01WYWxpZGl0eVN0YXRlCi0gKgotICogUmV0dXJuczogQSAjZ2Jvb2xlYW4KLSAq
Ci0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgZ2Jvb2xlYW4KLXdlYmtp
dF9kb21fdmFsaWRpdHlfc3RhdGVfZ2V0X3N0ZXBfbWlzbWF0Y2goV2ViS2l0RE9NVmFsaWRpdHlT
dGF0ZSogc2VsZik7Ci0KLS8qKgotICogd2Via2l0X2RvbV92YWxpZGl0eV9zdGF0ZV9nZXRfYmFk
X2lucHV0OgotICogQHNlbGY6IEEgI1dlYktpdERPTVZhbGlkaXR5U3RhdGUKLSAqCi0gKiBSZXR1
cm5zOiBBICNnYm9vbGVhbgotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lU
X0FQSSBnYm9vbGVhbgotd2Via2l0X2RvbV92YWxpZGl0eV9zdGF0ZV9nZXRfYmFkX2lucHV0KFdl
YktpdERPTVZhbGlkaXR5U3RhdGUqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9kb21fdmFsaWRp
dHlfc3RhdGVfZ2V0X2N1c3RvbV9lcnJvcjoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01WYWxpZGl0
eVN0YXRlCi0gKgotICogUmV0dXJuczogQSAjZ2Jvb2xlYW4KLSAqCi0gKiBTdGFiaWxpdHk6IFVu
c3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgZ2Jvb2xlYW4KLXdlYmtpdF9kb21fdmFsaWRpdHlfc3Rh
dGVfZ2V0X2N1c3RvbV9lcnJvcihXZWJLaXRET01WYWxpZGl0eVN0YXRlKiBzZWxmKTsKLQotLyoq
Ci0gKiB3ZWJraXRfZG9tX3ZhbGlkaXR5X3N0YXRlX2dldF92YWxpZDoKLSAqIEBzZWxmOiBBICNX
ZWJLaXRET01WYWxpZGl0eVN0YXRlCi0gKgotICogUmV0dXJuczogQSAjZ2Jvb2xlYW4KLSAqCi0g
KiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgZ2Jvb2xlYW4KLXdlYmtpdF9k
b21fdmFsaWRpdHlfc3RhdGVfZ2V0X3ZhbGlkKFdlYktpdERPTVZhbGlkaXR5U3RhdGUqIHNlbGYp
OwotCi1HX0VORF9ERUNMUwotCi0jZW5kaWYgLyogV0VCS0lUX0RPTV9VU0VfVU5TVEFCTEVfQVBJ
ICovCi0jZW5kaWYgLyogV2ViS2l0RE9NVmFsaWRpdHlTdGF0ZV9oICovCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktp
dERPTVZhbGlkaXR5U3RhdGVQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVZhbGlkaXR5U3RhdGVQcml2YXRlLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFiNjhkZjQuLjAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRE
T01WYWxpZGl0eVN0YXRlUHJpdmF0ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAot
LyoKLSAqICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2pl
Y3QuCi0gKiAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5n
cy5wbC4gRE8gTk9UIE1PRElGWSEKLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAg
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiAgQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBXZWJLaXRET01WYWxpZGl0
eVN0YXRlUHJpdmF0ZV9oCi0jZGVmaW5lIFdlYktpdERPTVZhbGlkaXR5U3RhdGVQcml2YXRlX2gK
LQotI2luY2x1ZGUgPFdlYkNvcmUvVmFsaWRpdHlTdGF0ZS5oPgotI2luY2x1ZGUgPHdlYmtpdGRv
bS9XZWJLaXRET01WYWxpZGl0eVN0YXRlLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotV2ViS2l0
RE9NVmFsaWRpdHlTdGF0ZSogd3JhcFZhbGlkaXR5U3RhdGUoV2ViQ29yZTo6VmFsaWRpdHlTdGF0
ZSopOwotV2ViS2l0RE9NVmFsaWRpdHlTdGF0ZSoga2l0KFdlYkNvcmU6OlZhbGlkaXR5U3RhdGUq
KTsKLVdlYkNvcmU6OlZhbGlkaXR5U3RhdGUqIGNvcmUoV2ViS2l0RE9NVmFsaWRpdHlTdGF0ZSop
OwotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvKiBXZWJLaXRET01WYWxpZGl0eVN0
YXRlUHJpdmF0ZV9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVZpZGVvUGxheWJhY2tRdWFsaXR5LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00v
V2ViS2l0RE9NVmlkZW9QbGF5YmFja1F1YWxpdHkuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA1YTkzNjY2Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NVmlkZW9QbGF5YmFja1F1YWxpdHku
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjcyICswLDAgQEAKLS8qCi0gKiAgVGhpcyBmaWxlIGlz
IHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICogIFRoaXMgZmlsZSBo
YXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkh
Ci0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAg
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJLaXRET01WaWRl
b1BsYXliYWNrUXVhbGl0eS5oIgotCi0jaW5jbHVkZSA8V2ViQ29yZS9DU1NJbXBvcnRSdWxlLmg+
Ci0jaW5jbHVkZSAiRE9NT2JqZWN0Q2FjaGUuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9FeGNlcHRpb25Db2RlLmg+Ci0jaW5jbHVkZSA8V2ViQ29y
ZS9FeGNlcHRpb25Db2RlRGVzY3JpcHRpb24uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0pTTWFpblRo
cmVhZEV4ZWNTdGF0ZS5oPgotI2luY2x1ZGUgIldlYktpdERPTVByaXZhdGUuaCIKLSNpbmNsdWRl
ICJXZWJLaXRET01WaWRlb1BsYXliYWNrUXVhbGl0eVByaXZhdGUuaCIKLSNpbmNsdWRlICJDb252
ZXJ0VG9VVEY4U3RyaW5nLmgiCi0jaW5jbHVkZSA8d3RmL0dldFB0ci5oPgotI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KLQotI2RlZmluZSBXRUJLSVRfRE9NX1ZJREVPX1BMQVlCQUNLX1FVQUxJVFlf
R0VUX1BSSVZBVEUob2JqKSBHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUob2JqLCBXRUJLSVRf
RE9NX1RZUEVfVklERU9fUExBWUJBQ0tfUVVBTElUWSwgV2ViS2l0RE9NVmlkZW9QbGF5YmFja1F1
YWxpdHlQcml2YXRlKQotCi10eXBlZGVmIHN0cnVjdCBfV2ViS2l0RE9NVmlkZW9QbGF5YmFja1F1
YWxpdHlQcml2YXRlIHsKLSNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQotICAgIFJlZlB0cjxXZWJD
b3JlOjpWaWRlb1BsYXliYWNrUXVhbGl0eT4gY29yZU9iamVjdDsKLSNlbmRpZiAvLyBFTkFCTEUo
TUVESUFfU09VUkNFKQotfSBXZWJLaXRET01WaWRlb1BsYXliYWNrUXVhbGl0eVByaXZhdGU7Ci0K
LSNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotV2ViS2l0
RE9NVmlkZW9QbGF5YmFja1F1YWxpdHkqIGtpdChXZWJDb3JlOjpWaWRlb1BsYXliYWNrUXVhbGl0
eSogb2JqKQotewotICAgIGlmICghb2JqKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIGlmIChn
cG9pbnRlciByZXQgPSBET01PYmplY3RDYWNoZTo6Z2V0KG9iaikpCi0gICAgICAgIHJldHVybiBX
RUJLSVRfRE9NX1ZJREVPX1BMQVlCQUNLX1FVQUxJVFkocmV0KTsKLQotICAgIHJldHVybiB3cmFw
VmlkZW9QbGF5YmFja1F1YWxpdHkob2JqKTsKLX0KLQotV2ViQ29yZTo6VmlkZW9QbGF5YmFja1F1
YWxpdHkqIGNvcmUoV2ViS2l0RE9NVmlkZW9QbGF5YmFja1F1YWxpdHkqIHJlcXVlc3QpCi17Ci0g
ICAgcmV0dXJuIHJlcXVlc3QgPyBzdGF0aWNfY2FzdDxXZWJDb3JlOjpWaWRlb1BsYXliYWNrUXVh
bGl0eSo+KFdFQktJVF9ET01fT0JKRUNUKHJlcXVlc3QpLT5jb3JlT2JqZWN0KSA6IDA7Ci19Ci0K
LVdlYktpdERPTVZpZGVvUGxheWJhY2tRdWFsaXR5KiB3cmFwVmlkZW9QbGF5YmFja1F1YWxpdHko
V2ViQ29yZTo6VmlkZW9QbGF5YmFja1F1YWxpdHkqIGNvcmVPYmplY3QpCi17Ci0gICAgQVNTRVJU
KGNvcmVPYmplY3QpOwotICAgIHJldHVybiBXRUJLSVRfRE9NX1ZJREVPX1BMQVlCQUNLX1FVQUxJ
VFkoZ19vYmplY3RfbmV3KFdFQktJVF9ET01fVFlQRV9WSURFT19QTEFZQkFDS19RVUFMSVRZLCAi
Y29yZS1vYmplY3QiLCBjb3JlT2JqZWN0LCBudWxscHRyKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NPVVJDRSkKLQotR19ERUZJTkVfVFlQ
RShXZWJLaXRET01WaWRlb1BsYXliYWNrUXVhbGl0eSwgd2Via2l0X2RvbV92aWRlb19wbGF5YmFj
a19xdWFsaXR5LCBXRUJLSVRfRE9NX1RZUEVfT0JKRUNUKQotCi1lbnVtIHsKLSAgICBQUk9QXzAs
Ci0gICAgUFJPUF9DUkVBVElPTl9USU1FLAotICAgIFBST1BfVE9UQUxfVklERU9fRlJBTUVTLAot
ICAgIFBST1BfRFJPUFBFRF9WSURFT19GUkFNRVMsCi0gICAgUFJPUF9DT1JSVVBURURfVklERU9f
RlJBTUVTLAotICAgIFBST1BfVE9UQUxfRlJBTUVfREVMQVksCi19OwotCi1zdGF0aWMgdm9pZCB3
ZWJraXRfZG9tX3ZpZGVvX3BsYXliYWNrX3F1YWxpdHlfZmluYWxpemUoR09iamVjdCogb2JqZWN0
KQotewotICAgIFdlYktpdERPTVZpZGVvUGxheWJhY2tRdWFsaXR5UHJpdmF0ZSogcHJpdiA9IFdF
QktJVF9ET01fVklERU9fUExBWUJBQ0tfUVVBTElUWV9HRVRfUFJJVkFURShvYmplY3QpOwotI2lm
IEVOQUJMRShNRURJQV9TT1VSQ0UpCi0gICAgV2ViS2l0OjpET01PYmplY3RDYWNoZTo6Zm9yZ2V0
KHByaXYtPmNvcmVPYmplY3QuZ2V0KCkpOwotI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TT1VSQ0Up
Ci0gICAgcHJpdi0+fldlYktpdERPTVZpZGVvUGxheWJhY2tRdWFsaXR5UHJpdmF0ZSgpOwotICAg
IEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9kb21fdmlkZW9fcGxheWJhY2tfcXVhbGl0eV9wYXJlbnRf
Y2xhc3MpLT5maW5hbGl6ZShvYmplY3QpOwotfQotCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Zp
ZGVvX3BsYXliYWNrX3F1YWxpdHlfZ2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQg
cHJvcGVydHlJZCwgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpCi17Ci0gICAgV2Vi
S2l0RE9NVmlkZW9QbGF5YmFja1F1YWxpdHkqIHNlbGYgPSBXRUJLSVRfRE9NX1ZJREVPX1BMQVlC
QUNLX1FVQUxJVFkob2JqZWN0KTsKLQotICAgIHN3aXRjaCAocHJvcGVydHlJZCkgewotICAgIGNh
c2UgUFJPUF9DUkVBVElPTl9USU1FOgotICAgICAgICBnX3ZhbHVlX3NldF9kb3VibGUodmFsdWUs
IHdlYmtpdF9kb21fdmlkZW9fcGxheWJhY2tfcXVhbGl0eV9nZXRfY3JlYXRpb25fdGltZShzZWxm
KSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9UT1RBTF9WSURFT19GUkFNRVM6Ci0g
ICAgICAgIGdfdmFsdWVfc2V0X3Vsb25nKHZhbHVlLCB3ZWJraXRfZG9tX3ZpZGVvX3BsYXliYWNr
X3F1YWxpdHlfZ2V0X3RvdGFsX3ZpZGVvX2ZyYW1lcyhzZWxmKSk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgUFJPUF9EUk9QUEVEX1ZJREVPX0ZSQU1FUzoKLSAgICAgICAgZ192YWx1ZV9zZXRf
dWxvbmcodmFsdWUsIHdlYmtpdF9kb21fdmlkZW9fcGxheWJhY2tfcXVhbGl0eV9nZXRfZHJvcHBl
ZF92aWRlb19mcmFtZXMoc2VsZikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfQ09S
UlVQVEVEX1ZJREVPX0ZSQU1FUzoKLSAgICAgICAgZ192YWx1ZV9zZXRfdWxvbmcodmFsdWUsIHdl
YmtpdF9kb21fdmlkZW9fcGxheWJhY2tfcXVhbGl0eV9nZXRfY29ycnVwdGVkX3ZpZGVvX2ZyYW1l
cyhzZWxmKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9UT1RBTF9GUkFNRV9ERUxB
WToKLSAgICAgICAgZ192YWx1ZV9zZXRfZG91YmxlKHZhbHVlLCB3ZWJraXRfZG9tX3ZpZGVvX3Bs
YXliYWNrX3F1YWxpdHlfZ2V0X3RvdGFsX2ZyYW1lX2RlbGF5KHNlbGYpKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZ
X0lEKG9iamVjdCwgcHJvcGVydHlJZCwgcHNwZWMpOwotICAgICAgICBicmVhazsKLSAgICB9Ci19
Ci0KLXN0YXRpYyBHT2JqZWN0KiB3ZWJraXRfZG9tX3ZpZGVvX3BsYXliYWNrX3F1YWxpdHlfY29u
c3RydWN0b3IoR1R5cGUgdHlwZSwgZ3VpbnQgY29uc3RydWN0UHJvcGVydGllc0NvdW50LCBHT2Jq
ZWN0Q29uc3RydWN0UGFyYW0qIGNvbnN0cnVjdFByb3BlcnRpZXMpCi17Ci0gICAgR09iamVjdCog
b2JqZWN0ID0gR19PQkpFQ1RfQ0xBU1Mod2Via2l0X2RvbV92aWRlb19wbGF5YmFja19xdWFsaXR5
X3BhcmVudF9jbGFzcyktPmNvbnN0cnVjdG9yKHR5cGUsIGNvbnN0cnVjdFByb3BlcnRpZXNDb3Vu
dCwgY29uc3RydWN0UHJvcGVydGllcyk7Ci0jaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKLSAgICBX
ZWJLaXRET01WaWRlb1BsYXliYWNrUXVhbGl0eVByaXZhdGUqIHByaXYgPSBXRUJLSVRfRE9NX1ZJ
REVPX1BMQVlCQUNLX1FVQUxJVFlfR0VUX1BSSVZBVEUob2JqZWN0KTsKLSAgICBwcml2LT5jb3Jl
T2JqZWN0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6VmlkZW9QbGF5YmFja1F1YWxpdHkqPihXRUJL
SVRfRE9NX09CSkVDVChvYmplY3QpLT5jb3JlT2JqZWN0KTsKLSAgICBXZWJLaXQ6OkRPTU9iamVj
dENhY2hlOjpwdXQocHJpdi0+Y29yZU9iamVjdC5nZXQoKSwgb2JqZWN0KTsKLSNlbmRpZiAvLyBF
TkFCTEUoTUVESUFfU09VUkNFKQotICAgIHJldHVybiBvYmplY3Q7Ci19Ci0KLXN0YXRpYyB2b2lk
IHdlYmtpdF9kb21fdmlkZW9fcGxheWJhY2tfcXVhbGl0eV9jbGFzc19pbml0KFdlYktpdERPTVZp
ZGVvUGxheWJhY2tRdWFsaXR5Q2xhc3MqIHJlcXVlc3RDbGFzcykKLXsKLSAgICBHT2JqZWN0Q2xh
c3MqIGdvYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKHJlcXVlc3RDbGFzcyk7Ci0gICAgZ190
eXBlX2NsYXNzX2FkZF9wcml2YXRlKGdvYmplY3RDbGFzcywgc2l6ZW9mKFdlYktpdERPTVZpZGVv
UGxheWJhY2tRdWFsaXR5UHJpdmF0ZSkpOwotICAgIGdvYmplY3RDbGFzcy0+Y29uc3RydWN0b3Ig
PSB3ZWJraXRfZG9tX3ZpZGVvX3BsYXliYWNrX3F1YWxpdHlfY29uc3RydWN0b3I7Ci0gICAgZ29i
amVjdENsYXNzLT5maW5hbGl6ZSA9IHdlYmtpdF9kb21fdmlkZW9fcGxheWJhY2tfcXVhbGl0eV9m
aW5hbGl6ZTsKLSAgICBnb2JqZWN0Q2xhc3MtPmdldF9wcm9wZXJ0eSA9IHdlYmtpdF9kb21fdmlk
ZW9fcGxheWJhY2tfcXVhbGl0eV9nZXRfcHJvcGVydHk7Ci0KLSAgICBnX29iamVjdF9jbGFzc19p
bnN0YWxsX3Byb3BlcnR5KAotICAgICAgICBnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBST1BfQ1JF
QVRJT05fVElNRSwKLSAgICAgICAgZ19wYXJhbV9zcGVjX2RvdWJsZSgKLSAgICAgICAgICAgICJj
cmVhdGlvbi10aW1lIiwKLSAgICAgICAgICAgICJWaWRlb1BsYXliYWNrUXVhbGl0eTpjcmVhdGlv
bi10aW1lIiwKLSAgICAgICAgICAgICJyZWFkLW9ubHkgZ2RvdWJsZSBWaWRlb1BsYXliYWNrUXVh
bGl0eTpjcmVhdGlvbi10aW1lIiwKLSAgICAgICAgICAgIC1HX01BWERPVUJMRSwgR19NQVhET1VC
TEUsIDAsCi0gICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKLQotICAgIGdfb2Jq
ZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAg
ICAgUFJPUF9UT1RBTF9WSURFT19GUkFNRVMsCi0gICAgICAgIGdfcGFyYW1fc3BlY191bG9uZygK
LSAgICAgICAgICAgICJ0b3RhbC12aWRlby1mcmFtZXMiLAotICAgICAgICAgICAgIlZpZGVvUGxh
eWJhY2tRdWFsaXR5OnRvdGFsLXZpZGVvLWZyYW1lcyIsCi0gICAgICAgICAgICAicmVhZC1vbmx5
IGd1bG9uZyBWaWRlb1BsYXliYWNrUXVhbGl0eTp0b3RhbC12aWRlby1mcmFtZXMiLAotICAgICAg
ICAgICAgMCwgR19NQVhVTE9ORywgMCwKLSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJM
RSkpOwotCi0gICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAgZ29i
amVjdENsYXNzLAotICAgICAgICBQUk9QX0RST1BQRURfVklERU9fRlJBTUVTLAotICAgICAgICBn
X3BhcmFtX3NwZWNfdWxvbmcoCi0gICAgICAgICAgICAiZHJvcHBlZC12aWRlby1mcmFtZXMiLAot
ICAgICAgICAgICAgIlZpZGVvUGxheWJhY2tRdWFsaXR5OmRyb3BwZWQtdmlkZW8tZnJhbWVzIiwK
LSAgICAgICAgICAgICJyZWFkLW9ubHkgZ3Vsb25nIFZpZGVvUGxheWJhY2tRdWFsaXR5OmRyb3Bw
ZWQtdmlkZW8tZnJhbWVzIiwKLSAgICAgICAgICAgIDAsIEdfTUFYVUxPTkcsIDAsCi0gICAgICAg
ICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3Rh
bGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9DT1JSVVBU
RURfVklERU9fRlJBTUVTLAotICAgICAgICBnX3BhcmFtX3NwZWNfdWxvbmcoCi0gICAgICAgICAg
ICAiY29ycnVwdGVkLXZpZGVvLWZyYW1lcyIsCi0gICAgICAgICAgICAiVmlkZW9QbGF5YmFja1F1
YWxpdHk6Y29ycnVwdGVkLXZpZGVvLWZyYW1lcyIsCi0gICAgICAgICAgICAicmVhZC1vbmx5IGd1
bG9uZyBWaWRlb1BsYXliYWNrUXVhbGl0eTpjb3JydXB0ZWQtdmlkZW8tZnJhbWVzIiwKLSAgICAg
ICAgICAgIDAsIEdfTUFYVUxPTkcsIDAsCi0gICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFC
TEUpKTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdv
YmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9UT1RBTF9GUkFNRV9ERUxBWSwKLSAgICAgICAgZ19w
YXJhbV9zcGVjX2RvdWJsZSgKLSAgICAgICAgICAgICJ0b3RhbC1mcmFtZS1kZWxheSIsCi0gICAg
ICAgICAgICAiVmlkZW9QbGF5YmFja1F1YWxpdHk6dG90YWwtZnJhbWUtZGVsYXkiLAotICAgICAg
ICAgICAgInJlYWQtb25seSBnZG91YmxlIFZpZGVvUGxheWJhY2tRdWFsaXR5OnRvdGFsLWZyYW1l
LWRlbGF5IiwKLSAgICAgICAgICAgIC1HX01BWERPVUJMRSwgR19NQVhET1VCTEUsIDAsCi0gICAg
ICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKLQotfQotCi1zdGF0aWMgdm9pZCB3ZWJr
aXRfZG9tX3ZpZGVvX3BsYXliYWNrX3F1YWxpdHlfaW5pdChXZWJLaXRET01WaWRlb1BsYXliYWNr
UXVhbGl0eSogcmVxdWVzdCkKLXsKLSAgICBXZWJLaXRET01WaWRlb1BsYXliYWNrUXVhbGl0eVBy
aXZhdGUqIHByaXYgPSBXRUJLSVRfRE9NX1ZJREVPX1BMQVlCQUNLX1FVQUxJVFlfR0VUX1BSSVZB
VEUocmVxdWVzdCk7Ci0gICAgbmV3IChwcml2KSBXZWJLaXRET01WaWRlb1BsYXliYWNrUXVhbGl0
eVByaXZhdGUoKTsKLX0KLQotZ2RvdWJsZSB3ZWJraXRfZG9tX3ZpZGVvX3BsYXliYWNrX3F1YWxp
dHlfZ2V0X2NyZWF0aW9uX3RpbWUoV2ViS2l0RE9NVmlkZW9QbGF5YmFja1F1YWxpdHkqIHNlbGYp
Ci17Ci0jaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWRO
dWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19W
SURFT19QTEFZQkFDS19RVUFMSVRZKHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpWaWRlb1BsYXli
YWNrUXVhbGl0eSogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBnZG91YmxlIHJlc3Vs
dCA9IGl0ZW0tPmNyZWF0aW9uVGltZSgpOwotICAgIHJldHVybiByZXN1bHQ7Ci0jZWxzZQotICAg
IFVOVVNFRF9QQVJBTShzZWxmKTsKLSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5U
KCJNZWRpYSBTb3VyY2UiKQotICAgIHJldHVybiBzdGF0aWNfY2FzdDxnZG91YmxlPigwKTsKLSNl
bmRpZiAvKiBFTkFCTEUoTUVESUFfU09VUkNFKSAqLwotfQotCi1ndWxvbmcgd2Via2l0X2RvbV92
aWRlb19wbGF5YmFja19xdWFsaXR5X2dldF90b3RhbF92aWRlb19mcmFtZXMoV2ViS2l0RE9NVmlk
ZW9QbGF5YmFja1F1YWxpdHkqIHNlbGYpCi17Ci0jaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKLSAg
ICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFs
X2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19WSURFT19QTEFZQkFDS19RVUFMSVRZKHNlbGYpLCAwKTsK
LSAgICBXZWJDb3JlOjpWaWRlb1BsYXliYWNrUXVhbGl0eSogaXRlbSA9IFdlYktpdDo6Y29yZShz
ZWxmKTsKLSAgICBndWxvbmcgcmVzdWx0ID0gaXRlbS0+dG90YWxWaWRlb0ZyYW1lcygpOwotICAg
IHJldHVybiByZXN1bHQ7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKLSAgICBXRUJL
SVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJNZWRpYSBTb3VyY2UiKQotICAgIHJldHVybiBz
dGF0aWNfY2FzdDxndWxvbmc+KDApOwotI2VuZGlmIC8qIEVOQUJMRShNRURJQV9TT1VSQ0UpICov
Ci19Ci0KLWd1bG9uZyB3ZWJraXRfZG9tX3ZpZGVvX3BsYXliYWNrX3F1YWxpdHlfZ2V0X2Ryb3Bw
ZWRfdmlkZW9fZnJhbWVzKFdlYktpdERPTVZpZGVvUGxheWJhY2tRdWFsaXR5KiBzZWxmKQotewot
I2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCi0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0
YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfVklERU9f
UExBWUJBQ0tfUVVBTElUWShzZWxmKSwgMCk7Ci0gICAgV2ViQ29yZTo6VmlkZW9QbGF5YmFja1F1
YWxpdHkqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ3Vsb25nIHJlc3VsdCA9IGl0
ZW0tPmRyb3BwZWRWaWRlb0ZyYW1lcygpOwotICAgIHJldHVybiByZXN1bHQ7Ci0jZWxzZQotICAg
IFVOVVNFRF9QQVJBTShzZWxmKTsKLSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5U
KCJNZWRpYSBTb3VyY2UiKQotICAgIHJldHVybiBzdGF0aWNfY2FzdDxndWxvbmc+KDApOwotI2Vu
ZGlmIC8qIEVOQUJMRShNRURJQV9TT1VSQ0UpICovCi19Ci0KLWd1bG9uZyB3ZWJraXRfZG9tX3Zp
ZGVvX3BsYXliYWNrX3F1YWxpdHlfZ2V0X2NvcnJ1cHRlZF92aWRlb19mcmFtZXMoV2ViS2l0RE9N
VmlkZW9QbGF5YmFja1F1YWxpdHkqIHNlbGYpCi17Ci0jaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkK
LSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5f
dmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19WSURFT19QTEFZQkFDS19RVUFMSVRZKHNlbGYpLCAw
KTsKLSAgICBXZWJDb3JlOjpWaWRlb1BsYXliYWNrUXVhbGl0eSogaXRlbSA9IFdlYktpdDo6Y29y
ZShzZWxmKTsKLSAgICBndWxvbmcgcmVzdWx0ID0gaXRlbS0+Y29ycnVwdGVkVmlkZW9GcmFtZXMo
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc2VsZik7Ci0g
ICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiTWVkaWEgU291cmNlIikKLSAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8Z3Vsb25nPigwKTsKLSNlbmRpZiAvKiBFTkFCTEUoTUVESUFfU09V
UkNFKSAqLwotfQotCi1nZG91YmxlIHdlYmtpdF9kb21fdmlkZW9fcGxheWJhY2tfcXVhbGl0eV9n
ZXRfdG90YWxfZnJhbWVfZGVsYXkoV2ViS2l0RE9NVmlkZW9QbGF5YmFja1F1YWxpdHkqIHNlbGYp
Ci17Ci0jaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWRO
dWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19W
SURFT19QTEFZQkFDS19RVUFMSVRZKHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpWaWRlb1BsYXli
YWNrUXVhbGl0eSogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBnZG91YmxlIHJlc3Vs
dCA9IGl0ZW0tPnRvdGFsRnJhbWVEZWxheSgpOwotICAgIHJldHVybiByZXN1bHQ7Ci0jZWxzZQot
ICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKLSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVT
RU5UKCJNZWRpYSBTb3VyY2UiKQotICAgIHJldHVybiBzdGF0aWNfY2FzdDxnZG91YmxlPigwKTsK
LSNlbmRpZiAvKiBFTkFCTEUoTUVESUFfU09VUkNFKSAqLwotfQotCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERP
TVZpZGVvUGxheWJhY2tRdWFsaXR5LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVZpZGVvUGxheWJhY2tRdWFsaXR5LmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMzM2JhNzFjLi4wMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9N
VmlkZW9QbGF5YmFja1F1YWxpdHkuaAorKysgL2Rldi9udWxsCkBAIC0xLDEwOCArMCwwIEBACi0v
KgotICogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVj
dC4KLSAqICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdz
LnBsLiBETyBOT1QgTU9ESUZZIQotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQotICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaWZuZGVmIFdlYktpdERPTVZpZGVvUGxh
eWJhY2tRdWFsaXR5X2gKLSNkZWZpbmUgV2ViS2l0RE9NVmlkZW9QbGF5YmFja1F1YWxpdHlfaAot
Ci0jaWZkZWYgV0VCS0lUX0RPTV9VU0VfVU5TVEFCTEVfQVBJCi0KLSNpbmNsdWRlIDxnbGliLW9i
amVjdC5oPgotI2luY2x1ZGUgPHdlYmtpdGRvbS9XZWJLaXRET01PYmplY3QuaD4KLSNpbmNsdWRl
IDx3ZWJraXRkb20vd2Via2l0ZG9tZGVmaW5lcy11bnN0YWJsZS5oPgotCi1HX0JFR0lOX0RFQ0xT
Ci0KLSNkZWZpbmUgV0VCS0lUX0RPTV9UWVBFX1ZJREVPX1BMQVlCQUNLX1FVQUxJVFkgICAgICAg
ICAgICAod2Via2l0X2RvbV92aWRlb19wbGF5YmFja19xdWFsaXR5X2dldF90eXBlKCkpCi0jZGVm
aW5lIFdFQktJVF9ET01fVklERU9fUExBWUJBQ0tfUVVBTElUWShvYmopICAgICAgICAgICAgKEdf
VFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBXRUJLSVRfRE9NX1RZUEVfVklERU9fUExB
WUJBQ0tfUVVBTElUWSwgV2ViS2l0RE9NVmlkZW9QbGF5YmFja1F1YWxpdHkpKQotI2RlZmluZSBX
RUJLSVRfRE9NX1ZJREVPX1BMQVlCQUNLX1FVQUxJVFlfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVf
Q0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLCAgV0VCS0lUX0RPTV9UWVBFX1ZJREVPX1BMQVlCQUNL
X1FVQUxJVFksIFdlYktpdERPTVZpZGVvUGxheWJhY2tRdWFsaXR5Q2xhc3MpCi0jZGVmaW5lIFdF
QktJVF9ET01fSVNfVklERU9fUExBWUJBQ0tfUVVBTElUWShvYmopICAgICAgICAgKEdfVFlQRV9D
SEVDS19JTlNUQU5DRV9UWVBFKChvYmopLCBXRUJLSVRfRE9NX1RZUEVfVklERU9fUExBWUJBQ0tf
UVVBTElUWSkpCi0jZGVmaW5lIFdFQktJVF9ET01fSVNfVklERU9fUExBWUJBQ0tfUVVBTElUWV9D
TEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfRE9N
X1RZUEVfVklERU9fUExBWUJBQ0tfUVVBTElUWSkpCi0jZGVmaW5lIFdFQktJVF9ET01fVklERU9f
UExBWUJBQ0tfUVVBTElUWV9HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xB
U1MoKG9iaiksICBXRUJLSVRfRE9NX1RZUEVfVklERU9fUExBWUJBQ0tfUVVBTElUWSwgV2ViS2l0
RE9NVmlkZW9QbGF5YmFja1F1YWxpdHlDbGFzcykpCi0KLXN0cnVjdCBfV2ViS2l0RE9NVmlkZW9Q
bGF5YmFja1F1YWxpdHkgewotICAgIFdlYktpdERPTU9iamVjdCBwYXJlbnRfaW5zdGFuY2U7Ci19
OwotCi1zdHJ1Y3QgX1dlYktpdERPTVZpZGVvUGxheWJhY2tRdWFsaXR5Q2xhc3MgewotICAgIFdl
YktpdERPTU9iamVjdENsYXNzIHBhcmVudF9jbGFzczsKLX07Ci0KLVdFQktJVF9BUEkgR1R5cGUK
LXdlYmtpdF9kb21fdmlkZW9fcGxheWJhY2tfcXVhbGl0eV9nZXRfdHlwZSh2b2lkKTsKLQotLyoq
Ci0gKiB3ZWJraXRfZG9tX3ZpZGVvX3BsYXliYWNrX3F1YWxpdHlfZ2V0X2NyZWF0aW9uX3RpbWU6
Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NVmlkZW9QbGF5YmFja1F1YWxpdHkKLSAqCi0gKiBSZXR1
cm5zOiBBICNnZG91YmxlCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRf
QVBJIGdkb3VibGUKLXdlYmtpdF9kb21fdmlkZW9fcGxheWJhY2tfcXVhbGl0eV9nZXRfY3JlYXRp
b25fdGltZShXZWJLaXRET01WaWRlb1BsYXliYWNrUXVhbGl0eSogc2VsZik7Ci0KLS8qKgotICog
d2Via2l0X2RvbV92aWRlb19wbGF5YmFja19xdWFsaXR5X2dldF90b3RhbF92aWRlb19mcmFtZXM6
Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NVmlkZW9QbGF5YmFja1F1YWxpdHkKLSAqCi0gKiBSZXR1
cm5zOiBBICNndWxvbmcKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9B
UEkgZ3Vsb25nCi13ZWJraXRfZG9tX3ZpZGVvX3BsYXliYWNrX3F1YWxpdHlfZ2V0X3RvdGFsX3Zp
ZGVvX2ZyYW1lcyhXZWJLaXRET01WaWRlb1BsYXliYWNrUXVhbGl0eSogc2VsZik7Ci0KLS8qKgot
ICogd2Via2l0X2RvbV92aWRlb19wbGF5YmFja19xdWFsaXR5X2dldF9kcm9wcGVkX3ZpZGVvX2Zy
YW1lczoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01WaWRlb1BsYXliYWNrUXVhbGl0eQotICoKLSAq
IFJldHVybnM6IEEgI2d1bG9uZwotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VC
S0lUX0FQSSBndWxvbmcKLXdlYmtpdF9kb21fdmlkZW9fcGxheWJhY2tfcXVhbGl0eV9nZXRfZHJv
cHBlZF92aWRlb19mcmFtZXMoV2ViS2l0RE9NVmlkZW9QbGF5YmFja1F1YWxpdHkqIHNlbGYpOwot
Ci0vKioKLSAqIHdlYmtpdF9kb21fdmlkZW9fcGxheWJhY2tfcXVhbGl0eV9nZXRfY29ycnVwdGVk
X3ZpZGVvX2ZyYW1lczoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01WaWRlb1BsYXliYWNrUXVhbGl0
eQotICoKLSAqIFJldHVybnM6IEEgI2d1bG9uZwotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUK
LSoqLwotV0VCS0lUX0FQSSBndWxvbmcKLXdlYmtpdF9kb21fdmlkZW9fcGxheWJhY2tfcXVhbGl0
eV9nZXRfY29ycnVwdGVkX3ZpZGVvX2ZyYW1lcyhXZWJLaXRET01WaWRlb1BsYXliYWNrUXVhbGl0
eSogc2VsZik7Ci0KLS8qKgotICogd2Via2l0X2RvbV92aWRlb19wbGF5YmFja19xdWFsaXR5X2dl
dF90b3RhbF9mcmFtZV9kZWxheToKLSAqIEBzZWxmOiBBICNXZWJLaXRET01WaWRlb1BsYXliYWNr
UXVhbGl0eQotICoKLSAqIFJldHVybnM6IEEgI2dkb3VibGUKLSAqCi0gKiBTdGFiaWxpdHk6IFVu
c3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgZ2RvdWJsZQotd2Via2l0X2RvbV92aWRlb19wbGF5YmFj
a19xdWFsaXR5X2dldF90b3RhbF9mcmFtZV9kZWxheShXZWJLaXRET01WaWRlb1BsYXliYWNrUXVh
bGl0eSogc2VsZik7Ci0KLUdfRU5EX0RFQ0xTCi0KLSNlbmRpZiAvKiBXRUJLSVRfRE9NX1VTRV9V
TlNUQUJMRV9BUEkgKi8KLSNlbmRpZiAvKiBXZWJLaXRET01WaWRlb1BsYXliYWNrUXVhbGl0eV9o
ICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9ndGsvRE9NL1dlYktpdERPTVZpZGVvUGxheWJhY2tRdWFsaXR5UHJpdmF0ZS5oIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRE
T01WaWRlb1BsYXliYWNrUXVhbGl0eVByaXZhdGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggYjhkY2U3Yi4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVZpZGVvUGxheWJhY2tRdWFsaXR5UHJp
dmF0ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotLyoKLSAqICBUaGlzIGZpbGUg
aXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCi0gKiAgVGhpcyBmaWxl
IGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElG
WSEKLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAq
ICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCi0gKi8KLQotI2lmbmRlZiBXZWJLaXRET01WaWRlb1BsYXliYWNrUXVhbGl0eVByaXZh
dGVfaAotI2RlZmluZSBXZWJLaXRET01WaWRlb1BsYXliYWNrUXVhbGl0eVByaXZhdGVfaAotCi0j
aW5jbHVkZSA8V2ViQ29yZS9WaWRlb1BsYXliYWNrUXVhbGl0eS5oPgotI2luY2x1ZGUgPHdlYmtp
dGRvbS9XZWJLaXRET01WaWRlb1BsYXliYWNrUXVhbGl0eS5oPgotI2lmIEVOQUJMRShNRURJQV9T
T1VSQ0UpCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotV2ViS2l0RE9NVmlkZW9QbGF5YmFja1F1YWxp
dHkqIHdyYXBWaWRlb1BsYXliYWNrUXVhbGl0eShXZWJDb3JlOjpWaWRlb1BsYXliYWNrUXVhbGl0
eSopOwotV2ViS2l0RE9NVmlkZW9QbGF5YmFja1F1YWxpdHkqIGtpdChXZWJDb3JlOjpWaWRlb1Bs
YXliYWNrUXVhbGl0eSopOwotV2ViQ29yZTo6VmlkZW9QbGF5YmFja1F1YWxpdHkqIGNvcmUoV2Vi
S2l0RE9NVmlkZW9QbGF5YmFja1F1YWxpdHkqKTsKLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0j
ZW5kaWYgLyogRU5BQkxFKE1FRElBX1NPVVJDRSkgKi8KLQotI2VuZGlmIC8qIFdlYktpdERPTVZp
ZGVvUGxheWJhY2tRdWFsaXR5UHJpdmF0ZV9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVZpZGVvVHJh
Y2suY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3Rr
L0RPTS9XZWJLaXRET01WaWRlb1RyYWNrLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNWFiOGQ0Ny4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVZpZGVvVHJhY2suY3BwCisrKyAvZGV2L251
bGwKQEAgLTEsMzAxICswLDAgQEAKLS8qCi0gKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdl
YktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICogIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0
ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICogIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
LSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
LSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAq
ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJLaXRET01WaWRlb1RyYWNrLmgiCi0KLSNp
bmNsdWRlIDxXZWJDb3JlL0NTU0ltcG9ydFJ1bGUuaD4KLSNpbmNsdWRlICJET01PYmplY3RDYWNo
ZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0V4
Y2VwdGlvbkNvZGUuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0V4Y2VwdGlvbkNvZGVEZXNjcmlwdGlv
bi5oPgotI2luY2x1ZGUgPFdlYkNvcmUvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmg+Ci0jaW5jbHVk
ZSAiV2ViS2l0RE9NUHJpdmF0ZS5oIgotI2luY2x1ZGUgIldlYktpdERPTVZpZGVvVHJhY2tQcml2
YXRlLmgiCi0jaW5jbHVkZSAiQ29udmVydFRvVVRGOFN0cmluZy5oIgotI2luY2x1ZGUgPHd0Zi9H
ZXRQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLSNkZWZpbmUgV0VCS0lUX0RPTV9W
SURFT19UUkFDS19HRVRfUFJJVkFURShvYmopIEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURShv
YmosIFdFQktJVF9ET01fVFlQRV9WSURFT19UUkFDSywgV2ViS2l0RE9NVmlkZW9UcmFja1ByaXZh
dGUpCi0KLXR5cGVkZWYgc3RydWN0IF9XZWJLaXRET01WaWRlb1RyYWNrUHJpdmF0ZSB7Ci0jaWYg
RU5BQkxFKFZJREVPX1RSQUNLKQotICAgIFJlZlB0cjxXZWJDb3JlOjpWaWRlb1RyYWNrPiBjb3Jl
T2JqZWN0OwotI2VuZGlmIC8vIEVOQUJMRShWSURFT19UUkFDSykKLX0gV2ViS2l0RE9NVmlkZW9U
cmFja1ByaXZhdGU7Ci0KLSNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0KLW5hbWVzcGFjZSBXZWJL
aXQgewotCi1XZWJLaXRET01WaWRlb1RyYWNrKiBraXQoV2ViQ29yZTo6VmlkZW9UcmFjayogb2Jq
KQotewotICAgIGlmICghb2JqKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIGlmIChncG9pbnRl
ciByZXQgPSBET01PYmplY3RDYWNoZTo6Z2V0KG9iaikpCi0gICAgICAgIHJldHVybiBXRUJLSVRf
RE9NX1ZJREVPX1RSQUNLKHJldCk7Ci0KLSAgICByZXR1cm4gd3JhcFZpZGVvVHJhY2sob2JqKTsK
LX0KLQotV2ViQ29yZTo6VmlkZW9UcmFjayogY29yZShXZWJLaXRET01WaWRlb1RyYWNrKiByZXF1
ZXN0KQotewotICAgIHJldHVybiByZXF1ZXN0ID8gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6VmlkZW9U
cmFjayo+KFdFQktJVF9ET01fT0JKRUNUKHJlcXVlc3QpLT5jb3JlT2JqZWN0KSA6IDA7Ci19Ci0K
LVdlYktpdERPTVZpZGVvVHJhY2sqIHdyYXBWaWRlb1RyYWNrKFdlYkNvcmU6OlZpZGVvVHJhY2sq
IGNvcmVPYmplY3QpCi17Ci0gICAgQVNTRVJUKGNvcmVPYmplY3QpOwotICAgIHJldHVybiBXRUJL
SVRfRE9NX1ZJREVPX1RSQUNLKGdfb2JqZWN0X25ldyhXRUJLSVRfRE9NX1RZUEVfVklERU9fVFJB
Q0ssICJjb3JlLW9iamVjdCIsIGNvcmVPYmplY3QsIG51bGxwdHIpKTsKLX0KLQotfSAvLyBuYW1l
c3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoVklERU9fVFJBQ0spCi0KLUdfREVGSU5F
X1RZUEUoV2ViS2l0RE9NVmlkZW9UcmFjaywgd2Via2l0X2RvbV92aWRlb190cmFjaywgV0VCS0lU
X0RPTV9UWVBFX09CSkVDVCkKLQotZW51bSB7Ci0gICAgUFJPUF8wLAotICAgIFBST1BfSUQsCi0g
ICAgUFJPUF9LSU5ELAotICAgIFBST1BfTEFCRUwsCi0gICAgUFJPUF9MQU5HVUFHRSwKLSAgICBQ
Uk9QX1NFTEVDVEVELAotfTsKLQotc3RhdGljIHZvaWQgd2Via2l0X2RvbV92aWRlb190cmFja19m
aW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCi17Ci0gICAgV2ViS2l0RE9NVmlkZW9UcmFja1ByaXZh
dGUqIHByaXYgPSBXRUJLSVRfRE9NX1ZJREVPX1RSQUNLX0dFVF9QUklWQVRFKG9iamVjdCk7Ci0j
aWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgIFdlYktpdDo6RE9NT2JqZWN0Q2FjaGU6OmZvcmdl
dChwcml2LT5jb3JlT2JqZWN0LmdldCgpKTsKLSNlbmRpZiAvLyBFTkFCTEUoVklERU9fVFJBQ0sp
Ci0gICAgcHJpdi0+fldlYktpdERPTVZpZGVvVHJhY2tQcml2YXRlKCk7Ci0gICAgR19PQkpFQ1Rf
Q0xBU1Mod2Via2l0X2RvbV92aWRlb190cmFja19wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmpl
Y3QpOwotfQotCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3ZpZGVvX3RyYWNrX3NldF9wcm9wZXJ0
eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BlcnR5SWQsIGNvbnN0IEdWYWx1ZSogdmFsdWUs
IEdQYXJhbVNwZWMqIHBzcGVjKQotewotICAgIFdlYktpdERPTVZpZGVvVHJhY2sqIHNlbGYgPSBX
RUJLSVRfRE9NX1ZJREVPX1RSQUNLKG9iamVjdCk7Ci0KLSAgICBzd2l0Y2ggKHByb3BlcnR5SWQp
IHsKLSAgICBjYXNlIFBST1BfU0VMRUNURUQ6Ci0gICAgICAgIHdlYmtpdF9kb21fdmlkZW9fdHJh
Y2tfc2V0X3NlbGVjdGVkKHNlbGYsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BS
T1BFUlRZX0lEKG9iamVjdCwgcHJvcGVydHlJZCwgcHNwZWMpOwotICAgICAgICBicmVhazsKLSAg
ICB9Ci19Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdmlkZW9fdHJhY2tfZ2V0X3Byb3BlcnR5
KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcGVydHlJZCwgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFt
U3BlYyogcHNwZWMpCi17Ci0gICAgV2ViS2l0RE9NVmlkZW9UcmFjayogc2VsZiA9IFdFQktJVF9E
T01fVklERU9fVFJBQ0sob2JqZWN0KTsKLQotICAgIHN3aXRjaCAocHJvcGVydHlJZCkgewotICAg
IGNhc2UgUFJPUF9JRDoKLSAgICAgICAgZ192YWx1ZV90YWtlX3N0cmluZyh2YWx1ZSwgd2Via2l0
X2RvbV92aWRlb190cmFja19nZXRfaWQoc2VsZikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IFBST1BfS0lORDoKLSAgICAgICAgZ192YWx1ZV90YWtlX3N0cmluZyh2YWx1ZSwgd2Via2l0X2Rv
bV92aWRlb190cmFja19nZXRfa2luZChzZWxmKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
UFJPUF9MQUJFTDoKLSAgICAgICAgZ192YWx1ZV90YWtlX3N0cmluZyh2YWx1ZSwgd2Via2l0X2Rv
bV92aWRlb190cmFja19nZXRfbGFiZWwoc2VsZikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IFBST1BfTEFOR1VBR0U6Ci0gICAgICAgIGdfdmFsdWVfdGFrZV9zdHJpbmcodmFsdWUsIHdlYmtp
dF9kb21fdmlkZW9fdHJhY2tfZ2V0X2xhbmd1YWdlKHNlbGYpKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBQUk9QX1NFTEVDVEVEOgotICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVl
LCB3ZWJraXRfZG9tX3ZpZGVvX3RyYWNrX2dldF9zZWxlY3RlZChzZWxmKSk7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJU
WV9JRChvYmplY3QsIHByb3BlcnR5SWQsIHBzcGVjKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQot
fQotCi1zdGF0aWMgR09iamVjdCogd2Via2l0X2RvbV92aWRlb190cmFja19jb25zdHJ1Y3RvcihH
VHlwZSB0eXBlLCBndWludCBjb25zdHJ1Y3RQcm9wZXJ0aWVzQ291bnQsIEdPYmplY3RDb25zdHJ1
Y3RQYXJhbSogY29uc3RydWN0UHJvcGVydGllcykKLXsKLSAgICBHT2JqZWN0KiBvYmplY3QgPSBH
X09CSkVDVF9DTEFTUyh3ZWJraXRfZG9tX3ZpZGVvX3RyYWNrX3BhcmVudF9jbGFzcyktPmNvbnN0
cnVjdG9yKHR5cGUsIGNvbnN0cnVjdFByb3BlcnRpZXNDb3VudCwgY29uc3RydWN0UHJvcGVydGll
cyk7Ci0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgIFdlYktpdERPTVZpZGVvVHJhY2tQcml2
YXRlKiBwcml2ID0gV0VCS0lUX0RPTV9WSURFT19UUkFDS19HRVRfUFJJVkFURShvYmplY3QpOwot
ICAgIHByaXYtPmNvcmVPYmplY3QgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpWaWRlb1RyYWNrKj4o
V0VCS0lUX0RPTV9PQkpFQ1Qob2JqZWN0KS0+Y29yZU9iamVjdCk7Ci0gICAgV2ViS2l0OjpET01P
YmplY3RDYWNoZTo6cHV0KHByaXYtPmNvcmVPYmplY3QuZ2V0KCksIG9iamVjdCk7Ci0jZW5kaWYg
Ly8gRU5BQkxFKFZJREVPX1RSQUNLKQotICAgIHJldHVybiBvYmplY3Q7Ci19Ci0KLXN0YXRpYyB2
b2lkIHdlYmtpdF9kb21fdmlkZW9fdHJhY2tfY2xhc3NfaW5pdChXZWJLaXRET01WaWRlb1RyYWNr
Q2xhc3MqIHJlcXVlc3RDbGFzcykKLXsKLSAgICBHT2JqZWN0Q2xhc3MqIGdvYmplY3RDbGFzcyA9
IEdfT0JKRUNUX0NMQVNTKHJlcXVlc3RDbGFzcyk7Ci0gICAgZ190eXBlX2NsYXNzX2FkZF9wcml2
YXRlKGdvYmplY3RDbGFzcywgc2l6ZW9mKFdlYktpdERPTVZpZGVvVHJhY2tQcml2YXRlKSk7Ci0g
ICAgZ29iamVjdENsYXNzLT5jb25zdHJ1Y3RvciA9IHdlYmtpdF9kb21fdmlkZW9fdHJhY2tfY29u
c3RydWN0b3I7Ci0gICAgZ29iamVjdENsYXNzLT5maW5hbGl6ZSA9IHdlYmtpdF9kb21fdmlkZW9f
dHJhY2tfZmluYWxpemU7Ci0gICAgZ29iamVjdENsYXNzLT5zZXRfcHJvcGVydHkgPSB3ZWJraXRf
ZG9tX3ZpZGVvX3RyYWNrX3NldF9wcm9wZXJ0eTsKLSAgICBnb2JqZWN0Q2xhc3MtPmdldF9wcm9w
ZXJ0eSA9IHdlYmtpdF9kb21fdmlkZW9fdHJhY2tfZ2V0X3Byb3BlcnR5OwotCi0gICAgZ19vYmpl
Y3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAgZ29iamVjdENsYXNzLAotICAgICAg
ICBQUk9QX0lELAotICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nKAotICAgICAgICAgICAgImlk
IiwKLSAgICAgICAgICAgICJWaWRlb1RyYWNrOmlkIiwKLSAgICAgICAgICAgICJyZWFkLW9ubHkg
Z2NoYXIqIFZpZGVvVHJhY2s6aWQiLAotICAgICAgICAgICAgIiIsCi0gICAgICAgICAgICBXRUJL
SVRfUEFSQU1fUkVBREFCTEUpKTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVy
dHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9LSU5ELAotICAgICAgICBn
X3BhcmFtX3NwZWNfc3RyaW5nKAotICAgICAgICAgICAgImtpbmQiLAotICAgICAgICAgICAgIlZp
ZGVvVHJhY2s6a2luZCIsCi0gICAgICAgICAgICAicmVhZC1vbmx5IGdjaGFyKiBWaWRlb1RyYWNr
OmtpbmQiLAotICAgICAgICAgICAgIiIsCi0gICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFC
TEUpKTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdv
YmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9MQUJFTCwKLSAgICAgICAgZ19wYXJhbV9zcGVjX3N0
cmluZygKLSAgICAgICAgICAgICJsYWJlbCIsCi0gICAgICAgICAgICAiVmlkZW9UcmFjazpsYWJl
bCIsCi0gICAgICAgICAgICAicmVhZC1vbmx5IGdjaGFyKiBWaWRlb1RyYWNrOmxhYmVsIiwKLSAg
ICAgICAgICAgICIiLAotICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7Ci0KLSAg
ICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAotICAgICAgICBnb2JqZWN0Q2xhc3Ms
Ci0gICAgICAgIFBST1BfTEFOR1VBR0UsCi0gICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcoCi0g
ICAgICAgICAgICAibGFuZ3VhZ2UiLAotICAgICAgICAgICAgIlZpZGVvVHJhY2s6bGFuZ3VhZ2Ui
LAotICAgICAgICAgICAgInJlYWQtb25seSBnY2hhciogVmlkZW9UcmFjazpsYW5ndWFnZSIsCi0g
ICAgICAgICAgICAiIiwKLSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSkpOwotCi0g
ICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAgZ29iamVjdENsYXNz
LAotICAgICAgICBQUk9QX1NFTEVDVEVELAotICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigK
LSAgICAgICAgICAgICJzZWxlY3RlZCIsCi0gICAgICAgICAgICAiVmlkZW9UcmFjazpzZWxlY3Rl
ZCIsCi0gICAgICAgICAgICAicmVhZC13cml0ZSBnYm9vbGVhbiBWaWRlb1RyYWNrOnNlbGVjdGVk
IiwKLSAgICAgICAgICAgIEZBTFNFLAotICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURXUklU
RSkpOwotCi19Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdmlkZW9fdHJhY2tfaW5pdChXZWJL
aXRET01WaWRlb1RyYWNrKiByZXF1ZXN0KQotewotICAgIFdlYktpdERPTVZpZGVvVHJhY2tQcml2
YXRlKiBwcml2ID0gV0VCS0lUX0RPTV9WSURFT19UUkFDS19HRVRfUFJJVkFURShyZXF1ZXN0KTsK
LSAgICBuZXcgKHByaXYpIFdlYktpdERPTVZpZGVvVHJhY2tQcml2YXRlKCk7Ci19Ci0KLWdjaGFy
KiB3ZWJraXRfZG9tX3ZpZGVvX3RyYWNrX2dldF9pZChXZWJLaXRET01WaWRlb1RyYWNrKiBzZWxm
KQotewotI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWRO
dWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19W
SURFT19UUkFDSyhzZWxmKSwgMCk7Ci0gICAgV2ViQ29yZTo6VmlkZW9UcmFjayogaXRlbSA9IFdl
YktpdDo6Y29yZShzZWxmKTsKLSAgICBnY2hhciogcmVzdWx0ID0gY29udmVydFRvVVRGOFN0cmlu
ZyhpdGVtLT5pZCgpKTsKLSAgICByZXR1cm4gcmVzdWx0OwotI2Vsc2UKLSAgICBVTlVTRURfUEFS
QU0oc2VsZik7Ci0gICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiVmlkZW8gVHJh
Y2siKQotICAgIHJldHVybiAwOwotI2VuZGlmIC8qIEVOQUJMRShWSURFT19UUkFDSykgKi8KLX0K
LQotZ2NoYXIqIHdlYmtpdF9kb21fdmlkZW9fdHJhY2tfZ2V0X2tpbmQoV2ViS2l0RE9NVmlkZW9U
cmFjayogc2VsZikKLXsKLSNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0gICAgV2ViQ29yZTo6SlNN
YWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJ
VF9ET01fSVNfVklERU9fVFJBQ0soc2VsZiksIDApOwotICAgIFdlYkNvcmU6OlZpZGVvVHJhY2sq
IGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ2NoYXIqIHJlc3VsdCA9IGNvbnZlcnRU
b1VURjhTdHJpbmcoaXRlbS0+a2luZCgpKTsKLSAgICByZXR1cm4gcmVzdWx0OwotI2Vsc2UKLSAg
ICBVTlVTRURfUEFSQU0oc2VsZik7Ci0gICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VO
VCgiVmlkZW8gVHJhY2siKQotICAgIHJldHVybiAwOwotI2VuZGlmIC8qIEVOQUJMRShWSURFT19U
UkFDSykgKi8KLX0KLQotZ2NoYXIqIHdlYmtpdF9kb21fdmlkZW9fdHJhY2tfZ2V0X2xhYmVsKFdl
YktpdERPTVZpZGVvVHJhY2sqIHNlbGYpCi17Ci0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAg
IFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxf
aWZfZmFpbChXRUJLSVRfRE9NX0lTX1ZJREVPX1RSQUNLKHNlbGYpLCAwKTsKLSAgICBXZWJDb3Jl
OjpWaWRlb1RyYWNrKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdjaGFyKiByZXN1
bHQgPSBjb252ZXJ0VG9VVEY4U3RyaW5nKGl0ZW0tPmxhYmVsKCkpOwotICAgIHJldHVybiByZXN1
bHQ7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKLSAgICBXRUJLSVRfV0FSTl9GRUFU
VVJFX05PVF9QUkVTRU5UKCJWaWRlbyBUcmFjayIpCi0gICAgcmV0dXJuIDA7Ci0jZW5kaWYgLyog
RU5BQkxFKFZJREVPX1RSQUNLKSAqLwotfQotCi1nY2hhciogd2Via2l0X2RvbV92aWRlb190cmFj
a19nZXRfbGFuZ3VhZ2UoV2ViS2l0RE9NVmlkZW9UcmFjayogc2VsZikKLXsKLSNpZiBFTkFCTEUo
VklERU9fVFJBQ0spCi0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwot
ICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfVklERU9fVFJBQ0soc2VsZiks
IDApOwotICAgIFdlYkNvcmU6OlZpZGVvVHJhY2sqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7
Ci0gICAgZ2NoYXIqIHJlc3VsdCA9IGNvbnZlcnRUb1VURjhTdHJpbmcoaXRlbS0+bGFuZ3VhZ2Uo
KSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHNlbGYpOwot
ICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIlZpZGVvIFRyYWNrIikKLSAgICBy
ZXR1cm4gMDsKLSNlbmRpZiAvKiBFTkFCTEUoVklERU9fVFJBQ0spICovCi19Ci0KLWdib29sZWFu
IHdlYmtpdF9kb21fdmlkZW9fdHJhY2tfZ2V0X3NlbGVjdGVkKFdlYktpdERPTVZpZGVvVHJhY2sq
IHNlbGYpCi17Ci0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgIFdlYkNvcmU6OkpTTWFpblRo
cmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9N
X0lTX1ZJREVPX1RSQUNLKHNlbGYpLCBGQUxTRSk7Ci0gICAgV2ViQ29yZTo6VmlkZW9UcmFjayog
aXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBnYm9vbGVhbiByZXN1bHQgPSBpdGVtLT5z
ZWxlY3RlZCgpOwotICAgIHJldHVybiByZXN1bHQ7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShz
ZWxmKTsKLSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJWaWRlbyBUcmFjayIp
Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGdib29sZWFuPigwKTsKLSNlbmRpZiAvKiBFTkFCTEUo
VklERU9fVFJBQ0spICovCi19Ci0KLXZvaWQgd2Via2l0X2RvbV92aWRlb190cmFja19zZXRfc2Vs
ZWN0ZWQoV2ViS2l0RE9NVmlkZW9UcmFjayogc2VsZiwgZ2Jvb2xlYW4gdmFsdWUpCi17Ci0jaWYg
RU5BQkxFKFZJREVPX1RSQUNLKQotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBz
dGF0ZTsKLSAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfVklERU9fVFJBQ0soc2Vs
ZikpOwotICAgIFdlYkNvcmU6OlZpZGVvVHJhY2sqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7
Ci0gICAgaXRlbS0+c2V0U2VsZWN0ZWQodmFsdWUpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0o
c2VsZik7Ci0gICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKLSAgICBXRUJLSVRfV0FSTl9GRUFUVVJF
X05PVF9QUkVTRU5UKCJWaWRlbyBUcmFjayIpCi0jZW5kaWYgLyogRU5BQkxFKFZJREVPX1RSQUNL
KSAqLwotfQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVZpZGVvVHJhY2suaCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NVmlkZW9UcmFj
ay5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YTdmODVkLi4wMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2Vi
S2l0RE9NVmlkZW9UcmFjay5oCisrKyAvZGV2L251bGwKQEAgLTEsMTE4ICswLDAgQEAKLS8qCi0g
KiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0Lgot
ICogIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwu
IERPIE5PVCBNT0RJRlkhCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgV2ViS2l0RE9NVmlkZW9UcmFja19o
Ci0jZGVmaW5lIFdlYktpdERPTVZpZGVvVHJhY2tfaAotCi0jaWZkZWYgV0VCS0lUX0RPTV9VU0Vf
VU5TVEFCTEVfQVBJCi0KLSNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgotI2luY2x1ZGUgPHdlYmtp
dGRvbS9XZWJLaXRET01PYmplY3QuaD4KLSNpbmNsdWRlIDx3ZWJraXRkb20vd2Via2l0ZG9tZGVm
aW5lcy11bnN0YWJsZS5oPgotCi1HX0JFR0lOX0RFQ0xTCi0KLSNkZWZpbmUgV0VCS0lUX0RPTV9U
WVBFX1ZJREVPX1RSQUNLICAgICAgICAgICAgKHdlYmtpdF9kb21fdmlkZW9fdHJhY2tfZ2V0X3R5
cGUoKSkKLSNkZWZpbmUgV0VCS0lUX0RPTV9WSURFT19UUkFDSyhvYmopICAgICAgICAgICAgKEdf
VFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBXRUJLSVRfRE9NX1RZUEVfVklERU9fVFJB
Q0ssIFdlYktpdERPTVZpZGVvVHJhY2spKQotI2RlZmluZSBXRUJLSVRfRE9NX1ZJREVPX1RSQUNL
X0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJ
VF9ET01fVFlQRV9WSURFT19UUkFDSywgV2ViS2l0RE9NVmlkZW9UcmFja0NsYXNzKQotI2RlZmlu
ZSBXRUJLSVRfRE9NX0lTX1ZJREVPX1RSQUNLKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lO
U1RBTkNFX1RZUEUoKG9iaiksIFdFQktJVF9ET01fVFlQRV9WSURFT19UUkFDSykpCi0jZGVmaW5l
IFdFQktJVF9ET01fSVNfVklERU9fVFJBQ0tfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xB
U1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX0RPTV9UWVBFX1ZJREVPX1RSQUNLKSkKLSNkZWZpbmUg
V0VCS0lUX0RPTV9WSURFT19UUkFDS19HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9H
RVRfQ0xBU1MoKG9iaiksICBXRUJLSVRfRE9NX1RZUEVfVklERU9fVFJBQ0ssIFdlYktpdERPTVZp
ZGVvVHJhY2tDbGFzcykpCi0KLXN0cnVjdCBfV2ViS2l0RE9NVmlkZW9UcmFjayB7Ci0gICAgV2Vi
S2l0RE9NT2JqZWN0IHBhcmVudF9pbnN0YW5jZTsKLX07Ci0KLXN0cnVjdCBfV2ViS2l0RE9NVmlk
ZW9UcmFja0NsYXNzIHsKLSAgICBXZWJLaXRET01PYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7Ci19
OwotCi1XRUJLSVRfQVBJIEdUeXBlCi13ZWJraXRfZG9tX3ZpZGVvX3RyYWNrX2dldF90eXBlKHZv
aWQpOwotCi0vKioKLSAqIHdlYmtpdF9kb21fdmlkZW9fdHJhY2tfZ2V0X2lkOgotICogQHNlbGY6
IEEgI1dlYktpdERPTVZpZGVvVHJhY2sKLSAqCi0gKiBSZXR1cm5zOiBBICNnY2hhcgotICoKLSAq
IFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSBnY2hhcioKLXdlYmtpdF9kb21f
dmlkZW9fdHJhY2tfZ2V0X2lkKFdlYktpdERPTVZpZGVvVHJhY2sqIHNlbGYpOwotCi0vKioKLSAq
IHdlYmtpdF9kb21fdmlkZW9fdHJhY2tfZ2V0X2tpbmQ6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9N
VmlkZW9UcmFjawotICoKLSAqIFJldHVybnM6IEEgI2djaGFyCi0gKgotICogU3RhYmlsaXR5OiBV
bnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIGdjaGFyKgotd2Via2l0X2RvbV92aWRlb190cmFja19n
ZXRfa2luZChXZWJLaXRET01WaWRlb1RyYWNrKiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9t
X3ZpZGVvX3RyYWNrX2dldF9sYWJlbDoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01WaWRlb1RyYWNr
Ci0gKgotICogUmV0dXJuczogQSAjZ2NoYXIKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0q
Ki8KLVdFQktJVF9BUEkgZ2NoYXIqCi13ZWJraXRfZG9tX3ZpZGVvX3RyYWNrX2dldF9sYWJlbChX
ZWJLaXRET01WaWRlb1RyYWNrKiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX3ZpZGVvX3Ry
YWNrX2dldF9sYW5ndWFnZToKLSAqIEBzZWxmOiBBICNXZWJLaXRET01WaWRlb1RyYWNrCi0gKgot
ICogUmV0dXJuczogQSAjZ2NoYXIKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdF
QktJVF9BUEkgZ2NoYXIqCi13ZWJraXRfZG9tX3ZpZGVvX3RyYWNrX2dldF9sYW5ndWFnZShXZWJL
aXRET01WaWRlb1RyYWNrKiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX3ZpZGVvX3RyYWNr
X2dldF9zZWxlY3RlZDoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01WaWRlb1RyYWNrCi0gKgotICog
UmV0dXJuczogQSAjZ2Jvb2xlYW4KLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdF
QktJVF9BUEkgZ2Jvb2xlYW4KLXdlYmtpdF9kb21fdmlkZW9fdHJhY2tfZ2V0X3NlbGVjdGVkKFdl
YktpdERPTVZpZGVvVHJhY2sqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9kb21fdmlkZW9fdHJh
Y2tfc2V0X3NlbGVjdGVkOgotICogQHNlbGY6IEEgI1dlYktpdERPTVZpZGVvVHJhY2sKLSAqIEB2
YWx1ZTogQSAjZ2Jvb2xlYW4KLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJ
VF9BUEkgdm9pZAotd2Via2l0X2RvbV92aWRlb190cmFja19zZXRfc2VsZWN0ZWQoV2ViS2l0RE9N
VmlkZW9UcmFjayogc2VsZiwgZ2Jvb2xlYW4gdmFsdWUpOwotCi1HX0VORF9ERUNMUwotCi0jZW5k
aWYgLyogV0VCS0lUX0RPTV9VU0VfVU5TVEFCTEVfQVBJICovCi0jZW5kaWYgLyogV2ViS2l0RE9N
VmlkZW9UcmFja19oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVZpZGVvVHJhY2tMaXN0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0
RE9NVmlkZW9UcmFja0xpc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiODc1
ZDhkLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NVmlkZW9UcmFja0xpc3QuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsMjg0ICswLDAgQEAKLS8qCi0gKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktp
dCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICogIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQg
YnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICogIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAq
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAq
ICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJLaXRET01WaWRlb1RyYWNrTGlzdC5oIgotCi0j
aW5jbHVkZSA8V2ViQ29yZS9DU1NJbXBvcnRSdWxlLmg+Ci0jaW5jbHVkZSAiRE9NT2JqZWN0Q2Fj
aGUuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9F
eGNlcHRpb25Db2RlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9FeGNlcHRpb25Db2RlRGVzY3JpcHRp
b24uaD4KLSNpbmNsdWRlICJHT2JqZWN0RXZlbnRMaXN0ZW5lci5oIgotI2luY2x1ZGUgPFdlYkNv
cmUvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmg+Ci0jaW5jbHVkZSAiV2ViS2l0RE9NRXZlbnRQcml2
YXRlLmgiCi0jaW5jbHVkZSAiV2ViS2l0RE9NRXZlbnRUYXJnZXQuaCIKLSNpbmNsdWRlICJXZWJL
aXRET01Qcml2YXRlLmgiCi0jaW5jbHVkZSAiV2ViS2l0RE9NVmlkZW9UcmFja0xpc3RQcml2YXRl
LmgiCi0jaW5jbHVkZSAiV2ViS2l0RE9NVmlkZW9UcmFja1ByaXZhdGUuaCIKLSNpbmNsdWRlICJD
b252ZXJ0VG9VVEY4U3RyaW5nLmgiCi0jaW5jbHVkZSA8d3RmL0dldFB0ci5oPgotI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KLQotI2RlZmluZSBXRUJLSVRfRE9NX1ZJREVPX1RSQUNLX0xJU1RfR0VU
X1BSSVZBVEUob2JqKSBHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUob2JqLCBXRUJLSVRfRE9N
X1RZUEVfVklERU9fVFJBQ0tfTElTVCwgV2ViS2l0RE9NVmlkZW9UcmFja0xpc3RQcml2YXRlKQot
Ci10eXBlZGVmIHN0cnVjdCBfV2ViS2l0RE9NVmlkZW9UcmFja0xpc3RQcml2YXRlIHsKLSNpZiBF
TkFCTEUoVklERU9fVFJBQ0spCi0gICAgUmVmUHRyPFdlYkNvcmU6OlZpZGVvVHJhY2tMaXN0PiBj
b3JlT2JqZWN0OwotI2VuZGlmIC8vIEVOQUJMRShWSURFT19UUkFDSykKLX0gV2ViS2l0RE9NVmlk
ZW9UcmFja0xpc3RQcml2YXRlOwotCi0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotCi1uYW1lc3Bh
Y2UgV2ViS2l0IHsKLQotV2ViS2l0RE9NVmlkZW9UcmFja0xpc3QqIGtpdChXZWJDb3JlOjpWaWRl
b1RyYWNrTGlzdCogb2JqKQotewotICAgIGlmICghb2JqKQotICAgICAgICByZXR1cm4gMDsKLQot
ICAgIGlmIChncG9pbnRlciByZXQgPSBET01PYmplY3RDYWNoZTo6Z2V0KG9iaikpCi0gICAgICAg
IHJldHVybiBXRUJLSVRfRE9NX1ZJREVPX1RSQUNLX0xJU1QocmV0KTsKLQotICAgIHJldHVybiB3
cmFwVmlkZW9UcmFja0xpc3Qob2JqKTsKLX0KLQotV2ViQ29yZTo6VmlkZW9UcmFja0xpc3QqIGNv
cmUoV2ViS2l0RE9NVmlkZW9UcmFja0xpc3QqIHJlcXVlc3QpCi17Ci0gICAgcmV0dXJuIHJlcXVl
c3QgPyBzdGF0aWNfY2FzdDxXZWJDb3JlOjpWaWRlb1RyYWNrTGlzdCo+KFdFQktJVF9ET01fT0JK
RUNUKHJlcXVlc3QpLT5jb3JlT2JqZWN0KSA6IDA7Ci19Ci0KLVdlYktpdERPTVZpZGVvVHJhY2tM
aXN0KiB3cmFwVmlkZW9UcmFja0xpc3QoV2ViQ29yZTo6VmlkZW9UcmFja0xpc3QqIGNvcmVPYmpl
Y3QpCi17Ci0gICAgQVNTRVJUKGNvcmVPYmplY3QpOwotICAgIHJldHVybiBXRUJLSVRfRE9NX1ZJ
REVPX1RSQUNLX0xJU1QoZ19vYmplY3RfbmV3KFdFQktJVF9ET01fVFlQRV9WSURFT19UUkFDS19M
SVNULCAiY29yZS1vYmplY3QiLCBjb3JlT2JqZWN0LCBudWxscHRyKSk7Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFZJREVPX1RSQUNLKQotCi1zdGF0aWMg
Z2Jvb2xlYW4gd2Via2l0X2RvbV92aWRlb190cmFja19saXN0X2Rpc3BhdGNoX2V2ZW50KFdlYktp
dERPTUV2ZW50VGFyZ2V0KiB0YXJnZXQsIFdlYktpdERPTUV2ZW50KiBldmVudCwgR0Vycm9yKiog
ZXJyb3IpCi17Ci0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgIFdlYkNvcmU6OkV2ZW50KiBj
b3JlRXZlbnQgPSBXZWJLaXQ6OmNvcmUoZXZlbnQpOwotICAgIGlmICghY29yZUV2ZW50KQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgV2ViQ29yZTo6VmlkZW9UcmFja0xpc3QqIGNvcmVUYXJn
ZXQgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpWaWRlb1RyYWNrTGlzdCo+KFdFQktJVF9ET01fT0JK
RUNUKHRhcmdldCktPmNvcmVPYmplY3QpOwotCi0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBl
YyA9IDA7Ci0gICAgZ2Jvb2xlYW4gcmVzdWx0ID0gY29yZVRhcmdldC0+ZGlzcGF0Y2hFdmVudEZv
ckJpbmRpbmdzKCpjb3JlRXZlbnQsIGVjKTsKLSAgICBpZiAoZWMpIHsKLSAgICAgICAgV2ViQ29y
ZTo6RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKGVjKTsKLSAgICAgICAgZ19z
ZXRfZXJyb3JfbGl0ZXJhbChlcnJvciwgZ19xdWFya19mcm9tX3N0cmluZygiV0VCS0lUX0RPTSIp
LCBkZXNjcmlwdGlvbi5jb2RlLCBkZXNjcmlwdGlvbi5uYW1lKTsKLSAgICB9Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7Ci0gICAgVU5VU0VEX1BB
UkFNKGV2ZW50KTsKLSAgICBVTlVTRURfUEFSQU0oZXJyb3IpOwotICAgIFdFQktJVF9XQVJOX0ZF
QVRVUkVfTk9UX1BSRVNFTlQoIlZpZGVvIFRyYWNrIikKLSAgICByZXR1cm4gZmFsc2U7Ci0jZW5k
aWYgLy8gRU5BQkxFKFZJREVPX1RSQUNLKQotfQotCi1zdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X2Rv
bV92aWRlb190cmFja19saXN0X2FkZF9ldmVudF9saXN0ZW5lcihXZWJLaXRET01FdmVudFRhcmdl
dCogdGFyZ2V0LCBjb25zdCBjaGFyKiBldmVudE5hbWUsIEdDbG9zdXJlKiBoYW5kbGVyLCBnYm9v
bGVhbiB1c2VDYXB0dXJlKQotewotI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICBXZWJDb3Jl
OjpWaWRlb1RyYWNrTGlzdCogY29yZVRhcmdldCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OlZpZGVv
VHJhY2tMaXN0Kj4oV0VCS0lUX0RPTV9PQkpFQ1QodGFyZ2V0KS0+Y29yZU9iamVjdCk7Ci0gICAg
cmV0dXJuIFdlYktpdDo6R09iamVjdEV2ZW50TGlzdGVuZXI6OmFkZEV2ZW50TGlzdGVuZXIoR19P
QkpFQ1QodGFyZ2V0KSwgY29yZVRhcmdldCwgZXZlbnROYW1lLCBoYW5kbGVyLCB1c2VDYXB0dXJl
KTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7Ci0gICAgVU5VU0VEX1BBUkFNKGV2
ZW50TmFtZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGhhbmRsZXIpOwotICAgIFVOVVNFRF9QQVJBTSh1
c2VDYXB0dXJlKTsKLSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJWaWRlbyBU
cmFjayIpCi0gICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmIC8vIEVOQUJMRShWSURFT19UUkFDSykK
LX0KLQotc3RhdGljIGdib29sZWFuIHdlYmtpdF9kb21fdmlkZW9fdHJhY2tfbGlzdF9yZW1vdmVf
ZXZlbnRfbGlzdGVuZXIoV2ViS2l0RE9NRXZlbnRUYXJnZXQqIHRhcmdldCwgY29uc3QgY2hhciog
ZXZlbnROYW1lLCBHQ2xvc3VyZSogaGFuZGxlciwgZ2Jvb2xlYW4gdXNlQ2FwdHVyZSkKLXsKLSNp
ZiBFTkFCTEUoVklERU9fVFJBQ0spCi0gICAgV2ViQ29yZTo6VmlkZW9UcmFja0xpc3QqIGNvcmVU
YXJnZXQgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpWaWRlb1RyYWNrTGlzdCo+KFdFQktJVF9ET01f
T0JKRUNUKHRhcmdldCktPmNvcmVPYmplY3QpOwotICAgIHJldHVybiBXZWJLaXQ6OkdPYmplY3RF
dmVudExpc3RlbmVyOjpyZW1vdmVFdmVudExpc3RlbmVyKEdfT0JKRUNUKHRhcmdldCksIGNvcmVU
YXJnZXQsIGV2ZW50TmFtZSwgaGFuZGxlciwgdXNlQ2FwdHVyZSk7Ci0jZWxzZQotICAgIFVOVVNF
RF9QQVJBTSh0YXJnZXQpOwotICAgIFVOVVNFRF9QQVJBTShldmVudE5hbWUpOwotICAgIFVOVVNF
RF9QQVJBTShoYW5kbGVyKTsKLSAgICBVTlVTRURfUEFSQU0odXNlQ2FwdHVyZSk7Ci0gICAgV0VC
S0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiVmlkZW8gVHJhY2siKQotICAgIHJldHVybiBm
YWxzZTsKLSNlbmRpZiAvLyBFTkFCTEUoVklERU9fVFJBQ0spCi19Ci0KLXN0YXRpYyB2b2lkIHdl
YmtpdF9kb21fZXZlbnRfdGFyZ2V0X2luaXQoV2ViS2l0RE9NRXZlbnRUYXJnZXRJZmFjZSogaWZh
Y2UpCi17Ci0gICAgaWZhY2UtPmRpc3BhdGNoX2V2ZW50ID0gd2Via2l0X2RvbV92aWRlb190cmFj
a19saXN0X2Rpc3BhdGNoX2V2ZW50OwotICAgIGlmYWNlLT5hZGRfZXZlbnRfbGlzdGVuZXIgPSB3
ZWJraXRfZG9tX3ZpZGVvX3RyYWNrX2xpc3RfYWRkX2V2ZW50X2xpc3RlbmVyOwotICAgIGlmYWNl
LT5yZW1vdmVfZXZlbnRfbGlzdGVuZXIgPSB3ZWJraXRfZG9tX3ZpZGVvX3RyYWNrX2xpc3RfcmVt
b3ZlX2V2ZW50X2xpc3RlbmVyOwotfQotCi1HX0RFRklORV9UWVBFX1dJVEhfQ09ERShXZWJLaXRE
T01WaWRlb1RyYWNrTGlzdCwgd2Via2l0X2RvbV92aWRlb190cmFja19saXN0LCBXRUJLSVRfRE9N
X1RZUEVfT0JKRUNULCBHX0lNUExFTUVOVF9JTlRFUkZBQ0UoV0VCS0lUX0RPTV9UWVBFX0VWRU5U
X1RBUkdFVCwgd2Via2l0X2RvbV9ldmVudF90YXJnZXRfaW5pdCkpCi0KLWVudW0gewotICAgIFBS
T1BfMCwKLSAgICBQUk9QX0xFTkdUSCwKLSAgICBQUk9QX1NFTEVDVEVEX0lOREVYLAotfTsKLQot
c3RhdGljIHZvaWQgd2Via2l0X2RvbV92aWRlb190cmFja19saXN0X2ZpbmFsaXplKEdPYmplY3Qq
IG9iamVjdCkKLXsKLSAgICBXZWJLaXRET01WaWRlb1RyYWNrTGlzdFByaXZhdGUqIHByaXYgPSBX
RUJLSVRfRE9NX1ZJREVPX1RSQUNLX0xJU1RfR0VUX1BSSVZBVEUob2JqZWN0KTsKLSNpZiBFTkFC
TEUoVklERU9fVFJBQ0spCi0gICAgV2ViS2l0OjpET01PYmplY3RDYWNoZTo6Zm9yZ2V0KHByaXYt
PmNvcmVPYmplY3QuZ2V0KCkpOwotI2VuZGlmIC8vIEVOQUJMRShWSURFT19UUkFDSykKLSAgICBw
cml2LT5+V2ViS2l0RE9NVmlkZW9UcmFja0xpc3RQcml2YXRlKCk7Ci0gICAgR19PQkpFQ1RfQ0xB
U1Mod2Via2l0X2RvbV92aWRlb190cmFja19saXN0X3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9i
amVjdCk7Ci19Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdmlkZW9fdHJhY2tfbGlzdF9nZXRf
cHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wZXJ0eUlkLCBHVmFsdWUqIHZhbHVl
LCBHUGFyYW1TcGVjKiBwc3BlYykKLXsKLSAgICBXZWJLaXRET01WaWRlb1RyYWNrTGlzdCogc2Vs
ZiA9IFdFQktJVF9ET01fVklERU9fVFJBQ0tfTElTVChvYmplY3QpOwotCi0gICAgc3dpdGNoIChw
cm9wZXJ0eUlkKSB7Ci0gICAgY2FzZSBQUk9QX0xFTkdUSDoKLSAgICAgICAgZ192YWx1ZV9zZXRf
dWxvbmcodmFsdWUsIHdlYmtpdF9kb21fdmlkZW9fdHJhY2tfbGlzdF9nZXRfbGVuZ3RoKHNlbGYp
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX1NFTEVDVEVEX0lOREVYOgotICAgICAg
ICBnX3ZhbHVlX3NldF9sb25nKHZhbHVlLCB3ZWJraXRfZG9tX3ZpZGVvX3RyYWNrX2xpc3RfZ2V0
X3NlbGVjdGVkX2luZGV4KHNlbGYpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAg
ICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcGVydHlJ
ZCwgcHNwZWMpOwotICAgICAgICBicmVhazsKLSAgICB9Ci19Ci0KLXN0YXRpYyBHT2JqZWN0KiB3
ZWJraXRfZG9tX3ZpZGVvX3RyYWNrX2xpc3RfY29uc3RydWN0b3IoR1R5cGUgdHlwZSwgZ3VpbnQg
Y29uc3RydWN0UHJvcGVydGllc0NvdW50LCBHT2JqZWN0Q29uc3RydWN0UGFyYW0qIGNvbnN0cnVj
dFByb3BlcnRpZXMpCi17Ci0gICAgR09iamVjdCogb2JqZWN0ID0gR19PQkpFQ1RfQ0xBU1Mod2Vi
a2l0X2RvbV92aWRlb190cmFja19saXN0X3BhcmVudF9jbGFzcyktPmNvbnN0cnVjdG9yKHR5cGUs
IGNvbnN0cnVjdFByb3BlcnRpZXNDb3VudCwgY29uc3RydWN0UHJvcGVydGllcyk7Ci0jaWYgRU5B
QkxFKFZJREVPX1RSQUNLKQotICAgIFdlYktpdERPTVZpZGVvVHJhY2tMaXN0UHJpdmF0ZSogcHJp
diA9IFdFQktJVF9ET01fVklERU9fVFJBQ0tfTElTVF9HRVRfUFJJVkFURShvYmplY3QpOwotICAg
IHByaXYtPmNvcmVPYmplY3QgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpWaWRlb1RyYWNrTGlzdCo+
KFdFQktJVF9ET01fT0JKRUNUKG9iamVjdCktPmNvcmVPYmplY3QpOwotICAgIFdlYktpdDo6RE9N
T2JqZWN0Q2FjaGU6OnB1dChwcml2LT5jb3JlT2JqZWN0LmdldCgpLCBvYmplY3QpOwotI2VuZGlm
IC8vIEVOQUJMRShWSURFT19UUkFDSykKLSAgICByZXR1cm4gb2JqZWN0OwotfQotCi1zdGF0aWMg
dm9pZCB3ZWJraXRfZG9tX3ZpZGVvX3RyYWNrX2xpc3RfY2xhc3NfaW5pdChXZWJLaXRET01WaWRl
b1RyYWNrTGlzdENsYXNzKiByZXF1ZXN0Q2xhc3MpCi17Ci0gICAgR09iamVjdENsYXNzKiBnb2Jq
ZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhyZXF1ZXN0Q2xhc3MpOwotICAgIGdfdHlwZV9jbGFz
c19hZGRfcHJpdmF0ZShnb2JqZWN0Q2xhc3MsIHNpemVvZihXZWJLaXRET01WaWRlb1RyYWNrTGlz
dFByaXZhdGUpKTsKLSAgICBnb2JqZWN0Q2xhc3MtPmNvbnN0cnVjdG9yID0gd2Via2l0X2RvbV92
aWRlb190cmFja19saXN0X2NvbnN0cnVjdG9yOwotICAgIGdvYmplY3RDbGFzcy0+ZmluYWxpemUg
PSB3ZWJraXRfZG9tX3ZpZGVvX3RyYWNrX2xpc3RfZmluYWxpemU7Ci0gICAgZ29iamVjdENsYXNz
LT5nZXRfcHJvcGVydHkgPSB3ZWJraXRfZG9tX3ZpZGVvX3RyYWNrX2xpc3RfZ2V0X3Byb3BlcnR5
OwotCi0gICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAgZ29iamVj
dENsYXNzLAotICAgICAgICBQUk9QX0xFTkdUSCwKLSAgICAgICAgZ19wYXJhbV9zcGVjX3Vsb25n
KAotICAgICAgICAgICAgImxlbmd0aCIsCi0gICAgICAgICAgICAiVmlkZW9UcmFja0xpc3Q6bGVu
Z3RoIiwKLSAgICAgICAgICAgICJyZWFkLW9ubHkgZ3Vsb25nIFZpZGVvVHJhY2tMaXN0Omxlbmd0
aCIsCi0gICAgICAgICAgICAwLCBHX01BWFVMT05HLCAwLAotICAgICAgICAgICAgV0VCS0lUX1BB
UkFNX1JFQURBQkxFKSk7Ci0KLSAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAot
ICAgICAgICBnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBST1BfU0VMRUNURURfSU5ERVgsCi0gICAg
ICAgIGdfcGFyYW1fc3BlY19sb25nKAotICAgICAgICAgICAgInNlbGVjdGVkLWluZGV4IiwKLSAg
ICAgICAgICAgICJWaWRlb1RyYWNrTGlzdDpzZWxlY3RlZC1pbmRleCIsCi0gICAgICAgICAgICAi
cmVhZC1vbmx5IGdsb25nIFZpZGVvVHJhY2tMaXN0OnNlbGVjdGVkLWluZGV4IiwKLSAgICAgICAg
ICAgIEdfTUlOTE9ORywgR19NQVhMT05HLCAwLAotICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JF
QURBQkxFKSk7Ci0KLX0KLQotc3RhdGljIHZvaWQgd2Via2l0X2RvbV92aWRlb190cmFja19saXN0
X2luaXQoV2ViS2l0RE9NVmlkZW9UcmFja0xpc3QqIHJlcXVlc3QpCi17Ci0gICAgV2ViS2l0RE9N
VmlkZW9UcmFja0xpc3RQcml2YXRlKiBwcml2ID0gV0VCS0lUX0RPTV9WSURFT19UUkFDS19MSVNU
X0dFVF9QUklWQVRFKHJlcXVlc3QpOwotICAgIG5ldyAocHJpdikgV2ViS2l0RE9NVmlkZW9UcmFj
a0xpc3RQcml2YXRlKCk7Ci19Ci0KLVdlYktpdERPTVZpZGVvVHJhY2sqIHdlYmtpdF9kb21fdmlk
ZW9fdHJhY2tfbGlzdF9pdGVtKFdlYktpdERPTVZpZGVvVHJhY2tMaXN0KiBzZWxmLCBndWxvbmcg
aW5kZXgpCi17Ci0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgIFdlYkNvcmU6OkpTTWFpblRo
cmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9N
X0lTX1ZJREVPX1RSQUNLX0xJU1Qoc2VsZiksIDApOwotICAgIFdlYkNvcmU6OlZpZGVvVHJhY2tM
aXN0KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpWaWRl
b1RyYWNrPiBnb2JqZWN0UmVzdWx0ID0gV1RGOjpnZXRQdHIoaXRlbS0+aXRlbShpbmRleCkpOwot
ICAgIHJldHVybiBXZWJLaXQ6OmtpdChnb2JqZWN0UmVzdWx0LmdldCgpKTsKLSNlbHNlCi0gICAg
VU5VU0VEX1BBUkFNKHNlbGYpOwotICAgIFVOVVNFRF9QQVJBTShpbmRleCk7Ci0gICAgV0VCS0lU
X1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiVmlkZW8gVHJhY2siKQotICAgIHJldHVybiAwOwot
I2VuZGlmIC8qIEVOQUJMRShWSURFT19UUkFDSykgKi8KLX0KLQotV2ViS2l0RE9NVmlkZW9UcmFj
ayogd2Via2l0X2RvbV92aWRlb190cmFja19saXN0X2dldF90cmFja19ieV9pZChXZWJLaXRET01W
aWRlb1RyYWNrTGlzdCogc2VsZiwgY29uc3QgZ2NoYXIqIGlkKQotewotI2lmIEVOQUJMRShWSURF
T19UUkFDSykKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAg
Z19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19WSURFT19UUkFDS19MSVNUKHNlbGYp
LCAwKTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChpZCwgMCk7Ci0gICAgV2ViQ29yZTo6Vmlk
ZW9UcmFja0xpc3QqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgV1RGOjpTdHJpbmcg
Y29udmVydGVkSWQgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgoaWQpOwotICAgIFJlZlB0cjxXZWJD
b3JlOjpWaWRlb1RyYWNrPiBnb2JqZWN0UmVzdWx0ID0gV1RGOjpnZXRQdHIoaXRlbS0+Z2V0VHJh
Y2tCeUlkKGNvbnZlcnRlZElkKSk7Ci0gICAgcmV0dXJuIFdlYktpdDo6a2l0KGdvYmplY3RSZXN1
bHQuZ2V0KCkpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc2VsZik7Ci0gICAgVU5VU0VEX1BB
UkFNKGlkKTsKLSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJWaWRlbyBUcmFj
ayIpCi0gICAgcmV0dXJuIDA7Ci0jZW5kaWYgLyogRU5BQkxFKFZJREVPX1RSQUNLKSAqLwotfQot
Ci1ndWxvbmcgd2Via2l0X2RvbV92aWRlb190cmFja19saXN0X2dldF9sZW5ndGgoV2ViS2l0RE9N
VmlkZW9UcmFja0xpc3QqIHNlbGYpCi17Ci0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgIFdl
YkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZf
ZmFpbChXRUJLSVRfRE9NX0lTX1ZJREVPX1RSQUNLX0xJU1Qoc2VsZiksIDApOwotICAgIFdlYkNv
cmU6OlZpZGVvVHJhY2tMaXN0KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGd1bG9u
ZyByZXN1bHQgPSBpdGVtLT5sZW5ndGgoKTsKLSAgICByZXR1cm4gcmVzdWx0OwotI2Vsc2UKLSAg
ICBVTlVTRURfUEFSQU0oc2VsZik7Ci0gICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VO
VCgiVmlkZW8gVHJhY2siKQotICAgIHJldHVybiBzdGF0aWNfY2FzdDxndWxvbmc+KDApOwotI2Vu
ZGlmIC8qIEVOQUJMRShWSURFT19UUkFDSykgKi8KLX0KLQotZ2xvbmcgd2Via2l0X2RvbV92aWRl
b190cmFja19saXN0X2dldF9zZWxlY3RlZF9pbmRleChXZWJLaXRET01WaWRlb1RyYWNrTGlzdCog
c2VsZikKLXsKLSNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0gICAgV2ViQ29yZTo6SlNNYWluVGhy
ZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01f
SVNfVklERU9fVFJBQ0tfTElTVChzZWxmKSwgMCk7Ci0gICAgV2ViQ29yZTo6VmlkZW9UcmFja0xp
c3QqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ2xvbmcgcmVzdWx0ID0gaXRlbS0+
c2VsZWN0ZWRJbmRleCgpOwotICAgIHJldHVybiByZXN1bHQ7Ci0jZWxzZQotICAgIFVOVVNFRF9Q
QVJBTShzZWxmKTsKLSAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJWaWRlbyBU
cmFjayIpCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGdsb25nPigwKTsKLSNlbmRpZiAvKiBFTkFC
TEUoVklERU9fVFJBQ0spICovCi19Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NVmlkZW9UcmFja0xpc3Qu
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00v
V2ViS2l0RE9NVmlkZW9UcmFja0xpc3QuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NGI5N2QwMS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVZpZGVvVHJhY2tMaXN0LmgKKysrIC9kZXYvbnVs
bApAQCAtMSw5OSArMCwwIEBACi0vKgotICogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJL
aXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAqICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVk
IGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQotICoKLSAqICBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0g
KiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0g
KiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiAg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKLSAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaWZu
ZGVmIFdlYktpdERPTVZpZGVvVHJhY2tMaXN0X2gKLSNkZWZpbmUgV2ViS2l0RE9NVmlkZW9UcmFj
a0xpc3RfaAotCi0jaWZkZWYgV0VCS0lUX0RPTV9VU0VfVU5TVEFCTEVfQVBJCi0KLSNpbmNsdWRl
IDxnbGliLW9iamVjdC5oPgotI2luY2x1ZGUgPHdlYmtpdGRvbS9XZWJLaXRET01PYmplY3QuaD4K
LSNpbmNsdWRlIDx3ZWJraXRkb20vd2Via2l0ZG9tZGVmaW5lcy11bnN0YWJsZS5oPgotCi1HX0JF
R0lOX0RFQ0xTCi0KLSNkZWZpbmUgV0VCS0lUX0RPTV9UWVBFX1ZJREVPX1RSQUNLX0xJU1QgICAg
ICAgICAgICAod2Via2l0X2RvbV92aWRlb190cmFja19saXN0X2dldF90eXBlKCkpCi0jZGVmaW5l
IFdFQktJVF9ET01fVklERU9fVFJBQ0tfTElTVChvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVD
S19JTlNUQU5DRV9DQVNUKChvYmopLCBXRUJLSVRfRE9NX1RZUEVfVklERU9fVFJBQ0tfTElTVCwg
V2ViS2l0RE9NVmlkZW9UcmFja0xpc3QpKQotI2RlZmluZSBXRUJLSVRfRE9NX1ZJREVPX1RSQUNL
X0xJU1RfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLCAg
V0VCS0lUX0RPTV9UWVBFX1ZJREVPX1RSQUNLX0xJU1QsIFdlYktpdERPTVZpZGVvVHJhY2tMaXN0
Q2xhc3MpCi0jZGVmaW5lIFdFQktJVF9ET01fSVNfVklERU9fVFJBQ0tfTElTVChvYmopICAgICAg
ICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLCBXRUJLSVRfRE9NX1RZUEVfVklE
RU9fVFJBQ0tfTElTVCkpCi0jZGVmaW5lIFdFQktJVF9ET01fSVNfVklERU9fVFJBQ0tfTElTVF9D
TEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfRE9N
X1RZUEVfVklERU9fVFJBQ0tfTElTVCkpCi0jZGVmaW5lIFdFQktJVF9ET01fVklERU9fVFJBQ0tf
TElTVF9HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksICBX
RUJLSVRfRE9NX1RZUEVfVklERU9fVFJBQ0tfTElTVCwgV2ViS2l0RE9NVmlkZW9UcmFja0xpc3RD
bGFzcykpCi0KLXN0cnVjdCBfV2ViS2l0RE9NVmlkZW9UcmFja0xpc3QgewotICAgIFdlYktpdERP
TU9iamVjdCBwYXJlbnRfaW5zdGFuY2U7Ci19OwotCi1zdHJ1Y3QgX1dlYktpdERPTVZpZGVvVHJh
Y2tMaXN0Q2xhc3MgewotICAgIFdlYktpdERPTU9iamVjdENsYXNzIHBhcmVudF9jbGFzczsKLX07
Ci0KLVdFQktJVF9BUEkgR1R5cGUKLXdlYmtpdF9kb21fdmlkZW9fdHJhY2tfbGlzdF9nZXRfdHlw
ZSh2b2lkKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX3ZpZGVvX3RyYWNrX2xpc3RfaXRlbToKLSAq
IEBzZWxmOiBBICNXZWJLaXRET01WaWRlb1RyYWNrTGlzdAotICogQGluZGV4OiBBICNndWxvbmcK
LSAqCi0gKiBSZXR1cm5zOiAodHJhbnNmZXIgZnVsbCk6IEEgI1dlYktpdERPTVZpZGVvVHJhY2sK
LSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgV2ViS2l0RE9NVmlk
ZW9UcmFjayoKLXdlYmtpdF9kb21fdmlkZW9fdHJhY2tfbGlzdF9pdGVtKFdlYktpdERPTVZpZGVv
VHJhY2tMaXN0KiBzZWxmLCBndWxvbmcgaW5kZXgpOwotCi0vKioKLSAqIHdlYmtpdF9kb21fdmlk
ZW9fdHJhY2tfbGlzdF9nZXRfdHJhY2tfYnlfaWQ6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NVmlk
ZW9UcmFja0xpc3QKLSAqIEBpZDogQSAjZ2NoYXIKLSAqCi0gKiBSZXR1cm5zOiAodHJhbnNmZXIg
ZnVsbCk6IEEgI1dlYktpdERPTVZpZGVvVHJhY2sKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxl
Ci0qKi8KLVdFQktJVF9BUEkgV2ViS2l0RE9NVmlkZW9UcmFjayoKLXdlYmtpdF9kb21fdmlkZW9f
dHJhY2tfbGlzdF9nZXRfdHJhY2tfYnlfaWQoV2ViS2l0RE9NVmlkZW9UcmFja0xpc3QqIHNlbGYs
IGNvbnN0IGdjaGFyKiBpZCk7Ci0KLS8qKgotICogd2Via2l0X2RvbV92aWRlb190cmFja19saXN0
X2dldF9sZW5ndGg6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NVmlkZW9UcmFja0xpc3QKLSAqCi0g
KiBSZXR1cm5zOiBBICNndWxvbmcKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdF
QktJVF9BUEkgZ3Vsb25nCi13ZWJraXRfZG9tX3ZpZGVvX3RyYWNrX2xpc3RfZ2V0X2xlbmd0aChX
ZWJLaXRET01WaWRlb1RyYWNrTGlzdCogc2VsZik7Ci0KLS8qKgotICogd2Via2l0X2RvbV92aWRl
b190cmFja19saXN0X2dldF9zZWxlY3RlZF9pbmRleDoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01W
aWRlb1RyYWNrTGlzdAotICoKLSAqIFJldHVybnM6IEEgI2dsb25nCi0gKgotICogU3RhYmlsaXR5
OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIGdsb25nCi13ZWJraXRfZG9tX3ZpZGVvX3RyYWNr
X2xpc3RfZ2V0X3NlbGVjdGVkX2luZGV4KFdlYktpdERPTVZpZGVvVHJhY2tMaXN0KiBzZWxmKTsK
LQotR19FTkRfREVDTFMKLQotI2VuZGlmIC8qIFdFQktJVF9ET01fVVNFX1VOU1RBQkxFX0FQSSAq
LwotI2VuZGlmIC8qIFdlYktpdERPTVZpZGVvVHJhY2tMaXN0X2ggKi8KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0
RE9NVmlkZW9UcmFja0xpc3RQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVZpZGVvVHJhY2tMaXN0UHJpdmF0ZS5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MGVmM2IxLi4wMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0
RE9NVmlkZW9UcmFja0xpc3RQcml2YXRlLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBA
Ci0vKgotICogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJv
amVjdC4KLSAqICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRp
bmdzLnBsLiBETyBOT1QgTU9ESUZZIQotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAq
ICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAg
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQotICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaWZuZGVmIFdlYktpdERPTVZpZGVv
VHJhY2tMaXN0UHJpdmF0ZV9oCi0jZGVmaW5lIFdlYktpdERPTVZpZGVvVHJhY2tMaXN0UHJpdmF0
ZV9oCi0KLSNpbmNsdWRlIDxXZWJDb3JlL1ZpZGVvVHJhY2tMaXN0Lmg+Ci0jaW5jbHVkZSA8d2Vi
a2l0ZG9tL1dlYktpdERPTVZpZGVvVHJhY2tMaXN0Lmg+Ci0jaWYgRU5BQkxFKFZJREVPX1RSQUNL
KQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLVdlYktpdERPTVZpZGVvVHJhY2tMaXN0KiB3cmFwVmlk
ZW9UcmFja0xpc3QoV2ViQ29yZTo6VmlkZW9UcmFja0xpc3QqKTsKLVdlYktpdERPTVZpZGVvVHJh
Y2tMaXN0KiBraXQoV2ViQ29yZTo6VmlkZW9UcmFja0xpc3QqKTsKLVdlYkNvcmU6OlZpZGVvVHJh
Y2tMaXN0KiBjb3JlKFdlYktpdERPTVZpZGVvVHJhY2tMaXN0Kik7Ci19IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKLQotI2VuZGlmIC8qIEVOQUJMRShWSURFT19UUkFDSykgKi8KLQotI2VuZGlmIC8qIFdl
YktpdERPTVZpZGVvVHJhY2tMaXN0UHJpdmF0ZV9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVZpZGVv
VHJhY2tQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9ndGsvRE9NL1dlYktpdERPTVZpZGVvVHJhY2tQcml2YXRlLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDljOTEwNWYuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01WaWRlb1RyYWNrUHJp
dmF0ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotLyoKLSAqICBUaGlzIGZpbGUg
aXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCi0gKiAgVGhpcyBmaWxl
IGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElG
WSEKLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAq
ICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCi0gKi8KLQotI2lmbmRlZiBXZWJLaXRET01WaWRlb1RyYWNrUHJpdmF0ZV9oCi0jZGVm
aW5lIFdlYktpdERPTVZpZGVvVHJhY2tQcml2YXRlX2gKLQotI2luY2x1ZGUgPFdlYkNvcmUvVmlk
ZW9UcmFjay5oPgotI2luY2x1ZGUgPHdlYmtpdGRvbS9XZWJLaXRET01WaWRlb1RyYWNrLmg+Ci0j
aWYgRU5BQkxFKFZJREVPX1RSQUNLKQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLVdlYktpdERPTVZp
ZGVvVHJhY2sqIHdyYXBWaWRlb1RyYWNrKFdlYkNvcmU6OlZpZGVvVHJhY2sqKTsKLVdlYktpdERP
TVZpZGVvVHJhY2sqIGtpdChXZWJDb3JlOjpWaWRlb1RyYWNrKik7Ci1XZWJDb3JlOjpWaWRlb1Ry
YWNrKiBjb3JlKFdlYktpdERPTVZpZGVvVHJhY2sqKTsKLX0gLy8gbmFtZXNwYWNlIFdlYktpdAot
Ci0jZW5kaWYgLyogRU5BQkxFKFZJREVPX1RSQUNLKSAqLwotCi0jZW5kaWYgLyogV2ViS2l0RE9N
VmlkZW9UcmFja1ByaXZhdGVfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01XZWJBbmltYXRpb24uY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9X
ZWJLaXRET01XZWJBbmltYXRpb24uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MmY4ZDI3Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NV2ViQW5pbWF0aW9uLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDE4NyArMCwwIEBACi0vKgotICogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJL
aXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAqICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVk
IGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQotICoKLSAqICBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0g
KiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0g
KiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiAg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKLSAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViS2l0RE9NV2ViQW5pbWF0aW9uLmgiCi0KLSNp
bmNsdWRlIDxXZWJDb3JlL0NTU0ltcG9ydFJ1bGUuaD4KLSNpbmNsdWRlICJET01PYmplY3RDYWNo
ZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0V4
Y2VwdGlvbkNvZGUuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0V4Y2VwdGlvbkNvZGVEZXNjcmlwdGlv
bi5oPgotI2luY2x1ZGUgPFdlYkNvcmUvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmg+Ci0jaW5jbHVk
ZSAiV2ViS2l0RE9NQW5pbWF0aW9uRWZmZWN0UHJpdmF0ZS5oIgotI2luY2x1ZGUgIldlYktpdERP
TUFuaW1hdGlvblRpbWVsaW5lUHJpdmF0ZS5oIgotI2luY2x1ZGUgIldlYktpdERPTVByaXZhdGUu
aCIKLSNpbmNsdWRlICJXZWJLaXRET01XZWJBbmltYXRpb25Qcml2YXRlLmgiCi0jaW5jbHVkZSAi
Q29udmVydFRvVVRGOFN0cmluZy5oIgotI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KLSNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+Ci0KLSNkZWZpbmUgV0VCS0lUX0RPTV9XRUJfQU5JTUFUSU9OX0dFVF9Q
UklWQVRFKG9iaikgR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKG9iaiwgV0VCS0lUX0RPTV9U
WVBFX1dFQl9BTklNQVRJT04sIFdlYktpdERPTVdlYkFuaW1hdGlvblByaXZhdGUpCi0KLXR5cGVk
ZWYgc3RydWN0IF9XZWJLaXRET01XZWJBbmltYXRpb25Qcml2YXRlIHsKLSNpZiBFTkFCTEUoV0VC
X0FOSU1BVElPTlMpCi0gICAgUmVmUHRyPFdlYkNvcmU6OldlYkFuaW1hdGlvbj4gY29yZU9iamVj
dDsKLSNlbmRpZiAvLyBFTkFCTEUoV0VCX0FOSU1BVElPTlMpCi19IFdlYktpdERPTVdlYkFuaW1h
dGlvblByaXZhdGU7Ci0KLSNpZiBFTkFCTEUoV0VCX0FOSU1BVElPTlMpCi0KLW5hbWVzcGFjZSBX
ZWJLaXQgewotCi1XZWJLaXRET01XZWJBbmltYXRpb24qIGtpdChXZWJDb3JlOjpXZWJBbmltYXRp
b24qIG9iaikKLXsKLSAgICBpZiAoIW9iaikKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBpZiAo
Z3BvaW50ZXIgcmV0ID0gRE9NT2JqZWN0Q2FjaGU6OmdldChvYmopKQotICAgICAgICByZXR1cm4g
V0VCS0lUX0RPTV9XRUJfQU5JTUFUSU9OKHJldCk7Ci0KLSAgICByZXR1cm4gd3JhcFdlYkFuaW1h
dGlvbihvYmopOwotfQotCi1XZWJDb3JlOjpXZWJBbmltYXRpb24qIGNvcmUoV2ViS2l0RE9NV2Vi
QW5pbWF0aW9uKiByZXF1ZXN0KQotewotICAgIHJldHVybiByZXF1ZXN0ID8gc3RhdGljX2Nhc3Q8
V2ViQ29yZTo6V2ViQW5pbWF0aW9uKj4oV0VCS0lUX0RPTV9PQkpFQ1QocmVxdWVzdCktPmNvcmVP
YmplY3QpIDogMDsKLX0KLQotV2ViS2l0RE9NV2ViQW5pbWF0aW9uKiB3cmFwV2ViQW5pbWF0aW9u
KFdlYkNvcmU6OldlYkFuaW1hdGlvbiogY29yZU9iamVjdCkKLXsKLSAgICBBU1NFUlQoY29yZU9i
amVjdCk7Ci0gICAgcmV0dXJuIFdFQktJVF9ET01fV0VCX0FOSU1BVElPTihnX29iamVjdF9uZXco
V0VCS0lUX0RPTV9UWVBFX1dFQl9BTklNQVRJT04sICJjb3JlLW9iamVjdCIsIGNvcmVPYmplY3Qs
IG51bGxwdHIpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFC
TEUoV0VCX0FOSU1BVElPTlMpCi0KLUdfREVGSU5FX1RZUEUoV2ViS2l0RE9NV2ViQW5pbWF0aW9u
LCB3ZWJraXRfZG9tX3dlYl9hbmltYXRpb24sIFdFQktJVF9ET01fVFlQRV9PQkpFQ1QpCi0KLWVu
dW0gewotICAgIFBST1BfMCwKLSAgICBQUk9QX0VGRkVDVCwKLSAgICBQUk9QX1RJTUVMSU5FLAot
fTsKLQotc3RhdGljIHZvaWQgd2Via2l0X2RvbV93ZWJfYW5pbWF0aW9uX2ZpbmFsaXplKEdPYmpl
Y3QqIG9iamVjdCkKLXsKLSAgICBXZWJLaXRET01XZWJBbmltYXRpb25Qcml2YXRlKiBwcml2ID0g
V0VCS0lUX0RPTV9XRUJfQU5JTUFUSU9OX0dFVF9QUklWQVRFKG9iamVjdCk7Ci0jaWYgRU5BQkxF
KFdFQl9BTklNQVRJT05TKQotICAgIFdlYktpdDo6RE9NT2JqZWN0Q2FjaGU6OmZvcmdldChwcml2
LT5jb3JlT2JqZWN0LmdldCgpKTsKLSNlbmRpZiAvLyBFTkFCTEUoV0VCX0FOSU1BVElPTlMpCi0g
ICAgcHJpdi0+fldlYktpdERPTVdlYkFuaW1hdGlvblByaXZhdGUoKTsKLSAgICBHX09CSkVDVF9D
TEFTUyh3ZWJraXRfZG9tX3dlYl9hbmltYXRpb25fcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2Jq
ZWN0KTsKLX0KLQotc3RhdGljIHZvaWQgd2Via2l0X2RvbV93ZWJfYW5pbWF0aW9uX2dldF9wcm9w
ZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BlcnR5SWQsIEdWYWx1ZSogdmFsdWUsIEdQ
YXJhbVNwZWMqIHBzcGVjKQotewotICAgIFdlYktpdERPTVdlYkFuaW1hdGlvbiogc2VsZiA9IFdF
QktJVF9ET01fV0VCX0FOSU1BVElPTihvYmplY3QpOwotCi0gICAgc3dpdGNoIChwcm9wZXJ0eUlk
KSB7Ci0gICAgY2FzZSBQUk9QX0VGRkVDVDoKLSAgICAgICAgZ192YWx1ZV9zZXRfb2JqZWN0KHZh
bHVlLCB3ZWJraXRfZG9tX3dlYl9hbmltYXRpb25fZ2V0X2VmZmVjdChzZWxmKSk7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgUFJPUF9USU1FTElORToKLSAgICAgICAgZ192YWx1ZV9zZXRfb2Jq
ZWN0KHZhbHVlLCB3ZWJraXRfZG9tX3dlYl9hbmltYXRpb25fZ2V0X3RpbWVsaW5lKHNlbGYpKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZB
TElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcGVydHlJZCwgcHNwZWMpOwotICAgICAgICBicmVh
azsKLSAgICB9Ci19Ci0KLXN0YXRpYyBHT2JqZWN0KiB3ZWJraXRfZG9tX3dlYl9hbmltYXRpb25f
Y29uc3RydWN0b3IoR1R5cGUgdHlwZSwgZ3VpbnQgY29uc3RydWN0UHJvcGVydGllc0NvdW50LCBH
T2JqZWN0Q29uc3RydWN0UGFyYW0qIGNvbnN0cnVjdFByb3BlcnRpZXMpCi17Ci0gICAgR09iamVj
dCogb2JqZWN0ID0gR19PQkpFQ1RfQ0xBU1Mod2Via2l0X2RvbV93ZWJfYW5pbWF0aW9uX3BhcmVu
dF9jbGFzcyktPmNvbnN0cnVjdG9yKHR5cGUsIGNvbnN0cnVjdFByb3BlcnRpZXNDb3VudCwgY29u
c3RydWN0UHJvcGVydGllcyk7Ci0jaWYgRU5BQkxFKFdFQl9BTklNQVRJT05TKQotICAgIFdlYktp
dERPTVdlYkFuaW1hdGlvblByaXZhdGUqIHByaXYgPSBXRUJLSVRfRE9NX1dFQl9BTklNQVRJT05f
R0VUX1BSSVZBVEUob2JqZWN0KTsKLSAgICBwcml2LT5jb3JlT2JqZWN0ID0gc3RhdGljX2Nhc3Q8
V2ViQ29yZTo6V2ViQW5pbWF0aW9uKj4oV0VCS0lUX0RPTV9PQkpFQ1Qob2JqZWN0KS0+Y29yZU9i
amVjdCk7Ci0gICAgV2ViS2l0OjpET01PYmplY3RDYWNoZTo6cHV0KHByaXYtPmNvcmVPYmplY3Qu
Z2V0KCksIG9iamVjdCk7Ci0jZW5kaWYgLy8gRU5BQkxFKFdFQl9BTklNQVRJT05TKQotICAgIHJl
dHVybiBvYmplY3Q7Ci19Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdF9kb21fd2ViX2FuaW1hdGlvbl9j
bGFzc19pbml0KFdlYktpdERPTVdlYkFuaW1hdGlvbkNsYXNzKiByZXF1ZXN0Q2xhc3MpCi17Ci0g
ICAgR09iamVjdENsYXNzKiBnb2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhyZXF1ZXN0Q2xh
c3MpOwotICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShnb2JqZWN0Q2xhc3MsIHNpemVvZihX
ZWJLaXRET01XZWJBbmltYXRpb25Qcml2YXRlKSk7Ci0gICAgZ29iamVjdENsYXNzLT5jb25zdHJ1
Y3RvciA9IHdlYmtpdF9kb21fd2ViX2FuaW1hdGlvbl9jb25zdHJ1Y3RvcjsKLSAgICBnb2JqZWN0
Q2xhc3MtPmZpbmFsaXplID0gd2Via2l0X2RvbV93ZWJfYW5pbWF0aW9uX2ZpbmFsaXplOwotICAg
IGdvYmplY3RDbGFzcy0+Z2V0X3Byb3BlcnR5ID0gd2Via2l0X2RvbV93ZWJfYW5pbWF0aW9uX2dl
dF9wcm9wZXJ0eTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAg
ICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9FRkZFQ1QsCi0gICAgICAgIGdfcGFyYW1f
c3BlY19vYmplY3QoCi0gICAgICAgICAgICAiZWZmZWN0IiwKLSAgICAgICAgICAgICJXZWJBbmlt
YXRpb246ZWZmZWN0IiwKLSAgICAgICAgICAgICJyZWFkLW9ubHkgV2ViS2l0RE9NQW5pbWF0aW9u
RWZmZWN0KiBXZWJBbmltYXRpb246ZWZmZWN0IiwKLSAgICAgICAgICAgIFdFQktJVF9ET01fVFlQ
RV9BTklNQVRJT05fRUZGRUNULAotICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7
Ci0KLSAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAotICAgICAgICBnb2JqZWN0
Q2xhc3MsCi0gICAgICAgIFBST1BfVElNRUxJTkUsCi0gICAgICAgIGdfcGFyYW1fc3BlY19vYmpl
Y3QoCi0gICAgICAgICAgICAidGltZWxpbmUiLAotICAgICAgICAgICAgIldlYkFuaW1hdGlvbjp0
aW1lbGluZSIsCi0gICAgICAgICAgICAicmVhZC1vbmx5IFdlYktpdERPTUFuaW1hdGlvblRpbWVs
aW5lKiBXZWJBbmltYXRpb246dGltZWxpbmUiLAotICAgICAgICAgICAgV0VCS0lUX0RPTV9UWVBF
X0FOSU1BVElPTl9USU1FTElORSwKLSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSkp
OwotCi19Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdF9kb21fd2ViX2FuaW1hdGlvbl9pbml0KFdlYktp
dERPTVdlYkFuaW1hdGlvbiogcmVxdWVzdCkKLXsKLSAgICBXZWJLaXRET01XZWJBbmltYXRpb25Q
cml2YXRlKiBwcml2ID0gV0VCS0lUX0RPTV9XRUJfQU5JTUFUSU9OX0dFVF9QUklWQVRFKHJlcXVl
c3QpOwotICAgIG5ldyAocHJpdikgV2ViS2l0RE9NV2ViQW5pbWF0aW9uUHJpdmF0ZSgpOwotfQot
Ci1XZWJLaXRET01BbmltYXRpb25FZmZlY3QqIHdlYmtpdF9kb21fd2ViX2FuaW1hdGlvbl9nZXRf
ZWZmZWN0KFdlYktpdERPTVdlYkFuaW1hdGlvbiogc2VsZikKLXsKLSNpZiBFTkFCTEUoV0VCX0FO
SU1BVElPTlMpCi0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAg
IGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfV0VCX0FOSU1BVElPTihzZWxmKSwg
MCk7Ci0gICAgV2ViQ29yZTo6V2ViQW5pbWF0aW9uKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYp
OwotICAgIFJlZlB0cjxXZWJDb3JlOjpBbmltYXRpb25FZmZlY3Q+IGdvYmplY3RSZXN1bHQgPSBX
VEY6OmdldFB0cihpdGVtLT5lZmZlY3QoKSk7Ci0gICAgcmV0dXJuIFdlYktpdDo6a2l0KGdvYmpl
Y3RSZXN1bHQuZ2V0KCkpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc2VsZik7Ci0gICAgV0VC
S0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiV2ViIEFuaW1hdGlvbnMiKQotICAgIHJldHVy
biAwOwotI2VuZGlmIC8qIEVOQUJMRShXRUJfQU5JTUFUSU9OUykgKi8KLX0KLQotV2ViS2l0RE9N
QW5pbWF0aW9uVGltZWxpbmUqIHdlYmtpdF9kb21fd2ViX2FuaW1hdGlvbl9nZXRfdGltZWxpbmUo
V2ViS2l0RE9NV2ViQW5pbWF0aW9uKiBzZWxmKQotewotI2lmIEVOQUJMRShXRUJfQU5JTUFUSU9O
UykKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1
cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19XRUJfQU5JTUFUSU9OKHNlbGYpLCAwKTsKLSAg
ICBXZWJDb3JlOjpXZWJBbmltYXRpb24qIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAg
UmVmUHRyPFdlYkNvcmU6OkFuaW1hdGlvblRpbWVsaW5lPiBnb2JqZWN0UmVzdWx0ID0gV1RGOjpn
ZXRQdHIoaXRlbS0+dGltZWxpbmUoKSk7Ci0gICAgcmV0dXJuIFdlYktpdDo6a2l0KGdvYmplY3RS
ZXN1bHQuZ2V0KCkpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc2VsZik7Ci0gICAgV0VCS0lU
X1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiV2ViIEFuaW1hdGlvbnMiKQotICAgIHJldHVybiAw
OwotI2VuZGlmIC8qIEVOQUJMRShXRUJfQU5JTUFUSU9OUykgKi8KLX0KLQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJL
aXRET01XZWJBbmltYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NV2ViQW5pbWF0aW9uLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGFjM2FmMGQuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01XZWJBbmltYXRpb24u
aAorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLS8qCi0gKiAgVGhpcyBmaWxlIGlzIHBh
cnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICogIFRoaXMgZmlsZSBoYXMg
YmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0g
KgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
Ci0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgotICovCi0KLSNpZm5kZWYgV2ViS2l0RE9NV2ViQW5pbWF0aW9uX2gKLSNkZWZpbmUgV2ViS2l0
RE9NV2ViQW5pbWF0aW9uX2gKLQotI2lmZGVmIFdFQktJVF9ET01fVVNFX1VOU1RBQkxFX0FQSQot
Ci0jaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KLSNpbmNsdWRlIDx3ZWJraXRkb20vV2ViS2l0RE9N
T2JqZWN0Lmg+Ci0jaW5jbHVkZSA8d2Via2l0ZG9tL3dlYmtpdGRvbWRlZmluZXMtdW5zdGFibGUu
aD4KLQotR19CRUdJTl9ERUNMUwotCi0jZGVmaW5lIFdFQktJVF9ET01fVFlQRV9XRUJfQU5JTUFU
SU9OICAgICAgICAgICAgKHdlYmtpdF9kb21fd2ViX2FuaW1hdGlvbl9nZXRfdHlwZSgpKQotI2Rl
ZmluZSBXRUJLSVRfRE9NX1dFQl9BTklNQVRJT04ob2JqKSAgICAgICAgICAgIChHX1RZUEVfQ0hF
Q0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwgV0VCS0lUX0RPTV9UWVBFX1dFQl9BTklNQVRJT04sIFdl
YktpdERPTVdlYkFuaW1hdGlvbikpCi0jZGVmaW5lIFdFQktJVF9ET01fV0VCX0FOSU1BVElPTl9D
TEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksICBXRUJLSVRf
RE9NX1RZUEVfV0VCX0FOSU1BVElPTiwgV2ViS2l0RE9NV2ViQW5pbWF0aW9uQ2xhc3MpCi0jZGVm
aW5lIFdFQktJVF9ET01fSVNfV0VCX0FOSU1BVElPTihvYmopICAgICAgICAgKEdfVFlQRV9DSEVD
S19JTlNUQU5DRV9UWVBFKChvYmopLCBXRUJLSVRfRE9NX1RZUEVfV0VCX0FOSU1BVElPTikpCi0j
ZGVmaW5lIFdFQktJVF9ET01fSVNfV0VCX0FOSU1BVElPTl9DTEFTUyhrbGFzcykgKEdfVFlQRV9D
SEVDS19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfRE9NX1RZUEVfV0VCX0FOSU1BVElPTikp
Ci0jZGVmaW5lIFdFQktJVF9ET01fV0VCX0FOSU1BVElPTl9HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQ
RV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksICBXRUJLSVRfRE9NX1RZUEVfV0VCX0FOSU1BVElP
TiwgV2ViS2l0RE9NV2ViQW5pbWF0aW9uQ2xhc3MpKQotCi1zdHJ1Y3QgX1dlYktpdERPTVdlYkFu
aW1hdGlvbiB7Ci0gICAgV2ViS2l0RE9NT2JqZWN0IHBhcmVudF9pbnN0YW5jZTsKLX07Ci0KLXN0
cnVjdCBfV2ViS2l0RE9NV2ViQW5pbWF0aW9uQ2xhc3MgewotICAgIFdlYktpdERPTU9iamVjdENs
YXNzIHBhcmVudF9jbGFzczsKLX07Ci0KLVdFQktJVF9BUEkgR1R5cGUKLXdlYmtpdF9kb21fd2Vi
X2FuaW1hdGlvbl9nZXRfdHlwZSh2b2lkKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX3dlYl9hbmlt
YXRpb25fZ2V0X2VmZmVjdDoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01XZWJBbmltYXRpb24KLSAq
Ci0gKiBSZXR1cm5zOiAodHJhbnNmZXIgZnVsbCk6IEEgI1dlYktpdERPTUFuaW1hdGlvbkVmZmVj
dAotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSBXZWJLaXRET01B
bmltYXRpb25FZmZlY3QqCi13ZWJraXRfZG9tX3dlYl9hbmltYXRpb25fZ2V0X2VmZmVjdChXZWJL
aXRET01XZWJBbmltYXRpb24qIHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9kb21fd2ViX2FuaW1h
dGlvbl9nZXRfdGltZWxpbmU6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NV2ViQW5pbWF0aW9uCi0g
KgotICogUmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiBBICNXZWJLaXRET01BbmltYXRpb25UaW1l
bGluZQotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSBXZWJLaXRE
T01BbmltYXRpb25UaW1lbGluZSoKLXdlYmtpdF9kb21fd2ViX2FuaW1hdGlvbl9nZXRfdGltZWxp
bmUoV2ViS2l0RE9NV2ViQW5pbWF0aW9uKiBzZWxmKTsKLQotR19FTkRfREVDTFMKLQotI2VuZGlm
IC8qIFdFQktJVF9ET01fVVNFX1VOU1RBQkxFX0FQSSAqLwotI2VuZGlmIC8qIFdlYktpdERPTVdl
YkFuaW1hdGlvbl9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVdlYkFuaW1hdGlvblByaXZhdGUuaCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2Vi
S2l0RE9NV2ViQW5pbWF0aW9uUHJpdmF0ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAyMzgxNTI2Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NV2ViQW5pbWF0aW9uUHJpdmF0ZS5oCisrKyAv
ZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotLyoKLSAqICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0
aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCi0gKiAgVGhpcyBmaWxlIGhhcyBiZWVuIGdl
bmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKLSAqCi0gKiAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqICBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bwotICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCi0gKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8K
LQotI2lmbmRlZiBXZWJLaXRET01XZWJBbmltYXRpb25Qcml2YXRlX2gKLSNkZWZpbmUgV2ViS2l0
RE9NV2ViQW5pbWF0aW9uUHJpdmF0ZV9oCi0KLSNpbmNsdWRlIDxXZWJDb3JlL1dlYkFuaW1hdGlv
bi5oPgotI2luY2x1ZGUgPHdlYmtpdGRvbS9XZWJLaXRET01XZWJBbmltYXRpb24uaD4KLSNpZiBF
TkFCTEUoV0VCX0FOSU1BVElPTlMpCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotV2ViS2l0RE9NV2Vi
QW5pbWF0aW9uKiB3cmFwV2ViQW5pbWF0aW9uKFdlYkNvcmU6OldlYkFuaW1hdGlvbiopOwotV2Vi
S2l0RE9NV2ViQW5pbWF0aW9uKiBraXQoV2ViQ29yZTo6V2ViQW5pbWF0aW9uKik7Ci1XZWJDb3Jl
OjpXZWJBbmltYXRpb24qIGNvcmUoV2ViS2l0RE9NV2ViQW5pbWF0aW9uKik7Ci19IC8vIG5hbWVz
cGFjZSBXZWJLaXQKLQotI2VuZGlmIC8qIEVOQUJMRShXRUJfQU5JTUFUSU9OUykgKi8KLQotI2Vu
ZGlmIC8qIFdlYktpdERPTVdlYkFuaW1hdGlvblByaXZhdGVfaCAqLwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRE
T01XZWJLaXROYW1lZEZsb3cuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01XZWJLaXROYW1lZEZsb3cuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYmQyMzFlLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NV2ViS2l0
TmFtZWRGbG93LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDI1OSArMCwwIEBACi0vKgotICogIFRo
aXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAqICBU
aGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBO
T1QgTU9ESUZZIQotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0g
KgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQotICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2Vi
S2l0RE9NV2ViS2l0TmFtZWRGbG93LmgiCi0KLSNpbmNsdWRlIDxXZWJDb3JlL0NTU0ltcG9ydFJ1
bGUuaD4KLSNpbmNsdWRlICJET01PYmplY3RDYWNoZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRG9j
dW1lbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0V4Y2VwdGlvbkNvZGUuaD4KLSNpbmNsdWRlIDxX
ZWJDb3JlL0V4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbi5oPgotI2luY2x1ZGUgIkdPYmplY3RFdmVu
dExpc3RlbmVyLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9KU01haW5UaHJlYWRFeGVjU3RhdGUuaD4K
LSNpbmNsdWRlICJXZWJLaXRET01FdmVudFByaXZhdGUuaCIKLSNpbmNsdWRlICJXZWJLaXRET01F
dmVudFRhcmdldC5oIgotI2luY2x1ZGUgIldlYktpdERPTU5vZGVMaXN0UHJpdmF0ZS5oIgotI2lu
Y2x1ZGUgIldlYktpdERPTU5vZGVQcml2YXRlLmgiCi0jaW5jbHVkZSAiV2ViS2l0RE9NUHJpdmF0
ZS5oIgotI2luY2x1ZGUgIldlYktpdERPTVdlYktpdE5hbWVkRmxvd1ByaXZhdGUuaCIKLSNpbmNs
dWRlICJDb252ZXJ0VG9VVEY4U3RyaW5nLmgiCi0jaW5jbHVkZSA8d3RmL0dldFB0ci5oPgotI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotI2RlZmluZSBXRUJLSVRfRE9NX1dFQktJVF9OQU1FRF9G
TE9XX0dFVF9QUklWQVRFKG9iaikgR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKG9iaiwgV0VC
S0lUX0RPTV9UWVBFX1dFQktJVF9OQU1FRF9GTE9XLCBXZWJLaXRET01XZWJLaXROYW1lZEZsb3dQ
cml2YXRlKQotCi10eXBlZGVmIHN0cnVjdCBfV2ViS2l0RE9NV2ViS2l0TmFtZWRGbG93UHJpdmF0
ZSB7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OldlYktpdE5hbWVkRmxvdz4gY29yZU9iamVjdDsKLX0g
V2ViS2l0RE9NV2ViS2l0TmFtZWRGbG93UHJpdmF0ZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0K
LVdlYktpdERPTVdlYktpdE5hbWVkRmxvdyoga2l0KFdlYkNvcmU6OldlYktpdE5hbWVkRmxvdyog
b2JqKQotewotICAgIGlmICghb2JqKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIGlmIChncG9p
bnRlciByZXQgPSBET01PYmplY3RDYWNoZTo6Z2V0KG9iaikpCi0gICAgICAgIHJldHVybiBXRUJL
SVRfRE9NX1dFQktJVF9OQU1FRF9GTE9XKHJldCk7Ci0KLSAgICByZXR1cm4gd3JhcFdlYktpdE5h
bWVkRmxvdyhvYmopOwotfQotCi1XZWJDb3JlOjpXZWJLaXROYW1lZEZsb3cqIGNvcmUoV2ViS2l0
RE9NV2ViS2l0TmFtZWRGbG93KiByZXF1ZXN0KQotewotICAgIHJldHVybiByZXF1ZXN0ID8gc3Rh
dGljX2Nhc3Q8V2ViQ29yZTo6V2ViS2l0TmFtZWRGbG93Kj4oV0VCS0lUX0RPTV9PQkpFQ1QocmVx
dWVzdCktPmNvcmVPYmplY3QpIDogMDsKLX0KLQotV2ViS2l0RE9NV2ViS2l0TmFtZWRGbG93KiB3
cmFwV2ViS2l0TmFtZWRGbG93KFdlYkNvcmU6OldlYktpdE5hbWVkRmxvdyogY29yZU9iamVjdCkK
LXsKLSAgICBBU1NFUlQoY29yZU9iamVjdCk7Ci0gICAgcmV0dXJuIFdFQktJVF9ET01fV0VCS0lU
X05BTUVEX0ZMT1coZ19vYmplY3RfbmV3KFdFQktJVF9ET01fVFlQRV9XRUJLSVRfTkFNRURfRkxP
VywgImNvcmUtb2JqZWN0IiwgY29yZU9iamVjdCwgbnVsbHB0cikpOwotfQotCi19IC8vIG5hbWVz
cGFjZSBXZWJLaXQKLQotc3RhdGljIGdib29sZWFuIHdlYmtpdF9kb21fd2Via2l0X25hbWVkX2Zs
b3dfZGlzcGF0Y2hfZXZlbnQoV2ViS2l0RE9NRXZlbnRUYXJnZXQqIHRhcmdldCwgV2ViS2l0RE9N
RXZlbnQqIGV2ZW50LCBHRXJyb3IqKiBlcnJvcikKLXsKLSAgICBXZWJDb3JlOjpFdmVudCogY29y
ZUV2ZW50ID0gV2ViS2l0Ojpjb3JlKGV2ZW50KTsKLSAgICBpZiAoIWNvcmVFdmVudCkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIFdlYkNvcmU6OldlYktpdE5hbWVkRmxvdyogY29yZVRhcmdl
dCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OldlYktpdE5hbWVkRmxvdyo+KFdFQktJVF9ET01fT0JK
RUNUKHRhcmdldCktPmNvcmVPYmplY3QpOwotCi0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBl
YyA9IDA7Ci0gICAgZ2Jvb2xlYW4gcmVzdWx0ID0gY29yZVRhcmdldC0+ZGlzcGF0Y2hFdmVudEZv
ckJpbmRpbmdzKCpjb3JlRXZlbnQsIGVjKTsKLSAgICBpZiAoZWMpIHsKLSAgICAgICAgV2ViQ29y
ZTo6RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKGVjKTsKLSAgICAgICAgZ19z
ZXRfZXJyb3JfbGl0ZXJhbChlcnJvciwgZ19xdWFya19mcm9tX3N0cmluZygiV0VCS0lUX0RPTSIp
LCBkZXNjcmlwdGlvbi5jb2RlLCBkZXNjcmlwdGlvbi5uYW1lKTsKLSAgICB9Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLQotc3RhdGljIGdib29sZWFuIHdlYmtpdF9kb21fd2Via2l0X25hbWVkX2Zs
b3dfYWRkX2V2ZW50X2xpc3RlbmVyKFdlYktpdERPTUV2ZW50VGFyZ2V0KiB0YXJnZXQsIGNvbnN0
IGNoYXIqIGV2ZW50TmFtZSwgR0Nsb3N1cmUqIGhhbmRsZXIsIGdib29sZWFuIHVzZUNhcHR1cmUp
Ci17Ci0gICAgV2ViQ29yZTo6V2ViS2l0TmFtZWRGbG93KiBjb3JlVGFyZ2V0ID0gc3RhdGljX2Nh
c3Q8V2ViQ29yZTo6V2ViS2l0TmFtZWRGbG93Kj4oV0VCS0lUX0RPTV9PQkpFQ1QodGFyZ2V0KS0+
Y29yZU9iamVjdCk7Ci0gICAgcmV0dXJuIFdlYktpdDo6R09iamVjdEV2ZW50TGlzdGVuZXI6OmFk
ZEV2ZW50TGlzdGVuZXIoR19PQkpFQ1QodGFyZ2V0KSwgY29yZVRhcmdldCwgZXZlbnROYW1lLCBo
YW5kbGVyLCB1c2VDYXB0dXJlKTsKLX0KLQotc3RhdGljIGdib29sZWFuIHdlYmtpdF9kb21fd2Vi
a2l0X25hbWVkX2Zsb3dfcmVtb3ZlX2V2ZW50X2xpc3RlbmVyKFdlYktpdERPTUV2ZW50VGFyZ2V0
KiB0YXJnZXQsIGNvbnN0IGNoYXIqIGV2ZW50TmFtZSwgR0Nsb3N1cmUqIGhhbmRsZXIsIGdib29s
ZWFuIHVzZUNhcHR1cmUpCi17Ci0gICAgV2ViQ29yZTo6V2ViS2l0TmFtZWRGbG93KiBjb3JlVGFy
Z2V0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6V2ViS2l0TmFtZWRGbG93Kj4oV0VCS0lUX0RPTV9P
QkpFQ1QodGFyZ2V0KS0+Y29yZU9iamVjdCk7Ci0gICAgcmV0dXJuIFdlYktpdDo6R09iamVjdEV2
ZW50TGlzdGVuZXI6OnJlbW92ZUV2ZW50TGlzdGVuZXIoR19PQkpFQ1QodGFyZ2V0KSwgY29yZVRh
cmdldCwgZXZlbnROYW1lLCBoYW5kbGVyLCB1c2VDYXB0dXJlKTsKLX0KLQotc3RhdGljIHZvaWQg
d2Via2l0X2RvbV9ldmVudF90YXJnZXRfaW5pdChXZWJLaXRET01FdmVudFRhcmdldElmYWNlKiBp
ZmFjZSkKLXsKLSAgICBpZmFjZS0+ZGlzcGF0Y2hfZXZlbnQgPSB3ZWJraXRfZG9tX3dlYmtpdF9u
YW1lZF9mbG93X2Rpc3BhdGNoX2V2ZW50OwotICAgIGlmYWNlLT5hZGRfZXZlbnRfbGlzdGVuZXIg
PSB3ZWJraXRfZG9tX3dlYmtpdF9uYW1lZF9mbG93X2FkZF9ldmVudF9saXN0ZW5lcjsKLSAgICBp
ZmFjZS0+cmVtb3ZlX2V2ZW50X2xpc3RlbmVyID0gd2Via2l0X2RvbV93ZWJraXRfbmFtZWRfZmxv
d19yZW1vdmVfZXZlbnRfbGlzdGVuZXI7Ci19Ci0KLUdfREVGSU5FX1RZUEVfV0lUSF9DT0RFKFdl
YktpdERPTVdlYktpdE5hbWVkRmxvdywgd2Via2l0X2RvbV93ZWJraXRfbmFtZWRfZmxvdywgV0VC
S0lUX0RPTV9UWVBFX09CSkVDVCwgR19JTVBMRU1FTlRfSU5URVJGQUNFKFdFQktJVF9ET01fVFlQ
RV9FVkVOVF9UQVJHRVQsIHdlYmtpdF9kb21fZXZlbnRfdGFyZ2V0X2luaXQpKQotCi1lbnVtIHsK
LSAgICBQUk9QXzAsCi0gICAgUFJPUF9OQU1FLAotICAgIFBST1BfT1ZFUlNFVCwKLSAgICBQUk9Q
X0ZJUlNUX0VNUFRZX1JFR0lPTl9JTkRFWCwKLX07Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdF9kb21f
d2Via2l0X25hbWVkX2Zsb3dfZmluYWxpemUoR09iamVjdCogb2JqZWN0KQotewotICAgIFdlYktp
dERPTVdlYktpdE5hbWVkRmxvd1ByaXZhdGUqIHByaXYgPSBXRUJLSVRfRE9NX1dFQktJVF9OQU1F
RF9GTE9XX0dFVF9QUklWQVRFKG9iamVjdCk7Ci0KLSAgICBXZWJLaXQ6OkRPTU9iamVjdENhY2hl
Ojpmb3JnZXQocHJpdi0+Y29yZU9iamVjdC5nZXQoKSk7Ci0KLSAgICBwcml2LT5+V2ViS2l0RE9N
V2ViS2l0TmFtZWRGbG93UHJpdmF0ZSgpOwotICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9kb21f
d2Via2l0X25hbWVkX2Zsb3dfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKLX0KLQot
c3RhdGljIHZvaWQgd2Via2l0X2RvbV93ZWJraXRfbmFtZWRfZmxvd19nZXRfcHJvcGVydHkoR09i
amVjdCogb2JqZWN0LCBndWludCBwcm9wZXJ0eUlkLCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVj
KiBwc3BlYykKLXsKLSAgICBXZWJLaXRET01XZWJLaXROYW1lZEZsb3cqIHNlbGYgPSBXRUJLSVRf
RE9NX1dFQktJVF9OQU1FRF9GTE9XKG9iamVjdCk7Ci0KLSAgICBzd2l0Y2ggKHByb3BlcnR5SWQp
IHsKLSAgICBjYXNlIFBST1BfTkFNRToKLSAgICAgICAgZ192YWx1ZV90YWtlX3N0cmluZyh2YWx1
ZSwgd2Via2l0X2RvbV93ZWJraXRfbmFtZWRfZmxvd19nZXRfbmFtZShzZWxmKSk7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgUFJPUF9PVkVSU0VUOgotICAgICAgICBnX3ZhbHVlX3NldF9ib29s
ZWFuKHZhbHVlLCB3ZWJraXRfZG9tX3dlYmtpdF9uYW1lZF9mbG93X2dldF9vdmVyc2V0KHNlbGYp
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX0ZJUlNUX0VNUFRZX1JFR0lPTl9JTkRF
WDoKLSAgICAgICAgZ192YWx1ZV9zZXRfbG9uZyh2YWx1ZSwgd2Via2l0X2RvbV93ZWJraXRfbmFt
ZWRfZmxvd19nZXRfZmlyc3RfZW1wdHlfcmVnaW9uX2luZGV4KHNlbGYpKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZ
X0lEKG9iamVjdCwgcHJvcGVydHlJZCwgcHNwZWMpOwotICAgICAgICBicmVhazsKLSAgICB9Ci19
Ci0KLXN0YXRpYyBHT2JqZWN0KiB3ZWJraXRfZG9tX3dlYmtpdF9uYW1lZF9mbG93X2NvbnN0cnVj
dG9yKEdUeXBlIHR5cGUsIGd1aW50IGNvbnN0cnVjdFByb3BlcnRpZXNDb3VudCwgR09iamVjdENv
bnN0cnVjdFBhcmFtKiBjb25zdHJ1Y3RQcm9wZXJ0aWVzKQotewotICAgIEdPYmplY3QqIG9iamVj
dCA9IEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9kb21fd2Via2l0X25hbWVkX2Zsb3dfcGFyZW50X2Ns
YXNzKS0+Y29uc3RydWN0b3IodHlwZSwgY29uc3RydWN0UHJvcGVydGllc0NvdW50LCBjb25zdHJ1
Y3RQcm9wZXJ0aWVzKTsKLQotICAgIFdlYktpdERPTVdlYktpdE5hbWVkRmxvd1ByaXZhdGUqIHBy
aXYgPSBXRUJLSVRfRE9NX1dFQktJVF9OQU1FRF9GTE9XX0dFVF9QUklWQVRFKG9iamVjdCk7Ci0g
ICAgcHJpdi0+Y29yZU9iamVjdCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OldlYktpdE5hbWVkRmxv
dyo+KFdFQktJVF9ET01fT0JKRUNUKG9iamVjdCktPmNvcmVPYmplY3QpOwotICAgIFdlYktpdDo6
RE9NT2JqZWN0Q2FjaGU6OnB1dChwcml2LT5jb3JlT2JqZWN0LmdldCgpLCBvYmplY3QpOwotCi0g
ICAgcmV0dXJuIG9iamVjdDsKLX0KLQotc3RhdGljIHZvaWQgd2Via2l0X2RvbV93ZWJraXRfbmFt
ZWRfZmxvd19jbGFzc19pbml0KFdlYktpdERPTVdlYktpdE5hbWVkRmxvd0NsYXNzKiByZXF1ZXN0
Q2xhc3MpCi17Ci0gICAgR09iamVjdENsYXNzKiBnb2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFT
UyhyZXF1ZXN0Q2xhc3MpOwotICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShnb2JqZWN0Q2xh
c3MsIHNpemVvZihXZWJLaXRET01XZWJLaXROYW1lZEZsb3dQcml2YXRlKSk7Ci0gICAgZ29iamVj
dENsYXNzLT5jb25zdHJ1Y3RvciA9IHdlYmtpdF9kb21fd2Via2l0X25hbWVkX2Zsb3dfY29uc3Ry
dWN0b3I7Ci0gICAgZ29iamVjdENsYXNzLT5maW5hbGl6ZSA9IHdlYmtpdF9kb21fd2Via2l0X25h
bWVkX2Zsb3dfZmluYWxpemU7Ci0gICAgZ29iamVjdENsYXNzLT5nZXRfcHJvcGVydHkgPSB3ZWJr
aXRfZG9tX3dlYmtpdF9uYW1lZF9mbG93X2dldF9wcm9wZXJ0eTsKLQotICAgIGdfb2JqZWN0X2Ns
YXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJP
UF9OQU1FLAotICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nKAotICAgICAgICAgICAgIm5hbWUi
LAotICAgICAgICAgICAgIldlYktpdE5hbWVkRmxvdzpuYW1lIiwKLSAgICAgICAgICAgICJyZWFk
LW9ubHkgZ2NoYXIqIFdlYktpdE5hbWVkRmxvdzpuYW1lIiwKLSAgICAgICAgICAgICIiLAotICAg
ICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7Ci0KLSAgICBnX29iamVjdF9jbGFzc19p
bnN0YWxsX3Byb3BlcnR5KAotICAgICAgICBnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBST1BfT1ZF
UlNFVCwKLSAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oCi0gICAgICAgICAgICAib3ZlcnNl
dCIsCi0gICAgICAgICAgICAiV2ViS2l0TmFtZWRGbG93Om92ZXJzZXQiLAotICAgICAgICAgICAg
InJlYWQtb25seSBnYm9vbGVhbiBXZWJLaXROYW1lZEZsb3c6b3ZlcnNldCIsCi0gICAgICAgICAg
ICBGQUxTRSwKLSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSkpOwotCi0gICAgZ19v
YmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKLSAgICAgICAgZ29iamVjdENsYXNzLAotICAg
ICAgICBQUk9QX0ZJUlNUX0VNUFRZX1JFR0lPTl9JTkRFWCwKLSAgICAgICAgZ19wYXJhbV9zcGVj
X2xvbmcoCi0gICAgICAgICAgICAiZmlyc3QtZW1wdHktcmVnaW9uLWluZGV4IiwKLSAgICAgICAg
ICAgICJXZWJLaXROYW1lZEZsb3c6Zmlyc3QtZW1wdHktcmVnaW9uLWluZGV4IiwKLSAgICAgICAg
ICAgICJyZWFkLW9ubHkgZ2xvbmcgV2ViS2l0TmFtZWRGbG93OmZpcnN0LWVtcHR5LXJlZ2lvbi1p
bmRleCIsCi0gICAgICAgICAgICBHX01JTkxPTkcsIEdfTUFYTE9ORywgMCwKLSAgICAgICAgICAg
IFdFQktJVF9QQVJBTV9SRUFEQUJMRSkpOwotCi19Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdF9kb21f
d2Via2l0X25hbWVkX2Zsb3dfaW5pdChXZWJLaXRET01XZWJLaXROYW1lZEZsb3cqIHJlcXVlc3Qp
Ci17Ci0gICAgV2ViS2l0RE9NV2ViS2l0TmFtZWRGbG93UHJpdmF0ZSogcHJpdiA9IFdFQktJVF9E
T01fV0VCS0lUX05BTUVEX0ZMT1dfR0VUX1BSSVZBVEUocmVxdWVzdCk7Ci0gICAgbmV3IChwcml2
KSBXZWJLaXRET01XZWJLaXROYW1lZEZsb3dQcml2YXRlKCk7Ci19Ci0KLVdlYktpdERPTU5vZGVM
aXN0KiB3ZWJraXRfZG9tX3dlYmtpdF9uYW1lZF9mbG93X2dldF9yZWdpb25zX2J5X2NvbnRlbnQo
V2ViS2l0RE9NV2ViS2l0TmFtZWRGbG93KiBzZWxmLCBXZWJLaXRET01Ob2RlKiBjb250ZW50Tm9k
ZSkKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19XRUJLSVRfTkFNRURfRkxPVyhzZWxmKSwg
MCk7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19OT0RFKGNvbnRlbnRO
b2RlKSwgMCk7Ci0gICAgV2ViQ29yZTo6V2ViS2l0TmFtZWRGbG93KiBpdGVtID0gV2ViS2l0Ojpj
b3JlKHNlbGYpOwotICAgIFdlYkNvcmU6Ok5vZGUqIGNvbnZlcnRlZENvbnRlbnROb2RlID0gV2Vi
S2l0Ojpjb3JlKGNvbnRlbnROb2RlKTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6Tm9kZUxpc3Q+IGdv
YmplY3RSZXN1bHQgPSBXVEY6OmdldFB0cihpdGVtLT5nZXRSZWdpb25zQnlDb250ZW50KGNvbnZl
cnRlZENvbnRlbnROb2RlKSk7Ci0gICAgcmV0dXJuIFdlYktpdDo6a2l0KGdvYmplY3RSZXN1bHQu
Z2V0KCkpOwotfQotCi1XZWJLaXRET01Ob2RlTGlzdCogd2Via2l0X2RvbV93ZWJraXRfbmFtZWRf
Zmxvd19nZXRfcmVnaW9ucyhXZWJLaXRET01XZWJLaXROYW1lZEZsb3cqIHNlbGYpCi17Ci0gICAg
V2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9p
Zl9mYWlsKFdFQktJVF9ET01fSVNfV0VCS0lUX05BTUVEX0ZMT1coc2VsZiksIDApOwotICAgIFdl
YkNvcmU6OldlYktpdE5hbWVkRmxvdyogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBS
ZWZQdHI8V2ViQ29yZTo6Tm9kZUxpc3Q+IGdvYmplY3RSZXN1bHQgPSBXVEY6OmdldFB0cihpdGVt
LT5nZXRSZWdpb25zKCkpOwotICAgIHJldHVybiBXZWJLaXQ6OmtpdChnb2JqZWN0UmVzdWx0Lmdl
dCgpKTsKLX0KLQotV2ViS2l0RE9NTm9kZUxpc3QqIHdlYmtpdF9kb21fd2Via2l0X25hbWVkX2Zs
b3dfZ2V0X2NvbnRlbnQoV2ViS2l0RE9NV2ViS2l0TmFtZWRGbG93KiBzZWxmKQotewotICAgIFdl
YkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZf
ZmFpbChXRUJLSVRfRE9NX0lTX1dFQktJVF9OQU1FRF9GTE9XKHNlbGYpLCAwKTsKLSAgICBXZWJD
b3JlOjpXZWJLaXROYW1lZEZsb3cqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgUmVm
UHRyPFdlYkNvcmU6Ok5vZGVMaXN0PiBnb2JqZWN0UmVzdWx0ID0gV1RGOjpnZXRQdHIoaXRlbS0+
Z2V0Q29udGVudCgpKTsKLSAgICByZXR1cm4gV2ViS2l0OjpraXQoZ29iamVjdFJlc3VsdC5nZXQo
KSk7Ci19Ci0KLWdjaGFyKiB3ZWJraXRfZG9tX3dlYmtpdF9uYW1lZF9mbG93X2dldF9uYW1lKFdl
YktpdERPTVdlYktpdE5hbWVkRmxvdyogc2VsZikKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJl
YWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9J
U19XRUJLSVRfTkFNRURfRkxPVyhzZWxmKSwgMCk7Ci0gICAgV2ViQ29yZTo6V2ViS2l0TmFtZWRG
bG93KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdjaGFyKiByZXN1bHQgPSBjb252
ZXJ0VG9VVEY4U3RyaW5nKGl0ZW0tPm5hbWUoKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQot
Z2Jvb2xlYW4gd2Via2l0X2RvbV93ZWJraXRfbmFtZWRfZmxvd19nZXRfb3ZlcnNldChXZWJLaXRE
T01XZWJLaXROYW1lZEZsb3cqIHNlbGYpCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVs
bFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfV0VC
S0lUX05BTUVEX0ZMT1coc2VsZiksIEZBTFNFKTsKLSAgICBXZWJDb3JlOjpXZWJLaXROYW1lZEZs
b3cqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ2Jvb2xlYW4gcmVzdWx0ID0gaXRl
bS0+b3ZlcnNldCgpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLWdsb25nIHdlYmtpdF9kb21f
d2Via2l0X25hbWVkX2Zsb3dfZ2V0X2ZpcnN0X2VtcHR5X3JlZ2lvbl9pbmRleChXZWJLaXRET01X
ZWJLaXROYW1lZEZsb3cqIHNlbGYpCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0
YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfV0VCS0lU
X05BTUVEX0ZMT1coc2VsZiksIDApOwotICAgIFdlYkNvcmU6OldlYktpdE5hbWVkRmxvdyogaXRl
bSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBnbG9uZyByZXN1bHQgPSBpdGVtLT5maXJzdEVt
cHR5UmVnaW9uSW5kZXgoKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktp
dERPTVdlYktpdE5hbWVkRmxvdy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01XZWJLaXROYW1lZEZsb3cuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMzY0NDdkMS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVdlYktpdE5h
bWVkRmxvdy5oCisrKyAvZGV2L251bGwKQEAgLTEsMTIwICswLDAgQEAKLS8qCi0gKiAgVGhpcyBm
aWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICogIFRoaXMg
ZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBN
T0RJRlkhCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0g
KiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
Ci0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgV2ViS2l0RE9NV2ViS2l0TmFtZWRGbG93X2gKLSNk
ZWZpbmUgV2ViS2l0RE9NV2ViS2l0TmFtZWRGbG93X2gKLQotI2lmZGVmIFdFQktJVF9ET01fVVNF
X1VOU1RBQkxFX0FQSQotCi0jaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KLSNpbmNsdWRlIDx3ZWJr
aXRkb20vV2ViS2l0RE9NT2JqZWN0Lmg+Ci0jaW5jbHVkZSA8d2Via2l0ZG9tL3dlYmtpdGRvbWRl
ZmluZXMtdW5zdGFibGUuaD4KLQotR19CRUdJTl9ERUNMUwotCi0jZGVmaW5lIFdFQktJVF9ET01f
VFlQRV9XRUJLSVRfTkFNRURfRkxPVyAgICAgICAgICAgICh3ZWJraXRfZG9tX3dlYmtpdF9uYW1l
ZF9mbG93X2dldF90eXBlKCkpCi0jZGVmaW5lIFdFQktJVF9ET01fV0VCS0lUX05BTUVEX0ZMT1co
b2JqKSAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwgV0VCS0lU
X0RPTV9UWVBFX1dFQktJVF9OQU1FRF9GTE9XLCBXZWJLaXRET01XZWJLaXROYW1lZEZsb3cpKQot
I2RlZmluZSBXRUJLSVRfRE9NX1dFQktJVF9OQU1FRF9GTE9XX0NMQVNTKGtsYXNzKSAgICAoR19U
WVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJVF9ET01fVFlQRV9XRUJLSVRfTkFN
RURfRkxPVywgV2ViS2l0RE9NV2ViS2l0TmFtZWRGbG93Q2xhc3MpCi0jZGVmaW5lIFdFQktJVF9E
T01fSVNfV0VCS0lUX05BTUVEX0ZMT1cob2JqKSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFO
Q0VfVFlQRSgob2JqKSwgV0VCS0lUX0RPTV9UWVBFX1dFQktJVF9OQU1FRF9GTE9XKSkKLSNkZWZp
bmUgV0VCS0lUX0RPTV9JU19XRUJLSVRfTkFNRURfRkxPV19DTEFTUyhrbGFzcykgKEdfVFlQRV9D
SEVDS19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfRE9NX1RZUEVfV0VCS0lUX05BTUVEX0ZM
T1cpKQotI2RlZmluZSBXRUJLSVRfRE9NX1dFQktJVF9OQU1FRF9GTE9XX0dFVF9DTEFTUyhvYmop
ICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9ET01fVFlQRV9XRUJL
SVRfTkFNRURfRkxPVywgV2ViS2l0RE9NV2ViS2l0TmFtZWRGbG93Q2xhc3MpKQotCi1zdHJ1Y3Qg
X1dlYktpdERPTVdlYktpdE5hbWVkRmxvdyB7Ci0gICAgV2ViS2l0RE9NT2JqZWN0IHBhcmVudF9p
bnN0YW5jZTsKLX07Ci0KLXN0cnVjdCBfV2ViS2l0RE9NV2ViS2l0TmFtZWRGbG93Q2xhc3Mgewot
ICAgIFdlYktpdERPTU9iamVjdENsYXNzIHBhcmVudF9jbGFzczsKLX07Ci0KLVdFQktJVF9BUEkg
R1R5cGUKLXdlYmtpdF9kb21fd2Via2l0X25hbWVkX2Zsb3dfZ2V0X3R5cGUodm9pZCk7Ci0KLS8q
KgotICogd2Via2l0X2RvbV93ZWJraXRfbmFtZWRfZmxvd19nZXRfcmVnaW9uc19ieV9jb250ZW50
OgotICogQHNlbGY6IEEgI1dlYktpdERPTVdlYktpdE5hbWVkRmxvdwotICogQGNvbnRlbnROb2Rl
OiBBICNXZWJLaXRET01Ob2RlCi0gKgotICogUmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiBBICNX
ZWJLaXRET01Ob2RlTGlzdAotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lU
X0FQSSBXZWJLaXRET01Ob2RlTGlzdCoKLXdlYmtpdF9kb21fd2Via2l0X25hbWVkX2Zsb3dfZ2V0
X3JlZ2lvbnNfYnlfY29udGVudChXZWJLaXRET01XZWJLaXROYW1lZEZsb3cqIHNlbGYsIFdlYktp
dERPTU5vZGUqIGNvbnRlbnROb2RlKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX3dlYmtpdF9uYW1l
ZF9mbG93X2dldF9yZWdpb25zOgotICogQHNlbGY6IEEgI1dlYktpdERPTVdlYktpdE5hbWVkRmxv
dwotICoKLSAqIFJldHVybnM6ICh0cmFuc2ZlciBmdWxsKTogQSAjV2ViS2l0RE9NTm9kZUxpc3QK
LSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJVF9BUEkgV2ViS2l0RE9NTm9k
ZUxpc3QqCi13ZWJraXRfZG9tX3dlYmtpdF9uYW1lZF9mbG93X2dldF9yZWdpb25zKFdlYktpdERP
TVdlYktpdE5hbWVkRmxvdyogc2VsZik7Ci0KLS8qKgotICogd2Via2l0X2RvbV93ZWJraXRfbmFt
ZWRfZmxvd19nZXRfY29udGVudDoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01XZWJLaXROYW1lZEZs
b3cKLSAqCi0gKiBSZXR1cm5zOiAodHJhbnNmZXIgZnVsbCk6IEEgI1dlYktpdERPTU5vZGVMaXN0
Ci0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIFdlYktpdERPTU5v
ZGVMaXN0Kgotd2Via2l0X2RvbV93ZWJraXRfbmFtZWRfZmxvd19nZXRfY29udGVudChXZWJLaXRE
T01XZWJLaXROYW1lZEZsb3cqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9kb21fd2Via2l0X25h
bWVkX2Zsb3dfZ2V0X25hbWU6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NV2ViS2l0TmFtZWRGbG93
Ci0gKgotICogUmV0dXJuczogQSAjZ2NoYXIKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0q
Ki8KLVdFQktJVF9BUEkgZ2NoYXIqCi13ZWJraXRfZG9tX3dlYmtpdF9uYW1lZF9mbG93X2dldF9u
YW1lKFdlYktpdERPTVdlYktpdE5hbWVkRmxvdyogc2VsZik7Ci0KLS8qKgotICogd2Via2l0X2Rv
bV93ZWJraXRfbmFtZWRfZmxvd19nZXRfb3ZlcnNldDoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01X
ZWJLaXROYW1lZEZsb3cKLSAqCi0gKiBSZXR1cm5zOiBBICNnYm9vbGVhbgotICoKLSAqIFN0YWJp
bGl0eTogVW5zdGFibGUKLSoqLwotV0VCS0lUX0FQSSBnYm9vbGVhbgotd2Via2l0X2RvbV93ZWJr
aXRfbmFtZWRfZmxvd19nZXRfb3ZlcnNldChXZWJLaXRET01XZWJLaXROYW1lZEZsb3cqIHNlbGYp
OwotCi0vKioKLSAqIHdlYmtpdF9kb21fd2Via2l0X25hbWVkX2Zsb3dfZ2V0X2ZpcnN0X2VtcHR5
X3JlZ2lvbl9pbmRleDoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01XZWJLaXROYW1lZEZsb3cKLSAq
Ci0gKiBSZXR1cm5zOiBBICNnbG9uZwotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwot
V0VCS0lUX0FQSSBnbG9uZwotd2Via2l0X2RvbV93ZWJraXRfbmFtZWRfZmxvd19nZXRfZmlyc3Rf
ZW1wdHlfcmVnaW9uX2luZGV4KFdlYktpdERPTVdlYktpdE5hbWVkRmxvdyogc2VsZik7Ci0KLUdf
RU5EX0RFQ0xTCi0KLSNlbmRpZiAvKiBXRUJLSVRfRE9NX1VTRV9VTlNUQUJMRV9BUEkgKi8KLSNl
bmRpZiAvKiBXZWJLaXRET01XZWJLaXROYW1lZEZsb3dfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01X
ZWJLaXROYW1lZEZsb3dQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVdlYktpdE5hbWVkRmxvd1ByaXZhdGUuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjNhMGFlNC4uMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERP
TVdlYktpdE5hbWVkRmxvd1ByaXZhdGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAK
LS8qCi0gKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9q
ZWN0LgotICogIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGlu
Z3MucGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICog
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgV2ViS2l0RE9NV2ViS2l0
TmFtZWRGbG93UHJpdmF0ZV9oCi0jZGVmaW5lIFdlYktpdERPTVdlYktpdE5hbWVkRmxvd1ByaXZh
dGVfaAotCi0jaW5jbHVkZSA8V2ViQ29yZS9XZWJLaXROYW1lZEZsb3cuaD4KLSNpbmNsdWRlIDx3
ZWJraXRkb20vV2ViS2l0RE9NV2ViS2l0TmFtZWRGbG93Lmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQg
ewotV2ViS2l0RE9NV2ViS2l0TmFtZWRGbG93KiB3cmFwV2ViS2l0TmFtZWRGbG93KFdlYkNvcmU6
OldlYktpdE5hbWVkRmxvdyopOwotV2ViS2l0RE9NV2ViS2l0TmFtZWRGbG93KiBraXQoV2ViQ29y
ZTo6V2ViS2l0TmFtZWRGbG93Kik7Ci1XZWJDb3JlOjpXZWJLaXROYW1lZEZsb3cqIGNvcmUoV2Vi
S2l0RE9NV2ViS2l0TmFtZWRGbG93Kik7Ci19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlm
IC8qIFdlYktpdERPTVdlYktpdE5hbWVkRmxvd1ByaXZhdGVfaCAqLwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRE
T01XZWJLaXROYW1lc3BhY2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01XZWJLaXROYW1lc3BhY2UuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZmE4NDViLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NV2ViS2l0
TmFtZXNwYWNlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1NyArMCwwIEBACi0vKgotICogIFRo
aXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAqICBU
aGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBO
T1QgTU9ESUZZIQotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0g
KgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQotICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2Vi
S2l0RE9NV2ViS2l0TmFtZXNwYWNlLmgiCi0KLSNpbmNsdWRlIDxXZWJDb3JlL0NTU0ltcG9ydFJ1
bGUuaD4KLSNpbmNsdWRlICJET01PYmplY3RDYWNoZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRG9j
dW1lbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0V4Y2VwdGlvbkNvZGUuaD4KLSNpbmNsdWRlIDxX
ZWJDb3JlL0V4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbi5oPgotI2luY2x1ZGUgPFdlYkNvcmUvSlNN
YWluVGhyZWFkRXhlY1N0YXRlLmg+Ci0jaW5jbHVkZSAiV2ViS2l0RE9NUHJpdmF0ZS5oIgotI2lu
Y2x1ZGUgIldlYktpdERPTVVzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2VQcml2YXRlLmgiCi0j
aW5jbHVkZSAiV2ViS2l0RE9NV2ViS2l0TmFtZXNwYWNlUHJpdmF0ZS5oIgotI2luY2x1ZGUgIkNv
bnZlcnRUb1VURjhTdHJpbmcuaCIKLSNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+Ci0jaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgotCi0jZGVmaW5lIFdFQktJVF9ET01fV0VCS0lUX05BTUVTUEFDRV9HRVRf
UFJJVkFURShvYmopIEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURShvYmosIFdFQktJVF9ET01f
VFlQRV9XRUJLSVRfTkFNRVNQQUNFLCBXZWJLaXRET01XZWJLaXROYW1lc3BhY2VQcml2YXRlKQot
Ci10eXBlZGVmIHN0cnVjdCBfV2ViS2l0RE9NV2ViS2l0TmFtZXNwYWNlUHJpdmF0ZSB7Ci0jaWYg
RU5BQkxFKFVTRVJfTUVTU0FHRV9IQU5ETEVSUykKLSAgICBSZWZQdHI8V2ViQ29yZTo6V2ViS2l0
TmFtZXNwYWNlPiBjb3JlT2JqZWN0OwotI2VuZGlmIC8vIEVOQUJMRShVU0VSX01FU1NBR0VfSEFO
RExFUlMpCi19IFdlYktpdERPTVdlYktpdE5hbWVzcGFjZVByaXZhdGU7Ci0KLSNpZiBFTkFCTEUo
VVNFUl9NRVNTQUdFX0hBTkRMRVJTKQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotV2ViS2l0RE9N
V2ViS2l0TmFtZXNwYWNlKiBraXQoV2ViQ29yZTo6V2ViS2l0TmFtZXNwYWNlKiBvYmopCi17Ci0g
ICAgaWYgKCFvYmopCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgaWYgKGdwb2ludGVyIHJldCA9
IERPTU9iamVjdENhY2hlOjpnZXQob2JqKSkKLSAgICAgICAgcmV0dXJuIFdFQktJVF9ET01fV0VC
S0lUX05BTUVTUEFDRShyZXQpOwotCi0gICAgcmV0dXJuIHdyYXBXZWJLaXROYW1lc3BhY2Uob2Jq
KTsKLX0KLQotV2ViQ29yZTo6V2ViS2l0TmFtZXNwYWNlKiBjb3JlKFdlYktpdERPTVdlYktpdE5h
bWVzcGFjZSogcmVxdWVzdCkKLXsKLSAgICByZXR1cm4gcmVxdWVzdCA/IHN0YXRpY19jYXN0PFdl
YkNvcmU6OldlYktpdE5hbWVzcGFjZSo+KFdFQktJVF9ET01fT0JKRUNUKHJlcXVlc3QpLT5jb3Jl
T2JqZWN0KSA6IDA7Ci19Ci0KLVdlYktpdERPTVdlYktpdE5hbWVzcGFjZSogd3JhcFdlYktpdE5h
bWVzcGFjZShXZWJDb3JlOjpXZWJLaXROYW1lc3BhY2UqIGNvcmVPYmplY3QpCi17Ci0gICAgQVNT
RVJUKGNvcmVPYmplY3QpOwotICAgIHJldHVybiBXRUJLSVRfRE9NX1dFQktJVF9OQU1FU1BBQ0Uo
Z19vYmplY3RfbmV3KFdFQktJVF9ET01fVFlQRV9XRUJLSVRfTkFNRVNQQUNFLCAiY29yZS1vYmpl
Y3QiLCBjb3JlT2JqZWN0LCBudWxscHRyKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAot
Ci0jZW5kaWYgLy8gRU5BQkxFKFVTRVJfTUVTU0FHRV9IQU5ETEVSUykKLQotR19ERUZJTkVfVFlQ
RShXZWJLaXRET01XZWJLaXROYW1lc3BhY2UsIHdlYmtpdF9kb21fd2Via2l0X25hbWVzcGFjZSwg
V0VCS0lUX0RPTV9UWVBFX09CSkVDVCkKLQotZW51bSB7Ci0gICAgUFJPUF8wLAotICAgIFBST1Bf
TUVTU0FHRV9IQU5ETEVSUywKLX07Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdF9kb21fd2Via2l0X25h
bWVzcGFjZV9maW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCi17Ci0gICAgV2ViS2l0RE9NV2ViS2l0
TmFtZXNwYWNlUHJpdmF0ZSogcHJpdiA9IFdFQktJVF9ET01fV0VCS0lUX05BTUVTUEFDRV9HRVRf
UFJJVkFURShvYmplY3QpOwotI2lmIEVOQUJMRShVU0VSX01FU1NBR0VfSEFORExFUlMpCi0gICAg
V2ViS2l0OjpET01PYmplY3RDYWNoZTo6Zm9yZ2V0KHByaXYtPmNvcmVPYmplY3QuZ2V0KCkpOwot
I2VuZGlmIC8vIEVOQUJMRShVU0VSX01FU1NBR0VfSEFORExFUlMpCi0gICAgcHJpdi0+fldlYktp
dERPTVdlYktpdE5hbWVzcGFjZVByaXZhdGUoKTsKLSAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRf
ZG9tX3dlYmtpdF9uYW1lc3BhY2VfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKLX0K
LQotc3RhdGljIHZvaWQgd2Via2l0X2RvbV93ZWJraXRfbmFtZXNwYWNlX2dldF9wcm9wZXJ0eShH
T2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BlcnR5SWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNw
ZWMqIHBzcGVjKQotewotICAgIFdlYktpdERPTVdlYktpdE5hbWVzcGFjZSogc2VsZiA9IFdFQktJ
VF9ET01fV0VCS0lUX05BTUVTUEFDRShvYmplY3QpOwotCi0gICAgc3dpdGNoIChwcm9wZXJ0eUlk
KSB7Ci0gICAgY2FzZSBQUk9QX01FU1NBR0VfSEFORExFUlM6Ci0gICAgICAgIGdfdmFsdWVfc2V0
X29iamVjdCh2YWx1ZSwgd2Via2l0X2RvbV93ZWJraXRfbmFtZXNwYWNlX2dldF9tZXNzYWdlX2hh
bmRsZXJzKHNlbGYpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgR19P
QkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcGVydHlJZCwgcHNwZWMp
OwotICAgICAgICBicmVhazsKLSAgICB9Ci19Ci0KLXN0YXRpYyBHT2JqZWN0KiB3ZWJraXRfZG9t
X3dlYmtpdF9uYW1lc3BhY2VfY29uc3RydWN0b3IoR1R5cGUgdHlwZSwgZ3VpbnQgY29uc3RydWN0
UHJvcGVydGllc0NvdW50LCBHT2JqZWN0Q29uc3RydWN0UGFyYW0qIGNvbnN0cnVjdFByb3BlcnRp
ZXMpCi17Ci0gICAgR09iamVjdCogb2JqZWN0ID0gR19PQkpFQ1RfQ0xBU1Mod2Via2l0X2RvbV93
ZWJraXRfbmFtZXNwYWNlX3BhcmVudF9jbGFzcyktPmNvbnN0cnVjdG9yKHR5cGUsIGNvbnN0cnVj
dFByb3BlcnRpZXNDb3VudCwgY29uc3RydWN0UHJvcGVydGllcyk7Ci0jaWYgRU5BQkxFKFVTRVJf
TUVTU0FHRV9IQU5ETEVSUykKLSAgICBXZWJLaXRET01XZWJLaXROYW1lc3BhY2VQcml2YXRlKiBw
cml2ID0gV0VCS0lUX0RPTV9XRUJLSVRfTkFNRVNQQUNFX0dFVF9QUklWQVRFKG9iamVjdCk7Ci0g
ICAgcHJpdi0+Y29yZU9iamVjdCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OldlYktpdE5hbWVzcGFj
ZSo+KFdFQktJVF9ET01fT0JKRUNUKG9iamVjdCktPmNvcmVPYmplY3QpOwotICAgIFdlYktpdDo6
RE9NT2JqZWN0Q2FjaGU6OnB1dChwcml2LT5jb3JlT2JqZWN0LmdldCgpLCBvYmplY3QpOwotI2Vu
ZGlmIC8vIEVOQUJMRShVU0VSX01FU1NBR0VfSEFORExFUlMpCi0gICAgcmV0dXJuIG9iamVjdDsK
LX0KLQotc3RhdGljIHZvaWQgd2Via2l0X2RvbV93ZWJraXRfbmFtZXNwYWNlX2NsYXNzX2luaXQo
V2ViS2l0RE9NV2ViS2l0TmFtZXNwYWNlQ2xhc3MqIHJlcXVlc3RDbGFzcykKLXsKLSAgICBHT2Jq
ZWN0Q2xhc3MqIGdvYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKHJlcXVlc3RDbGFzcyk7Ci0g
ICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKGdvYmplY3RDbGFzcywgc2l6ZW9mKFdlYktpdERP
TVdlYktpdE5hbWVzcGFjZVByaXZhdGUpKTsKLSAgICBnb2JqZWN0Q2xhc3MtPmNvbnN0cnVjdG9y
ID0gd2Via2l0X2RvbV93ZWJraXRfbmFtZXNwYWNlX2NvbnN0cnVjdG9yOwotICAgIGdvYmplY3RD
bGFzcy0+ZmluYWxpemUgPSB3ZWJraXRfZG9tX3dlYmtpdF9uYW1lc3BhY2VfZmluYWxpemU7Ci0g
ICAgZ29iamVjdENsYXNzLT5nZXRfcHJvcGVydHkgPSB3ZWJraXRfZG9tX3dlYmtpdF9uYW1lc3Bh
Y2VfZ2V0X3Byb3BlcnR5OwotCi0gICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgK
LSAgICAgICAgZ29iamVjdENsYXNzLAotICAgICAgICBQUk9QX01FU1NBR0VfSEFORExFUlMsCi0g
ICAgICAgIGdfcGFyYW1fc3BlY19vYmplY3QoCi0gICAgICAgICAgICAibWVzc2FnZS1oYW5kbGVy
cyIsCi0gICAgICAgICAgICAiV2ViS2l0TmFtZXNwYWNlOm1lc3NhZ2UtaGFuZGxlcnMiLAotICAg
ICAgICAgICAgInJlYWQtb25seSBXZWJLaXRET01Vc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNl
KiBXZWJLaXROYW1lc3BhY2U6bWVzc2FnZS1oYW5kbGVycyIsCi0gICAgICAgICAgICBXRUJLSVRf
RE9NX1RZUEVfVVNFUl9NRVNTQUdFX0hBTkRMRVJTX05BTUVTUEFDRSwKLSAgICAgICAgICAgIFdF
QktJVF9QQVJBTV9SRUFEQUJMRSkpOwotCi19Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdF9kb21fd2Vi
a2l0X25hbWVzcGFjZV9pbml0KFdlYktpdERPTVdlYktpdE5hbWVzcGFjZSogcmVxdWVzdCkKLXsK
LSAgICBXZWJLaXRET01XZWJLaXROYW1lc3BhY2VQcml2YXRlKiBwcml2ID0gV0VCS0lUX0RPTV9X
RUJLSVRfTkFNRVNQQUNFX0dFVF9QUklWQVRFKHJlcXVlc3QpOwotICAgIG5ldyAocHJpdikgV2Vi
S2l0RE9NV2ViS2l0TmFtZXNwYWNlUHJpdmF0ZSgpOwotfQotCi1XZWJLaXRET01Vc2VyTWVzc2Fn
ZUhhbmRsZXJzTmFtZXNwYWNlKiB3ZWJraXRfZG9tX3dlYmtpdF9uYW1lc3BhY2VfZ2V0X21lc3Nh
Z2VfaGFuZGxlcnMoV2ViS2l0RE9NV2ViS2l0TmFtZXNwYWNlKiBzZWxmKQotewotI2lmIEVOQUJM
RShVU0VSX01FU1NBR0VfSEFORExFUlMpCi0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0
YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfV0VCS0lU
X05BTUVTUEFDRShzZWxmKSwgMCk7Ci0gICAgV2ViQ29yZTo6V2ViS2l0TmFtZXNwYWNlKiBpdGVt
ID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpVc2VyTWVzc2FnZUhh
bmRsZXJzTmFtZXNwYWNlPiBnb2JqZWN0UmVzdWx0ID0gV1RGOjpnZXRQdHIoaXRlbS0+bWVzc2Fn
ZUhhbmRsZXJzKCkpOwotICAgIHJldHVybiBXZWJLaXQ6OmtpdChnb2JqZWN0UmVzdWx0LmdldCgp
KTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHNlbGYpOwotICAgIFdFQktJVF9XQVJOX0ZFQVRV
UkVfTk9UX1BSRVNFTlQoIlVzZXIgTWVzc2FnZSBIYW5kbGVycyIpCi0gICAgcmV0dXJuIDA7Ci0j
ZW5kaWYgLyogRU5BQkxFKFVTRVJfTUVTU0FHRV9IQU5ETEVSUykgKi8KLX0KLQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9X
ZWJLaXRET01XZWJLaXROYW1lc3BhY2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NV2ViS2l0TmFtZXNwYWNlLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY4ZGVlNWYuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01XZWJL
aXROYW1lc3BhY2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLS8qCi0gKiAgVGhp
cyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICogIFRo
aXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5P
VCBNT0RJRlkhCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAq
Ci0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgV2ViS2l0RE9NV2ViS2l0TmFtZXNwYWNlX2gK
LSNkZWZpbmUgV2ViS2l0RE9NV2ViS2l0TmFtZXNwYWNlX2gKLQotI2lmZGVmIFdFQktJVF9ET01f
VVNFX1VOU1RBQkxFX0FQSQotCi0jaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KLSNpbmNsdWRlIDx3
ZWJraXRkb20vV2ViS2l0RE9NT2JqZWN0Lmg+Ci0jaW5jbHVkZSA8d2Via2l0ZG9tL3dlYmtpdGRv
bWRlZmluZXMtdW5zdGFibGUuaD4KLQotR19CRUdJTl9ERUNMUwotCi0jZGVmaW5lIFdFQktJVF9E
T01fVFlQRV9XRUJLSVRfTkFNRVNQQUNFICAgICAgICAgICAgKHdlYmtpdF9kb21fd2Via2l0X25h
bWVzcGFjZV9nZXRfdHlwZSgpKQotI2RlZmluZSBXRUJLSVRfRE9NX1dFQktJVF9OQU1FU1BBQ0Uo
b2JqKSAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwgV0VCS0lU
X0RPTV9UWVBFX1dFQktJVF9OQU1FU1BBQ0UsIFdlYktpdERPTVdlYktpdE5hbWVzcGFjZSkpCi0j
ZGVmaW5lIFdFQktJVF9ET01fV0VCS0lUX05BTUVTUEFDRV9DTEFTUyhrbGFzcykgICAgKEdfVFlQ
RV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksICBXRUJLSVRfRE9NX1RZUEVfV0VCS0lUX05BTUVT
UEFDRSwgV2ViS2l0RE9NV2ViS2l0TmFtZXNwYWNlQ2xhc3MpCi0jZGVmaW5lIFdFQktJVF9ET01f
SVNfV0VCS0lUX05BTUVTUEFDRShvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9U
WVBFKChvYmopLCBXRUJLSVRfRE9NX1RZUEVfV0VCS0lUX05BTUVTUEFDRSkpCi0jZGVmaW5lIFdF
QktJVF9ET01fSVNfV0VCS0lUX05BTUVTUEFDRV9DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19D
TEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfRE9NX1RZUEVfV0VCS0lUX05BTUVTUEFDRSkpCi0j
ZGVmaW5lIFdFQktJVF9ET01fV0VCS0lUX05BTUVTUEFDRV9HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQ
RV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksICBXRUJLSVRfRE9NX1RZUEVfV0VCS0lUX05BTUVT
UEFDRSwgV2ViS2l0RE9NV2ViS2l0TmFtZXNwYWNlQ2xhc3MpKQotCi1zdHJ1Y3QgX1dlYktpdERP
TVdlYktpdE5hbWVzcGFjZSB7Ci0gICAgV2ViS2l0RE9NT2JqZWN0IHBhcmVudF9pbnN0YW5jZTsK
LX07Ci0KLXN0cnVjdCBfV2ViS2l0RE9NV2ViS2l0TmFtZXNwYWNlQ2xhc3MgewotICAgIFdlYktp
dERPTU9iamVjdENsYXNzIHBhcmVudF9jbGFzczsKLX07Ci0KLVdFQktJVF9BUEkgR1R5cGUKLXdl
YmtpdF9kb21fd2Via2l0X25hbWVzcGFjZV9nZXRfdHlwZSh2b2lkKTsKLQotLyoqCi0gKiB3ZWJr
aXRfZG9tX3dlYmtpdF9uYW1lc3BhY2VfZ2V0X21lc3NhZ2VfaGFuZGxlcnM6Ci0gKiBAc2VsZjog
QSAjV2ViS2l0RE9NV2ViS2l0TmFtZXNwYWNlCi0gKgotICogUmV0dXJuczogKHRyYW5zZmVyIGZ1
bGwpOiBBICNXZWJLaXRET01Vc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlCi0gKgotICogU3Rh
YmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIFdlYktpdERPTVVzZXJNZXNzYWdlSGFu
ZGxlcnNOYW1lc3BhY2UqCi13ZWJraXRfZG9tX3dlYmtpdF9uYW1lc3BhY2VfZ2V0X21lc3NhZ2Vf
aGFuZGxlcnMoV2ViS2l0RE9NV2ViS2l0TmFtZXNwYWNlKiBzZWxmKTsKLQotR19FTkRfREVDTFMK
LQotI2VuZGlmIC8qIFdFQktJVF9ET01fVVNFX1VOU1RBQkxFX0FQSSAqLwotI2VuZGlmIC8qIFdl
YktpdERPTVdlYktpdE5hbWVzcGFjZV9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVdlYktpdE5hbWVz
cGFjZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2d0ay9ET00vV2ViS2l0RE9NV2ViS2l0TmFtZXNwYWNlUHJpdmF0ZS5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBhM2I4ZmNkLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NV2ViS2l0TmFt
ZXNwYWNlUHJpdmF0ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotLyoKLSAqICBU
aGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCi0gKiAg
VGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8g
Tk9UIE1PRElGWSEKLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgot
ICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiAgQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBXZWJLaXRET01XZWJLaXROYW1lc3BhY2VQ
cml2YXRlX2gKLSNkZWZpbmUgV2ViS2l0RE9NV2ViS2l0TmFtZXNwYWNlUHJpdmF0ZV9oCi0KLSNp
bmNsdWRlIDxXZWJDb3JlL1dlYktpdE5hbWVzcGFjZS5oPgotI2luY2x1ZGUgPHdlYmtpdGRvbS9X
ZWJLaXRET01XZWJLaXROYW1lc3BhY2UuaD4KLSNpZiBFTkFCTEUoVVNFUl9NRVNTQUdFX0hBTkRM
RVJTKQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLVdlYktpdERPTVdlYktpdE5hbWVzcGFjZSogd3Jh
cFdlYktpdE5hbWVzcGFjZShXZWJDb3JlOjpXZWJLaXROYW1lc3BhY2UqKTsKLVdlYktpdERPTVdl
YktpdE5hbWVzcGFjZSoga2l0KFdlYkNvcmU6OldlYktpdE5hbWVzcGFjZSopOwotV2ViQ29yZTo6
V2ViS2l0TmFtZXNwYWNlKiBjb3JlKFdlYktpdERPTVdlYktpdE5hbWVzcGFjZSopOwotfSAvLyBu
YW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvKiBFTkFCTEUoVVNFUl9NRVNTQUdFX0hBTkRMRVJT
KSAqLwotCi0jZW5kaWYgLyogV2ViS2l0RE9NV2ViS2l0TmFtZXNwYWNlUHJpdmF0ZV9oICovCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
dGsvRE9NL1dlYktpdERPTVdlYktpdFBvaW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NV2ViS2l0UG9pbnQuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NWE1Nzc5Li4wMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9N
V2ViS2l0UG9pbnQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjAxICswLDAgQEAKLS8qCi0gKiAg
VGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICog
IFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERP
IE5PVCBNT0RJRlkhCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
LSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJX
ZWJLaXRET01XZWJLaXRQb2ludC5oIgotCi0jaW5jbHVkZSA8V2ViQ29yZS9DU1NJbXBvcnRSdWxl
Lmg+Ci0jaW5jbHVkZSAiRE9NT2JqZWN0Q2FjaGUuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0RvY3Vt
ZW50Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9FeGNlcHRpb25Db2RlLmg+Ci0jaW5jbHVkZSA8V2Vi
Q29yZS9FeGNlcHRpb25Db2RlRGVzY3JpcHRpb24uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0pTTWFp
blRocmVhZEV4ZWNTdGF0ZS5oPgotI2luY2x1ZGUgIldlYktpdERPTVByaXZhdGUuaCIKLSNpbmNs
dWRlICJXZWJLaXRET01XZWJLaXRQb2ludFByaXZhdGUuaCIKLSNpbmNsdWRlICJDb252ZXJ0VG9V
VEY4U3RyaW5nLmgiCi0jaW5jbHVkZSA8d3RmL0dldFB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KLQotI2RlZmluZSBXRUJLSVRfRE9NX1dFQktJVF9QT0lOVF9HRVRfUFJJVkFURShvYmop
IEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURShvYmosIFdFQktJVF9ET01fVFlQRV9XRUJLSVRf
UE9JTlQsIFdlYktpdERPTVdlYktpdFBvaW50UHJpdmF0ZSkKLQotdHlwZWRlZiBzdHJ1Y3QgX1dl
YktpdERPTVdlYktpdFBvaW50UHJpdmF0ZSB7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OldlYktpdFBv
aW50PiBjb3JlT2JqZWN0OwotfSBXZWJLaXRET01XZWJLaXRQb2ludFByaXZhdGU7Ci0KLW5hbWVz
cGFjZSBXZWJLaXQgewotCi1XZWJLaXRET01XZWJLaXRQb2ludCoga2l0KFdlYkNvcmU6OldlYktp
dFBvaW50KiBvYmopCi17Ci0gICAgaWYgKCFvYmopCi0gICAgICAgIHJldHVybiAwOwotCi0gICAg
aWYgKGdwb2ludGVyIHJldCA9IERPTU9iamVjdENhY2hlOjpnZXQob2JqKSkKLSAgICAgICAgcmV0
dXJuIFdFQktJVF9ET01fV0VCS0lUX1BPSU5UKHJldCk7Ci0KLSAgICByZXR1cm4gd3JhcFdlYktp
dFBvaW50KG9iaik7Ci19Ci0KLVdlYkNvcmU6OldlYktpdFBvaW50KiBjb3JlKFdlYktpdERPTVdl
YktpdFBvaW50KiByZXF1ZXN0KQotewotICAgIHJldHVybiByZXF1ZXN0ID8gc3RhdGljX2Nhc3Q8
V2ViQ29yZTo6V2ViS2l0UG9pbnQqPihXRUJLSVRfRE9NX09CSkVDVChyZXF1ZXN0KS0+Y29yZU9i
amVjdCkgOiAwOwotfQotCi1XZWJLaXRET01XZWJLaXRQb2ludCogd3JhcFdlYktpdFBvaW50KFdl
YkNvcmU6OldlYktpdFBvaW50KiBjb3JlT2JqZWN0KQotewotICAgIEFTU0VSVChjb3JlT2JqZWN0
KTsKLSAgICByZXR1cm4gV0VCS0lUX0RPTV9XRUJLSVRfUE9JTlQoZ19vYmplY3RfbmV3KFdFQktJ
VF9ET01fVFlQRV9XRUJLSVRfUE9JTlQsICJjb3JlLW9iamVjdCIsIGNvcmVPYmplY3QsIG51bGxw
dHIpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLUdfREVGSU5FX1RZUEUoV2ViS2l0
RE9NV2ViS2l0UG9pbnQsIHdlYmtpdF9kb21fd2Via2l0X3BvaW50LCBXRUJLSVRfRE9NX1RZUEVf
T0JKRUNUKQotCi1lbnVtIHsKLSAgICBQUk9QXzAsCi0gICAgUFJPUF9YLAotICAgIFBST1BfWSwK
LX07Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdF9kb21fd2Via2l0X3BvaW50X2ZpbmFsaXplKEdPYmpl
Y3QqIG9iamVjdCkKLXsKLSAgICBXZWJLaXRET01XZWJLaXRQb2ludFByaXZhdGUqIHByaXYgPSBX
RUJLSVRfRE9NX1dFQktJVF9QT0lOVF9HRVRfUFJJVkFURShvYmplY3QpOwotCi0gICAgV2ViS2l0
OjpET01PYmplY3RDYWNoZTo6Zm9yZ2V0KHByaXYtPmNvcmVPYmplY3QuZ2V0KCkpOwotCi0gICAg
cHJpdi0+fldlYktpdERPTVdlYktpdFBvaW50UHJpdmF0ZSgpOwotICAgIEdfT0JKRUNUX0NMQVNT
KHdlYmtpdF9kb21fd2Via2l0X3BvaW50X3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7
Ci19Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdF9kb21fd2Via2l0X3BvaW50X3NldF9wcm9wZXJ0eShH
T2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BlcnR5SWQsIGNvbnN0IEdWYWx1ZSogdmFsdWUsIEdQ
YXJhbVNwZWMqIHBzcGVjKQotewotICAgIFdlYktpdERPTVdlYktpdFBvaW50KiBzZWxmID0gV0VC
S0lUX0RPTV9XRUJLSVRfUE9JTlQob2JqZWN0KTsKLQotICAgIHN3aXRjaCAocHJvcGVydHlJZCkg
ewotICAgIGNhc2UgUFJPUF9YOgotICAgICAgICB3ZWJraXRfZG9tX3dlYmtpdF9wb2ludF9zZXRf
eChzZWxmLCBnX3ZhbHVlX2dldF9mbG9hdCh2YWx1ZSkpOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIFBST1BfWToKLSAgICAgICAgd2Via2l0X2RvbV93ZWJraXRfcG9pbnRfc2V0X3koc2VsZiwg
Z192YWx1ZV9nZXRfZmxvYXQodmFsdWUpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoK
LSAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcGVy
dHlJZCwgcHNwZWMpOwotICAgICAgICBicmVhazsKLSAgICB9Ci19Ci0KLXN0YXRpYyB2b2lkIHdl
YmtpdF9kb21fd2Via2l0X3BvaW50X2dldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50
IHByb3BlcnR5SWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKQotewotICAgIFdl
YktpdERPTVdlYktpdFBvaW50KiBzZWxmID0gV0VCS0lUX0RPTV9XRUJLSVRfUE9JTlQob2JqZWN0
KTsKLQotICAgIHN3aXRjaCAocHJvcGVydHlJZCkgewotICAgIGNhc2UgUFJPUF9YOgotICAgICAg
ICBnX3ZhbHVlX3NldF9mbG9hdCh2YWx1ZSwgd2Via2l0X2RvbV93ZWJraXRfcG9pbnRfZ2V0X3go
c2VsZikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfWToKLSAgICAgICAgZ192YWx1
ZV9zZXRfZmxvYXQodmFsdWUsIHdlYmtpdF9kb21fd2Via2l0X3BvaW50X2dldF95KHNlbGYpKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZB
TElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcGVydHlJZCwgcHNwZWMpOwotICAgICAgICBicmVh
azsKLSAgICB9Ci19Ci0KLXN0YXRpYyBHT2JqZWN0KiB3ZWJraXRfZG9tX3dlYmtpdF9wb2ludF9j
b25zdHJ1Y3RvcihHVHlwZSB0eXBlLCBndWludCBjb25zdHJ1Y3RQcm9wZXJ0aWVzQ291bnQsIEdP
YmplY3RDb25zdHJ1Y3RQYXJhbSogY29uc3RydWN0UHJvcGVydGllcykKLXsKLSAgICBHT2JqZWN0
KiBvYmplY3QgPSBHX09CSkVDVF9DTEFTUyh3ZWJraXRfZG9tX3dlYmtpdF9wb2ludF9wYXJlbnRf
Y2xhc3MpLT5jb25zdHJ1Y3Rvcih0eXBlLCBjb25zdHJ1Y3RQcm9wZXJ0aWVzQ291bnQsIGNvbnN0
cnVjdFByb3BlcnRpZXMpOwotCi0gICAgV2ViS2l0RE9NV2ViS2l0UG9pbnRQcml2YXRlKiBwcml2
ID0gV0VCS0lUX0RPTV9XRUJLSVRfUE9JTlRfR0VUX1BSSVZBVEUob2JqZWN0KTsKLSAgICBwcml2
LT5jb3JlT2JqZWN0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6V2ViS2l0UG9pbnQqPihXRUJLSVRf
RE9NX09CSkVDVChvYmplY3QpLT5jb3JlT2JqZWN0KTsKLSAgICBXZWJLaXQ6OkRPTU9iamVjdENh
Y2hlOjpwdXQocHJpdi0+Y29yZU9iamVjdC5nZXQoKSwgb2JqZWN0KTsKLQotICAgIHJldHVybiBv
YmplY3Q7Ci19Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdF9kb21fd2Via2l0X3BvaW50X2NsYXNzX2lu
aXQoV2ViS2l0RE9NV2ViS2l0UG9pbnRDbGFzcyogcmVxdWVzdENsYXNzKQotewotICAgIEdPYmpl
Y3RDbGFzcyogZ29iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1MocmVxdWVzdENsYXNzKTsKLSAg
ICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUoZ29iamVjdENsYXNzLCBzaXplb2YoV2ViS2l0RE9N
V2ViS2l0UG9pbnRQcml2YXRlKSk7Ci0gICAgZ29iamVjdENsYXNzLT5jb25zdHJ1Y3RvciA9IHdl
YmtpdF9kb21fd2Via2l0X3BvaW50X2NvbnN0cnVjdG9yOwotICAgIGdvYmplY3RDbGFzcy0+Zmlu
YWxpemUgPSB3ZWJraXRfZG9tX3dlYmtpdF9wb2ludF9maW5hbGl6ZTsKLSAgICBnb2JqZWN0Q2xh
c3MtPnNldF9wcm9wZXJ0eSA9IHdlYmtpdF9kb21fd2Via2l0X3BvaW50X3NldF9wcm9wZXJ0eTsK
LSAgICBnb2JqZWN0Q2xhc3MtPmdldF9wcm9wZXJ0eSA9IHdlYmtpdF9kb21fd2Via2l0X3BvaW50
X2dldF9wcm9wZXJ0eTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0g
ICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9YLAotICAgICAgICBnX3BhcmFtX3Nw
ZWNfZmxvYXQoCi0gICAgICAgICAgICAieCIsCi0gICAgICAgICAgICAiV2ViS2l0UG9pbnQ6eCIs
Ci0gICAgICAgICAgICAicmVhZC13cml0ZSBnZmxvYXQgV2ViS2l0UG9pbnQ6eCIsCi0gICAgICAg
ICAgICAtR19NQVhGTE9BVCwgR19NQVhGTE9BVCwgMCwKLSAgICAgICAgICAgIFdFQktJVF9QQVJB
TV9SRUFEV1JJVEUpKTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0g
ICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9ZLAotICAgICAgICBnX3BhcmFtX3Nw
ZWNfZmxvYXQoCi0gICAgICAgICAgICAieSIsCi0gICAgICAgICAgICAiV2ViS2l0UG9pbnQ6eSIs
Ci0gICAgICAgICAgICAicmVhZC13cml0ZSBnZmxvYXQgV2ViS2l0UG9pbnQ6eSIsCi0gICAgICAg
ICAgICAtR19NQVhGTE9BVCwgR19NQVhGTE9BVCwgMCwKLSAgICAgICAgICAgIFdFQktJVF9QQVJB
TV9SRUFEV1JJVEUpKTsKLQotfQotCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3dlYmtpdF9wb2lu
dF9pbml0KFdlYktpdERPTVdlYktpdFBvaW50KiByZXF1ZXN0KQotewotICAgIFdlYktpdERPTVdl
YktpdFBvaW50UHJpdmF0ZSogcHJpdiA9IFdFQktJVF9ET01fV0VCS0lUX1BPSU5UX0dFVF9QUklW
QVRFKHJlcXVlc3QpOwotICAgIG5ldyAocHJpdikgV2ViS2l0RE9NV2ViS2l0UG9pbnRQcml2YXRl
KCk7Ci19Ci0KLWdmbG9hdCB3ZWJraXRfZG9tX3dlYmtpdF9wb2ludF9nZXRfeChXZWJLaXRET01X
ZWJLaXRQb2ludCogc2VsZikKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUg
c3RhdGU7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19XRUJLSVRfUE9J
TlQoc2VsZiksIDApOwotICAgIFdlYkNvcmU6OldlYktpdFBvaW50KiBpdGVtID0gV2ViS2l0Ojpj
b3JlKHNlbGYpOwotICAgIGdmbG9hdCByZXN1bHQgPSBpdGVtLT54KCk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLQotdm9pZCB3ZWJraXRfZG9tX3dlYmtpdF9wb2ludF9zZXRfeChXZWJLaXRET01X
ZWJLaXRQb2ludCogc2VsZiwgZ2Zsb2F0IHZhbHVlKQotewotICAgIFdlYkNvcmU6OkpTTWFpblRo
cmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNf
V0VCS0lUX1BPSU5UKHNlbGYpKTsKLSAgICBXZWJDb3JlOjpXZWJLaXRQb2ludCogaXRlbSA9IFdl
YktpdDo6Y29yZShzZWxmKTsKLSAgICBpdGVtLT5zZXRYKHZhbHVlKTsKLX0KLQotZ2Zsb2F0IHdl
YmtpdF9kb21fd2Via2l0X3BvaW50X2dldF95KFdlYktpdERPTVdlYktpdFBvaW50KiBzZWxmKQot
ewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVy
bl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX1dFQktJVF9QT0lOVChzZWxmKSwgMCk7Ci0gICAg
V2ViQ29yZTo6V2ViS2l0UG9pbnQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ2Zs
b2F0IHJlc3VsdCA9IGl0ZW0tPnkoKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi12b2lkIHdl
YmtpdF9kb21fd2Via2l0X3BvaW50X3NldF95KFdlYktpdERPTVdlYktpdFBvaW50KiBzZWxmLCBn
ZmxvYXQgdmFsdWUpCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRl
OwotICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19XRUJLSVRfUE9JTlQoc2VsZikp
OwotICAgIFdlYkNvcmU6OldlYktpdFBvaW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwot
ICAgIGl0ZW0tPnNldFkodmFsdWUpOwotfQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVdlYktpdFBvaW50
LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9N
L1dlYktpdERPTVdlYktpdFBvaW50LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQz
YmU3ODEuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01XZWJLaXRQb2ludC5oCisrKyAvZGV2L251bGwKQEAg
LTEsOTUgKzAsMCBAQAotLyoKLSAqICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9w
ZW4gc291cmNlIHByb2plY3QuCi0gKiAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBn
ZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKLSAqCi0gKiAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
Ci0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCi0gKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCi0gKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBX
ZWJLaXRET01XZWJLaXRQb2ludF9oCi0jZGVmaW5lIFdlYktpdERPTVdlYktpdFBvaW50X2gKLQot
I2lmZGVmIFdFQktJVF9ET01fVVNFX1VOU1RBQkxFX0FQSQotCi0jaW5jbHVkZSA8Z2xpYi1vYmpl
Y3QuaD4KLSNpbmNsdWRlIDx3ZWJraXRkb20vV2ViS2l0RE9NT2JqZWN0Lmg+Ci0jaW5jbHVkZSA8
d2Via2l0ZG9tL3dlYmtpdGRvbWRlZmluZXMtdW5zdGFibGUuaD4KLQotR19CRUdJTl9ERUNMUwot
Ci0jZGVmaW5lIFdFQktJVF9ET01fVFlQRV9XRUJLSVRfUE9JTlQgICAgICAgICAgICAod2Via2l0
X2RvbV93ZWJraXRfcG9pbnRfZ2V0X3R5cGUoKSkKLSNkZWZpbmUgV0VCS0lUX0RPTV9XRUJLSVRf
UE9JTlQob2JqKSAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwg
V0VCS0lUX0RPTV9UWVBFX1dFQktJVF9QT0lOVCwgV2ViS2l0RE9NV2ViS2l0UG9pbnQpKQotI2Rl
ZmluZSBXRUJLSVRfRE9NX1dFQktJVF9QT0lOVF9DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVD
S19DTEFTU19DQVNUKChrbGFzcyksICBXRUJLSVRfRE9NX1RZUEVfV0VCS0lUX1BPSU5ULCBXZWJL
aXRET01XZWJLaXRQb2ludENsYXNzKQotI2RlZmluZSBXRUJLSVRfRE9NX0lTX1dFQktJVF9QT0lO
VChvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLCBXRUJLSVRf
RE9NX1RZUEVfV0VCS0lUX1BPSU5UKSkKLSNkZWZpbmUgV0VCS0lUX0RPTV9JU19XRUJLSVRfUE9J
TlRfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lU
X0RPTV9UWVBFX1dFQktJVF9QT0lOVCkpCi0jZGVmaW5lIFdFQktJVF9ET01fV0VCS0lUX1BPSU5U
X0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJ
VF9ET01fVFlQRV9XRUJLSVRfUE9JTlQsIFdlYktpdERPTVdlYktpdFBvaW50Q2xhc3MpKQotCi1z
dHJ1Y3QgX1dlYktpdERPTVdlYktpdFBvaW50IHsKLSAgICBXZWJLaXRET01PYmplY3QgcGFyZW50
X2luc3RhbmNlOwotfTsKLQotc3RydWN0IF9XZWJLaXRET01XZWJLaXRQb2ludENsYXNzIHsKLSAg
ICBXZWJLaXRET01PYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7Ci19OwotCi1XRUJLSVRfQVBJIEdU
eXBlCi13ZWJraXRfZG9tX3dlYmtpdF9wb2ludF9nZXRfdHlwZSh2b2lkKTsKLQotLyoqCi0gKiB3
ZWJraXRfZG9tX3dlYmtpdF9wb2ludF9nZXRfeDoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01XZWJL
aXRQb2ludAotICoKLSAqIFJldHVybnM6IEEgI2dmbG9hdAotICoKLSAqIFN0YWJpbGl0eTogVW5z
dGFibGUKLSoqLwotV0VCS0lUX0FQSSBnZmxvYXQKLXdlYmtpdF9kb21fd2Via2l0X3BvaW50X2dl
dF94KFdlYktpdERPTVdlYktpdFBvaW50KiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX3dl
YmtpdF9wb2ludF9zZXRfeDoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01XZWJLaXRQb2ludAotICog
QHZhbHVlOiBBICNnZmxvYXQKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJ
VF9BUEkgdm9pZAotd2Via2l0X2RvbV93ZWJraXRfcG9pbnRfc2V0X3goV2ViS2l0RE9NV2ViS2l0
UG9pbnQqIHNlbGYsIGdmbG9hdCB2YWx1ZSk7Ci0KLS8qKgotICogd2Via2l0X2RvbV93ZWJraXRf
cG9pbnRfZ2V0X3k6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NV2ViS2l0UG9pbnQKLSAqCi0gKiBS
ZXR1cm5zOiBBICNnZmxvYXQKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJ
VF9BUEkgZ2Zsb2F0Ci13ZWJraXRfZG9tX3dlYmtpdF9wb2ludF9nZXRfeShXZWJLaXRET01XZWJL
aXRQb2ludCogc2VsZik7Ci0KLS8qKgotICogd2Via2l0X2RvbV93ZWJraXRfcG9pbnRfc2V0X3k6
Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NV2ViS2l0UG9pbnQKLSAqIEB2YWx1ZTogQSAjZ2Zsb2F0
Ci0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIHZvaWQKLXdlYmtp
dF9kb21fd2Via2l0X3BvaW50X3NldF95KFdlYktpdERPTVdlYktpdFBvaW50KiBzZWxmLCBnZmxv
YXQgdmFsdWUpOwotCi1HX0VORF9ERUNMUwotCi0jZW5kaWYgLyogV0VCS0lUX0RPTV9VU0VfVU5T
VEFCTEVfQVBJICovCi0jZW5kaWYgLyogV2ViS2l0RE9NV2ViS2l0UG9pbnRfaCAqLwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RP
TS9XZWJLaXRET01XZWJLaXRQb2ludFByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NV2ViS2l0UG9pbnRQcml2YXRl
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM1YmVhZjAuLjAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJL
aXRET01XZWJLaXRQb2ludFByaXZhdGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAK
LS8qCi0gKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9q
ZWN0LgotICogIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGlu
Z3MucGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICog
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgV2ViS2l0RE9NV2ViS2l0
UG9pbnRQcml2YXRlX2gKLSNkZWZpbmUgV2ViS2l0RE9NV2ViS2l0UG9pbnRQcml2YXRlX2gKLQot
I2luY2x1ZGUgPFdlYkNvcmUvV2ViS2l0UG9pbnQuaD4KLSNpbmNsdWRlIDx3ZWJraXRkb20vV2Vi
S2l0RE9NV2ViS2l0UG9pbnQuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci1XZWJLaXRET01XZWJL
aXRQb2ludCogd3JhcFdlYktpdFBvaW50KFdlYkNvcmU6OldlYktpdFBvaW50Kik7Ci1XZWJLaXRE
T01XZWJLaXRQb2ludCoga2l0KFdlYkNvcmU6OldlYktpdFBvaW50Kik7Ci1XZWJDb3JlOjpXZWJL
aXRQb2ludCogY29yZShXZWJLaXRET01XZWJLaXRQb2ludCopOwotfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0Ci0KLSNlbmRpZiAvKiBXZWJLaXRET01XZWJLaXRQb2ludFByaXZhdGVfaCAqLwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RP
TS9XZWJLaXRET01XaGVlbEV2ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NV2hlZWxFdmVudC5jcHAKaW5kZXggMTk5
ZGU4Zi4uZmVjOGRlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01XaGVlbEV2ZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERP
TVdoZWVsRXZlbnQuY3BwCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiV2ViS2l0RE9NUHJp
dmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdERPTVdoZWVsRXZlbnRQcml2YXRlLmgiCiAjaW5jbHVk
ZSAiQ29udmVydFRvVVRGOFN0cmluZy5oIgotI2luY2x1ZGUgIldlYktpdERPTVdoZWVsRXZlbnRV
bnN0YWJsZS5oIgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CiAKQEAgLTYwLDE0ICs1OSw5IEBAIEdfREVGSU5FX1RZUEUoV2ViS2l0RE9NV2hlZWxFdmVu
dCwgd2Via2l0X2RvbV93aGVlbF9ldmVudCwgV0VCS0lUX0RPTV9UWVBFX01PVVNFCiAKIGVudW0g
ewogICAgIFBST1BfMCwKLSAgICBQUk9QX0RFTFRBX1gsCi0gICAgUFJPUF9ERUxUQV9ZLAotICAg
IFBST1BfREVMVEFfWiwKLSAgICBQUk9QX0RFTFRBX01PREUsCiAgICAgUFJPUF9XSEVFTF9ERUxU
QV9YLAogICAgIFBST1BfV0hFRUxfREVMVEFfWSwKICAgICBQUk9QX1dIRUVMX0RFTFRBLAotICAg
IFBST1BfV0VCS0lUX0RJUkVDVElPTl9JTlZFUlRFRF9GUk9NX0RFVklDRSwKIH07CiAKIHN0YXRp
YyB2b2lkIHdlYmtpdF9kb21fd2hlZWxfZXZlbnRfZ2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVj
dCwgZ3VpbnQgcHJvcGVydHlJZCwgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpCkBA
IC03NSwxOCArNjksNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3doZWVsX2V2ZW50X2dldF9w
cm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BlcnR5SQogICAgIFdlYktpdERPTVdo
ZWVsRXZlbnQqIHNlbGYgPSBXRUJLSVRfRE9NX1dIRUVMX0VWRU5UKG9iamVjdCk7CiAKICAgICBz
d2l0Y2ggKHByb3BlcnR5SWQpIHsKLSAgICBjYXNlIFBST1BfREVMVEFfWDoKLSAgICAgICAgZ192
YWx1ZV9zZXRfZG91YmxlKHZhbHVlLCB3ZWJraXRfZG9tX3doZWVsX2V2ZW50X2dldF9kZWx0YV94
KHNlbGYpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX0RFTFRBX1k6Ci0gICAgICAg
IGdfdmFsdWVfc2V0X2RvdWJsZSh2YWx1ZSwgd2Via2l0X2RvbV93aGVlbF9ldmVudF9nZXRfZGVs
dGFfeShzZWxmKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9ERUxUQV9aOgotICAg
ICAgICBnX3ZhbHVlX3NldF9kb3VibGUodmFsdWUsIHdlYmtpdF9kb21fd2hlZWxfZXZlbnRfZ2V0
X2RlbHRhX3ooc2VsZikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfREVMVEFfTU9E
RToKLSAgICAgICAgZ192YWx1ZV9zZXRfdWxvbmcodmFsdWUsIHdlYmtpdF9kb21fd2hlZWxfZXZl
bnRfZ2V0X2RlbHRhX21vZGUoc2VsZikpOwotICAgICAgICBicmVhazsKICAgICBjYXNlIFBST1Bf
V0hFRUxfREVMVEFfWDoKICAgICAgICAgZ192YWx1ZV9zZXRfbG9uZyh2YWx1ZSwgd2Via2l0X2Rv
bV93aGVlbF9ldmVudF9nZXRfd2hlZWxfZGVsdGFfeChzZWxmKSk7CiAgICAgICAgIGJyZWFrOwpA
QCAtOTYsOSArNzgsNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3doZWVsX2V2ZW50X2dldF9w
cm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BlcnR5SQogICAgIGNhc2UgUFJPUF9X
SEVFTF9ERUxUQToKICAgICAgICAgZ192YWx1ZV9zZXRfbG9uZyh2YWx1ZSwgd2Via2l0X2RvbV93
aGVlbF9ldmVudF9nZXRfd2hlZWxfZGVsdGEoc2VsZikpOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIFBST1BfV0VCS0lUX0RJUkVDVElPTl9JTlZFUlRFRF9GUk9NX0RFVklDRToKLSAgICAgICAg
Z192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X2RvbV93aGVlbF9ldmVudF9nZXRfd2Vi
a2l0X2RpcmVjdGlvbl9pbnZlcnRlZF9mcm9tX2RldmljZShzZWxmKSk7Ci0gICAgICAgIGJyZWFr
OwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9J
RChvYmplY3QsIHByb3BlcnR5SWQsIHBzcGVjKTsKICAgICAgICAgYnJlYWs7CkBAIC0xMTIsNDYg
KzkxLDYgQEAgc3RhdGljIHZvaWQgd2Via2l0X2RvbV93aGVlbF9ldmVudF9jbGFzc19pbml0KFdl
YktpdERPTVdoZWVsRXZlbnRDbGFzcyogcmVxdWVzdEMKIAogICAgIGdfb2JqZWN0X2NsYXNzX2lu
c3RhbGxfcHJvcGVydHkoCiAgICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9ERUxU
QV9YLAotICAgICAgICBnX3BhcmFtX3NwZWNfZG91YmxlKAotICAgICAgICAgICAgImRlbHRhLXgi
LAotICAgICAgICAgICAgIldoZWVsRXZlbnQ6ZGVsdGEteCIsCi0gICAgICAgICAgICAicmVhZC1v
bmx5IGdkb3VibGUgV2hlZWxFdmVudDpkZWx0YS14IiwKLSAgICAgICAgICAgIC1HX01BWERPVUJM
RSwgR19NQVhET1VCTEUsIDAsCi0gICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsK
LQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RD
bGFzcywKLSAgICAgICAgUFJPUF9ERUxUQV9ZLAotICAgICAgICBnX3BhcmFtX3NwZWNfZG91Ymxl
KAotICAgICAgICAgICAgImRlbHRhLXkiLAotICAgICAgICAgICAgIldoZWVsRXZlbnQ6ZGVsdGEt
eSIsCi0gICAgICAgICAgICAicmVhZC1vbmx5IGdkb3VibGUgV2hlZWxFdmVudDpkZWx0YS15IiwK
LSAgICAgICAgICAgIC1HX01BWERPVUJMRSwgR19NQVhET1VCTEUsIDAsCi0gICAgICAgICAgICBX
RUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJv
cGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9ERUxUQV9aLAotICAg
ICAgICBnX3BhcmFtX3NwZWNfZG91YmxlKAotICAgICAgICAgICAgImRlbHRhLXoiLAotICAgICAg
ICAgICAgIldoZWVsRXZlbnQ6ZGVsdGEteiIsCi0gICAgICAgICAgICAicmVhZC1vbmx5IGdkb3Vi
bGUgV2hlZWxFdmVudDpkZWx0YS16IiwKLSAgICAgICAgICAgIC1HX01BWERPVUJMRSwgR19NQVhE
T1VCTEUsIDAsCi0gICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKLQotICAgIGdf
b2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKLSAg
ICAgICAgUFJPUF9ERUxUQV9NT0RFLAotICAgICAgICBnX3BhcmFtX3NwZWNfdWxvbmcoCi0gICAg
ICAgICAgICAiZGVsdGEtbW9kZSIsCi0gICAgICAgICAgICAiV2hlZWxFdmVudDpkZWx0YS1tb2Rl
IiwKLSAgICAgICAgICAgICJyZWFkLW9ubHkgZ3Vsb25nIFdoZWVsRXZlbnQ6ZGVsdGEtbW9kZSIs
Ci0gICAgICAgICAgICAwLCBHX01BWFVMT05HLCAwLAotICAgICAgICAgICAgV0VCS0lUX1BBUkFN
X1JFQURBQkxFKSk7Ci0KLSAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAotICAg
ICAgICBnb2JqZWN0Q2xhc3MsCiAgICAgICAgIFBST1BfV0hFRUxfREVMVEFfWCwKICAgICAgICAg
Z19wYXJhbV9zcGVjX2xvbmcoCiAgICAgICAgICAgICAid2hlZWwtZGVsdGEteCIsCkBAIC0xNzks
MTcgKzExOCw2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21fd2hlZWxfZXZlbnRfY2xhc3NfaW5p
dChXZWJLaXRET01XaGVlbEV2ZW50Q2xhc3MqIHJlcXVlc3RDCiAgICAgICAgICAgICAicmVhZC1v
bmx5IGdsb25nIFdoZWVsRXZlbnQ6d2hlZWwtZGVsdGEiLAogICAgICAgICAgICAgR19NSU5MT05H
LCBHX01BWExPTkcsIDAsCiAgICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKLQot
ICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFz
cywKLSAgICAgICAgUFJPUF9XRUJLSVRfRElSRUNUSU9OX0lOVkVSVEVEX0ZST01fREVWSUNFLAot
ICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigKLSAgICAgICAgICAgICJ3ZWJraXQtZGlyZWN0
aW9uLWludmVydGVkLWZyb20tZGV2aWNlIiwKLSAgICAgICAgICAgICJXaGVlbEV2ZW50OndlYmtp
dC1kaXJlY3Rpb24taW52ZXJ0ZWQtZnJvbS1kZXZpY2UiLAotICAgICAgICAgICAgInJlYWQtb25s
eSBnYm9vbGVhbiBXaGVlbEV2ZW50OndlYmtpdC1kaXJlY3Rpb24taW52ZXJ0ZWQtZnJvbS1kZXZp
Y2UiLAotICAgICAgICAgICAgRkFMU0UsCi0gICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFC
TEUpKTsKLQogfQogCiBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3doZWVsX2V2ZW50X2luaXQoV2Vi
S2l0RE9NV2hlZWxFdmVudCogcmVxdWVzdCkKQEAgLTIwNyw0MiArMTM1LDYgQEAgdm9pZCB3ZWJr
aXRfZG9tX3doZWVsX2V2ZW50X2luaXRfd2hlZWxfZXZlbnQoV2ViS2l0RE9NV2hlZWxFdmVudCog
c2VsZiwgZ2xvbmcgd2gKICAgICBpdGVtLT5pbml0V2hlZWxFdmVudCh3aGVlbERlbHRhWCwgd2hl
ZWxEZWx0YVksIGNvbnZlcnRlZFZpZXcsIHNjcmVlblgsIHNjcmVlblksIGNsaWVudFgsIGNsaWVu
dFksIGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXksIG1ldGFLZXkpOwogfQogCi1nZG91YmxlIHdl
YmtpdF9kb21fd2hlZWxfZXZlbnRfZ2V0X2RlbHRhX3goV2ViS2l0RE9NV2hlZWxFdmVudCogc2Vs
ZikKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19XSEVFTF9FVkVOVChzZWxmKSwgMCk7Ci0g
ICAgV2ViQ29yZTo6V2hlZWxFdmVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBn
ZG91YmxlIHJlc3VsdCA9IGl0ZW0tPmRlbHRhWCgpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0K
LWdkb3VibGUgd2Via2l0X2RvbV93aGVlbF9ldmVudF9nZXRfZGVsdGFfeShXZWJLaXRET01XaGVl
bEV2ZW50KiBzZWxmKQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0
ZTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX1dIRUVMX0VWRU5UKHNl
bGYpLCAwKTsKLSAgICBXZWJDb3JlOjpXaGVlbEV2ZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNl
bGYpOwotICAgIGdkb3VibGUgcmVzdWx0ID0gaXRlbS0+ZGVsdGFZKCk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLQotZ2RvdWJsZSB3ZWJraXRfZG9tX3doZWVsX2V2ZW50X2dldF9kZWx0YV96KFdl
YktpdERPTVdoZWVsRXZlbnQqIHNlbGYpCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVs
bFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfV0hF
RUxfRVZFTlQoc2VsZiksIDApOwotICAgIFdlYkNvcmU6OldoZWVsRXZlbnQqIGl0ZW0gPSBXZWJL
aXQ6OmNvcmUoc2VsZik7Ci0gICAgZ2RvdWJsZSByZXN1bHQgPSBpdGVtLT5kZWx0YVooKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotCi1ndWxvbmcgd2Via2l0X2RvbV93aGVlbF9ldmVudF9nZXRf
ZGVsdGFfbW9kZShXZWJLaXRET01XaGVlbEV2ZW50KiBzZWxmKQotewotICAgIFdlYkNvcmU6OkpT
TWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJL
SVRfRE9NX0lTX1dIRUVMX0VWRU5UKHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpXaGVlbEV2ZW50
KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGd1bG9uZyByZXN1bHQgPSBpdGVtLT5k
ZWx0YU1vZGUoKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCiBnbG9uZyB3ZWJraXRfZG9tX3do
ZWVsX2V2ZW50X2dldF93aGVlbF9kZWx0YV94KFdlYktpdERPTVdoZWVsRXZlbnQqIHNlbGYpCiB7
CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwpAQCAtMjY5LDEzICsx
NjEsMyBAQCBnbG9uZyB3ZWJraXRfZG9tX3doZWVsX2V2ZW50X2dldF93aGVlbF9kZWx0YShXZWJL
aXRET01XaGVlbEV2ZW50KiBzZWxmKQogICAgIGdsb25nIHJlc3VsdCA9IGl0ZW0tPndoZWVsRGVs
dGEoKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQotCi1nYm9vbGVhbiB3ZWJraXRfZG9tX3doZWVs
X2V2ZW50X2dldF93ZWJraXRfZGlyZWN0aW9uX2ludmVydGVkX2Zyb21fZGV2aWNlKFdlYktpdERP
TVdoZWVsRXZlbnQqIHNlbGYpCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRl
IHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfV0hFRUxfRVZF
TlQoc2VsZiksIEZBTFNFKTsKLSAgICBXZWJDb3JlOjpXaGVlbEV2ZW50KiBpdGVtID0gV2ViS2l0
Ojpjb3JlKHNlbGYpOwotICAgIGdib29sZWFuIHJlc3VsdCA9IGl0ZW0tPndlYmtpdERpcmVjdGlv
bkludmVydGVkRnJvbURldmljZSgpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00v
V2ViS2l0RE9NV2hlZWxFdmVudFVuc3RhYmxlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVdoZWVsRXZlbnRVbnN0YWJsZS5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ODA2NTZkLi4wMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0
RE9NV2hlZWxFdmVudFVuc3RhYmxlLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDQgKzAsMCBAQAot
LyoKLSAqICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2pl
Y3QuCi0gKiAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5n
cy5wbC4gRE8gTk9UIE1PRElGWSEKLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAg
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiAgQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBXZWJLaXRET01XaGVlbEV2
ZW50VW5zdGFibGVfaAotI2RlZmluZSBXZWJLaXRET01XaGVlbEV2ZW50VW5zdGFibGVfaAotCi0j
aWZkZWYgV0VCS0lUX0RPTV9VU0VfVU5TVEFCTEVfQVBJCi0KLSNpbmNsdWRlIDx3ZWJraXRkb20v
d2Via2l0ZG9tZGVmaW5lcy11bnN0YWJsZS5oPgotCi1HX0JFR0lOX0RFQ0xTCi0KLS8qKgotICog
V0VCS0lUX0RPTV9XSEVFTF9FVkVOVF9ET01fREVMVEFfUElYRUw6Ci0gKi8KLSNkZWZpbmUgV0VC
S0lUX0RPTV9XSEVFTF9FVkVOVF9ET01fREVMVEFfUElYRUwgMHgwMAotCi0vKioKLSAqIFdFQktJ
VF9ET01fV0hFRUxfRVZFTlRfRE9NX0RFTFRBX0xJTkU6Ci0gKi8KLSNkZWZpbmUgV0VCS0lUX0RP
TV9XSEVFTF9FVkVOVF9ET01fREVMVEFfTElORSAweDAxCi0KLS8qKgotICogV0VCS0lUX0RPTV9X
SEVFTF9FVkVOVF9ET01fREVMVEFfUEFHRToKLSAqLwotI2RlZmluZSBXRUJLSVRfRE9NX1dIRUVM
X0VWRU5UX0RPTV9ERUxUQV9QQUdFIDB4MDIKLQotLyoqCi0gKiB3ZWJraXRfZG9tX3doZWVsX2V2
ZW50X2dldF9kZWx0YV94OgotICogQHNlbGY6IEEgI1dlYktpdERPTVdoZWVsRXZlbnQKLSAqCi0g
KiBSZXR1cm5zOiBBICNnZG91YmxlCi0gKgotICogU3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1X
RUJLSVRfQVBJIGdkb3VibGUKLXdlYmtpdF9kb21fd2hlZWxfZXZlbnRfZ2V0X2RlbHRhX3goV2Vi
S2l0RE9NV2hlZWxFdmVudCogc2VsZik7Ci0KLS8qKgotICogd2Via2l0X2RvbV93aGVlbF9ldmVu
dF9nZXRfZGVsdGFfeToKLSAqIEBzZWxmOiBBICNXZWJLaXRET01XaGVlbEV2ZW50Ci0gKgotICog
UmV0dXJuczogQSAjZ2RvdWJsZQotICoKLSAqIFN0YWJpbGl0eTogVW5zdGFibGUKLSoqLwotV0VC
S0lUX0FQSSBnZG91YmxlCi13ZWJraXRfZG9tX3doZWVsX2V2ZW50X2dldF9kZWx0YV95KFdlYktp
dERPTVdoZWVsRXZlbnQqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9kb21fd2hlZWxfZXZlbnRf
Z2V0X2RlbHRhX3o6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NV2hlZWxFdmVudAotICoKLSAqIFJl
dHVybnM6IEEgI2dkb3VibGUKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJ
VF9BUEkgZ2RvdWJsZQotd2Via2l0X2RvbV93aGVlbF9ldmVudF9nZXRfZGVsdGFfeihXZWJLaXRE
T01XaGVlbEV2ZW50KiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX3doZWVsX2V2ZW50X2dl
dF9kZWx0YV9tb2RlOgotICogQHNlbGY6IEEgI1dlYktpdERPTVdoZWVsRXZlbnQKLSAqCi0gKiBS
ZXR1cm5zOiBBICNndWxvbmcKLSAqCi0gKiBTdGFiaWxpdHk6IFVuc3RhYmxlCi0qKi8KLVdFQktJ
VF9BUEkgZ3Vsb25nCi13ZWJraXRfZG9tX3doZWVsX2V2ZW50X2dldF9kZWx0YV9tb2RlKFdlYktp
dERPTVdoZWVsRXZlbnQqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9kb21fd2hlZWxfZXZlbnRf
Z2V0X3dlYmtpdF9kaXJlY3Rpb25faW52ZXJ0ZWRfZnJvbV9kZXZpY2U6Ci0gKiBAc2VsZjogQSAj
V2ViS2l0RE9NV2hlZWxFdmVudAotICoKLSAqIFJldHVybnM6IEEgI2dib29sZWFuCi0gKgotICog
U3RhYmlsaXR5OiBVbnN0YWJsZQotKiovCi1XRUJLSVRfQVBJIGdib29sZWFuCi13ZWJraXRfZG9t
X3doZWVsX2V2ZW50X2dldF93ZWJraXRfZGlyZWN0aW9uX2ludmVydGVkX2Zyb21fZGV2aWNlKFdl
YktpdERPTVdoZWVsRXZlbnQqIHNlbGYpOwotCi0KLUdfRU5EX0RFQ0xTCi0KLSNlbmRpZiAvKiBX
RUJLSVRfRE9NX1VTRV9VTlNUQUJMRV9BUEkgKi8KLSNlbmRpZiAvKiBXZWJLaXRET01XaGVlbEV2
ZW50VW5zdGFibGVfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9kb2NzL3dlYmtpdGRvbWd0ay00LjAtc2VjdGlvbnMu
dHh0IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RP
TS9kb2NzL3dlYmtpdGRvbWd0ay00LjAtc2VjdGlvbnMudHh0CmluZGV4IGU4M2ZhODEuLjBkNmIy
ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2d0ay9ET00vZG9jcy93ZWJraXRkb21ndGstNC4wLXNlY3Rpb25zLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL2RvY3Mvd2Vi
a2l0ZG9tZ3RrLTQuMC1zZWN0aW9ucy50eHQKQEAgLTEyMjcsNiArMTIyNyw3IEBAIHdlYmtpdF9k
b21faHRtbF9hbmNob3JfZWxlbWVudF9zZXRfdGFyZ2V0CiB3ZWJraXRfZG9tX2h0bWxfYW5jaG9y
X2VsZW1lbnRfZ2V0X3R5cGVfYXR0cgogd2Via2l0X2RvbV9odG1sX2FuY2hvcl9lbGVtZW50X3Nl
dF90eXBlX2F0dHIKIHdlYmtpdF9kb21faHRtbF9hbmNob3JfZWxlbWVudF9nZXRfdGV4dAord2Vi
a2l0X2RvbV9odG1sX2FuY2hvcl9lbGVtZW50X3NldF90ZXh0CiB3ZWJraXRfZG9tX2h0bWxfYW5j
aG9yX2VsZW1lbnRfZ2V0X2hyZWYKIHdlYmtpdF9kb21faHRtbF9hbmNob3JfZWxlbWVudF9zZXRf
aHJlZgogd2Via2l0X2RvbV9odG1sX2FuY2hvcl9lbGVtZW50X2dldF9wcm90b2NvbApAQCAtMTMx
NiwxMiArMTMxNywxOSBAQCB3ZWJraXRfZG9tX2h0bWxfYXJlYV9lbGVtZW50X3NldF90YXJnZXQK
IHdlYmtpdF9kb21faHRtbF9hcmVhX2VsZW1lbnRfZ2V0X2hyZWYKIHdlYmtpdF9kb21faHRtbF9h
cmVhX2VsZW1lbnRfc2V0X2hyZWYKIHdlYmtpdF9kb21faHRtbF9hcmVhX2VsZW1lbnRfZ2V0X3By
b3RvY29sCit3ZWJraXRfZG9tX2h0bWxfYXJlYV9lbGVtZW50X3NldF9wcm90b2NvbAogd2Via2l0
X2RvbV9odG1sX2FyZWFfZWxlbWVudF9nZXRfaG9zdAord2Via2l0X2RvbV9odG1sX2FyZWFfZWxl
bWVudF9zZXRfaG9zdAogd2Via2l0X2RvbV9odG1sX2FyZWFfZWxlbWVudF9nZXRfaG9zdG5hbWUK
K3dlYmtpdF9kb21faHRtbF9hcmVhX2VsZW1lbnRfc2V0X2hvc3RuYW1lCiB3ZWJraXRfZG9tX2h0
bWxfYXJlYV9lbGVtZW50X2dldF9wb3J0Cit3ZWJraXRfZG9tX2h0bWxfYXJlYV9lbGVtZW50X3Nl
dF9wb3J0CiB3ZWJraXRfZG9tX2h0bWxfYXJlYV9lbGVtZW50X2dldF9wYXRobmFtZQord2Via2l0
X2RvbV9odG1sX2FyZWFfZWxlbWVudF9zZXRfcGF0aG5hbWUKIHdlYmtpdF9kb21faHRtbF9hcmVh
X2VsZW1lbnRfZ2V0X3NlYXJjaAord2Via2l0X2RvbV9odG1sX2FyZWFfZWxlbWVudF9zZXRfc2Vh
cmNoCiB3ZWJraXRfZG9tX2h0bWxfYXJlYV9lbGVtZW50X2dldF9oYXNoCit3ZWJraXRfZG9tX2h0
bWxfYXJlYV9lbGVtZW50X3NldF9oYXNoCiAKIDxTVUJTRUNUSU9OIFN0YW5kYXJkPgogV2ViS2l0
RE9NSFRNTEFyZWFFbGVtZW50Q2xhc3MKQEAgLTIwMTQsNiArMjAyMiw3IEBAIHdlYmtpdF9kb21f
aHRtbF9pbnB1dF9lbGVtZW50X3NldF9hbHQKIHdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50
X2dldF9hdXRvZm9jdXMKIHdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50X3NldF9hdXRvZm9j
dXMKIHdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50X2dldF9kZWZhdWx0X2NoZWNrZWQKK3dl
YmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50X3NldF9kZWZhdWx0X2NoZWNrZWQKIHdlYmtpdF9k
b21faHRtbF9pbnB1dF9lbGVtZW50X2dldF9jaGVja2VkCiB3ZWJraXRfZG9tX2h0bWxfaW5wdXRf
ZWxlbWVudF9zZXRfY2hlY2tlZAogd2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1lbnRfZ2V0X2Rp
c2FibGVkCkBAIC0yMDMxLDYgKzIwNDAsNyBAQCB3ZWJraXRfZG9tX2h0bWxfaW5wdXRfZWxlbWVu
dF9nZXRfbXVsdGlwbGUKIHdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50X3NldF9tdWx0aXBs
ZQogd2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1lbnRfZ2V0X25hbWUKIHdlYmtpdF9kb21faHRt
bF9pbnB1dF9lbGVtZW50X3NldF9uYW1lCit3ZWJraXRfZG9tX2h0bWxfaW5wdXRfZWxlbWVudF9n
ZXRfcmVhZF9vbmx5CiB3ZWJraXRfZG9tX2h0bWxfaW5wdXRfZWxlbWVudF9zZXRfcmVhZF9vbmx5
CiB3ZWJraXRfZG9tX2h0bWxfaW5wdXRfZWxlbWVudF9nZXRfc2l6ZQogd2Via2l0X2RvbV9odG1s
X2lucHV0X2VsZW1lbnRfc2V0X3NpemUKQEAgLTIwNTAsNiArMjA2MCw3IEBAIHdlYmtpdF9kb21f
aHRtbF9pbnB1dF9lbGVtZW50X3NldF9hbGlnbgogd2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1l
bnRfZ2V0X3VzZV9tYXAKIHdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50X3NldF91c2VfbWFw
CiB3ZWJraXRfZG9tX2h0bWxfaW5wdXRfZWxlbWVudF9nZXRfY2FwdHVyZV90eXBlCit3ZWJraXRf
ZG9tX2h0bWxfaW5wdXRfZWxlbWVudF9zZXRfY2FwdHVyZV90eXBlCiB3ZWJraXRfZG9tX2h0bWxf
aW5wdXRfZWxlbWVudF9nZXRfY2FwdHVyZQogd2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1lbnRf
aXNfZWRpdGVkCiAKQEAgLTIxNTcsNiArMjE2OCw3IEBAIHdlYmtpdF9kb21faHRtbF9saW5rX2Vs
ZW1lbnRfc2V0X3RhcmdldAogd2Via2l0X2RvbV9odG1sX2xpbmtfZWxlbWVudF9nZXRfdHlwZV9h
dHRyCiB3ZWJraXRfZG9tX2h0bWxfbGlua19lbGVtZW50X3NldF90eXBlX2F0dHIKIHdlYmtpdF9k
b21faHRtbF9saW5rX2VsZW1lbnRfZ2V0X3NoZWV0Cit3ZWJraXRfZG9tX2h0bWxfbGlua19lbGVt
ZW50X2dldF9zaXplcwogd2Via2l0X2RvbV9odG1sX2xpbmtfZWxlbWVudF9zZXRfc2l6ZXMKIAog
PFNVQlNFQ1RJT04gU3RhbmRhcmQ+CkBAIC0yNTQ2LDYgKzI1NTgsNyBAQCB3ZWJraXRfZG9tX2h0
bWxfc2NyaXB0X2VsZW1lbnRfc2V0X2h0bWxfZm9yCiB3ZWJraXRfZG9tX2h0bWxfc2NyaXB0X2Vs
ZW1lbnRfZ2V0X2V2ZW50CiB3ZWJraXRfZG9tX2h0bWxfc2NyaXB0X2VsZW1lbnRfc2V0X2V2ZW50
CiB3ZWJraXRfZG9tX2h0bWxfc2NyaXB0X2VsZW1lbnRfZ2V0X2NoYXJzZXQKK3dlYmtpdF9kb21f
aHRtbF9zY3JpcHRfZWxlbWVudF9zZXRfY2hhcnNldAogd2Via2l0X2RvbV9odG1sX3NjcmlwdF9l
bGVtZW50X2dldF9kZWZlcgogd2Via2l0X2RvbV9odG1sX3NjcmlwdF9lbGVtZW50X3NldF9kZWZl
cgogd2Via2l0X2RvbV9odG1sX3NjcmlwdF9lbGVtZW50X2dldF9zcmMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vd2Via2l0
ZG9tLnN5bWJvbHMgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9ndGsvRE9NL3dlYmtpdGRvbS5zeW1ib2xzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA3OWQ3Njg1Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2d0ay9ET00vd2Via2l0ZG9tLnN5bWJvbHMKKysrIC9kZXYvbnVsbApAQCAt
MSwxMjI4ICswLDAgQEAKLUdUeXBlIHdlYmtpdF9kb21fYXR0cl9nZXRfdHlwZSh2b2lkKQotZ2No
YXIqIHdlYmtpdF9kb21fYXR0cl9nZXRfbG9jYWxfbmFtZShXZWJLaXRET01BdHRyKilAMi4xNAot
Z2NoYXIqIHdlYmtpdF9kb21fYXR0cl9nZXRfbmFtZShXZWJLaXRET01BdHRyKikKLWdjaGFyKiB3
ZWJraXRfZG9tX2F0dHJfZ2V0X25hbWVzcGFjZV91cmkoV2ViS2l0RE9NQXR0ciopQDIuMTQKLWdj
aGFyKiB3ZWJraXRfZG9tX2F0dHJfZ2V0X3ByZWZpeChXZWJLaXRET01BdHRyKilAMi4xNAotZ2Jv
b2xlYW4gd2Via2l0X2RvbV9hdHRyX2dldF9zcGVjaWZpZWQoV2ViS2l0RE9NQXR0ciopCi1nY2hh
ciogd2Via2l0X2RvbV9hdHRyX2dldF92YWx1ZShXZWJLaXRET01BdHRyKikKLXZvaWQgd2Via2l0
X2RvbV9hdHRyX3NldF92YWx1ZShXZWJLaXRET01BdHRyKiwgY29uc3QgZ2NoYXIqLCBHRXJyb3Iq
KikKLVdlYktpdERPTUVsZW1lbnQqIHdlYmtpdF9kb21fYXR0cl9nZXRfb3duZXJfZWxlbWVudChX
ZWJLaXRET01BdHRyKikKLUdUeXBlIHdlYmtpdF9kb21fY2RhdGFfc2VjdGlvbl9nZXRfdHlwZSh2
b2lkKQotR1R5cGUgd2Via2l0X2RvbV9jaGFyYWN0ZXJfZGF0YV9nZXRfdHlwZSh2b2lkKQotZ2No
YXIqIHdlYmtpdF9kb21fY2hhcmFjdGVyX2RhdGFfZ2V0X2RhdGEoV2ViS2l0RE9NQ2hhcmFjdGVy
RGF0YSopCi12b2lkIHdlYmtpdF9kb21fY2hhcmFjdGVyX2RhdGFfc2V0X2RhdGEoV2ViS2l0RE9N
Q2hhcmFjdGVyRGF0YSosIGNvbnN0IGdjaGFyKiwgR0Vycm9yKiopCi1ndWxvbmcgd2Via2l0X2Rv
bV9jaGFyYWN0ZXJfZGF0YV9nZXRfbGVuZ3RoKFdlYktpdERPTUNoYXJhY3RlckRhdGEqKQotZ2No
YXIqIHdlYmtpdF9kb21fY2hhcmFjdGVyX2RhdGFfc3Vic3RyaW5nX2RhdGEoV2ViS2l0RE9NQ2hh
cmFjdGVyRGF0YSosIGd1bG9uZywgZ3Vsb25nLCBHRXJyb3IqKikKLXZvaWQgd2Via2l0X2RvbV9j
aGFyYWN0ZXJfZGF0YV9hcHBlbmRfZGF0YShXZWJLaXRET01DaGFyYWN0ZXJEYXRhKiwgY29uc3Qg
Z2NoYXIqLCBHRXJyb3IqKikKLXZvaWQgd2Via2l0X2RvbV9jaGFyYWN0ZXJfZGF0YV9pbnNlcnRf
ZGF0YShXZWJLaXRET01DaGFyYWN0ZXJEYXRhKiwgZ3Vsb25nLCBjb25zdCBnY2hhciosIEdFcnJv
cioqKQotdm9pZCB3ZWJraXRfZG9tX2NoYXJhY3Rlcl9kYXRhX3JlcGxhY2VfZGF0YShXZWJLaXRE
T01DaGFyYWN0ZXJEYXRhKiwgZ3Vsb25nLCBndWxvbmcsIGNvbnN0IGdjaGFyKiwgR0Vycm9yKiop
Ci12b2lkIHdlYmtpdF9kb21fY2hhcmFjdGVyX2RhdGFfZGVsZXRlX2RhdGEoV2ViS2l0RE9NQ2hh
cmFjdGVyRGF0YSosIGd1bG9uZywgZ3Vsb25nLCBHRXJyb3IqKikKLUdUeXBlIHdlYmtpdF9kb21f
Y29tbWVudF9nZXRfdHlwZSh2b2lkKQotR1R5cGUgd2Via2l0X2RvbV9kb21faW1wbGVtZW50YXRp
b25fZ2V0X3R5cGUodm9pZCkKLWdib29sZWFuIHdlYmtpdF9kb21fZG9tX2ltcGxlbWVudGF0aW9u
X2hhc19mZWF0dXJlKFdlYktpdERPTURPTUltcGxlbWVudGF0aW9uKiwgY29uc3QgZ2NoYXIqLCBj
b25zdCBnY2hhciopCi1XZWJLaXRET01Eb2N1bWVudFR5cGUqIHdlYmtpdF9kb21fZG9tX2ltcGxl
bWVudGF0aW9uX2NyZWF0ZV9kb2N1bWVudF90eXBlKFdlYktpdERPTURPTUltcGxlbWVudGF0aW9u
KiwgY29uc3QgZ2NoYXIqLCBjb25zdCBnY2hhciosIGNvbnN0IGdjaGFyKiwgR0Vycm9yKiopCi1X
ZWJLaXRET01Eb2N1bWVudCogd2Via2l0X2RvbV9kb21faW1wbGVtZW50YXRpb25fY3JlYXRlX2Rv
Y3VtZW50KFdlYktpdERPTURPTUltcGxlbWVudGF0aW9uKiwgY29uc3QgZ2NoYXIqLCBjb25zdCBn
Y2hhciosIFdlYktpdERPTURvY3VtZW50VHlwZSosIEdFcnJvcioqKQotV2ViS2l0RE9NQ1NTU3R5
bGVTaGVldCogd2Via2l0X2RvbV9kb21faW1wbGVtZW50YXRpb25fY3JlYXRlX2Nzc19zdHlsZV9z
aGVldChXZWJLaXRET01ET01JbXBsZW1lbnRhdGlvbiosIGNvbnN0IGdjaGFyKiwgY29uc3QgZ2No
YXIqLCBHRXJyb3IqKikKLVdlYktpdERPTUhUTUxEb2N1bWVudCogd2Via2l0X2RvbV9kb21faW1w
bGVtZW50YXRpb25fY3JlYXRlX2h0bWxfZG9jdW1lbnQoV2ViS2l0RE9NRE9NSW1wbGVtZW50YXRp
b24qLCBjb25zdCBnY2hhciopCi1HVHlwZSB3ZWJraXRfZG9tX2RvbV93aW5kb3dfZ2V0X3R5cGUo
dm9pZCkKLWdib29sZWFuIHdlYmtpdF9kb21fZG9tX3dpbmRvd193ZWJraXRfbWVzc2FnZV9oYW5k
bGVyc19wb3N0X21lc3NhZ2UoV2ViS2l0RE9NRE9NV2luZG93KiwgY29uc3QgZ2NoYXIqLCBjb25z
dCBnY2hhciopQDIuOAotR1R5cGUgd2Via2l0X2RvbV9kb2N1bWVudF9nZXRfdHlwZSh2b2lkKQot
V2ViS2l0RE9NRG9jdW1lbnRUeXBlKiB3ZWJraXRfZG9tX2RvY3VtZW50X2dldF9kb2N0eXBlKFdl
YktpdERPTURvY3VtZW50KikKLWdjaGFyKiB3ZWJraXRfZG9tX2RvY3VtZW50X2dldF9kZXNpZ25f
bW9kZShXZWJLaXRET01Eb2N1bWVudCopQDIuMTQKLXZvaWQgd2Via2l0X2RvbV9kb2N1bWVudF9z
ZXRfZGVzaWduX21vZGUoV2ViS2l0RE9NRG9jdW1lbnQqLCBjb25zdCBnY2hhciopQDIuMTQKLWdj
aGFyKiB3ZWJraXRfZG9tX2RvY3VtZW50X2dldF9jb21wYXRfbW9kZShXZWJLaXRET01Eb2N1bWVu
dCopQDIuMTQKLVdlYktpdERPTUhUTUxDb2xsZWN0aW9uKiB3ZWJraXRfZG9tX2RvY3VtZW50X2dl
dF9lbWJlZHMoV2ViS2l0RE9NRG9jdW1lbnQqKUAyLjE0Ci1XZWJLaXRET01IVE1MQ29sbGVjdGlv
biogd2Via2l0X2RvbV9kb2N1bWVudF9nZXRfcGx1Z2lucyhXZWJLaXRET01Eb2N1bWVudCopQDIu
MTQKLVdlYktpdERPTUhUTUxDb2xsZWN0aW9uKiB3ZWJraXRfZG9tX2RvY3VtZW50X2dldF9zY3Jp
cHRzKFdlYktpdERPTURvY3VtZW50KilAMi4xNAotV2ViS2l0RE9NSFRNTENvbGxlY3Rpb24qIHdl
YmtpdF9kb21fZG9jdW1lbnRfZ2V0X2ltYWdlcyhXZWJLaXRET01Eb2N1bWVudCopCi1nY2hhciog
d2Via2l0X2RvbV9kb2N1bWVudF9nZXRfdGl0bGUoV2ViS2l0RE9NRG9jdW1lbnQqKQotdm9pZCB3
ZWJraXRfZG9tX2RvY3VtZW50X3NldF90aXRsZShXZWJLaXRET01Eb2N1bWVudCosIGNvbnN0IGdj
aGFyKikKLWdjaGFyKiB3ZWJraXRfZG9tX2RvY3VtZW50X2dldF9jaGFyc2V0KFdlYktpdERPTURv
Y3VtZW50KikKLXZvaWQgd2Via2l0X2RvbV9kb2N1bWVudF9zZXRfY2hhcnNldChXZWJLaXRET01E
b2N1bWVudCosIGNvbnN0IGdjaGFyKikKLWdjaGFyKiB3ZWJraXRfZG9tX2RvY3VtZW50X2dldF9k
ZWZhdWx0X2NoYXJzZXQoV2ViS2l0RE9NRG9jdW1lbnQqKQotZ2NoYXIqIHdlYmtpdF9kb21fZG9j
dW1lbnRfZ2V0X3VybChXZWJLaXRET01Eb2N1bWVudCopCi1nY2hhciogd2Via2l0X2RvbV9kb2N1
bWVudF9nZXRfZG9jdW1lbnRfdXJpKFdlYktpdERPTURvY3VtZW50KikKLXZvaWQgd2Via2l0X2Rv
bV9kb2N1bWVudF9zZXRfZG9jdW1lbnRfdXJpKFdlYktpdERPTURvY3VtZW50KiwgY29uc3QgZ2No
YXIqKQotZ2NoYXIqIHdlYmtpdF9kb21fZG9jdW1lbnRfZ2V0X2RvbWFpbihXZWJLaXRET01Eb2N1
bWVudCopCi1nY2hhciogd2Via2l0X2RvbV9kb2N1bWVudF9nZXRfcmVmZXJyZXIoV2ViS2l0RE9N
RG9jdW1lbnQqKQotZ2NoYXIqIHdlYmtpdF9kb21fZG9jdW1lbnRfZ2V0X2Nvb2tpZShXZWJLaXRE
T01Eb2N1bWVudCosIEdFcnJvcioqKQotdm9pZCB3ZWJraXRfZG9tX2RvY3VtZW50X3NldF9jb29r
aWUoV2ViS2l0RE9NRG9jdW1lbnQqLCBjb25zdCBnY2hhciosIEdFcnJvcioqKQotV2ViS2l0RE9N
RWxlbWVudCogd2Via2l0X2RvbV9kb2N1bWVudF9nZXRfZG9jdW1lbnRfZWxlbWVudChXZWJLaXRE
T01Eb2N1bWVudCopCi1XZWJLaXRET01TdHlsZVNoZWV0TGlzdCogd2Via2l0X2RvbV9kb2N1bWVu
dF9nZXRfc3R5bGVfc2hlZXRzKFdlYktpdERPTURvY3VtZW50KikKLWdjaGFyKiB3ZWJraXRfZG9t
X2RvY3VtZW50X2dldF9wcmVmZXJyZWRfc3R5bGVzaGVldF9zZXQoV2ViS2l0RE9NRG9jdW1lbnQq
KQotZ2NoYXIqIHdlYmtpdF9kb21fZG9jdW1lbnRfZ2V0X3NlbGVjdGVkX3N0eWxlc2hlZXRfc2V0
KFdlYktpdERPTURvY3VtZW50KikKLXZvaWQgd2Via2l0X2RvbV9kb2N1bWVudF9zZXRfc2VsZWN0
ZWRfc3R5bGVzaGVldF9zZXQoV2ViS2l0RE9NRG9jdW1lbnQqLCBjb25zdCBnY2hhciopCi1nY2hh
ciogd2Via2l0X2RvbV9kb2N1bWVudF9nZXRfY2hhcmFjdGVyX3NldChXZWJLaXRET01Eb2N1bWVu
dCopCi1nY2hhciogd2Via2l0X2RvbV9kb2N1bWVudF9nZXRfeG1sX3ZlcnNpb24oV2ViS2l0RE9N
RG9jdW1lbnQqKQotdm9pZCB3ZWJraXRfZG9tX2RvY3VtZW50X3NldF94bWxfdmVyc2lvbihXZWJL
aXRET01Eb2N1bWVudCosIGNvbnN0IGdjaGFyKiwgR0Vycm9yKiopCi1nY2hhciogd2Via2l0X2Rv
bV9kb2N1bWVudF9nZXRfeG1sX2VuY29kaW5nKFdlYktpdERPTURvY3VtZW50KikKLWdib29sZWFu
IHdlYmtpdF9kb21fZG9jdW1lbnRfZ2V0X3htbF9zdGFuZGFsb25lKFdlYktpdERPTURvY3VtZW50
KikKLXZvaWQgd2Via2l0X2RvbV9kb2N1bWVudF9zZXRfeG1sX3N0YW5kYWxvbmUoV2ViS2l0RE9N
RG9jdW1lbnQqLCBnYm9vbGVhbiwgR0Vycm9yKiopCi1nY2hhciogd2Via2l0X2RvbV9kb2N1bWVu
dF9nZXRfbGFzdF9tb2RpZmllZChXZWJLaXRET01Eb2N1bWVudCopCi1nY2hhciogd2Via2l0X2Rv
bV9kb2N1bWVudF9nZXRfaW5wdXRfZW5jb2RpbmcoV2ViS2l0RE9NRG9jdW1lbnQqKQotZ2NoYXIq
IHdlYmtpdF9kb21fZG9jdW1lbnRfZ2V0X3JlYWR5X3N0YXRlKFdlYktpdERPTURvY3VtZW50KikK
LWdib29sZWFuIHdlYmtpdF9kb21fZG9jdW1lbnRfaGFzX2ZvY3VzKFdlYktpdERPTURvY3VtZW50
KikKLVdlYktpdERPTUhUTUxIZWFkRWxlbWVudCogd2Via2l0X2RvbV9kb2N1bWVudF9nZXRfaGVh
ZChXZWJLaXRET01Eb2N1bWVudCopCi1XZWJLaXRET01IVE1MRWxlbWVudCogd2Via2l0X2RvbV9k
b2N1bWVudF9nZXRfYm9keShXZWJLaXRET01Eb2N1bWVudCopCi12b2lkIHdlYmtpdF9kb21fZG9j
dW1lbnRfc2V0X2JvZHkoV2ViS2l0RE9NRG9jdW1lbnQqLCBXZWJLaXRET01IVE1MRWxlbWVudCos
IEdFcnJvcioqKQotV2ViS2l0RE9NRE9NSW1wbGVtZW50YXRpb24qIHdlYmtpdF9kb21fZG9jdW1l
bnRfZ2V0X2ltcGxlbWVudGF0aW9uKFdlYktpdERPTURvY3VtZW50KikKLVdlYktpdERPTUVsZW1l
bnQqIHdlYmtpdF9kb21fZG9jdW1lbnRfZ2V0X2FjdGl2ZV9lbGVtZW50KFdlYktpdERPTURvY3Vt
ZW50KikKLVdlYktpdERPTUVsZW1lbnQqIHdlYmtpdF9kb21fZG9jdW1lbnRfY3JlYXRlX2VsZW1l
bnRfbnMoV2ViS2l0RE9NRG9jdW1lbnQqLCBjb25zdCBnY2hhciosIGNvbnN0IGdjaGFyKiwgR0Vy
cm9yKiopCi1XZWJLaXRET01IVE1MQ29sbGVjdGlvbiogd2Via2l0X2RvbV9kb2N1bWVudF9nZXRf
YW5jaG9ycyhXZWJLaXRET01Eb2N1bWVudCopCi1XZWJLaXRET01IVE1MQ29sbGVjdGlvbiogd2Vi
a2l0X2RvbV9kb2N1bWVudF9nZXRfYXBwbGV0cyhXZWJLaXRET01Eb2N1bWVudCopCi1XZWJLaXRE
T01IVE1MQ29sbGVjdGlvbiogd2Via2l0X2RvbV9kb2N1bWVudF9nZXRfbGlua3MoV2ViS2l0RE9N
RG9jdW1lbnQqKQotV2ViS2l0RE9NSFRNTENvbGxlY3Rpb24qIHdlYmtpdF9kb21fZG9jdW1lbnRf
Z2V0X2Zvcm1zKFdlYktpdERPTURvY3VtZW50KikKLVdlYktpdERPTURPTVdpbmRvdyogd2Via2l0
X2RvbV9kb2N1bWVudF9nZXRfZGVmYXVsdF92aWV3KFdlYktpdERPTURvY3VtZW50KikKLVdlYktp
dERPTUVsZW1lbnQqIHdlYmtpdF9kb21fZG9jdW1lbnRfY3JlYXRlX2VsZW1lbnQoV2ViS2l0RE9N
RG9jdW1lbnQqLCBjb25zdCBnY2hhciosIEdFcnJvcioqKQotV2ViS2l0RE9NVGV4dCogd2Via2l0
X2RvbV9kb2N1bWVudF9jcmVhdGVfdGV4dF9ub2RlKFdlYktpdERPTURvY3VtZW50KiwgY29uc3Qg
Z2NoYXIqKQotV2ViS2l0RE9NRXZlbnQqIHdlYmtpdF9kb21fZG9jdW1lbnRfY3JlYXRlX2V2ZW50
KFdlYktpdERPTURvY3VtZW50KiwgY29uc3QgZ2NoYXIqLCBHRXJyb3IqKikKLVdlYktpdERPTU5v
ZGVJdGVyYXRvciogd2Via2l0X2RvbV9kb2N1bWVudF9jcmVhdGVfbm9kZV9pdGVyYXRvcihXZWJL
aXRET01Eb2N1bWVudCosIFdlYktpdERPTU5vZGUqLCBndWxvbmcsIFdlYktpdERPTU5vZGVGaWx0
ZXIqLCBnYm9vbGVhbiwgR0Vycm9yKiopCi1XZWJLaXRET01FbnRpdHlSZWZlcmVuY2UqIHdlYmtp
dF9kb21fZG9jdW1lbnRfY3JlYXRlX2VudGl0eV9yZWZlcmVuY2UoV2ViS2l0RE9NRG9jdW1lbnQq
LCBjb25zdCBnY2hhciosIEdFcnJvcioqKQotV2ViS2l0RE9NUmFuZ2UqIHdlYmtpdF9kb21fZG9j
dW1lbnRfY3JlYXRlX3JhbmdlKFdlYktpdERPTURvY3VtZW50KikKLVdlYktpdERPTUF0dHIqIHdl
YmtpdF9kb21fZG9jdW1lbnRfY3JlYXRlX2F0dHJpYnV0ZShXZWJLaXRET01Eb2N1bWVudCosIGNv
bnN0IGdjaGFyKiwgR0Vycm9yKiopCi1XZWJLaXRET01BdHRyKiB3ZWJraXRfZG9tX2RvY3VtZW50
X2NyZWF0ZV9hdHRyaWJ1dGVfbnMoV2ViS2l0RE9NRG9jdW1lbnQqLCBjb25zdCBnY2hhciosIGNv
bnN0IGdjaGFyKiwgR0Vycm9yKiopCi1XZWJLaXRET01DREFUQVNlY3Rpb24qIHdlYmtpdF9kb21f
ZG9jdW1lbnRfY3JlYXRlX2NkYXRhX3NlY3Rpb24oV2ViS2l0RE9NRG9jdW1lbnQqLCBjb25zdCBn
Y2hhciosIEdFcnJvcioqKQotV2ViS2l0RE9NQ29tbWVudCogd2Via2l0X2RvbV9kb2N1bWVudF9j
cmVhdGVfY29tbWVudChXZWJLaXRET01Eb2N1bWVudCosIGNvbnN0IGdjaGFyKikKLVdlYktpdERP
TVRyZWVXYWxrZXIqIHdlYmtpdF9kb21fZG9jdW1lbnRfY3JlYXRlX3RyZWVfd2Fsa2VyKFdlYktp
dERPTURvY3VtZW50KiwgV2ViS2l0RE9NTm9kZSosIGd1bG9uZywgV2ViS2l0RE9NTm9kZUZpbHRl
ciosIGdib29sZWFuLCBHRXJyb3IqKikKLVdlYktpdERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbiog
d2Via2l0X2RvbV9kb2N1bWVudF9jcmVhdGVfcHJvY2Vzc2luZ19pbnN0cnVjdGlvbihXZWJLaXRE
T01Eb2N1bWVudCosIGNvbnN0IGdjaGFyKiwgY29uc3QgZ2NoYXIqLCBHRXJyb3IqKikKLVdlYktp
dERPTVhQYXRoRXhwcmVzc2lvbiogd2Via2l0X2RvbV9kb2N1bWVudF9jcmVhdGVfZXhwcmVzc2lv
bihXZWJLaXRET01Eb2N1bWVudCosIGNvbnN0IGdjaGFyKiwgV2ViS2l0RE9NWFBhdGhOU1Jlc29s
dmVyKiwgR0Vycm9yKiopCi1XZWJLaXRET01Eb2N1bWVudEZyYWdtZW50KiB3ZWJraXRfZG9tX2Rv
Y3VtZW50X2NyZWF0ZV9kb2N1bWVudF9mcmFnbWVudChXZWJLaXRET01Eb2N1bWVudCopCi1XZWJL
aXRET01DU1NTdHlsZURlY2xhcmF0aW9uKiB3ZWJraXRfZG9tX2RvY3VtZW50X2NyZWF0ZV9jc3Nf
c3R5bGVfZGVjbGFyYXRpb24oV2ViS2l0RE9NRG9jdW1lbnQqKQotV2ViS2l0RE9NWFBhdGhOU1Jl
c29sdmVyKiB3ZWJraXRfZG9tX2RvY3VtZW50X2NyZWF0ZV9uc19yZXNvbHZlcihXZWJLaXRET01E
b2N1bWVudCosIFdlYktpdERPTU5vZGUqKQotV2ViS2l0RE9NTm9kZSogd2Via2l0X2RvbV9kb2N1
bWVudF9pbXBvcnRfbm9kZShXZWJLaXRET01Eb2N1bWVudCosIFdlYktpdERPTU5vZGUqLCBnYm9v
bGVhbiwgR0Vycm9yKiopCi1XZWJLaXRET01Ob2RlKiB3ZWJraXRfZG9tX2RvY3VtZW50X2Fkb3B0
X25vZGUoV2ViS2l0RE9NRG9jdW1lbnQqLCBXZWJLaXRET01Ob2RlKiwgR0Vycm9yKiopCi1XZWJL
aXRET01FbGVtZW50KiB3ZWJraXRfZG9tX2RvY3VtZW50X2dldF9lbGVtZW50X2J5X2lkKFdlYktp
dERPTURvY3VtZW50KiwgY29uc3QgZ2NoYXIqKQotV2ViS2l0RE9NTm9kZUxpc3QqIHdlYmtpdF9k
b21fZG9jdW1lbnRfZ2V0X2VsZW1lbnRzX2J5X25hbWUoV2ViS2l0RE9NRG9jdW1lbnQqLCBjb25z
dCBnY2hhciopCi1XZWJLaXRET01Ob2RlTGlzdCogd2Via2l0X2RvbV9kb2N1bWVudF9nZXRfZWxl
bWVudHNfYnlfdGFnX25hbWUoV2ViS2l0RE9NRG9jdW1lbnQqLCBjb25zdCBnY2hhciopCi1XZWJL
aXRET01IVE1MQ29sbGVjdGlvbiogd2Via2l0X2RvbV9kb2N1bWVudF9nZXRfZWxlbWVudHNfYnlf
dGFnX25hbWVfYXNfaHRtbF9jb2xsZWN0aW9uKFdlYktpdERPTURvY3VtZW50KiwgY29uc3QgZ2No
YXIqKUAyLjEyCi1XZWJLaXRET01Ob2RlTGlzdCogd2Via2l0X2RvbV9kb2N1bWVudF9nZXRfZWxl
bWVudHNfYnlfdGFnX25hbWVfbnMoV2ViS2l0RE9NRG9jdW1lbnQqLCBjb25zdCBnY2hhciosIGNv
bnN0IGdjaGFyKikKLVdlYktpdERPTUhUTUxDb2xsZWN0aW9uKiB3ZWJraXRfZG9tX2RvY3VtZW50
X2dldF9lbGVtZW50c19ieV90YWdfbmFtZV9uc19hc19odG1sX2NvbGxlY3Rpb24oV2ViS2l0RE9N
RG9jdW1lbnQqLCBjb25zdCBnY2hhciosIGNvbnN0IGdjaGFyKilAMi4xMgotV2ViS2l0RE9NTm9k
ZUxpc3QqIHdlYmtpdF9kb21fZG9jdW1lbnRfZ2V0X2VsZW1lbnRzX2J5X2NsYXNzX25hbWUoV2Vi
S2l0RE9NRG9jdW1lbnQqLCBjb25zdCBnY2hhciopCi1XZWJLaXRET01IVE1MQ29sbGVjdGlvbiog
d2Via2l0X2RvbV9kb2N1bWVudF9nZXRfZWxlbWVudHNfYnlfY2xhc3NfbmFtZV9hc19odG1sX2Nv
bGxlY3Rpb24oV2ViS2l0RE9NRG9jdW1lbnQqLCBjb25zdCBnY2hhciopQDIuMTIKLVdlYktpdERP
TUVsZW1lbnQqIHdlYmtpdF9kb21fZG9jdW1lbnRfZWxlbWVudF9mcm9tX3BvaW50KFdlYktpdERP
TURvY3VtZW50KiwgZ2xvbmcsIGdsb25nKQotV2ViS2l0RE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiog
d2Via2l0X2RvbV9kb2N1bWVudF9nZXRfb3ZlcnJpZGVfc3R5bGUoV2ViS2l0RE9NRG9jdW1lbnQq
LCBXZWJLaXRET01FbGVtZW50KiwgY29uc3QgZ2NoYXIqKQotZ2Jvb2xlYW4gd2Via2l0X2RvbV9k
b2N1bWVudF9xdWVyeV9jb21tYW5kX2VuYWJsZWQoV2ViS2l0RE9NRG9jdW1lbnQqLCBjb25zdCBn
Y2hhciopCi1nYm9vbGVhbiB3ZWJraXRfZG9tX2RvY3VtZW50X3F1ZXJ5X2NvbW1hbmRfc3VwcG9y
dGVkKFdlYktpdERPTURvY3VtZW50KiwgY29uc3QgZ2NoYXIqKQotZ2Jvb2xlYW4gd2Via2l0X2Rv
bV9kb2N1bWVudF9xdWVyeV9jb21tYW5kX3N0YXRlKFdlYktpdERPTURvY3VtZW50KiwgY29uc3Qg
Z2NoYXIqKQotZ2Jvb2xlYW4gd2Via2l0X2RvbV9kb2N1bWVudF9xdWVyeV9jb21tYW5kX2luZGV0
ZXJtKFdlYktpdERPTURvY3VtZW50KiwgY29uc3QgZ2NoYXIqKQotZ2NoYXIqIHdlYmtpdF9kb21f
ZG9jdW1lbnRfcXVlcnlfY29tbWFuZF92YWx1ZShXZWJLaXRET01Eb2N1bWVudCosIGNvbnN0IGdj
aGFyKikKLWdib29sZWFuIHdlYmtpdF9kb21fZG9jdW1lbnRfZXhlY19jb21tYW5kKFdlYktpdERP
TURvY3VtZW50KiwgY29uc3QgZ2NoYXIqLCBnYm9vbGVhbiwgY29uc3QgZ2NoYXIqKQotV2ViS2l0
RE9NRWxlbWVudCogd2Via2l0X2RvbV9kb2N1bWVudF9xdWVyeV9zZWxlY3RvcihXZWJLaXRET01E
b2N1bWVudCosIGNvbnN0IGdjaGFyKiwgR0Vycm9yKiopCi1XZWJLaXRET01Ob2RlTGlzdCogd2Vi
a2l0X2RvbV9kb2N1bWVudF9xdWVyeV9zZWxlY3Rvcl9hbGwoV2ViS2l0RE9NRG9jdW1lbnQqLCBj
b25zdCBnY2hhciosIEdFcnJvcioqKQotV2ViS2l0RE9NWFBhdGhSZXN1bHQqIHdlYmtpdF9kb21f
ZG9jdW1lbnRfZXZhbHVhdGUoV2ViS2l0RE9NRG9jdW1lbnQqLCBjb25zdCBnY2hhciosIFdlYktp
dERPTU5vZGUqLCBXZWJLaXRET01YUGF0aE5TUmVzb2x2ZXIqLCBndXNob3J0LCBXZWJLaXRET01Y
UGF0aFJlc3VsdCosIEdFcnJvcioqKQotR1R5cGUgd2Via2l0X2RvbV9kb2N1bWVudF9mcmFnbWVu
dF9nZXRfdHlwZSh2b2lkKQotR1R5cGUgd2Via2l0X2RvbV9kb2N1bWVudF90eXBlX2dldF90eXBl
KHZvaWQpCi1nY2hhciogd2Via2l0X2RvbV9kb2N1bWVudF90eXBlX2dldF9uYW1lKFdlYktpdERP
TURvY3VtZW50VHlwZSopCi1nY2hhciogd2Via2l0X2RvbV9kb2N1bWVudF90eXBlX2dldF9wdWJs
aWNfaWQoV2ViS2l0RE9NRG9jdW1lbnRUeXBlKikKLWdjaGFyKiB3ZWJraXRfZG9tX2RvY3VtZW50
X3R5cGVfZ2V0X3N5c3RlbV9pZChXZWJLaXRET01Eb2N1bWVudFR5cGUqKQotV2ViS2l0RE9NTmFt
ZWROb2RlTWFwKiB3ZWJraXRfZG9tX2RvY3VtZW50X3R5cGVfZ2V0X25vdGF0aW9ucyhXZWJLaXRE
T01Eb2N1bWVudFR5cGUqKQotV2ViS2l0RE9NTmFtZWROb2RlTWFwKiB3ZWJraXRfZG9tX2RvY3Vt
ZW50X3R5cGVfZ2V0X2VudGl0aWVzKFdlYktpdERPTURvY3VtZW50VHlwZSopCi1nY2hhciogd2Vi
a2l0X2RvbV9kb2N1bWVudF90eXBlX2dldF9pbnRlcm5hbF9zdWJzZXQoV2ViS2l0RE9NRG9jdW1l
bnRUeXBlKikKLUdUeXBlIHdlYmtpdF9kb21fZWxlbWVudF9nZXRfdHlwZSh2b2lkKQotZ2NoYXIq
IHdlYmtpdF9kb21fZWxlbWVudF9nZXRfaWQoV2ViS2l0RE9NRWxlbWVudCopCi12b2lkIHdlYmtp
dF9kb21fZWxlbWVudF9zZXRfaWQoV2ViS2l0RE9NRWxlbWVudCosIGNvbnN0IGdjaGFyKikKLWdj
aGFyKiB3ZWJraXRfZG9tX2VsZW1lbnRfZ2V0X25hbWVzcGFjZV91cmkoV2ViS2l0RE9NRWxlbWVu
dCopQDIuMTQKLWdjaGFyKiB3ZWJraXRfZG9tX2VsZW1lbnRfZ2V0X2xvY2FsX25hbWUoV2ViS2l0
RE9NRWxlbWVudCopQDIuMTQKLWdjaGFyKiB3ZWJraXRfZG9tX2VsZW1lbnRfZ2V0X3ByZWZpeChX
ZWJLaXRET01FbGVtZW50KilAMi4xNAotV2ViS2l0RE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiogd2Vi
a2l0X2RvbV9lbGVtZW50X2dldF9zdHlsZShXZWJLaXRET01FbGVtZW50KikKLWdjaGFyKiB3ZWJr
aXRfZG9tX2VsZW1lbnRfZ2V0X2NsYXNzX25hbWUoV2ViS2l0RE9NRWxlbWVudCopCi12b2lkIHdl
YmtpdF9kb21fZWxlbWVudF9zZXRfY2xhc3NfbmFtZShXZWJLaXRET01FbGVtZW50KiwgY29uc3Qg
Z2NoYXIqKQotdm9pZCB3ZWJraXRfZG9tX2VsZW1lbnRfc2V0X2lubmVyX2h0bWwoV2ViS2l0RE9N
RWxlbWVudCosIGNvbnN0IGdjaGFyKiwgR0Vycm9yKiopQDIuOAotZ2NoYXIqIHdlYmtpdF9kb21f
ZWxlbWVudF9nZXRfaW5uZXJfaHRtbChXZWJLaXRET01FbGVtZW50KilAMi44Ci12b2lkIHdlYmtp
dF9kb21fZWxlbWVudF9zZXRfb3V0ZXJfaHRtbChXZWJLaXRET01FbGVtZW50KiwgY29uc3QgZ2No
YXIqLCBHRXJyb3IqKilAMi44Ci1nY2hhciogd2Via2l0X2RvbV9lbGVtZW50X2dldF9vdXRlcl9o
dG1sKFdlYktpdERPTUVsZW1lbnQqKUAyLjgKLWdjaGFyKiB3ZWJraXRfZG9tX2VsZW1lbnRfZ2V0
X3RhZ19uYW1lKFdlYktpdERPTUVsZW1lbnQqKQotV2ViS2l0RE9NRWxlbWVudCogd2Via2l0X2Rv
bV9lbGVtZW50X2dldF9vZmZzZXRfcGFyZW50KFdlYktpdERPTUVsZW1lbnQqKQotZ2xvbmcgd2Vi
a2l0X2RvbV9lbGVtZW50X2dldF9zY3JvbGxfbGVmdChXZWJLaXRET01FbGVtZW50KikKLXZvaWQg
d2Via2l0X2RvbV9lbGVtZW50X3NldF9zY3JvbGxfbGVmdChXZWJLaXRET01FbGVtZW50KiwgZ2xv
bmcpCi1nbG9uZyB3ZWJraXRfZG9tX2VsZW1lbnRfZ2V0X3Njcm9sbF90b3AoV2ViS2l0RE9NRWxl
bWVudCopCi12b2lkIHdlYmtpdF9kb21fZWxlbWVudF9zZXRfc2Nyb2xsX3RvcChXZWJLaXRET01F
bGVtZW50KiwgZ2xvbmcpCi1nbG9uZyB3ZWJraXRfZG9tX2VsZW1lbnRfZ2V0X3Njcm9sbF93aWR0
aChXZWJLaXRET01FbGVtZW50KikKLWdsb25nIHdlYmtpdF9kb21fZWxlbWVudF9nZXRfc2Nyb2xs
X2hlaWdodChXZWJLaXRET01FbGVtZW50KikKLWdkb3VibGUgd2Via2l0X2RvbV9lbGVtZW50X2dl
dF9vZmZzZXRfdG9wKFdlYktpdERPTUVsZW1lbnQqKQotZ2RvdWJsZSB3ZWJraXRfZG9tX2VsZW1l
bnRfZ2V0X29mZnNldF9sZWZ0KFdlYktpdERPTUVsZW1lbnQqKQotZ2RvdWJsZSB3ZWJraXRfZG9t
X2VsZW1lbnRfZ2V0X29mZnNldF93aWR0aChXZWJLaXRET01FbGVtZW50KikKLWdkb3VibGUgd2Vi
a2l0X2RvbV9lbGVtZW50X2dldF9vZmZzZXRfaGVpZ2h0KFdlYktpdERPTUVsZW1lbnQqKQotZ2Rv
dWJsZSB3ZWJraXRfZG9tX2VsZW1lbnRfZ2V0X2NsaWVudF90b3AoV2ViS2l0RE9NRWxlbWVudCop
Ci1nZG91YmxlIHdlYmtpdF9kb21fZWxlbWVudF9nZXRfY2xpZW50X2xlZnQoV2ViS2l0RE9NRWxl
bWVudCopCi1nZG91YmxlIHdlYmtpdF9kb21fZWxlbWVudF9nZXRfY2xpZW50X2hlaWdodChXZWJL
aXRET01FbGVtZW50KikKLWdkb3VibGUgd2Via2l0X2RvbV9lbGVtZW50X2dldF9jbGllbnRfd2lk
dGgoV2ViS2l0RE9NRWxlbWVudCopCi1XZWJLaXRET01IVE1MQ29sbGVjdGlvbiogd2Via2l0X2Rv
bV9lbGVtZW50X2dldF9jaGlsZHJlbihXZWJLaXRET01FbGVtZW50KilAMi4xMAotZ2Jvb2xlYW4g
d2Via2l0X2RvbV9lbGVtZW50X2hhc19hdHRyaWJ1dGVzKFdlYktpdERPTUVsZW1lbnQqKQotZ2Jv
b2xlYW4gd2Via2l0X2RvbV9lbGVtZW50X2hhc19hdHRyaWJ1dGUoV2ViS2l0RE9NRWxlbWVudCos
IGNvbnN0IGdjaGFyKikKLWdib29sZWFuIHdlYmtpdF9kb21fZWxlbWVudF9oYXNfYXR0cmlidXRl
X25zKFdlYktpdERPTUVsZW1lbnQqLCBjb25zdCBnY2hhciosIGNvbnN0IGdjaGFyKikKLVdlYktp
dERPTU5hbWVkTm9kZU1hcCogd2Via2l0X2RvbV9lbGVtZW50X2dldF9hdHRyaWJ1dGVzKFdlYktp
dERPTUVsZW1lbnQqKQotZ2NoYXIqIHdlYmtpdF9kb21fZWxlbWVudF9nZXRfYXR0cmlidXRlX25z
KFdlYktpdERPTUVsZW1lbnQqLCBjb25zdCBnY2hhciosIGNvbnN0IGdjaGFyKikKLXZvaWQgd2Vi
a2l0X2RvbV9lbGVtZW50X3NldF9hdHRyaWJ1dGUoV2ViS2l0RE9NRWxlbWVudCosIGNvbnN0IGdj
aGFyKiwgY29uc3QgZ2NoYXIqLCBHRXJyb3IqKikKLWdjaGFyKiB3ZWJraXRfZG9tX2VsZW1lbnRf
Z2V0X2F0dHJpYnV0ZShXZWJLaXRET01FbGVtZW50KiwgY29uc3QgZ2NoYXIqKQotdm9pZCB3ZWJr
aXRfZG9tX2VsZW1lbnRfc2V0X2F0dHJpYnV0ZV9ucyhXZWJLaXRET01FbGVtZW50KiwgY29uc3Qg
Z2NoYXIqLCBjb25zdCBnY2hhciosIGNvbnN0IGdjaGFyKiwgR0Vycm9yKiopCi12b2lkIHdlYmtp
dF9kb21fZWxlbWVudF9yZW1vdmVfYXR0cmlidXRlKFdlYktpdERPTUVsZW1lbnQqLCBjb25zdCBn
Y2hhciopCi12b2lkIHdlYmtpdF9kb21fZWxlbWVudF9yZW1vdmVfYXR0cmlidXRlX25zKFdlYktp
dERPTUVsZW1lbnQqLCBjb25zdCBnY2hhciosIGNvbnN0IGdjaGFyKikKLVdlYktpdERPTUF0dHIq
IHdlYmtpdF9kb21fZWxlbWVudF9yZW1vdmVfYXR0cmlidXRlX25vZGUoV2ViS2l0RE9NRWxlbWVu
dCosIFdlYktpdERPTUF0dHIqLCBHRXJyb3IqKikKLVdlYktpdERPTUF0dHIqIHdlYmtpdF9kb21f
ZWxlbWVudF9nZXRfYXR0cmlidXRlX25vZGUoV2ViS2l0RE9NRWxlbWVudCosIGNvbnN0IGdjaGFy
KikKLVdlYktpdERPTUF0dHIqIHdlYmtpdF9kb21fZWxlbWVudF9zZXRfYXR0cmlidXRlX25vZGUo
V2ViS2l0RE9NRWxlbWVudCosIFdlYktpdERPTUF0dHIqLCBHRXJyb3IqKikKLVdlYktpdERPTUF0
dHIqIHdlYmtpdF9kb21fZWxlbWVudF9nZXRfYXR0cmlidXRlX25vZGVfbnMoV2ViS2l0RE9NRWxl
bWVudCosIGNvbnN0IGdjaGFyKiwgY29uc3QgZ2NoYXIqKQotV2ViS2l0RE9NQXR0ciogd2Via2l0
X2RvbV9lbGVtZW50X3NldF9hdHRyaWJ1dGVfbm9kZV9ucyhXZWJLaXRET01FbGVtZW50KiwgV2Vi
S2l0RE9NQXR0ciosIEdFcnJvcioqKQotV2ViS2l0RE9NRWxlbWVudCogd2Via2l0X2RvbV9lbGVt
ZW50X2dldF9maXJzdF9lbGVtZW50X2NoaWxkKFdlYktpdERPTUVsZW1lbnQqKQotV2ViS2l0RE9N
RWxlbWVudCogd2Via2l0X2RvbV9lbGVtZW50X2dldF9uZXh0X2VsZW1lbnRfc2libGluZyhXZWJL
aXRET01FbGVtZW50KikKLVdlYktpdERPTUVsZW1lbnQqIHdlYmtpdF9kb21fZWxlbWVudF9nZXRf
cHJldmlvdXNfZWxlbWVudF9zaWJsaW5nKFdlYktpdERPTUVsZW1lbnQqKQotV2ViS2l0RE9NRWxl
bWVudCogd2Via2l0X2RvbV9lbGVtZW50X2dldF9sYXN0X2VsZW1lbnRfY2hpbGQoV2ViS2l0RE9N
RWxlbWVudCopCi1ndWxvbmcgd2Via2l0X2RvbV9lbGVtZW50X2dldF9jaGlsZF9lbGVtZW50X2Nv
dW50KFdlYktpdERPTUVsZW1lbnQqKQotdm9pZCB3ZWJraXRfZG9tX2VsZW1lbnRfc2Nyb2xsX2lu
dG9fdmlldyhXZWJLaXRET01FbGVtZW50KiwgZ2Jvb2xlYW4pCi12b2lkIHdlYmtpdF9kb21fZWxl
bWVudF9zY3JvbGxfaW50b192aWV3X2lmX25lZWRlZChXZWJLaXRET01FbGVtZW50KiwgZ2Jvb2xl
YW4pCi12b2lkIHdlYmtpdF9kb21fZWxlbWVudF9zY3JvbGxfYnlfbGluZXMoV2ViS2l0RE9NRWxl
bWVudCosIGdsb25nKQotdm9pZCB3ZWJraXRfZG9tX2VsZW1lbnRfc2Nyb2xsX2J5X3BhZ2VzKFdl
YktpdERPTUVsZW1lbnQqLCBnbG9uZykKLVdlYktpdERPTUVsZW1lbnQqIHdlYmtpdF9kb21fZWxl
bWVudF9xdWVyeV9zZWxlY3RvcihXZWJLaXRET01FbGVtZW50KiwgY29uc3QgZ2NoYXIqLCBHRXJy
b3IqKikKLVdlYktpdERPTU5vZGVMaXN0KiB3ZWJraXRfZG9tX2VsZW1lbnRfcXVlcnlfc2VsZWN0
b3JfYWxsKFdlYktpdERPTUVsZW1lbnQqLCBjb25zdCBnY2hhciosIEdFcnJvcioqKQotV2ViS2l0
RE9NTm9kZUxpc3QqIHdlYmtpdF9kb21fZWxlbWVudF9nZXRfZWxlbWVudHNfYnlfdGFnX25hbWUo
V2ViS2l0RE9NRWxlbWVudCosIGNvbnN0IGdjaGFyKikKLVdlYktpdERPTUhUTUxDb2xsZWN0aW9u
KiB3ZWJraXRfZG9tX2VsZW1lbnRfZ2V0X2VsZW1lbnRzX2J5X3RhZ19uYW1lX2FzX2h0bWxfY29s
bGVjdGlvbihXZWJLaXRET01FbGVtZW50KiwgY29uc3QgZ2NoYXIqKUAyLjEyCi1XZWJLaXRET01O
b2RlTGlzdCogd2Via2l0X2RvbV9lbGVtZW50X2dldF9lbGVtZW50c19ieV90YWdfbmFtZV9ucyhX
ZWJLaXRET01FbGVtZW50KiwgY29uc3QgZ2NoYXIqLCBjb25zdCBnY2hhciopCi1XZWJLaXRET01I
VE1MQ29sbGVjdGlvbiogd2Via2l0X2RvbV9lbGVtZW50X2dldF9lbGVtZW50c19ieV90YWdfbmFt
ZV9uc19hc19odG1sX2NvbGxlY3Rpb24oV2ViS2l0RE9NRWxlbWVudCosIGNvbnN0IGdjaGFyKiwg
Y29uc3QgZ2NoYXIqKUAyLjEyCi1XZWJLaXRET01Ob2RlTGlzdCogd2Via2l0X2RvbV9lbGVtZW50
X2dldF9lbGVtZW50c19ieV9jbGFzc19uYW1lKFdlYktpdERPTUVsZW1lbnQqLCBjb25zdCBnY2hh
ciopCi1XZWJLaXRET01IVE1MQ29sbGVjdGlvbiogd2Via2l0X2RvbV9lbGVtZW50X2dldF9lbGVt
ZW50c19ieV9jbGFzc19uYW1lX2FzX2h0bWxfY29sbGVjdGlvbihXZWJLaXRET01FbGVtZW50Kiwg
Y29uc3QgZ2NoYXIqKUAyLjEyCi12b2lkIHdlYmtpdF9kb21fZWxlbWVudF9mb2N1cyhXZWJLaXRE
T01FbGVtZW50KikKLXZvaWQgd2Via2l0X2RvbV9lbGVtZW50X2JsdXIoV2ViS2l0RE9NRWxlbWVu
dCopCi1HVHlwZSB3ZWJraXRfZG9tX2VudGl0eV9yZWZlcmVuY2VfZ2V0X3R5cGUodm9pZCkKLUdU
eXBlIHdlYmtpdF9kb21fYmxvYl9nZXRfdHlwZSh2b2lkKQotZ3VpbnQ2NCB3ZWJraXRfZG9tX2Js
b2JfZ2V0X3NpemUoV2ViS2l0RE9NQmxvYiopCi1HVHlwZSB3ZWJraXRfZG9tX2ZpbGVfZ2V0X3R5
cGUodm9pZCkKLWdjaGFyKiB3ZWJraXRfZG9tX2ZpbGVfZ2V0X25hbWUoV2ViS2l0RE9NRmlsZSop
Ci1HVHlwZSB3ZWJraXRfZG9tX2ZpbGVfbGlzdF9nZXRfdHlwZSh2b2lkKQotZ3Vsb25nIHdlYmtp
dF9kb21fZmlsZV9saXN0X2dldF9sZW5ndGgoV2ViS2l0RE9NRmlsZUxpc3QqKQotV2ViS2l0RE9N
RmlsZSogd2Via2l0X2RvbV9maWxlX2xpc3RfaXRlbShXZWJLaXRET01GaWxlTGlzdCosIGd1bG9u
ZykKLUdUeXBlIHdlYmtpdF9kb21fbmFtZWRfbm9kZV9tYXBfZ2V0X3R5cGUodm9pZCkKLWd1bG9u
ZyB3ZWJraXRfZG9tX25hbWVkX25vZGVfbWFwX2dldF9sZW5ndGgoV2ViS2l0RE9NTmFtZWROb2Rl
TWFwKikKLVdlYktpdERPTU5vZGUqIHdlYmtpdF9kb21fbmFtZWRfbm9kZV9tYXBfZ2V0X25hbWVk
X2l0ZW0oV2ViS2l0RE9NTmFtZWROb2RlTWFwKiwgY29uc3QgZ2NoYXIqKQotV2ViS2l0RE9NTm9k
ZSogd2Via2l0X2RvbV9uYW1lZF9ub2RlX21hcF9zZXRfbmFtZWRfaXRlbShXZWJLaXRET01OYW1l
ZE5vZGVNYXAqLCBXZWJLaXRET01Ob2RlKiwgR0Vycm9yKiopCi1XZWJLaXRET01Ob2RlKiB3ZWJr
aXRfZG9tX25hbWVkX25vZGVfbWFwX2dldF9uYW1lZF9pdGVtX25zKFdlYktpdERPTU5hbWVkTm9k
ZU1hcCosIGNvbnN0IGdjaGFyKiwgY29uc3QgZ2NoYXIqKQotV2ViS2l0RE9NTm9kZSogd2Via2l0
X2RvbV9uYW1lZF9ub2RlX21hcF9zZXRfbmFtZWRfaXRlbV9ucyhXZWJLaXRET01OYW1lZE5vZGVN
YXAqLCBXZWJLaXRET01Ob2RlKiwgR0Vycm9yKiopCi1XZWJLaXRET01Ob2RlKiB3ZWJraXRfZG9t
X25hbWVkX25vZGVfbWFwX3JlbW92ZV9uYW1lZF9pdGVtKFdlYktpdERPTU5hbWVkTm9kZU1hcCos
IGNvbnN0IGdjaGFyKiwgR0Vycm9yKiopCi1XZWJLaXRET01Ob2RlKiB3ZWJraXRfZG9tX25hbWVk
X25vZGVfbWFwX3JlbW92ZV9uYW1lZF9pdGVtX25zKFdlYktpdERPTU5hbWVkTm9kZU1hcCosIGNv
bnN0IGdjaGFyKiwgY29uc3QgZ2NoYXIqLCBHRXJyb3IqKikKLVdlYktpdERPTU5vZGUqIHdlYmtp
dF9kb21fbmFtZWRfbm9kZV9tYXBfaXRlbShXZWJLaXRET01OYW1lZE5vZGVNYXAqLCBndWxvbmcp
Ci1HVHlwZSB3ZWJraXRfZG9tX25vZGVfZ2V0X3R5cGUodm9pZCkKLVdFQktJVF9ET01fTk9ERV9F
TEVNRU5UX05PREUKLVdFQktJVF9ET01fTk9ERV9BVFRSSUJVVEVfTk9ERQotV0VCS0lUX0RPTV9O
T0RFX1RFWFRfTk9ERQotV0VCS0lUX0RPTV9OT0RFX0NEQVRBX1NFQ1RJT05fTk9ERQotV0VCS0lU
X0RPTV9OT0RFX0VOVElUWV9SRUZFUkVOQ0VfTk9ERQotV0VCS0lUX0RPTV9OT0RFX0VOVElUWV9O
T0RFCi1XRUJLSVRfRE9NX05PREVfUFJPQ0VTU0lOR19JTlNUUlVDVElPTl9OT0RFCi1XRUJLSVRf
RE9NX05PREVfQ09NTUVOVF9OT0RFCi1XRUJLSVRfRE9NX05PREVfRE9DVU1FTlRfTk9ERQotV0VC
S0lUX0RPTV9OT0RFX0RPQ1VNRU5UX1RZUEVfTk9ERQotV0VCS0lUX0RPTV9OT0RFX0RPQ1VNRU5U
X0ZSQUdNRU5UX05PREUKLVdFQktJVF9ET01fTk9ERV9ET0NVTUVOVF9QT1NJVElPTl9ESVNDT05O
RUNURUQKLVdFQktJVF9ET01fTk9ERV9ET0NVTUVOVF9QT1NJVElPTl9QUkVDRURJTkcKLVdFQktJ
VF9ET01fTk9ERV9ET0NVTUVOVF9QT1NJVElPTl9GT0xMT1dJTkcKLVdFQktJVF9ET01fTk9ERV9E
T0NVTUVOVF9QT1NJVElPTl9DT05UQUlOUwotV0VCS0lUX0RPTV9OT0RFX0RPQ1VNRU5UX1BPU0lU
SU9OX0NPTlRBSU5FRF9CWQotV0VCS0lUX0RPTV9OT0RFX0RPQ1VNRU5UX1BPU0lUSU9OX0lNUExF
TUVOVEFUSU9OX1NQRUNJRklDCi1ndXNob3J0IHdlYmtpdF9kb21fbm9kZV9nZXRfbm9kZV90eXBl
KFdlYktpdERPTU5vZGUqKQotZ2NoYXIqIHdlYmtpdF9kb21fbm9kZV9nZXRfbm9kZV9uYW1lKFdl
YktpdERPTU5vZGUqKQotZ2NoYXIqIHdlYmtpdF9kb21fbm9kZV9nZXRfbG9jYWxfbmFtZShXZWJL
aXRET01Ob2RlKikKLWdjaGFyKiB3ZWJraXRfZG9tX25vZGVfZ2V0X2Jhc2VfdXJpKFdlYktpdERP
TU5vZGUqKQotZ2NoYXIqIHdlYmtpdF9kb21fbm9kZV9nZXRfbm9kZV92YWx1ZShXZWJLaXRET01O
b2RlKikKLXZvaWQgd2Via2l0X2RvbV9ub2RlX3NldF9ub2RlX3ZhbHVlKFdlYktpdERPTU5vZGUq
LCBjb25zdCBnY2hhciosIEdFcnJvcioqKQotZ2NoYXIqIHdlYmtpdF9kb21fbm9kZV9nZXRfdGV4
dF9jb250ZW50KFdlYktpdERPTU5vZGUqKQotdm9pZCB3ZWJraXRfZG9tX25vZGVfc2V0X3RleHRf
Y29udGVudChXZWJLaXRET01Ob2RlKiwgY29uc3QgZ2NoYXIqLCBHRXJyb3IqKikKLWdjaGFyKiB3
ZWJraXRfZG9tX25vZGVfZ2V0X3ByZWZpeChXZWJLaXRET01Ob2RlKikKLXZvaWQgd2Via2l0X2Rv
bV9ub2RlX3NldF9wcmVmaXgoV2ViS2l0RE9NTm9kZSosIGNvbnN0IGdjaGFyKiwgR0Vycm9yKiop
Ci1nY2hhciogd2Via2l0X2RvbV9ub2RlX2dldF9uYW1lc3BhY2VfdXJpKFdlYktpdERPTU5vZGUq
KQotV2ViS2l0RE9NRG9jdW1lbnQqIHdlYmtpdF9kb21fbm9kZV9nZXRfb3duZXJfZG9jdW1lbnQo
V2ViS2l0RE9NTm9kZSopCi1XZWJLaXRET01Ob2RlKiB3ZWJraXRfZG9tX25vZGVfZ2V0X3BhcmVu
dF9ub2RlKFdlYktpdERPTU5vZGUqKQotV2ViS2l0RE9NRWxlbWVudCogd2Via2l0X2RvbV9ub2Rl
X2dldF9wYXJlbnRfZWxlbWVudChXZWJLaXRET01Ob2RlKikKLWdib29sZWFuIHdlYmtpdF9kb21f
bm9kZV9oYXNfY2hpbGRfbm9kZXMoV2ViS2l0RE9NTm9kZSopCi1XZWJLaXRET01Ob2RlTGlzdCog
d2Via2l0X2RvbV9ub2RlX2dldF9jaGlsZF9ub2RlcyhXZWJLaXRET01Ob2RlKikKLVdlYktpdERP
TU5vZGUqIHdlYmtpdF9kb21fbm9kZV9nZXRfbGFzdF9jaGlsZChXZWJLaXRET01Ob2RlKikKLVdl
YktpdERPTU5vZGUqIHdlYmtpdF9kb21fbm9kZV9nZXRfZmlyc3RfY2hpbGQoV2ViS2l0RE9NTm9k
ZSopCi1XZWJLaXRET01Ob2RlKiB3ZWJraXRfZG9tX25vZGVfZ2V0X25leHRfc2libGluZyhXZWJL
aXRET01Ob2RlKikKLVdlYktpdERPTU5vZGUqIHdlYmtpdF9kb21fbm9kZV9nZXRfcHJldmlvdXNf
c2libGluZyhXZWJLaXRET01Ob2RlKikKLVdlYktpdERPTU5vZGUqIHdlYmtpdF9kb21fbm9kZV9h
cHBlbmRfY2hpbGQoV2ViS2l0RE9NTm9kZSosIFdlYktpdERPTU5vZGUqLCBHRXJyb3IqKikKLVdl
YktpdERPTU5vZGUqIHdlYmtpdF9kb21fbm9kZV9yZXBsYWNlX2NoaWxkKFdlYktpdERPTU5vZGUq
LCBXZWJLaXRET01Ob2RlKiwgV2ViS2l0RE9NTm9kZSosIEdFcnJvcioqKQotV2ViS2l0RE9NTm9k
ZSogd2Via2l0X2RvbV9ub2RlX3JlbW92ZV9jaGlsZChXZWJLaXRET01Ob2RlKiwgV2ViS2l0RE9N
Tm9kZSosIEdFcnJvcioqKQotV2ViS2l0RE9NTm9kZSogd2Via2l0X2RvbV9ub2RlX2luc2VydF9i
ZWZvcmUoV2ViS2l0RE9NTm9kZSosIFdlYktpdERPTU5vZGUqLCBXZWJLaXRET01Ob2RlKiwgR0Vy
cm9yKiopCi1XZWJLaXRET01Ob2RlKiB3ZWJraXRfZG9tX25vZGVfY2xvbmVfbm9kZShXZWJLaXRE
T01Ob2RlKiwgZ2Jvb2xlYW4pCi1XZWJLaXRET01Ob2RlKiB3ZWJraXRfZG9tX25vZGVfY2xvbmVf
bm9kZV93aXRoX2Vycm9yKFdlYktpdERPTU5vZGUqLCBnYm9vbGVhbiwgR0Vycm9yKiopQDIuMTQK
LWdib29sZWFuIHdlYmtpdF9kb21fbm9kZV9jb250YWlucyhXZWJLaXRET01Ob2RlKiwgV2ViS2l0
RE9NTm9kZSopCi1nYm9vbGVhbiB3ZWJraXRfZG9tX25vZGVfaXNfZGVmYXVsdF9uYW1lc3BhY2Uo
V2ViS2l0RE9NTm9kZSosIGNvbnN0IGdjaGFyKikKLWdib29sZWFuIHdlYmtpdF9kb21fbm9kZV9p
c19zdXBwb3J0ZWQoV2ViS2l0RE9NTm9kZSosIGNvbnN0IGdjaGFyKiwgY29uc3QgZ2NoYXIqKQot
Z2NoYXIqIHdlYmtpdF9kb21fbm9kZV9sb29rdXBfcHJlZml4KFdlYktpdERPTU5vZGUqLCBjb25z
dCBnY2hhciopCi1nY2hhciogd2Via2l0X2RvbV9ub2RlX2xvb2t1cF9uYW1lc3BhY2VfdXJpKFdl
YktpdERPTU5vZGUqLCBjb25zdCBnY2hhciopCi1ndXNob3J0IHdlYmtpdF9kb21fbm9kZV9jb21w
YXJlX2RvY3VtZW50X3Bvc2l0aW9uKFdlYktpdERPTU5vZGUqLCBXZWJLaXRET01Ob2RlKikKLWdi
b29sZWFuIHdlYmtpdF9kb21fbm9kZV9pc19zYW1lX25vZGUoV2ViS2l0RE9NTm9kZSosIFdlYktp
dERPTU5vZGUqKQotZ2Jvb2xlYW4gd2Via2l0X2RvbV9ub2RlX2lzX2VxdWFsX25vZGUoV2ViS2l0
RE9NTm9kZSosIFdlYktpdERPTU5vZGUqKQotdm9pZCB3ZWJraXRfZG9tX25vZGVfbm9ybWFsaXpl
KFdlYktpdERPTU5vZGUqKQotR1R5cGUgd2Via2l0X2RvbV9ub2RlX2xpc3RfZ2V0X3R5cGUodm9p
ZCkKLWd1bG9uZyB3ZWJraXRfZG9tX25vZGVfbGlzdF9nZXRfbGVuZ3RoKFdlYktpdERPTU5vZGVM
aXN0KikKLVdlYktpdERPTU5vZGUqIHdlYmtpdF9kb21fbm9kZV9saXN0X2l0ZW0oV2ViS2l0RE9N
Tm9kZUxpc3QqLCBndWxvbmcpCi1HVHlwZSB3ZWJraXRfZG9tX3Byb2Nlc3NpbmdfaW5zdHJ1Y3Rp
b25fZ2V0X3R5cGUodm9pZCkKLWdjaGFyKiB3ZWJraXRfZG9tX3Byb2Nlc3NpbmdfaW5zdHJ1Y3Rp
b25fZ2V0X3RhcmdldChXZWJLaXRET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24qKQotV2ViS2l0RE9N
U3R5bGVTaGVldCogd2Via2l0X2RvbV9wcm9jZXNzaW5nX2luc3RydWN0aW9uX2dldF9zaGVldChX
ZWJLaXRET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24qKQotR1R5cGUgd2Via2l0X2RvbV90ZXh0X2dl
dF90eXBlKHZvaWQpCi1nY2hhciogd2Via2l0X2RvbV90ZXh0X2dldF93aG9sZV90ZXh0KFdlYktp
dERPTVRleHQqKQotV2ViS2l0RE9NVGV4dCogd2Via2l0X2RvbV90ZXh0X3NwbGl0X3RleHQoV2Vi
S2l0RE9NVGV4dCosIGd1bG9uZywgR0Vycm9yKiopCi1XZWJLaXRET01UZXh0KiB3ZWJraXRfZG9t
X3RleHRfcmVwbGFjZV93aG9sZV90ZXh0KFdlYktpdERPTVRleHQqLCBjb25zdCBnY2hhciosIEdF
cnJvcioqKQotR1R5cGUgd2Via2l0X2RvbV9odG1sX2FuY2hvcl9lbGVtZW50X2dldF90eXBlKHZv
aWQpCi1nY2hhciogd2Via2l0X2RvbV9odG1sX2FuY2hvcl9lbGVtZW50X2dldF90eXBlX2F0dHIo
V2ViS2l0RE9NSFRNTEFuY2hvckVsZW1lbnQqKQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfYW5jaG9y
X2VsZW1lbnRfc2V0X3R5cGVfYXR0cihXZWJLaXRET01IVE1MQW5jaG9yRWxlbWVudCosIGNvbnN0
IGdjaGFyKikKLWdjaGFyKiB3ZWJraXRfZG9tX2h0bWxfYW5jaG9yX2VsZW1lbnRfZ2V0X25hbWUo
V2ViS2l0RE9NSFRNTEFuY2hvckVsZW1lbnQqKQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfYW5jaG9y
X2VsZW1lbnRfc2V0X25hbWUoV2ViS2l0RE9NSFRNTEFuY2hvckVsZW1lbnQqLCBjb25zdCBnY2hh
ciopCi1nY2hhciogd2Via2l0X2RvbV9odG1sX2FuY2hvcl9lbGVtZW50X2dldF90YXJnZXQoV2Vi
S2l0RE9NSFRNTEFuY2hvckVsZW1lbnQqKQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfYW5jaG9yX2Vs
ZW1lbnRfc2V0X3RhcmdldChXZWJLaXRET01IVE1MQW5jaG9yRWxlbWVudCosIGNvbnN0IGdjaGFy
KikKLWdjaGFyKiB3ZWJraXRfZG9tX2h0bWxfYW5jaG9yX2VsZW1lbnRfZ2V0X2hyZWYoV2ViS2l0
RE9NSFRNTEFuY2hvckVsZW1lbnQqKQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfYW5jaG9yX2VsZW1l
bnRfc2V0X2hyZWYoV2ViS2l0RE9NSFRNTEFuY2hvckVsZW1lbnQqLCBjb25zdCBnY2hhciopCi1n
Y2hhciogd2Via2l0X2RvbV9odG1sX2FuY2hvcl9lbGVtZW50X2dldF9ocmVmbGFuZyhXZWJLaXRE
T01IVE1MQW5jaG9yRWxlbWVudCopCi12b2lkIHdlYmtpdF9kb21faHRtbF9hbmNob3JfZWxlbWVu
dF9zZXRfaHJlZmxhbmcoV2ViS2l0RE9NSFRNTEFuY2hvckVsZW1lbnQqLCBjb25zdCBnY2hhciop
Ci1nY2hhciogd2Via2l0X2RvbV9odG1sX2FuY2hvcl9lbGVtZW50X2dldF90ZXh0KFdlYktpdERP
TUhUTUxBbmNob3JFbGVtZW50KikKLWdjaGFyKiB3ZWJraXRfZG9tX2h0bWxfYW5jaG9yX2VsZW1l
bnRfZ2V0X2Nvb3JkcyhXZWJLaXRET01IVE1MQW5jaG9yRWxlbWVudCopCi12b2lkIHdlYmtpdF9k
b21faHRtbF9hbmNob3JfZWxlbWVudF9zZXRfY29vcmRzKFdlYktpdERPTUhUTUxBbmNob3JFbGVt
ZW50KiwgY29uc3QgZ2NoYXIqKQotZ2NoYXIqIHdlYmtpdF9kb21faHRtbF9hbmNob3JfZWxlbWVu
dF9nZXRfcGF0aG5hbWUoV2ViS2l0RE9NSFRNTEFuY2hvckVsZW1lbnQqKQotdm9pZCB3ZWJraXRf
ZG9tX2h0bWxfYW5jaG9yX2VsZW1lbnRfc2V0X3BhdGhuYW1lKFdlYktpdERPTUhUTUxBbmNob3JF
bGVtZW50KiwgY29uc3QgZ2NoYXIqKQotZ2NoYXIqIHdlYmtpdF9kb21faHRtbF9hbmNob3JfZWxl
bWVudF9nZXRfc2VhcmNoKFdlYktpdERPTUhUTUxBbmNob3JFbGVtZW50KikKLXZvaWQgd2Via2l0
X2RvbV9odG1sX2FuY2hvcl9lbGVtZW50X3NldF9zZWFyY2goV2ViS2l0RE9NSFRNTEFuY2hvckVs
ZW1lbnQqLCBjb25zdCBnY2hhciopCi1nY2hhciogd2Via2l0X2RvbV9odG1sX2FuY2hvcl9lbGVt
ZW50X2dldF9jaGFyc2V0KFdlYktpdERPTUhUTUxBbmNob3JFbGVtZW50KikKLXZvaWQgd2Via2l0
X2RvbV9odG1sX2FuY2hvcl9lbGVtZW50X3NldF9jaGFyc2V0KFdlYktpdERPTUhUTUxBbmNob3JF
bGVtZW50KiwgY29uc3QgZ2NoYXIqKQotZ2NoYXIqIHdlYmtpdF9kb21faHRtbF9hbmNob3JfZWxl
bWVudF9nZXRfaG9zdChXZWJLaXRET01IVE1MQW5jaG9yRWxlbWVudCopCi12b2lkIHdlYmtpdF9k
b21faHRtbF9hbmNob3JfZWxlbWVudF9zZXRfaG9zdChXZWJLaXRET01IVE1MQW5jaG9yRWxlbWVu
dCosIGNvbnN0IGdjaGFyKikKLWdjaGFyKiB3ZWJraXRfZG9tX2h0bWxfYW5jaG9yX2VsZW1lbnRf
Z2V0X2hvc3RuYW1lKFdlYktpdERPTUhUTUxBbmNob3JFbGVtZW50KikKLXZvaWQgd2Via2l0X2Rv
bV9odG1sX2FuY2hvcl9lbGVtZW50X3NldF9ob3N0bmFtZShXZWJLaXRET01IVE1MQW5jaG9yRWxl
bWVudCosIGNvbnN0IGdjaGFyKikKLWdjaGFyKiB3ZWJraXRfZG9tX2h0bWxfYW5jaG9yX2VsZW1l
bnRfZ2V0X3BvcnQoV2ViS2l0RE9NSFRNTEFuY2hvckVsZW1lbnQqKQotdm9pZCB3ZWJraXRfZG9t
X2h0bWxfYW5jaG9yX2VsZW1lbnRfc2V0X3BvcnQoV2ViS2l0RE9NSFRNTEFuY2hvckVsZW1lbnQq
LCBjb25zdCBnY2hhciopCi1nY2hhciogd2Via2l0X2RvbV9odG1sX2FuY2hvcl9lbGVtZW50X2dl
dF9yZXYoV2ViS2l0RE9NSFRNTEFuY2hvckVsZW1lbnQqKQotdm9pZCB3ZWJraXRfZG9tX2h0bWxf
YW5jaG9yX2VsZW1lbnRfc2V0X3JldihXZWJLaXRET01IVE1MQW5jaG9yRWxlbWVudCosIGNvbnN0
IGdjaGFyKikKLWdjaGFyKiB3ZWJraXRfZG9tX2h0bWxfYW5jaG9yX2VsZW1lbnRfZ2V0X3JlbChX
ZWJLaXRET01IVE1MQW5jaG9yRWxlbWVudCopCi12b2lkIHdlYmtpdF9kb21faHRtbF9hbmNob3Jf
ZWxlbWVudF9zZXRfcmVsKFdlYktpdERPTUhUTUxBbmNob3JFbGVtZW50KiwgY29uc3QgZ2NoYXIq
KQotZ2NoYXIqIHdlYmtpdF9kb21faHRtbF9hbmNob3JfZWxlbWVudF9nZXRfc2hhcGUoV2ViS2l0
RE9NSFRNTEFuY2hvckVsZW1lbnQqKQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfYW5jaG9yX2VsZW1l
bnRfc2V0X3NoYXBlKFdlYktpdERPTUhUTUxBbmNob3JFbGVtZW50KiwgY29uc3QgZ2NoYXIqKQot
Z2NoYXIqIHdlYmtpdF9kb21faHRtbF9hbmNob3JfZWxlbWVudF9nZXRfaGFzaChXZWJLaXRET01I
VE1MQW5jaG9yRWxlbWVudCopCi12b2lkIHdlYmtpdF9kb21faHRtbF9hbmNob3JfZWxlbWVudF9z
ZXRfaGFzaChXZWJLaXRET01IVE1MQW5jaG9yRWxlbWVudCosIGNvbnN0IGdjaGFyKikKLWdjaGFy
KiB3ZWJraXRfZG9tX2h0bWxfYW5jaG9yX2VsZW1lbnRfZ2V0X3Byb3RvY29sKFdlYktpdERPTUhU
TUxBbmNob3JFbGVtZW50KikKLXZvaWQgd2Via2l0X2RvbV9odG1sX2FuY2hvcl9lbGVtZW50X3Nl
dF9wcm90b2NvbChXZWJLaXRET01IVE1MQW5jaG9yRWxlbWVudCosIGNvbnN0IGdjaGFyKikKLUdU
eXBlIHdlYmtpdF9kb21faHRtbF9hcHBsZXRfZWxlbWVudF9nZXRfdHlwZSh2b2lkKQotZ2xvbmcg
d2Via2l0X2RvbV9odG1sX2FwcGxldF9lbGVtZW50X2dldF92c3BhY2UoV2ViS2l0RE9NSFRNTEFw
cGxldEVsZW1lbnQqKQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfYXBwbGV0X2VsZW1lbnRfc2V0X3Zz
cGFjZShXZWJLaXRET01IVE1MQXBwbGV0RWxlbWVudCosIGdsb25nKQotZ2xvbmcgd2Via2l0X2Rv
bV9odG1sX2FwcGxldF9lbGVtZW50X2dldF9oc3BhY2UoV2ViS2l0RE9NSFRNTEFwcGxldEVsZW1l
bnQqKQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfYXBwbGV0X2VsZW1lbnRfc2V0X2hzcGFjZShXZWJL
aXRET01IVE1MQXBwbGV0RWxlbWVudCosIGdsb25nKQotZ2NoYXIqIHdlYmtpdF9kb21faHRtbF9h
cHBsZXRfZWxlbWVudF9nZXRfd2lkdGgoV2ViS2l0RE9NSFRNTEFwcGxldEVsZW1lbnQqKQotdm9p
ZCB3ZWJraXRfZG9tX2h0bWxfYXBwbGV0X2VsZW1lbnRfc2V0X3dpZHRoKFdlYktpdERPTUhUTUxB
cHBsZXRFbGVtZW50KiwgY29uc3QgZ2NoYXIqKQotZ2NoYXIqIHdlYmtpdF9kb21faHRtbF9hcHBs
ZXRfZWxlbWVudF9nZXRfaGVpZ2h0KFdlYktpdERPTUhUTUxBcHBsZXRFbGVtZW50KikKLXZvaWQg
d2Via2l0X2RvbV9odG1sX2FwcGxldF9lbGVtZW50X3NldF9oZWlnaHQoV2ViS2l0RE9NSFRNTEFw
cGxldEVsZW1lbnQqLCBjb25zdCBnY2hhciopCi1nY2hhciogd2Via2l0X2RvbV9odG1sX2FwcGxl
dF9lbGVtZW50X2dldF9jb2RlKFdlYktpdERPTUhUTUxBcHBsZXRFbGVtZW50KikKLXZvaWQgd2Vi
a2l0X2RvbV9odG1sX2FwcGxldF9lbGVtZW50X3NldF9jb2RlKFdlYktpdERPTUhUTUxBcHBsZXRF
bGVtZW50KiwgY29uc3QgZ2NoYXIqKQotZ2NoYXIqIHdlYmtpdF9kb21faHRtbF9hcHBsZXRfZWxl
bWVudF9nZXRfY29kZV9iYXNlKFdlYktpdERPTUhUTUxBcHBsZXRFbGVtZW50KikKLXZvaWQgd2Vi
a2l0X2RvbV9odG1sX2FwcGxldF9lbGVtZW50X3NldF9jb2RlX2Jhc2UoV2ViS2l0RE9NSFRNTEFw
cGxldEVsZW1lbnQqLCBjb25zdCBnY2hhciopCi1nY2hhciogd2Via2l0X2RvbV9odG1sX2FwcGxl
dF9lbGVtZW50X2dldF9vYmplY3QoV2ViS2l0RE9NSFRNTEFwcGxldEVsZW1lbnQqKQotdm9pZCB3
ZWJraXRfZG9tX2h0bWxfYXBwbGV0X2VsZW1lbnRfc2V0X29iamVjdChXZWJLaXRET01IVE1MQXBw
bGV0RWxlbWVudCosIGNvbnN0IGdjaGFyKikKLWdjaGFyKiB3ZWJraXRfZG9tX2h0bWxfYXBwbGV0
X2VsZW1lbnRfZ2V0X2FsaWduKFdlYktpdERPTUhUTUxBcHBsZXRFbGVtZW50KikKLXZvaWQgd2Vi
a2l0X2RvbV9odG1sX2FwcGxldF9lbGVtZW50X3NldF9hbGlnbihXZWJLaXRET01IVE1MQXBwbGV0
RWxlbWVudCosIGNvbnN0IGdjaGFyKikKLWdjaGFyKiB3ZWJraXRfZG9tX2h0bWxfYXBwbGV0X2Vs
ZW1lbnRfZ2V0X25hbWUoV2ViS2l0RE9NSFRNTEFwcGxldEVsZW1lbnQqKQotdm9pZCB3ZWJraXRf
ZG9tX2h0bWxfYXBwbGV0X2VsZW1lbnRfc2V0X25hbWUoV2ViS2l0RE9NSFRNTEFwcGxldEVsZW1l
bnQqLCBjb25zdCBnY2hhciopCi1nY2hhciogd2Via2l0X2RvbV9odG1sX2FwcGxldF9lbGVtZW50
X2dldF9hbHQoV2ViS2l0RE9NSFRNTEFwcGxldEVsZW1lbnQqKQotdm9pZCB3ZWJraXRfZG9tX2h0
bWxfYXBwbGV0X2VsZW1lbnRfc2V0X2FsdChXZWJLaXRET01IVE1MQXBwbGV0RWxlbWVudCosIGNv
bnN0IGdjaGFyKikKLWdjaGFyKiB3ZWJraXRfZG9tX2h0bWxfYXBwbGV0X2VsZW1lbnRfZ2V0X2Fy
Y2hpdmUoV2ViS2l0RE9NSFRNTEFwcGxldEVsZW1lbnQqKQotdm9pZCB3ZWJraXRfZG9tX2h0bWxf
YXBwbGV0X2VsZW1lbnRfc2V0X2FyY2hpdmUoV2ViS2l0RE9NSFRNTEFwcGxldEVsZW1lbnQqLCBj
b25zdCBnY2hhciopCi1HVHlwZSB3ZWJraXRfZG9tX2h0bWxfYXJlYV9lbGVtZW50X2dldF90eXBl
KHZvaWQpCi1nY2hhciogd2Via2l0X2RvbV9odG1sX2FyZWFfZWxlbWVudF9nZXRfYWx0KFdlYktp
dERPTUhUTUxBcmVhRWxlbWVudCopCi1nY2hhciogd2Via2l0X2RvbV9odG1sX2FyZWFfZWxlbWVu
dF9nZXRfY29vcmRzKFdlYktpdERPTUhUTUxBcmVhRWxlbWVudCopCi1nY2hhciogd2Via2l0X2Rv
bV9odG1sX2FyZWFfZWxlbWVudF9nZXRfaGFzaChXZWJLaXRET01IVE1MQXJlYUVsZW1lbnQqKQot
Z2NoYXIqIHdlYmtpdF9kb21faHRtbF9hcmVhX2VsZW1lbnRfZ2V0X2hvc3RuYW1lKFdlYktpdERP
TUhUTUxBcmVhRWxlbWVudCopCi1nY2hhciogd2Via2l0X2RvbV9odG1sX2FyZWFfZWxlbWVudF9n
ZXRfaG9zdChXZWJLaXRET01IVE1MQXJlYUVsZW1lbnQqKQotZ2NoYXIqIHdlYmtpdF9kb21faHRt
bF9hcmVhX2VsZW1lbnRfZ2V0X2hyZWYoV2ViS2l0RE9NSFRNTEFyZWFFbGVtZW50KikKLWdib29s
ZWFuIHdlYmtpdF9kb21faHRtbF9hcmVhX2VsZW1lbnRfZ2V0X25vX2hyZWYoV2ViS2l0RE9NSFRN
TEFyZWFFbGVtZW50KikKLWdjaGFyKiB3ZWJraXRfZG9tX2h0bWxfYXJlYV9lbGVtZW50X2dldF9w
YXRobmFtZShXZWJLaXRET01IVE1MQXJlYUVsZW1lbnQqKQotZ2NoYXIqIHdlYmtpdF9kb21faHRt
bF9hcmVhX2VsZW1lbnRfZ2V0X3BvcnQoV2ViS2l0RE9NSFRNTEFyZWFFbGVtZW50KikKLWdjaGFy
KiB3ZWJraXRfZG9tX2h0bWxfYXJlYV9lbGVtZW50X2dldF9wcm90b2NvbChXZWJLaXRET01IVE1M
QXJlYUVsZW1lbnQqKQotZ2NoYXIqIHdlYmtpdF9kb21faHRtbF9hcmVhX2VsZW1lbnRfZ2V0X3Nl
YXJjaChXZWJLaXRET01IVE1MQXJlYUVsZW1lbnQqKQotZ2NoYXIqIHdlYmtpdF9kb21faHRtbF9h
cmVhX2VsZW1lbnRfZ2V0X3NoYXBlKFdlYktpdERPTUhUTUxBcmVhRWxlbWVudCopCi1nY2hhciog
d2Via2l0X2RvbV9odG1sX2FyZWFfZWxlbWVudF9nZXRfdGFyZ2V0KFdlYktpdERPTUhUTUxBcmVh
RWxlbWVudCopCi12b2lkIHdlYmtpdF9kb21faHRtbF9hcmVhX2VsZW1lbnRfc2V0X2FsdChXZWJL
aXRET01IVE1MQXJlYUVsZW1lbnQqLCBjb25zdCBnY2hhciopCi12b2lkIHdlYmtpdF9kb21faHRt
bF9hcmVhX2VsZW1lbnRfc2V0X2Nvb3JkcyhXZWJLaXRET01IVE1MQXJlYUVsZW1lbnQqLCBjb25z
dCBnY2hhciopCi12b2lkIHdlYmtpdF9kb21faHRtbF9hcmVhX2VsZW1lbnRfc2V0X2hyZWYoV2Vi
S2l0RE9NSFRNTEFyZWFFbGVtZW50KiwgY29uc3QgZ2NoYXIqKQotdm9pZCB3ZWJraXRfZG9tX2h0
bWxfYXJlYV9lbGVtZW50X3NldF9ub19ocmVmKFdlYktpdERPTUhUTUxBcmVhRWxlbWVudCosIGdi
b29sZWFuKQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfYXJlYV9lbGVtZW50X3NldF9zaGFwZShXZWJL
aXRET01IVE1MQXJlYUVsZW1lbnQqLCBjb25zdCBnY2hhciopCi12b2lkIHdlYmtpdF9kb21faHRt
bF9hcmVhX2VsZW1lbnRfc2V0X3RhcmdldChXZWJLaXRET01IVE1MQXJlYUVsZW1lbnQqLCBjb25z
dCBnY2hhciopCi1HVHlwZSB3ZWJraXRfZG9tX2h0bWxfYmFzZV9lbGVtZW50X2dldF90eXBlKHZv
aWQpCi1nY2hhciogd2Via2l0X2RvbV9odG1sX2Jhc2VfZWxlbWVudF9nZXRfaHJlZihXZWJLaXRE
T01IVE1MQmFzZUVsZW1lbnQqKQotZ2NoYXIqIHdlYmtpdF9kb21faHRtbF9iYXNlX2VsZW1lbnRf
Z2V0X3RhcmdldChXZWJLaXRET01IVE1MQmFzZUVsZW1lbnQqKQotdm9pZCB3ZWJraXRfZG9tX2h0
bWxfYmFzZV9lbGVtZW50X3NldF9ocmVmKFdlYktpdERPTUhUTUxCYXNlRWxlbWVudCosIGNvbnN0
IGdjaGFyKikKLXZvaWQgd2Via2l0X2RvbV9odG1sX2Jhc2VfZWxlbWVudF9zZXRfdGFyZ2V0KFdl
YktpdERPTUhUTUxCYXNlRWxlbWVudCosIGNvbnN0IGdjaGFyKikKLUdUeXBlIHdlYmtpdF9kb21f
aHRtbF9icl9lbGVtZW50X2dldF90eXBlKHZvaWQpCi1nY2hhciogd2Via2l0X2RvbV9odG1sX2Jy
X2VsZW1lbnRfZ2V0X2NsZWFyKFdlYktpdERPTUhUTUxCUkVsZW1lbnQqKQotdm9pZCB3ZWJraXRf
ZG9tX2h0bWxfYnJfZWxlbWVudF9zZXRfY2xlYXIoV2ViS2l0RE9NSFRNTEJSRWxlbWVudCosIGNv
bnN0IGdjaGFyKikKLUdUeXBlIHdlYmtpdF9kb21faHRtbF9iYXNlX2ZvbnRfZWxlbWVudF9nZXRf
dHlwZSh2b2lkKQotZ2NoYXIqIHdlYmtpdF9kb21faHRtbF9iYXNlX2ZvbnRfZWxlbWVudF9nZXRf
Y29sb3IoV2ViS2l0RE9NSFRNTEJhc2VGb250RWxlbWVudCopCi1nY2hhciogd2Via2l0X2RvbV9o
dG1sX2Jhc2VfZm9udF9lbGVtZW50X2dldF9mYWNlKFdlYktpdERPTUhUTUxCYXNlRm9udEVsZW1l
bnQqKQotZ2xvbmcgd2Via2l0X2RvbV9odG1sX2Jhc2VfZm9udF9lbGVtZW50X2dldF9zaXplKFdl
YktpdERPTUhUTUxCYXNlRm9udEVsZW1lbnQqKQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfYmFzZV9m
b250X2VsZW1lbnRfc2V0X2NvbG9yKFdlYktpdERPTUhUTUxCYXNlRm9udEVsZW1lbnQqLCBjb25z
dCBnY2hhciopCi12b2lkIHdlYmtpdF9kb21faHRtbF9iYXNlX2ZvbnRfZWxlbWVudF9zZXRfZmFj
ZShXZWJLaXRET01IVE1MQmFzZUZvbnRFbGVtZW50KiwgY29uc3QgZ2NoYXIqKQotdm9pZCB3ZWJr
aXRfZG9tX2h0bWxfYmFzZV9mb250X2VsZW1lbnRfc2V0X3NpemUoV2ViS2l0RE9NSFRNTEJhc2VG
b250RWxlbWVudCosIGdsb25nKQotR1R5cGUgd2Via2l0X2RvbV9odG1sX2JvZHlfZWxlbWVudF9n
ZXRfdHlwZSh2b2lkKQotZ2NoYXIqIHdlYmtpdF9kb21faHRtbF9ib2R5X2VsZW1lbnRfZ2V0X2Ff
bGluayhXZWJLaXRET01IVE1MQm9keUVsZW1lbnQqKQotZ2NoYXIqIHdlYmtpdF9kb21faHRtbF9i
b2R5X2VsZW1lbnRfZ2V0X2JhY2tncm91bmQoV2ViS2l0RE9NSFRNTEJvZHlFbGVtZW50KikKLWdj
aGFyKiB3ZWJraXRfZG9tX2h0bWxfYm9keV9lbGVtZW50X2dldF9iZ19jb2xvcihXZWJLaXRET01I
VE1MQm9keUVsZW1lbnQqKQotZ2NoYXIqIHdlYmtpdF9kb21faHRtbF9ib2R5X2VsZW1lbnRfZ2V0
X2xpbmsoV2ViS2l0RE9NSFRNTEJvZHlFbGVtZW50KikKLWdjaGFyKiB3ZWJraXRfZG9tX2h0bWxf
Ym9keV9lbGVtZW50X2dldF90ZXh0KFdlYktpdERPTUhUTUxCb2R5RWxlbWVudCopCi1nY2hhciog
d2Via2l0X2RvbV9odG1sX2JvZHlfZWxlbWVudF9nZXRfdl9saW5rKFdlYktpdERPTUhUTUxCb2R5
RWxlbWVudCopCi12b2lkIHdlYmtpdF9kb21faHRtbF9ib2R5X2VsZW1lbnRfc2V0X2FfbGluayhX
ZWJLaXRET01IVE1MQm9keUVsZW1lbnQqLCBjb25zdCBnY2hhciopCi12b2lkIHdlYmtpdF9kb21f
aHRtbF9ib2R5X2VsZW1lbnRfc2V0X2JhY2tncm91bmQoV2ViS2l0RE9NSFRNTEJvZHlFbGVtZW50
KiwgY29uc3QgZ2NoYXIqKQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfYm9keV9lbGVtZW50X3NldF9i
Z19jb2xvcihXZWJLaXRET01IVE1MQm9keUVsZW1lbnQqLCBjb25zdCBnY2hhciopCi12b2lkIHdl
YmtpdF9kb21faHRtbF9ib2R5X2VsZW1lbnRfc2V0X2xpbmsoV2ViS2l0RE9NSFRNTEJvZHlFbGVt
ZW50KiwgY29uc3QgZ2NoYXIqKQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfYm9keV9lbGVtZW50X3Nl
dF90ZXh0KFdlYktpdERPTUhUTUxCb2R5RWxlbWVudCosIGNvbnN0IGdjaGFyKikKLXZvaWQgd2Vi
a2l0X2RvbV9odG1sX2JvZHlfZWxlbWVudF9zZXRfdl9saW5rKFdlYktpdERPTUhUTUxCb2R5RWxl
bWVudCosIGNvbnN0IGdjaGFyKikKLUdUeXBlIHdlYmtpdF9kb21faHRtbF9idXR0b25fZWxlbWVu
dF9nZXRfdHlwZSh2b2lkKQotZ2NoYXIqIHdlYmtpdF9kb21faHRtbF9idXR0b25fZWxlbWVudF9n
ZXRfYnV0dG9uX3R5cGUoV2ViS2l0RE9NSFRNTEJ1dHRvbkVsZW1lbnQqKQotdm9pZCB3ZWJraXRf
ZG9tX2h0bWxfYnV0dG9uX2VsZW1lbnRfc2V0X2J1dHRvbl90eXBlKFdlYktpdERPTUhUTUxCdXR0
b25FbGVtZW50KiwgY29uc3QgZ2NoYXIqKQotZ2Jvb2xlYW4gd2Via2l0X2RvbV9odG1sX2J1dHRv
bl9lbGVtZW50X2dldF9hdXRvZm9jdXMoV2ViS2l0RE9NSFRNTEJ1dHRvbkVsZW1lbnQqKQotZ2Jv
b2xlYW4gd2Via2l0X2RvbV9odG1sX2J1dHRvbl9lbGVtZW50X2dldF9kaXNhYmxlZChXZWJLaXRE
T01IVE1MQnV0dG9uRWxlbWVudCopCi1XZWJLaXRET01IVE1MRm9ybUVsZW1lbnQqIHdlYmtpdF9k
b21faHRtbF9idXR0b25fZWxlbWVudF9nZXRfZm9ybShXZWJLaXRET01IVE1MQnV0dG9uRWxlbWVu
dCopCi1nY2hhciogd2Via2l0X2RvbV9odG1sX2J1dHRvbl9lbGVtZW50X2dldF9uYW1lKFdlYktp
dERPTUhUTUxCdXR0b25FbGVtZW50KikKLWdjaGFyKiB3ZWJraXRfZG9tX2h0bWxfYnV0dG9uX2Vs
ZW1lbnRfZ2V0X3ZhbHVlKFdlYktpdERPTUhUTUxCdXR0b25FbGVtZW50KikKLWdib29sZWFuIHdl
YmtpdF9kb21faHRtbF9idXR0b25fZWxlbWVudF9nZXRfd2lsbF92YWxpZGF0ZShXZWJLaXRET01I
VE1MQnV0dG9uRWxlbWVudCopCi12b2lkIHdlYmtpdF9kb21faHRtbF9idXR0b25fZWxlbWVudF9z
ZXRfYXV0b2ZvY3VzKFdlYktpdERPTUhUTUxCdXR0b25FbGVtZW50KiwgZ2Jvb2xlYW4pCi12b2lk
IHdlYmtpdF9kb21faHRtbF9idXR0b25fZWxlbWVudF9zZXRfZGlzYWJsZWQoV2ViS2l0RE9NSFRN
TEJ1dHRvbkVsZW1lbnQqLCBnYm9vbGVhbikKLXZvaWQgd2Via2l0X2RvbV9odG1sX2J1dHRvbl9l
bGVtZW50X3NldF9uYW1lKFdlYktpdERPTUhUTUxCdXR0b25FbGVtZW50KiwgY29uc3QgZ2NoYXIq
KQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfYnV0dG9uX2VsZW1lbnRfc2V0X3ZhbHVlKFdlYktpdERP
TUhUTUxCdXR0b25FbGVtZW50KiwgY29uc3QgZ2NoYXIqKQotR1R5cGUgd2Via2l0X2RvbV9odG1s
X2NhbnZhc19lbGVtZW50X2dldF90eXBlKHZvaWQpCi1nbG9uZyB3ZWJraXRfZG9tX2h0bWxfY2Fu
dmFzX2VsZW1lbnRfZ2V0X2hlaWdodChXZWJLaXRET01IVE1MQ2FudmFzRWxlbWVudCopCi1nbG9u
ZyB3ZWJraXRfZG9tX2h0bWxfY2FudmFzX2VsZW1lbnRfZ2V0X3dpZHRoKFdlYktpdERPTUhUTUxD
YW52YXNFbGVtZW50KikKLXZvaWQgd2Via2l0X2RvbV9odG1sX2NhbnZhc19lbGVtZW50X3NldF9o
ZWlnaHQoV2ViS2l0RE9NSFRNTENhbnZhc0VsZW1lbnQqLCBnbG9uZykKLXZvaWQgd2Via2l0X2Rv
bV9odG1sX2NhbnZhc19lbGVtZW50X3NldF93aWR0aChXZWJLaXRET01IVE1MQ2FudmFzRWxlbWVu
dCosIGdsb25nKQotR1R5cGUgd2Via2l0X2RvbV9odG1sX2NvbGxlY3Rpb25fZ2V0X3R5cGUodm9p
ZCkKLWd1bG9uZyB3ZWJraXRfZG9tX2h0bWxfY29sbGVjdGlvbl9nZXRfbGVuZ3RoKFdlYktpdERP
TUhUTUxDb2xsZWN0aW9uKikKLVdlYktpdERPTU5vZGUqIHdlYmtpdF9kb21faHRtbF9jb2xsZWN0
aW9uX2l0ZW0oV2ViS2l0RE9NSFRNTENvbGxlY3Rpb24qLCBndWxvbmcpCi1XZWJLaXRET01Ob2Rl
KiB3ZWJraXRfZG9tX2h0bWxfY29sbGVjdGlvbl9uYW1lZF9pdGVtKFdlYktpdERPTUhUTUxDb2xs
ZWN0aW9uKiwgY29uc3QgZ2NoYXIqKQotR1R5cGUgd2Via2l0X2RvbV9odG1sX2RfbGlzdF9lbGVt
ZW50X2dldF90eXBlKHZvaWQpCi1nYm9vbGVhbiB3ZWJraXRfZG9tX2h0bWxfZF9saXN0X2VsZW1l
bnRfZ2V0X2NvbXBhY3QoV2ViS2l0RE9NSFRNTERMaXN0RWxlbWVudCopCi12b2lkIHdlYmtpdF9k
b21faHRtbF9kX2xpc3RfZWxlbWVudF9zZXRfY29tcGFjdChXZWJLaXRET01IVE1MRExpc3RFbGVt
ZW50KiwgZ2Jvb2xlYW4pCi1HVHlwZSB3ZWJraXRfZG9tX2h0bWxfZGlyZWN0b3J5X2VsZW1lbnRf
Z2V0X3R5cGUodm9pZCkKLWdib29sZWFuIHdlYmtpdF9kb21faHRtbF9kaXJlY3RvcnlfZWxlbWVu
dF9nZXRfY29tcGFjdChXZWJLaXRET01IVE1MRGlyZWN0b3J5RWxlbWVudCopCi12b2lkIHdlYmtp
dF9kb21faHRtbF9kaXJlY3RvcnlfZWxlbWVudF9zZXRfY29tcGFjdChXZWJLaXRET01IVE1MRGly
ZWN0b3J5RWxlbWVudCosIGdib29sZWFuKQotR1R5cGUgd2Via2l0X2RvbV9odG1sX2Rpdl9lbGVt
ZW50X2dldF90eXBlKHZvaWQpCi1nY2hhciogd2Via2l0X2RvbV9odG1sX2Rpdl9lbGVtZW50X2dl
dF9hbGlnbihXZWJLaXRET01IVE1MRGl2RWxlbWVudCopCi12b2lkIHdlYmtpdF9kb21faHRtbF9k
aXZfZWxlbWVudF9zZXRfYWxpZ24oV2ViS2l0RE9NSFRNTERpdkVsZW1lbnQqLCBjb25zdCBnY2hh
ciopCi1HVHlwZSB3ZWJraXRfZG9tX2h0bWxfZG9jdW1lbnRfZ2V0X3R5cGUodm9pZCkKLXZvaWQg
d2Via2l0X2RvbV9odG1sX2RvY3VtZW50X2NhcHR1cmVfZXZlbnRzKFdlYktpdERPTUhUTUxEb2N1
bWVudCopCi12b2lkIHdlYmtpdF9kb21faHRtbF9kb2N1bWVudF9jbGVhcihXZWJLaXRET01IVE1M
RG9jdW1lbnQqKQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfZG9jdW1lbnRfY2xvc2UoV2ViS2l0RE9N
SFRNTERvY3VtZW50KikKLWdjaGFyKiB3ZWJraXRfZG9tX2h0bWxfZG9jdW1lbnRfZ2V0X2FsaW5r
X2NvbG9yKFdlYktpdERPTUhUTUxEb2N1bWVudCopCi1nY2hhciogd2Via2l0X2RvbV9odG1sX2Rv
Y3VtZW50X2dldF9iZ19jb2xvcihXZWJLaXRET01IVE1MRG9jdW1lbnQqKQotZ2NoYXIqIHdlYmtp
dF9kb21faHRtbF9kb2N1bWVudF9nZXRfY29tcGF0X21vZGUoV2ViS2l0RE9NSFRNTERvY3VtZW50
KikKLWdjaGFyKiB3ZWJraXRfZG9tX2h0bWxfZG9jdW1lbnRfZ2V0X2Rlc2lnbl9tb2RlKFdlYktp
dERPTUhUTUxEb2N1bWVudCopCi1nY2hhciogd2Via2l0X2RvbV9odG1sX2RvY3VtZW50X2dldF9k
aXIoV2ViS2l0RE9NSFRNTERvY3VtZW50KikKLVdlYktpdERPTUhUTUxDb2xsZWN0aW9uKiB3ZWJr
aXRfZG9tX2h0bWxfZG9jdW1lbnRfZ2V0X2VtYmVkcyhXZWJLaXRET01IVE1MRG9jdW1lbnQqKQot
Z2NoYXIqIHdlYmtpdF9kb21faHRtbF9kb2N1bWVudF9nZXRfZmdfY29sb3IoV2ViS2l0RE9NSFRN
TERvY3VtZW50KikKLWdsb25nIHdlYmtpdF9kb21faHRtbF9kb2N1bWVudF9nZXRfaGVpZ2h0KFdl
YktpdERPTUhUTUxEb2N1bWVudCopCi1nY2hhciogd2Via2l0X2RvbV9odG1sX2RvY3VtZW50X2dl
dF9saW5rX2NvbG9yKFdlYktpdERPTUhUTUxEb2N1bWVudCopCi1XZWJLaXRET01IVE1MQ29sbGVj
dGlvbiogd2Via2l0X2RvbV9odG1sX2RvY3VtZW50X2dldF9wbHVnaW5zKFdlYktpdERPTUhUTUxE
b2N1bWVudCopCi1XZWJLaXRET01IVE1MQ29sbGVjdGlvbiogd2Via2l0X2RvbV9odG1sX2RvY3Vt
ZW50X2dldF9zY3JpcHRzKFdlYktpdERPTUhUTUxEb2N1bWVudCopCi1nY2hhciogd2Via2l0X2Rv
bV9odG1sX2RvY3VtZW50X2dldF92bGlua19jb2xvcihXZWJLaXRET01IVE1MRG9jdW1lbnQqKQot
Z2xvbmcgd2Via2l0X2RvbV9odG1sX2RvY3VtZW50X2dldF93aWR0aChXZWJLaXRET01IVE1MRG9j
dW1lbnQqKQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfZG9jdW1lbnRfcmVsZWFzZV9ldmVudHMoV2Vi
S2l0RE9NSFRNTERvY3VtZW50KikKLXZvaWQgd2Via2l0X2RvbV9odG1sX2RvY3VtZW50X3NldF9h
bGlua19jb2xvcihXZWJLaXRET01IVE1MRG9jdW1lbnQqLCBjb25zdCBnY2hhciopCi12b2lkIHdl
YmtpdF9kb21faHRtbF9kb2N1bWVudF9zZXRfYmdfY29sb3IoV2ViS2l0RE9NSFRNTERvY3VtZW50
KiwgY29uc3QgZ2NoYXIqKQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfZG9jdW1lbnRfc2V0X2Rlc2ln
bl9tb2RlKFdlYktpdERPTUhUTUxEb2N1bWVudCosIGNvbnN0IGdjaGFyKikKLXZvaWQgd2Via2l0
X2RvbV9odG1sX2RvY3VtZW50X3NldF9kaXIoV2ViS2l0RE9NSFRNTERvY3VtZW50KiwgY29uc3Qg
Z2NoYXIqKQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfZG9jdW1lbnRfc2V0X2ZnX2NvbG9yKFdlYktp
dERPTUhUTUxEb2N1bWVudCosIGNvbnN0IGdjaGFyKikKLXZvaWQgd2Via2l0X2RvbV9odG1sX2Rv
Y3VtZW50X3NldF9saW5rX2NvbG9yKFdlYktpdERPTUhUTUxEb2N1bWVudCosIGNvbnN0IGdjaGFy
KikKLXZvaWQgd2Via2l0X2RvbV9odG1sX2RvY3VtZW50X3NldF92bGlua19jb2xvcihXZWJLaXRE
T01IVE1MRG9jdW1lbnQqLCBjb25zdCBnY2hhciopCi1HVHlwZSB3ZWJraXRfZG9tX2h0bWxfZWxl
bWVudF9nZXRfdHlwZSh2b2lkKQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfZWxlbWVudF9jbGljayhX
ZWJLaXRET01IVE1MRWxlbWVudCopCi1nY2hhciogd2Via2l0X2RvbV9odG1sX2VsZW1lbnRfZ2V0
X2FjY2Vzc19rZXkoV2ViS2l0RE9NSFRNTEVsZW1lbnQqKQotV2ViS2l0RE9NSFRNTENvbGxlY3Rp
b24qIHdlYmtpdF9kb21faHRtbF9lbGVtZW50X2dldF9jaGlsZHJlbihXZWJLaXRET01IVE1MRWxl
bWVudCopCi1nY2hhciogd2Via2l0X2RvbV9odG1sX2VsZW1lbnRfZ2V0X2NvbnRlbnRfZWRpdGFi
bGUoV2ViS2l0RE9NSFRNTEVsZW1lbnQqKQotZ2NoYXIqIHdlYmtpdF9kb21faHRtbF9lbGVtZW50
X2dldF9kaXIoV2ViS2l0RE9NSFRNTEVsZW1lbnQqKQotZ2NoYXIqIHdlYmtpdF9kb21faHRtbF9l
bGVtZW50X2dldF9pbm5lcl9odG1sKFdlYktpdERPTUhUTUxFbGVtZW50KikKLWdjaGFyKiB3ZWJr
aXRfZG9tX2h0bWxfZWxlbWVudF9nZXRfaW5uZXJfdGV4dChXZWJLaXRET01IVE1MRWxlbWVudCop
Ci1nYm9vbGVhbiB3ZWJraXRfZG9tX2h0bWxfZWxlbWVudF9nZXRfaXNfY29udGVudF9lZGl0YWJs
ZShXZWJLaXRET01IVE1MRWxlbWVudCopCi1nY2hhciogd2Via2l0X2RvbV9odG1sX2VsZW1lbnRf
Z2V0X2xhbmcoV2ViS2l0RE9NSFRNTEVsZW1lbnQqKQotZ2NoYXIqIHdlYmtpdF9kb21faHRtbF9l
bGVtZW50X2dldF9vdXRlcl9odG1sKFdlYktpdERPTUhUTUxFbGVtZW50KikKLWdjaGFyKiB3ZWJr
aXRfZG9tX2h0bWxfZWxlbWVudF9nZXRfb3V0ZXJfdGV4dChXZWJLaXRET01IVE1MRWxlbWVudCop
Ci1nbG9uZyB3ZWJraXRfZG9tX2h0bWxfZWxlbWVudF9nZXRfdGFiX2luZGV4KFdlYktpdERPTUhU
TUxFbGVtZW50KikKLWdjaGFyKiB3ZWJraXRfZG9tX2h0bWxfZWxlbWVudF9nZXRfdGl0bGUoV2Vi
S2l0RE9NSFRNTEVsZW1lbnQqKQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfZWxlbWVudF9zZXRfYWNj
ZXNzX2tleShXZWJLaXRET01IVE1MRWxlbWVudCosIGNvbnN0IGdjaGFyKikKLXZvaWQgd2Via2l0
X2RvbV9odG1sX2VsZW1lbnRfc2V0X2NvbnRlbnRfZWRpdGFibGUoV2ViS2l0RE9NSFRNTEVsZW1l
bnQqLCBjb25zdCBnY2hhciosIEdFcnJvcioqKQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfZWxlbWVu
dF9zZXRfZGlyKFdlYktpdERPTUhUTUxFbGVtZW50KiwgY29uc3QgZ2NoYXIqKQotdm9pZCB3ZWJr
aXRfZG9tX2h0bWxfZWxlbWVudF9zZXRfaW5uZXJfaHRtbChXZWJLaXRET01IVE1MRWxlbWVudCos
IGNvbnN0IGdjaGFyKiwgR0Vycm9yKiopCi12b2lkIHdlYmtpdF9kb21faHRtbF9lbGVtZW50X3Nl
dF9pbm5lcl90ZXh0KFdlYktpdERPTUhUTUxFbGVtZW50KiwgY29uc3QgZ2NoYXIqLCBHRXJyb3Iq
KikKLXZvaWQgd2Via2l0X2RvbV9odG1sX2VsZW1lbnRfc2V0X2xhbmcoV2ViS2l0RE9NSFRNTEVs
ZW1lbnQqLCBjb25zdCBnY2hhciopCi12b2lkIHdlYmtpdF9kb21faHRtbF9lbGVtZW50X3NldF9v
dXRlcl9odG1sKFdlYktpdERPTUhUTUxFbGVtZW50KiwgY29uc3QgZ2NoYXIqLCBHRXJyb3IqKikK
LXZvaWQgd2Via2l0X2RvbV9odG1sX2VsZW1lbnRfc2V0X291dGVyX3RleHQoV2ViS2l0RE9NSFRN
TEVsZW1lbnQqLCBjb25zdCBnY2hhciosIEdFcnJvcioqKQotdm9pZCB3ZWJraXRfZG9tX2h0bWxf
ZWxlbWVudF9zZXRfdGFiX2luZGV4KFdlYktpdERPTUhUTUxFbGVtZW50KiwgZ2xvbmcpCi12b2lk
IHdlYmtpdF9kb21faHRtbF9lbGVtZW50X3NldF90aXRsZShXZWJLaXRET01IVE1MRWxlbWVudCos
IGNvbnN0IGdjaGFyKikKLUdUeXBlIHdlYmtpdF9kb21faHRtbF9lbWJlZF9lbGVtZW50X2dldF90
eXBlKHZvaWQpCi1nY2hhciogd2Via2l0X2RvbV9odG1sX2VtYmVkX2VsZW1lbnRfZ2V0X3R5cGVf
YXR0cihXZWJLaXRET01IVE1MRW1iZWRFbGVtZW50KikKLXZvaWQgd2Via2l0X2RvbV9odG1sX2Vt
YmVkX2VsZW1lbnRfc2V0X3R5cGVfYXR0cihXZWJLaXRET01IVE1MRW1iZWRFbGVtZW50KiwgY29u
c3QgZ2NoYXIqKQotZ2NoYXIqIHdlYmtpdF9kb21faHRtbF9lbWJlZF9lbGVtZW50X2dldF9hbGln
bihXZWJLaXRET01IVE1MRW1iZWRFbGVtZW50KikKLWdsb25nIHdlYmtpdF9kb21faHRtbF9lbWJl
ZF9lbGVtZW50X2dldF9oZWlnaHQoV2ViS2l0RE9NSFRNTEVtYmVkRWxlbWVudCopCi1nY2hhciog
d2Via2l0X2RvbV9odG1sX2VtYmVkX2VsZW1lbnRfZ2V0X25hbWUoV2ViS2l0RE9NSFRNTEVtYmVk
RWxlbWVudCopCi1nY2hhciogd2Via2l0X2RvbV9odG1sX2VtYmVkX2VsZW1lbnRfZ2V0X3NyYyhX
ZWJLaXRET01IVE1MRW1iZWRFbGVtZW50KikKLWdsb25nIHdlYmtpdF9kb21faHRtbF9lbWJlZF9l
bGVtZW50X2dldF93aWR0aChXZWJLaXRET01IVE1MRW1iZWRFbGVtZW50KikKLXZvaWQgd2Via2l0
X2RvbV9odG1sX2VtYmVkX2VsZW1lbnRfc2V0X2FsaWduKFdlYktpdERPTUhUTUxFbWJlZEVsZW1l
bnQqLCBjb25zdCBnY2hhciopCi12b2lkIHdlYmtpdF9kb21faHRtbF9lbWJlZF9lbGVtZW50X3Nl
dF9oZWlnaHQoV2ViS2l0RE9NSFRNTEVtYmVkRWxlbWVudCosIGdsb25nKQotdm9pZCB3ZWJraXRf
ZG9tX2h0bWxfZW1iZWRfZWxlbWVudF9zZXRfbmFtZShXZWJLaXRET01IVE1MRW1iZWRFbGVtZW50
KiwgY29uc3QgZ2NoYXIqKQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfZW1iZWRfZWxlbWVudF9zZXRf
c3JjKFdlYktpdERPTUhUTUxFbWJlZEVsZW1lbnQqLCBjb25zdCBnY2hhciopCi12b2lkIHdlYmtp
dF9kb21faHRtbF9lbWJlZF9lbGVtZW50X3NldF93aWR0aChXZWJLaXRET01IVE1MRW1iZWRFbGVt
ZW50KiwgZ2xvbmcpCi1HVHlwZSB3ZWJraXRfZG9tX2h0bWxfZmllbGRfc2V0X2VsZW1lbnRfZ2V0
X3R5cGUodm9pZCkKLVdlYktpdERPTUhUTUxGb3JtRWxlbWVudCogd2Via2l0X2RvbV9odG1sX2Zp
ZWxkX3NldF9lbGVtZW50X2dldF9mb3JtKFdlYktpdERPTUhUTUxGaWVsZFNldEVsZW1lbnQqKQot
R1R5cGUgd2Via2l0X2RvbV9odG1sX2ZvbnRfZWxlbWVudF9nZXRfdHlwZSh2b2lkKQotZ2NoYXIq
IHdlYmtpdF9kb21faHRtbF9mb250X2VsZW1lbnRfZ2V0X2NvbG9yKFdlYktpdERPTUhUTUxGb250
RWxlbWVudCopCi1nY2hhciogd2Via2l0X2RvbV9odG1sX2ZvbnRfZWxlbWVudF9nZXRfZmFjZShX
ZWJLaXRET01IVE1MRm9udEVsZW1lbnQqKQotZ2NoYXIqIHdlYmtpdF9kb21faHRtbF9mb250X2Vs
ZW1lbnRfZ2V0X3NpemUoV2ViS2l0RE9NSFRNTEZvbnRFbGVtZW50KikKLXZvaWQgd2Via2l0X2Rv
bV9odG1sX2ZvbnRfZWxlbWVudF9zZXRfY29sb3IoV2ViS2l0RE9NSFRNTEZvbnRFbGVtZW50Kiwg
Y29uc3QgZ2NoYXIqKQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfZm9udF9lbGVtZW50X3NldF9mYWNl
KFdlYktpdERPTUhUTUxGb250RWxlbWVudCosIGNvbnN0IGdjaGFyKikKLXZvaWQgd2Via2l0X2Rv
bV9odG1sX2ZvbnRfZWxlbWVudF9zZXRfc2l6ZShXZWJLaXRET01IVE1MRm9udEVsZW1lbnQqLCBj
b25zdCBnY2hhciopCi1HVHlwZSB3ZWJraXRfZG9tX2h0bWxfZm9ybV9lbGVtZW50X2dldF90eXBl
KHZvaWQpCi1nY2hhciogd2Via2l0X2RvbV9odG1sX2Zvcm1fZWxlbWVudF9nZXRfYWNjZXB0X2No
YXJzZXQoV2ViS2l0RE9NSFRNTEZvcm1FbGVtZW50KikKLWdjaGFyKiB3ZWJraXRfZG9tX2h0bWxf
Zm9ybV9lbGVtZW50X2dldF9hY3Rpb24oV2ViS2l0RE9NSFRNTEZvcm1FbGVtZW50KikKLVdlYktp
dERPTUhUTUxDb2xsZWN0aW9uKiB3ZWJraXRfZG9tX2h0bWxfZm9ybV9lbGVtZW50X2dldF9lbGVt
ZW50cyhXZWJLaXRET01IVE1MRm9ybUVsZW1lbnQqKQotZ2NoYXIqIHdlYmtpdF9kb21faHRtbF9m
b3JtX2VsZW1lbnRfZ2V0X2VuY29kaW5nKFdlYktpdERPTUhUTUxGb3JtRWxlbWVudCopCi1nY2hh
ciogd2Via2l0X2RvbV9odG1sX2Zvcm1fZWxlbWVudF9nZXRfZW5jdHlwZShXZWJLaXRET01IVE1M
Rm9ybUVsZW1lbnQqKQotZ2xvbmcgd2Via2l0X2RvbV9odG1sX2Zvcm1fZWxlbWVudF9nZXRfbGVu
Z3RoKFdlYktpdERPTUhUTUxGb3JtRWxlbWVudCopCi1nY2hhciogd2Via2l0X2RvbV9odG1sX2Zv
cm1fZWxlbWVudF9nZXRfbWV0aG9kKFdlYktpdERPTUhUTUxGb3JtRWxlbWVudCopCi1nY2hhciog
d2Via2l0X2RvbV9odG1sX2Zvcm1fZWxlbWVudF9nZXRfbmFtZShXZWJLaXRET01IVE1MRm9ybUVs
ZW1lbnQqKQotZ2NoYXIqIHdlYmtpdF9kb21faHRtbF9mb3JtX2VsZW1lbnRfZ2V0X3RhcmdldChX
ZWJLaXRET01IVE1MRm9ybUVsZW1lbnQqKQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfZm9ybV9lbGVt
ZW50X3Jlc2V0KFdlYktpdERPTUhUTUxGb3JtRWxlbWVudCopCi12b2lkIHdlYmtpdF9kb21faHRt
bF9mb3JtX2VsZW1lbnRfc2V0X2FjY2VwdF9jaGFyc2V0KFdlYktpdERPTUhUTUxGb3JtRWxlbWVu
dCosIGNvbnN0IGdjaGFyKikKLXZvaWQgd2Via2l0X2RvbV9odG1sX2Zvcm1fZWxlbWVudF9zZXRf
YWN0aW9uKFdlYktpdERPTUhUTUxGb3JtRWxlbWVudCosIGNvbnN0IGdjaGFyKikKLXZvaWQgd2Vi
a2l0X2RvbV9odG1sX2Zvcm1fZWxlbWVudF9zZXRfZW5jb2RpbmcoV2ViS2l0RE9NSFRNTEZvcm1F
bGVtZW50KiwgY29uc3QgZ2NoYXIqKQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfZm9ybV9lbGVtZW50
X3NldF9lbmN0eXBlKFdlYktpdERPTUhUTUxGb3JtRWxlbWVudCosIGNvbnN0IGdjaGFyKikKLXZv
aWQgd2Via2l0X2RvbV9odG1sX2Zvcm1fZWxlbWVudF9zZXRfbWV0aG9kKFdlYktpdERPTUhUTUxG
b3JtRWxlbWVudCosIGNvbnN0IGdjaGFyKikKLXZvaWQgd2Via2l0X2RvbV9odG1sX2Zvcm1fZWxl
bWVudF9zZXRfbmFtZShXZWJLaXRET01IVE1MRm9ybUVsZW1lbnQqLCBjb25zdCBnY2hhciopCi12
b2lkIHdlYmtpdF9kb21faHRtbF9mb3JtX2VsZW1lbnRfc2V0X3RhcmdldChXZWJLaXRET01IVE1M
Rm9ybUVsZW1lbnQqLCBjb25zdCBnY2hhciopCi12b2lkIHdlYmtpdF9kb21faHRtbF9mb3JtX2Vs
ZW1lbnRfc3VibWl0KFdlYktpdERPTUhUTUxGb3JtRWxlbWVudCopCi1HVHlwZSB3ZWJraXRfZG9t
X2h0bWxfZnJhbWVfZWxlbWVudF9nZXRfdHlwZSh2b2lkKQotV2ViS2l0RE9NRG9jdW1lbnQqIHdl
YmtpdF9kb21faHRtbF9mcmFtZV9lbGVtZW50X2dldF9jb250ZW50X2RvY3VtZW50KFdlYktpdERP
TUhUTUxGcmFtZUVsZW1lbnQqKQotV2ViS2l0RE9NRE9NV2luZG93KiB3ZWJraXRfZG9tX2h0bWxf
ZnJhbWVfZWxlbWVudF9nZXRfY29udGVudF93aW5kb3coV2ViS2l0RE9NSFRNTEZyYW1lRWxlbWVu
dCopCi1nY2hhciogd2Via2l0X2RvbV9odG1sX2ZyYW1lX2VsZW1lbnRfZ2V0X2ZyYW1lX2JvcmRl
cihXZWJLaXRET01IVE1MRnJhbWVFbGVtZW50KikKLWdsb25nIHdlYmtpdF9kb21faHRtbF9mcmFt
ZV9lbGVtZW50X2dldF9oZWlnaHQoV2ViS2l0RE9NSFRNTEZyYW1lRWxlbWVudCopCi1nY2hhciog
d2Via2l0X2RvbV9odG1sX2ZyYW1lX2VsZW1lbnRfZ2V0X2xvbmdfZGVzYyhXZWJLaXRET01IVE1M
RnJhbWVFbGVtZW50KikKLWdjaGFyKiB3ZWJraXRfZG9tX2h0bWxfZnJhbWVfZWxlbWVudF9nZXRf
bWFyZ2luX2hlaWdodChXZWJLaXRET01IVE1MRnJhbWVFbGVtZW50KikKLWdjaGFyKiB3ZWJraXRf
ZG9tX2h0bWxfZnJhbWVfZWxlbWVudF9nZXRfbWFyZ2luX3dpZHRoKFdlYktpdERPTUhUTUxGcmFt
ZUVsZW1lbnQqKQotZ2NoYXIqIHdlYmtpdF9kb21faHRtbF9mcmFtZV9lbGVtZW50X2dldF9uYW1l
KFdlYktpdERPTUhUTUxGcmFtZUVsZW1lbnQqKQotZ2Jvb2xlYW4gd2Via2l0X2RvbV9odG1sX2Zy
YW1lX2VsZW1lbnRfZ2V0X25vX3Jlc2l6ZShXZWJLaXRET01IVE1MRnJhbWVFbGVtZW50KikKLWdj
aGFyKiB3ZWJraXRfZG9tX2h0bWxfZnJhbWVfZWxlbWVudF9nZXRfc2Nyb2xsaW5nKFdlYktpdERP
TUhUTUxGcmFtZUVsZW1lbnQqKQotZ2NoYXIqIHdlYmtpdF9kb21faHRtbF9mcmFtZV9lbGVtZW50
X2dldF9zcmMoV2ViS2l0RE9NSFRNTEZyYW1lRWxlbWVudCopCi1nbG9uZyB3ZWJraXRfZG9tX2h0
bWxfZnJhbWVfZWxlbWVudF9nZXRfd2lkdGgoV2ViS2l0RE9NSFRNTEZyYW1lRWxlbWVudCopCi12
b2lkIHdlYmtpdF9kb21faHRtbF9mcmFtZV9lbGVtZW50X3NldF9mcmFtZV9ib3JkZXIoV2ViS2l0
RE9NSFRNTEZyYW1lRWxlbWVudCosIGNvbnN0IGdjaGFyKikKLXZvaWQgd2Via2l0X2RvbV9odG1s
X2ZyYW1lX2VsZW1lbnRfc2V0X2xvbmdfZGVzYyhXZWJLaXRET01IVE1MRnJhbWVFbGVtZW50Kiwg
Y29uc3QgZ2NoYXIqKQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfZnJhbWVfZWxlbWVudF9zZXRfbWFy
Z2luX2hlaWdodChXZWJLaXRET01IVE1MRnJhbWVFbGVtZW50KiwgY29uc3QgZ2NoYXIqKQotdm9p
ZCB3ZWJraXRfZG9tX2h0bWxfZnJhbWVfZWxlbWVudF9zZXRfbWFyZ2luX3dpZHRoKFdlYktpdERP
TUhUTUxGcmFtZUVsZW1lbnQqLCBjb25zdCBnY2hhciopCi12b2lkIHdlYmtpdF9kb21faHRtbF9m
cmFtZV9lbGVtZW50X3NldF9uYW1lKFdlYktpdERPTUhUTUxGcmFtZUVsZW1lbnQqLCBjb25zdCBn
Y2hhciopCi12b2lkIHdlYmtpdF9kb21faHRtbF9mcmFtZV9lbGVtZW50X3NldF9ub19yZXNpemUo
V2ViS2l0RE9NSFRNTEZyYW1lRWxlbWVudCosIGdib29sZWFuKQotdm9pZCB3ZWJraXRfZG9tX2h0
bWxfZnJhbWVfZWxlbWVudF9zZXRfc2Nyb2xsaW5nKFdlYktpdERPTUhUTUxGcmFtZUVsZW1lbnQq
LCBjb25zdCBnY2hhciopCi12b2lkIHdlYmtpdF9kb21faHRtbF9mcmFtZV9lbGVtZW50X3NldF9z
cmMoV2ViS2l0RE9NSFRNTEZyYW1lRWxlbWVudCosIGNvbnN0IGdjaGFyKikKLUdUeXBlIHdlYmtp
dF9kb21faHRtbF9mcmFtZV9zZXRfZWxlbWVudF9nZXRfdHlwZSh2b2lkKQotZ2NoYXIqIHdlYmtp
dF9kb21faHRtbF9mcmFtZV9zZXRfZWxlbWVudF9nZXRfY29scyhXZWJLaXRET01IVE1MRnJhbWVT
ZXRFbGVtZW50KikKLWdjaGFyKiB3ZWJraXRfZG9tX2h0bWxfZnJhbWVfc2V0X2VsZW1lbnRfZ2V0
X3Jvd3MoV2ViS2l0RE9NSFRNTEZyYW1lU2V0RWxlbWVudCopCi12b2lkIHdlYmtpdF9kb21faHRt
bF9mcmFtZV9zZXRfZWxlbWVudF9zZXRfY29scyhXZWJLaXRET01IVE1MRnJhbWVTZXRFbGVtZW50
KiwgY29uc3QgZ2NoYXIqKQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfZnJhbWVfc2V0X2VsZW1lbnRf
c2V0X3Jvd3MoV2ViS2l0RE9NSFRNTEZyYW1lU2V0RWxlbWVudCosIGNvbnN0IGdjaGFyKikKLUdU
eXBlIHdlYmtpdF9kb21faHRtbF9ocl9lbGVtZW50X2dldF90eXBlKHZvaWQpCi1nY2hhciogd2Vi
a2l0X2RvbV9odG1sX2hyX2VsZW1lbnRfZ2V0X2FsaWduKFdlYktpdERPTUhUTUxIUkVsZW1lbnQq
KQotZ2Jvb2xlYW4gd2Via2l0X2RvbV9odG1sX2hyX2VsZW1lbnRfZ2V0X25vX3NoYWRlKFdlYktp
dERPTUhUTUxIUkVsZW1lbnQqKQotZ2NoYXIqIHdlYmtpdF9kb21faHRtbF9ocl9lbGVtZW50X2dl
dF9zaXplKFdlYktpdERPTUhUTUxIUkVsZW1lbnQqKQotZ2NoYXIqIHdlYmtpdF9kb21faHRtbF9o
cl9lbGVtZW50X2dldF93aWR0aChXZWJLaXRET01IVE1MSFJFbGVtZW50KikKLXZvaWQgd2Via2l0
X2RvbV9odG1sX2hyX2VsZW1lbnRfc2V0X2FsaWduKFdlYktpdERPTUhUTUxIUkVsZW1lbnQqLCBj
b25zdCBnY2hhciopCi12b2lkIHdlYmtpdF9kb21faHRtbF9ocl9lbGVtZW50X3NldF9ub19zaGFk
ZShXZWJLaXRET01IVE1MSFJFbGVtZW50KiwgZ2Jvb2xlYW4pCi12b2lkIHdlYmtpdF9kb21faHRt
bF9ocl9lbGVtZW50X3NldF9zaXplKFdlYktpdERPTUhUTUxIUkVsZW1lbnQqLCBjb25zdCBnY2hh
ciopCi12b2lkIHdlYmtpdF9kb21faHRtbF9ocl9lbGVtZW50X3NldF93aWR0aChXZWJLaXRET01I
VE1MSFJFbGVtZW50KiwgY29uc3QgZ2NoYXIqKQotR1R5cGUgd2Via2l0X2RvbV9odG1sX2hlYWRf
ZWxlbWVudF9nZXRfdHlwZSh2b2lkKQotZ2NoYXIqIHdlYmtpdF9kb21faHRtbF9oZWFkX2VsZW1l
bnRfZ2V0X3Byb2ZpbGUoV2ViS2l0RE9NSFRNTEhlYWRFbGVtZW50KikKLXZvaWQgd2Via2l0X2Rv
bV9odG1sX2hlYWRfZWxlbWVudF9zZXRfcHJvZmlsZShXZWJLaXRET01IVE1MSGVhZEVsZW1lbnQq
LCBjb25zdCBnY2hhciopCi1HVHlwZSB3ZWJraXRfZG9tX2h0bWxfaGVhZGluZ19lbGVtZW50X2dl
dF90eXBlKHZvaWQpCi1nY2hhciogd2Via2l0X2RvbV9odG1sX2hlYWRpbmdfZWxlbWVudF9nZXRf
YWxpZ24oV2ViS2l0RE9NSFRNTEhlYWRpbmdFbGVtZW50KikKLXZvaWQgd2Via2l0X2RvbV9odG1s
X2hlYWRpbmdfZWxlbWVudF9zZXRfYWxpZ24oV2ViS2l0RE9NSFRNTEhlYWRpbmdFbGVtZW50Kiwg
Y29uc3QgZ2NoYXIqKQotR1R5cGUgd2Via2l0X2RvbV9odG1sX2h0bWxfZWxlbWVudF9nZXRfdHlw
ZSh2b2lkKQotZ2NoYXIqIHdlYmtpdF9kb21faHRtbF9odG1sX2VsZW1lbnRfZ2V0X3ZlcnNpb24o
V2ViS2l0RE9NSFRNTEh0bWxFbGVtZW50KikKLXZvaWQgd2Via2l0X2RvbV9odG1sX2h0bWxfZWxl
bWVudF9zZXRfdmVyc2lvbihXZWJLaXRET01IVE1MSHRtbEVsZW1lbnQqLCBjb25zdCBnY2hhciop
Ci1HVHlwZSB3ZWJraXRfZG9tX2h0bWxfaWZyYW1lX2VsZW1lbnRfZ2V0X3R5cGUodm9pZCkKLWdj
aGFyKiB3ZWJraXRfZG9tX2h0bWxfaWZyYW1lX2VsZW1lbnRfZ2V0X2FsaWduKFdlYktpdERPTUhU
TUxJRnJhbWVFbGVtZW50KikKLVdlYktpdERPTURvY3VtZW50KiB3ZWJraXRfZG9tX2h0bWxfaWZy
YW1lX2VsZW1lbnRfZ2V0X2NvbnRlbnRfZG9jdW1lbnQoV2ViS2l0RE9NSFRNTElGcmFtZUVsZW1l
bnQqKQotV2ViS2l0RE9NRE9NV2luZG93KiB3ZWJraXRfZG9tX2h0bWxfaWZyYW1lX2VsZW1lbnRf
Z2V0X2NvbnRlbnRfd2luZG93KFdlYktpdERPTUhUTUxJRnJhbWVFbGVtZW50KikKLWdjaGFyKiB3
ZWJraXRfZG9tX2h0bWxfaWZyYW1lX2VsZW1lbnRfZ2V0X2ZyYW1lX2JvcmRlcihXZWJLaXRET01I
VE1MSUZyYW1lRWxlbWVudCopCi1nY2hhciogd2Via2l0X2RvbV9odG1sX2lmcmFtZV9lbGVtZW50
X2dldF9oZWlnaHQoV2ViS2l0RE9NSFRNTElGcmFtZUVsZW1lbnQqKQotZ2NoYXIqIHdlYmtpdF9k
b21faHRtbF9pZnJhbWVfZWxlbWVudF9nZXRfbG9uZ19kZXNjKFdlYktpdERPTUhUTUxJRnJhbWVF
bGVtZW50KikKLWdjaGFyKiB3ZWJraXRfZG9tX2h0bWxfaWZyYW1lX2VsZW1lbnRfZ2V0X21hcmdp
bl9oZWlnaHQoV2ViS2l0RE9NSFRNTElGcmFtZUVsZW1lbnQqKQotZ2NoYXIqIHdlYmtpdF9kb21f
aHRtbF9pZnJhbWVfZWxlbWVudF9nZXRfbWFyZ2luX3dpZHRoKFdlYktpdERPTUhUTUxJRnJhbWVF
bGVtZW50KikKLWdjaGFyKiB3ZWJraXRfZG9tX2h0bWxfaWZyYW1lX2VsZW1lbnRfZ2V0X25hbWUo
V2ViS2l0RE9NSFRNTElGcmFtZUVsZW1lbnQqKQotZ2NoYXIqIHdlYmtpdF9kb21faHRtbF9pZnJh
bWVfZWxlbWVudF9nZXRfc2Nyb2xsaW5nKFdlYktpdERPTUhUTUxJRnJhbWVFbGVtZW50KikKLWdj
aGFyKiB3ZWJraXRfZG9tX2h0bWxfaWZyYW1lX2VsZW1lbnRfZ2V0X3NyYyhXZWJLaXRET01IVE1M
SUZyYW1lRWxlbWVudCopCi1nY2hhciogd2Via2l0X2RvbV9odG1sX2lmcmFtZV9lbGVtZW50X2dl
dF93aWR0aChXZWJLaXRET01IVE1MSUZyYW1lRWxlbWVudCopCi12b2lkIHdlYmtpdF9kb21faHRt
bF9pZnJhbWVfZWxlbWVudF9zZXRfYWxpZ24oV2ViS2l0RE9NSFRNTElGcmFtZUVsZW1lbnQqLCBj
b25zdCBnY2hhciopCi12b2lkIHdlYmtpdF9kb21faHRtbF9pZnJhbWVfZWxlbWVudF9zZXRfZnJh
bWVfYm9yZGVyKFdlYktpdERPTUhUTUxJRnJhbWVFbGVtZW50KiwgY29uc3QgZ2NoYXIqKQotdm9p
ZCB3ZWJraXRfZG9tX2h0bWxfaWZyYW1lX2VsZW1lbnRfc2V0X2hlaWdodChXZWJLaXRET01IVE1M
SUZyYW1lRWxlbWVudCosIGNvbnN0IGdjaGFyKikKLXZvaWQgd2Via2l0X2RvbV9odG1sX2lmcmFt
ZV9lbGVtZW50X3NldF9sb25nX2Rlc2MoV2ViS2l0RE9NSFRNTElGcmFtZUVsZW1lbnQqLCBjb25z
dCBnY2hhciopCi12b2lkIHdlYmtpdF9kb21faHRtbF9pZnJhbWVfZWxlbWVudF9zZXRfbWFyZ2lu
X2hlaWdodChXZWJLaXRET01IVE1MSUZyYW1lRWxlbWVudCosIGNvbnN0IGdjaGFyKikKLXZvaWQg
d2Via2l0X2RvbV9odG1sX2lmcmFtZV9lbGVtZW50X3NldF9tYXJnaW5fd2lkdGgoV2ViS2l0RE9N
SFRNTElGcmFtZUVsZW1lbnQqLCBjb25zdCBnY2hhciopCi12b2lkIHdlYmtpdF9kb21faHRtbF9p
ZnJhbWVfZWxlbWVudF9zZXRfbmFtZShXZWJLaXRET01IVE1MSUZyYW1lRWxlbWVudCosIGNvbnN0
IGdjaGFyKikKLXZvaWQgd2Via2l0X2RvbV9odG1sX2lmcmFtZV9lbGVtZW50X3NldF9zY3JvbGxp
bmcoV2ViS2l0RE9NSFRNTElGcmFtZUVsZW1lbnQqLCBjb25zdCBnY2hhciopCi12b2lkIHdlYmtp
dF9kb21faHRtbF9pZnJhbWVfZWxlbWVudF9zZXRfc3JjKFdlYktpdERPTUhUTUxJRnJhbWVFbGVt
ZW50KiwgY29uc3QgZ2NoYXIqKQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfaWZyYW1lX2VsZW1lbnRf
c2V0X3dpZHRoKFdlYktpdERPTUhUTUxJRnJhbWVFbGVtZW50KiwgY29uc3QgZ2NoYXIqKQotR1R5
cGUgd2Via2l0X2RvbV9odG1sX2ltYWdlX2VsZW1lbnRfZ2V0X3R5cGUodm9pZCkKLWdjaGFyKiB3
ZWJraXRfZG9tX2h0bWxfaW1hZ2VfZWxlbWVudF9nZXRfYWxpZ24oV2ViS2l0RE9NSFRNTEltYWdl
RWxlbWVudCopCi1nY2hhciogd2Via2l0X2RvbV9odG1sX2ltYWdlX2VsZW1lbnRfZ2V0X2FsdChX
ZWJLaXRET01IVE1MSW1hZ2VFbGVtZW50KikKLWdjaGFyKiB3ZWJraXRfZG9tX2h0bWxfaW1hZ2Vf
ZWxlbWVudF9nZXRfYm9yZGVyKFdlYktpdERPTUhUTUxJbWFnZUVsZW1lbnQqKQotZ2Jvb2xlYW4g
d2Via2l0X2RvbV9odG1sX2ltYWdlX2VsZW1lbnRfZ2V0X2NvbXBsZXRlKFdlYktpdERPTUhUTUxJ
bWFnZUVsZW1lbnQqKQotZ2xvbmcgd2Via2l0X2RvbV9odG1sX2ltYWdlX2VsZW1lbnRfZ2V0X2hl
aWdodChXZWJLaXRET01IVE1MSW1hZ2VFbGVtZW50KikKLWdsb25nIHdlYmtpdF9kb21faHRtbF9p
bWFnZV9lbGVtZW50X2dldF9oc3BhY2UoV2ViS2l0RE9NSFRNTEltYWdlRWxlbWVudCopCi1nYm9v
bGVhbiB3ZWJraXRfZG9tX2h0bWxfaW1hZ2VfZWxlbWVudF9nZXRfaXNfbWFwKFdlYktpdERPTUhU
TUxJbWFnZUVsZW1lbnQqKQotZ2NoYXIqIHdlYmtpdF9kb21faHRtbF9pbWFnZV9lbGVtZW50X2dl
dF9sb25nX2Rlc2MoV2ViS2l0RE9NSFRNTEltYWdlRWxlbWVudCopCi1nY2hhciogd2Via2l0X2Rv
bV9odG1sX2ltYWdlX2VsZW1lbnRfZ2V0X2xvd3NyYyhXZWJLaXRET01IVE1MSW1hZ2VFbGVtZW50
KikKLWdjaGFyKiB3ZWJraXRfZG9tX2h0bWxfaW1hZ2VfZWxlbWVudF9nZXRfbmFtZShXZWJLaXRE
T01IVE1MSW1hZ2VFbGVtZW50KikKLWdsb25nIHdlYmtpdF9kb21faHRtbF9pbWFnZV9lbGVtZW50
X2dldF9uYXR1cmFsX2hlaWdodChXZWJLaXRET01IVE1MSW1hZ2VFbGVtZW50KikKLWdsb25nIHdl
YmtpdF9kb21faHRtbF9pbWFnZV9lbGVtZW50X2dldF9uYXR1cmFsX3dpZHRoKFdlYktpdERPTUhU
TUxJbWFnZUVsZW1lbnQqKQotZ2NoYXIqIHdlYmtpdF9kb21faHRtbF9pbWFnZV9lbGVtZW50X2dl
dF9zcmMoV2ViS2l0RE9NSFRNTEltYWdlRWxlbWVudCopCi1nY2hhciogd2Via2l0X2RvbV9odG1s
X2ltYWdlX2VsZW1lbnRfZ2V0X3VzZV9tYXAoV2ViS2l0RE9NSFRNTEltYWdlRWxlbWVudCopCi1n
bG9uZyB3ZWJraXRfZG9tX2h0bWxfaW1hZ2VfZWxlbWVudF9nZXRfdnNwYWNlKFdlYktpdERPTUhU
TUxJbWFnZUVsZW1lbnQqKQotZ2xvbmcgd2Via2l0X2RvbV9odG1sX2ltYWdlX2VsZW1lbnRfZ2V0
X3dpZHRoKFdlYktpdERPTUhUTUxJbWFnZUVsZW1lbnQqKQotZ2xvbmcgd2Via2l0X2RvbV9odG1s
X2ltYWdlX2VsZW1lbnRfZ2V0X3goV2ViS2l0RE9NSFRNTEltYWdlRWxlbWVudCopCi1nbG9uZyB3
ZWJraXRfZG9tX2h0bWxfaW1hZ2VfZWxlbWVudF9nZXRfeShXZWJLaXRET01IVE1MSW1hZ2VFbGVt
ZW50KikKLXZvaWQgd2Via2l0X2RvbV9odG1sX2ltYWdlX2VsZW1lbnRfc2V0X2FsaWduKFdlYktp
dERPTUhUTUxJbWFnZUVsZW1lbnQqLCBjb25zdCBnY2hhciopCi12b2lkIHdlYmtpdF9kb21faHRt
bF9pbWFnZV9lbGVtZW50X3NldF9hbHQoV2ViS2l0RE9NSFRNTEltYWdlRWxlbWVudCosIGNvbnN0
IGdjaGFyKikKLXZvaWQgd2Via2l0X2RvbV9odG1sX2ltYWdlX2VsZW1lbnRfc2V0X2JvcmRlcihX
ZWJLaXRET01IVE1MSW1hZ2VFbGVtZW50KiwgY29uc3QgZ2NoYXIqKQotdm9pZCB3ZWJraXRfZG9t
X2h0bWxfaW1hZ2VfZWxlbWVudF9zZXRfaGVpZ2h0KFdlYktpdERPTUhUTUxJbWFnZUVsZW1lbnQq
LCBnbG9uZykKLXZvaWQgd2Via2l0X2RvbV9odG1sX2ltYWdlX2VsZW1lbnRfc2V0X2hzcGFjZShX
ZWJLaXRET01IVE1MSW1hZ2VFbGVtZW50KiwgZ2xvbmcpCi12b2lkIHdlYmtpdF9kb21faHRtbF9p
bWFnZV9lbGVtZW50X3NldF9pc19tYXAoV2ViS2l0RE9NSFRNTEltYWdlRWxlbWVudCosIGdib29s
ZWFuKQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfaW1hZ2VfZWxlbWVudF9zZXRfbG9uZ19kZXNjKFdl
YktpdERPTUhUTUxJbWFnZUVsZW1lbnQqLCBjb25zdCBnY2hhciopCi12b2lkIHdlYmtpdF9kb21f
aHRtbF9pbWFnZV9lbGVtZW50X3NldF9sb3dzcmMoV2ViS2l0RE9NSFRNTEltYWdlRWxlbWVudCos
IGNvbnN0IGdjaGFyKikKLXZvaWQgd2Via2l0X2RvbV9odG1sX2ltYWdlX2VsZW1lbnRfc2V0X25h
bWUoV2ViS2l0RE9NSFRNTEltYWdlRWxlbWVudCosIGNvbnN0IGdjaGFyKikKLXZvaWQgd2Via2l0
X2RvbV9odG1sX2ltYWdlX2VsZW1lbnRfc2V0X3NyYyhXZWJLaXRET01IVE1MSW1hZ2VFbGVtZW50
KiwgY29uc3QgZ2NoYXIqKQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfaW1hZ2VfZWxlbWVudF9zZXRf
dXNlX21hcChXZWJLaXRET01IVE1MSW1hZ2VFbGVtZW50KiwgY29uc3QgZ2NoYXIqKQotdm9pZCB3
ZWJraXRfZG9tX2h0bWxfaW1hZ2VfZWxlbWVudF9zZXRfdnNwYWNlKFdlYktpdERPTUhUTUxJbWFn
ZUVsZW1lbnQqLCBnbG9uZykKLXZvaWQgd2Via2l0X2RvbV9odG1sX2ltYWdlX2VsZW1lbnRfc2V0
X3dpZHRoKFdlYktpdERPTUhUTUxJbWFnZUVsZW1lbnQqLCBnbG9uZykKLUdUeXBlIHdlYmtpdF9k
b21faHRtbF9pbnB1dF9lbGVtZW50X2dldF90eXBlKHZvaWQpCi1nY2hhciogd2Via2l0X2RvbV9o
dG1sX2lucHV0X2VsZW1lbnRfZ2V0X2lucHV0X3R5cGUoV2ViS2l0RE9NSFRNTElucHV0RWxlbWVu
dCopCi12b2lkIHdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50X3NldF9pbnB1dF90eXBlKFdl
YktpdERPTUhUTUxJbnB1dEVsZW1lbnQqLCBjb25zdCBnY2hhciopCi1nY2hhciogd2Via2l0X2Rv
bV9odG1sX2lucHV0X2VsZW1lbnRfZ2V0X2FjY2VwdChXZWJLaXRET01IVE1MSW5wdXRFbGVtZW50
KikKLWdjaGFyKiB3ZWJraXRfZG9tX2h0bWxfaW5wdXRfZWxlbWVudF9nZXRfYWxpZ24oV2ViS2l0
RE9NSFRNTElucHV0RWxlbWVudCopCi1nY2hhciogd2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1l
bnRfZ2V0X2FsdChXZWJLaXRET01IVE1MSW5wdXRFbGVtZW50KikKLWdib29sZWFuIHdlYmtpdF9k
b21faHRtbF9pbnB1dF9lbGVtZW50X2dldF9hdXRvZm9jdXMoV2ViS2l0RE9NSFRNTElucHV0RWxl
bWVudCopCi1nYm9vbGVhbiB3ZWJraXRfZG9tX2h0bWxfaW5wdXRfZWxlbWVudF9nZXRfY2FwdHVy
ZShXZWJLaXRET01IVE1MSW5wdXRFbGVtZW50KikKLWdjaGFyKiB3ZWJraXRfZG9tX2h0bWxfaW5w
dXRfZWxlbWVudF9nZXRfY2FwdHVyZV90eXBlKFdlYktpdERPTUhUTUxJbnB1dEVsZW1lbnQqKUAy
LjE0Ci1nYm9vbGVhbiB3ZWJraXRfZG9tX2h0bWxfaW5wdXRfZWxlbWVudF9nZXRfY2hlY2tlZChX
ZWJLaXRET01IVE1MSW5wdXRFbGVtZW50KikKLWdib29sZWFuIHdlYmtpdF9kb21faHRtbF9pbnB1
dF9lbGVtZW50X2dldF9kZWZhdWx0X2NoZWNrZWQoV2ViS2l0RE9NSFRNTElucHV0RWxlbWVudCop
Ci1nY2hhciogd2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1lbnRfZ2V0X2RlZmF1bHRfdmFsdWUo
V2ViS2l0RE9NSFRNTElucHV0RWxlbWVudCopCi1nYm9vbGVhbiB3ZWJraXRfZG9tX2h0bWxfaW5w
dXRfZWxlbWVudF9nZXRfZGlzYWJsZWQoV2ViS2l0RE9NSFRNTElucHV0RWxlbWVudCopCi1XZWJL
aXRET01GaWxlTGlzdCogd2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1lbnRfZ2V0X2ZpbGVzKFdl
YktpdERPTUhUTUxJbnB1dEVsZW1lbnQqKQotV2ViS2l0RE9NSFRNTEZvcm1FbGVtZW50KiB3ZWJr
aXRfZG9tX2h0bWxfaW5wdXRfZWxlbWVudF9nZXRfZm9ybShXZWJLaXRET01IVE1MSW5wdXRFbGVt
ZW50KikKLWd1bG9uZyB3ZWJraXRfZG9tX2h0bWxfaW5wdXRfZWxlbWVudF9nZXRfaGVpZ2h0KFdl
YktpdERPTUhUTUxJbnB1dEVsZW1lbnQqKQotZ2Jvb2xlYW4gd2Via2l0X2RvbV9odG1sX2lucHV0
X2VsZW1lbnRfZ2V0X2luZGV0ZXJtaW5hdGUoV2ViS2l0RE9NSFRNTElucHV0RWxlbWVudCopCi1n
bG9uZyB3ZWJraXRfZG9tX2h0bWxfaW5wdXRfZWxlbWVudF9nZXRfbWF4X2xlbmd0aChXZWJLaXRE
T01IVE1MSW5wdXRFbGVtZW50KikKLWdib29sZWFuIHdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVt
ZW50X2dldF9tdWx0aXBsZShXZWJLaXRET01IVE1MSW5wdXRFbGVtZW50KikKLWdjaGFyKiB3ZWJr
aXRfZG9tX2h0bWxfaW5wdXRfZWxlbWVudF9nZXRfbmFtZShXZWJLaXRET01IVE1MSW5wdXRFbGVt
ZW50KikKLWd1bG9uZyB3ZWJraXRfZG9tX2h0bWxfaW5wdXRfZWxlbWVudF9nZXRfc2l6ZShXZWJL
aXRET01IVE1MSW5wdXRFbGVtZW50KikKLWdjaGFyKiB3ZWJraXRfZG9tX2h0bWxfaW5wdXRfZWxl
bWVudF9nZXRfc3JjKFdlYktpdERPTUhUTUxJbnB1dEVsZW1lbnQqKQotZ2NoYXIqIHdlYmtpdF9k
b21faHRtbF9pbnB1dF9lbGVtZW50X2dldF91c2VfbWFwKFdlYktpdERPTUhUTUxJbnB1dEVsZW1l
bnQqKQotZ2NoYXIqIHdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50X2dldF92YWx1ZShXZWJL
aXRET01IVE1MSW5wdXRFbGVtZW50KikKLWd1bG9uZyB3ZWJraXRfZG9tX2h0bWxfaW5wdXRfZWxl
bWVudF9nZXRfd2lkdGgoV2ViS2l0RE9NSFRNTElucHV0RWxlbWVudCopCi1nYm9vbGVhbiB3ZWJr
aXRfZG9tX2h0bWxfaW5wdXRfZWxlbWVudF9nZXRfd2lsbF92YWxpZGF0ZShXZWJLaXRET01IVE1M
SW5wdXRFbGVtZW50KikKLXZvaWQgd2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1lbnRfc2VsZWN0
KFdlYktpdERPTUhUTUxJbnB1dEVsZW1lbnQqKQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfaW5wdXRf
ZWxlbWVudF9zZXRfYWNjZXB0KFdlYktpdERPTUhUTUxJbnB1dEVsZW1lbnQqLCBjb25zdCBnY2hh
ciopCi12b2lkIHdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50X3NldF9hbGlnbihXZWJLaXRE
T01IVE1MSW5wdXRFbGVtZW50KiwgY29uc3QgZ2NoYXIqKQotdm9pZCB3ZWJraXRfZG9tX2h0bWxf
aW5wdXRfZWxlbWVudF9zZXRfYWx0KFdlYktpdERPTUhUTUxJbnB1dEVsZW1lbnQqLCBjb25zdCBn
Y2hhciopCi12b2lkIHdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50X3NldF9hdXRvZm9jdXMo
V2ViS2l0RE9NSFRNTElucHV0RWxlbWVudCosIGdib29sZWFuKQotdm9pZCB3ZWJraXRfZG9tX2h0
bWxfaW5wdXRfZWxlbWVudF9zZXRfY2hlY2tlZChXZWJLaXRET01IVE1MSW5wdXRFbGVtZW50Kiwg
Z2Jvb2xlYW4pCi12b2lkIHdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50X3NldF9kZWZhdWx0
X3ZhbHVlKFdlYktpdERPTUhUTUxJbnB1dEVsZW1lbnQqLCBjb25zdCBnY2hhciopCi12b2lkIHdl
YmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50X3NldF9kaXNhYmxlZChXZWJLaXRET01IVE1MSW5w
dXRFbGVtZW50KiwgZ2Jvb2xlYW4pCi12b2lkIHdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50
X3NldF9maWxlcyhXZWJLaXRET01IVE1MSW5wdXRFbGVtZW50KiwgV2ViS2l0RE9NRmlsZUxpc3Qq
KQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfaW5wdXRfZWxlbWVudF9zZXRfaGVpZ2h0KFdlYktpdERP
TUhUTUxJbnB1dEVsZW1lbnQqLCBndWxvbmcpCi12b2lkIHdlYmtpdF9kb21faHRtbF9pbnB1dF9l
bGVtZW50X3NldF9pbmRldGVybWluYXRlKFdlYktpdERPTUhUTUxJbnB1dEVsZW1lbnQqLCBnYm9v
bGVhbikKLXZvaWQgd2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1lbnRfc2V0X21heF9sZW5ndGgo
V2ViS2l0RE9NSFRNTElucHV0RWxlbWVudCosIGdsb25nLCBHRXJyb3IqKikKLXZvaWQgd2Via2l0
X2RvbV9odG1sX2lucHV0X2VsZW1lbnRfc2V0X211bHRpcGxlKFdlYktpdERPTUhUTUxJbnB1dEVs
ZW1lbnQqLCBnYm9vbGVhbikKLXZvaWQgd2Via2l0X2RvbV9odG1sX2lucHV0X2VsZW1lbnRfc2V0
X25hbWUoV2ViS2l0RE9NSFRNTElucHV0RWxlbWVudCosIGNvbnN0IGdjaGFyKikKLXZvaWQgd2Vi
a2l0X2RvbV9odG1sX2lucHV0X2VsZW1lbnRfc2V0X3JlYWRfb25seShXZWJLaXRET01IVE1MSW5w
dXRFbGVtZW50KiwgZ2Jvb2xlYW4pCi12b2lkIHdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50
X3NldF9zaXplKFdlYktpdERPTUhUTUxJbnB1dEVsZW1lbnQqLCBndWxvbmcsIEdFcnJvcioqKQot
dm9pZCB3ZWJraXRfZG9tX2h0bWxfaW5wdXRfZWxlbWVudF9zZXRfc3JjKFdlYktpdERPTUhUTUxJ
bnB1dEVsZW1lbnQqLCBjb25zdCBnY2hhciopCi12b2lkIHdlYmtpdF9kb21faHRtbF9pbnB1dF9l
bGVtZW50X3NldF91c2VfbWFwKFdlYktpdERPTUhUTUxJbnB1dEVsZW1lbnQqLCBjb25zdCBnY2hh
ciopCi12b2lkIHdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50X3NldF92YWx1ZShXZWJLaXRE
T01IVE1MSW5wdXRFbGVtZW50KiwgY29uc3QgZ2NoYXIqKQotdm9pZCB3ZWJraXRfZG9tX2h0bWxf
aW5wdXRfZWxlbWVudF9zZXRfd2lkdGgoV2ViS2l0RE9NSFRNTElucHV0RWxlbWVudCosIGd1bG9u
ZykKLWdib29sZWFuIHdlYmtpdF9kb21faHRtbF9pbnB1dF9lbGVtZW50X2lzX2VkaXRlZChXZWJL
aXRET01IVE1MSW5wdXRFbGVtZW50KikKLUdUeXBlIHdlYmtpdF9kb21faHRtbF9saV9lbGVtZW50
X2dldF90eXBlKHZvaWQpCi1nY2hhciogd2Via2l0X2RvbV9odG1sX2xpX2VsZW1lbnRfZ2V0X3R5
cGVfYXR0cihXZWJLaXRET01IVE1MTElFbGVtZW50KikKLXZvaWQgd2Via2l0X2RvbV9odG1sX2xp
X2VsZW1lbnRfc2V0X3R5cGVfYXR0cihXZWJLaXRET01IVE1MTElFbGVtZW50KiwgY29uc3QgZ2No
YXIqKQotZ2xvbmcgd2Via2l0X2RvbV9odG1sX2xpX2VsZW1lbnRfZ2V0X3ZhbHVlKFdlYktpdERP
TUhUTUxMSUVsZW1lbnQqKQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfbGlfZWxlbWVudF9zZXRfdmFs
dWUoV2ViS2l0RE9NSFRNTExJRWxlbWVudCosIGdsb25nKQotR1R5cGUgd2Via2l0X2RvbV9odG1s
X2xhYmVsX2VsZW1lbnRfZ2V0X3R5cGUodm9pZCkKLVdlYktpdERPTUhUTUxGb3JtRWxlbWVudCog
d2Via2l0X2RvbV9odG1sX2xhYmVsX2VsZW1lbnRfZ2V0X2Zvcm0oV2ViS2l0RE9NSFRNTExhYmVs
RWxlbWVudCopCi1nY2hhciogd2Via2l0X2RvbV9odG1sX2xhYmVsX2VsZW1lbnRfZ2V0X2h0bWxf
Zm9yKFdlYktpdERPTUhUTUxMYWJlbEVsZW1lbnQqKQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfbGFi
ZWxfZWxlbWVudF9zZXRfaHRtbF9mb3IoV2ViS2l0RE9NSFRNTExhYmVsRWxlbWVudCosIGNvbnN0
IGdjaGFyKikKLUdUeXBlIHdlYmtpdF9kb21faHRtbF9sZWdlbmRfZWxlbWVudF9nZXRfdHlwZSh2
b2lkKQotZ2NoYXIqIHdlYmtpdF9kb21faHRtbF9sZWdlbmRfZWxlbWVudF9nZXRfYWxpZ24oV2Vi
S2l0RE9NSFRNTExlZ2VuZEVsZW1lbnQqKQotV2ViS2l0RE9NSFRNTEZvcm1FbGVtZW50KiB3ZWJr
aXRfZG9tX2h0bWxfbGVnZW5kX2VsZW1lbnRfZ2V0X2Zvcm0oV2ViS2l0RE9NSFRNTExlZ2VuZEVs
ZW1lbnQqKQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfbGVnZW5kX2VsZW1lbnRfc2V0X2FsaWduKFdl
YktpdERPTUhUTUxMZWdlbmRFbGVtZW50KiwgY29uc3QgZ2NoYXIqKQotR1R5cGUgd2Via2l0X2Rv
bV9odG1sX2xpbmtfZWxlbWVudF9nZXRfdHlwZSh2b2lkKQotZ2NoYXIqIHdlYmtpdF9kb21faHRt
bF9saW5rX2VsZW1lbnRfZ2V0X3R5cGVfYXR0cihXZWJLaXRET01IVE1MTGlua0VsZW1lbnQqKQot
dm9pZCB3ZWJraXRfZG9tX2h0bWxfbGlua19lbGVtZW50X3NldF90eXBlX2F0dHIoV2ViS2l0RE9N
SFRNTExpbmtFbGVtZW50KiwgY29uc3QgZ2NoYXIqKQotZ2NoYXIqIHdlYmtpdF9kb21faHRtbF9s
aW5rX2VsZW1lbnRfZ2V0X2NoYXJzZXQoV2ViS2l0RE9NSFRNTExpbmtFbGVtZW50KikKLWdib29s
ZWFuIHdlYmtpdF9kb21faHRtbF9saW5rX2VsZW1lbnRfZ2V0X2Rpc2FibGVkKFdlYktpdERPTUhU
TUxMaW5rRWxlbWVudCopCi1nY2hhciogd2Via2l0X2RvbV9odG1sX2xpbmtfZWxlbWVudF9nZXRf
aHJlZmxhbmcoV2ViS2l0RE9NSFRNTExpbmtFbGVtZW50KikKLWdjaGFyKiB3ZWJraXRfZG9tX2h0
bWxfbGlua19lbGVtZW50X2dldF9ocmVmKFdlYktpdERPTUhUTUxMaW5rRWxlbWVudCopCi1nY2hh
ciogd2Via2l0X2RvbV9odG1sX2xpbmtfZWxlbWVudF9nZXRfbWVkaWEoV2ViS2l0RE9NSFRNTExp
bmtFbGVtZW50KikKLWdjaGFyKiB3ZWJraXRfZG9tX2h0bWxfbGlua19lbGVtZW50X2dldF9yZWwo
V2ViS2l0RE9NSFRNTExpbmtFbGVtZW50KikKLWdjaGFyKiB3ZWJraXRfZG9tX2h0bWxfbGlua19l
bGVtZW50X2dldF9yZXYoV2ViS2l0RE9NSFRNTExpbmtFbGVtZW50KikKLVdlYktpdERPTVN0eWxl
U2hlZXQqIHdlYmtpdF9kb21faHRtbF9saW5rX2VsZW1lbnRfZ2V0X3NoZWV0KFdlYktpdERPTUhU
TUxMaW5rRWxlbWVudCopCi1nY2hhciogd2Via2l0X2RvbV9odG1sX2xpbmtfZWxlbWVudF9nZXRf
dGFyZ2V0KFdlYktpdERPTUhUTUxMaW5rRWxlbWVudCopCi12b2lkIHdlYmtpdF9kb21faHRtbF9s
aW5rX2VsZW1lbnRfc2V0X2NoYXJzZXQoV2ViS2l0RE9NSFRNTExpbmtFbGVtZW50KiwgY29uc3Qg
Z2NoYXIqKQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfbGlua19lbGVtZW50X3NldF9kaXNhYmxlZChX
ZWJLaXRET01IVE1MTGlua0VsZW1lbnQqLCBnYm9vbGVhbikKLXZvaWQgd2Via2l0X2RvbV9odG1s
X2xpbmtfZWxlbWVudF9zZXRfaHJlZmxhbmcoV2ViS2l0RE9NSFRNTExpbmtFbGVtZW50KiwgY29u
c3QgZ2NoYXIqKQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfbGlua19lbGVtZW50X3NldF9ocmVmKFdl
YktpdERPTUhUTUxMaW5rRWxlbWVudCosIGNvbnN0IGdjaGFyKikKLXZvaWQgd2Via2l0X2RvbV9o
dG1sX2xpbmtfZWxlbWVudF9zZXRfbWVkaWEoV2ViS2l0RE9NSFRNTExpbmtFbGVtZW50KiwgY29u
c3QgZ2NoYXIqKQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfbGlua19lbGVtZW50X3NldF9yZWwoV2Vi
S2l0RE9NSFRNTExpbmtFbGVtZW50KiwgY29uc3QgZ2NoYXIqKQotdm9pZCB3ZWJraXRfZG9tX2h0
bWxfbGlua19lbGVtZW50X3NldF9yZXYoV2ViS2l0RE9NSFRNTExpbmtFbGVtZW50KiwgY29uc3Qg
Z2NoYXIqKQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfbGlua19lbGVtZW50X3NldF90YXJnZXQoV2Vi
S2l0RE9NSFRNTExpbmtFbGVtZW50KiwgY29uc3QgZ2NoYXIqKQotR1R5cGUgd2Via2l0X2RvbV9o
dG1sX21hcF9lbGVtZW50X2dldF90eXBlKHZvaWQpCi1XZWJLaXRET01IVE1MQ29sbGVjdGlvbiog
d2Via2l0X2RvbV9odG1sX21hcF9lbGVtZW50X2dldF9hcmVhcyhXZWJLaXRET01IVE1MTWFwRWxl
bWVudCopCi1nY2hhciogd2Via2l0X2RvbV9odG1sX21hcF9lbGVtZW50X2dldF9uYW1lKFdlYktp
dERPTUhUTUxNYXBFbGVtZW50KikKLXZvaWQgd2Via2l0X2RvbV9odG1sX21hcF9lbGVtZW50X3Nl
dF9uYW1lKFdlYktpdERPTUhUTUxNYXBFbGVtZW50KiwgY29uc3QgZ2NoYXIqKQotR1R5cGUgd2Vi
a2l0X2RvbV9odG1sX21hcnF1ZWVfZWxlbWVudF9nZXRfdHlwZSh2b2lkKQotdm9pZCB3ZWJraXRf
ZG9tX2h0bWxfbWFycXVlZV9lbGVtZW50X3N0YXJ0KFdlYktpdERPTUhUTUxNYXJxdWVlRWxlbWVu
dCopCi12b2lkIHdlYmtpdF9kb21faHRtbF9tYXJxdWVlX2VsZW1lbnRfc3RvcChXZWJLaXRET01I
VE1MTWFycXVlZUVsZW1lbnQqKQotR1R5cGUgd2Via2l0X2RvbV9odG1sX21lbnVfZWxlbWVudF9n
ZXRfdHlwZSh2b2lkKQotZ2Jvb2xlYW4gd2Via2l0X2RvbV9odG1sX21lbnVfZWxlbWVudF9nZXRf
Y29tcGFjdChXZWJLaXRET01IVE1MTWVudUVsZW1lbnQqKQotdm9pZCB3ZWJraXRfZG9tX2h0bWxf
bWVudV9lbGVtZW50X3NldF9jb21wYWN0KFdlYktpdERPTUhUTUxNZW51RWxlbWVudCosIGdib29s
ZWFuKQotR1R5cGUgd2Via2l0X2RvbV9odG1sX21ldGFfZWxlbWVudF9nZXRfdHlwZSh2b2lkKQot
Z2NoYXIqIHdlYmtpdF9kb21faHRtbF9tZXRhX2VsZW1lbnRfZ2V0X2NvbnRlbnQoV2ViS2l0RE9N
SFRNTE1ldGFFbGVtZW50KikKLWdjaGFyKiB3ZWJraXRfZG9tX2h0bWxfbWV0YV9lbGVtZW50X2dl
dF9odHRwX2VxdWl2KFdlYktpdERPTUhUTUxNZXRhRWxlbWVudCopCi1nY2hhciogd2Via2l0X2Rv
bV9odG1sX21ldGFfZWxlbWVudF9nZXRfbmFtZShXZWJLaXRET01IVE1MTWV0YUVsZW1lbnQqKQot
Z2NoYXIqIHdlYmtpdF9kb21faHRtbF9tZXRhX2VsZW1lbnRfZ2V0X3NjaGVtZShXZWJLaXRET01I
VE1MTWV0YUVsZW1lbnQqKQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfbWV0YV9lbGVtZW50X3NldF9j
b250ZW50KFdlYktpdERPTUhUTUxNZXRhRWxlbWVudCosIGNvbnN0IGdjaGFyKikKLXZvaWQgd2Vi
a2l0X2RvbV9odG1sX21ldGFfZWxlbWVudF9zZXRfaHR0cF9lcXVpdihXZWJLaXRET01IVE1MTWV0
YUVsZW1lbnQqLCBjb25zdCBnY2hhciopCi12b2lkIHdlYmtpdF9kb21faHRtbF9tZXRhX2VsZW1l
bnRfc2V0X25hbWUoV2ViS2l0RE9NSFRNTE1ldGFFbGVtZW50KiwgY29uc3QgZ2NoYXIqKQotdm9p
ZCB3ZWJraXRfZG9tX2h0bWxfbWV0YV9lbGVtZW50X3NldF9zY2hlbWUoV2ViS2l0RE9NSFRNTE1l
dGFFbGVtZW50KiwgY29uc3QgZ2NoYXIqKQotR1R5cGUgd2Via2l0X2RvbV9odG1sX21vZF9lbGVt
ZW50X2dldF90eXBlKHZvaWQpCi1nY2hhciogd2Via2l0X2RvbV9odG1sX21vZF9lbGVtZW50X2dl
dF9jaXRlKFdlYktpdERPTUhUTUxNb2RFbGVtZW50KikKLWdjaGFyKiB3ZWJraXRfZG9tX2h0bWxf
bW9kX2VsZW1lbnRfZ2V0X2RhdGVfdGltZShXZWJLaXRET01IVE1MTW9kRWxlbWVudCopCi12b2lk
IHdlYmtpdF9kb21faHRtbF9tb2RfZWxlbWVudF9zZXRfY2l0ZShXZWJLaXRET01IVE1MTW9kRWxl
bWVudCosIGNvbnN0IGdjaGFyKikKLXZvaWQgd2Via2l0X2RvbV9odG1sX21vZF9lbGVtZW50X3Nl
dF9kYXRlX3RpbWUoV2ViS2l0RE9NSFRNTE1vZEVsZW1lbnQqLCBjb25zdCBnY2hhciopCi1HVHlw
ZSB3ZWJraXRfZG9tX2h0bWxfb19saXN0X2VsZW1lbnRfZ2V0X3R5cGUodm9pZCkKLWdjaGFyKiB3
ZWJraXRfZG9tX2h0bWxfb19saXN0X2VsZW1lbnRfZ2V0X3R5cGVfYXR0cihXZWJLaXRET01IVE1M
T0xpc3RFbGVtZW50KikKLXZvaWQgd2Via2l0X2RvbV9odG1sX29fbGlzdF9lbGVtZW50X3NldF90
eXBlX2F0dHIoV2ViS2l0RE9NSFRNTE9MaXN0RWxlbWVudCosIGNvbnN0IGdjaGFyKikKLWdib29s
ZWFuIHdlYmtpdF9kb21faHRtbF9vX2xpc3RfZWxlbWVudF9nZXRfY29tcGFjdChXZWJLaXRET01I
VE1MT0xpc3RFbGVtZW50KikKLWdsb25nIHdlYmtpdF9kb21faHRtbF9vX2xpc3RfZWxlbWVudF9n
ZXRfc3RhcnQoV2ViS2l0RE9NSFRNTE9MaXN0RWxlbWVudCopCi12b2lkIHdlYmtpdF9kb21faHRt
bF9vX2xpc3RfZWxlbWVudF9zZXRfY29tcGFjdChXZWJLaXRET01IVE1MT0xpc3RFbGVtZW50Kiwg
Z2Jvb2xlYW4pCi12b2lkIHdlYmtpdF9kb21faHRtbF9vX2xpc3RfZWxlbWVudF9zZXRfc3RhcnQo
V2ViS2l0RE9NSFRNTE9MaXN0RWxlbWVudCosIGdsb25nKQotR1R5cGUgd2Via2l0X2RvbV9odG1s
X29iamVjdF9lbGVtZW50X2dldF90eXBlKHZvaWQpCi1nY2hhciogd2Via2l0X2RvbV9odG1sX29i
amVjdF9lbGVtZW50X2dldF90eXBlX2F0dHIoV2ViS2l0RE9NSFRNTE9iamVjdEVsZW1lbnQqKQot
dm9pZCB3ZWJraXRfZG9tX2h0bWxfb2JqZWN0X2VsZW1lbnRfc2V0X3R5cGVfYXR0cihXZWJLaXRE
T01IVE1MT2JqZWN0RWxlbWVudCosIGNvbnN0IGdjaGFyKikKLWdjaGFyKiB3ZWJraXRfZG9tX2h0
bWxfb2JqZWN0X2VsZW1lbnRfZ2V0X2FsaWduKFdlYktpdERPTUhUTUxPYmplY3RFbGVtZW50KikK
LWdjaGFyKiB3ZWJraXRfZG9tX2h0bWxfb2JqZWN0X2VsZW1lbnRfZ2V0X2FyY2hpdmUoV2ViS2l0
RE9NSFRNTE9iamVjdEVsZW1lbnQqKQotZ2NoYXIqIHdlYmtpdF9kb21faHRtbF9vYmplY3RfZWxl
bWVudF9nZXRfYm9yZGVyKFdlYktpdERPTUhUTUxPYmplY3RFbGVtZW50KikKLWdjaGFyKiB3ZWJr
aXRfZG9tX2h0bWxfb2JqZWN0X2VsZW1lbnRfZ2V0X2NvZGVfYmFzZShXZWJLaXRET01IVE1MT2Jq
ZWN0RWxlbWVudCopCi1nY2hhciogd2Via2l0X2RvbV9odG1sX29iamVjdF9lbGVtZW50X2dldF9j
b2RlX3R5cGUoV2ViS2l0RE9NSFRNTE9iamVjdEVsZW1lbnQqKQotZ2NoYXIqIHdlYmtpdF9kb21f
aHRtbF9vYmplY3RfZWxlbWVudF9nZXRfY29kZShXZWJLaXRET01IVE1MT2JqZWN0RWxlbWVudCop
Ci1XZWJLaXRET01Eb2N1bWVudCogd2Via2l0X2RvbV9odG1sX29iamVjdF9lbGVtZW50X2dldF9j
b250ZW50X2RvY3VtZW50KFdlYktpdERPTUhUTUxPYmplY3RFbGVtZW50KikKLWdjaGFyKiB3ZWJr
aXRfZG9tX2h0bWxfb2JqZWN0X2VsZW1lbnRfZ2V0X2RhdGEoV2ViS2l0RE9NSFRNTE9iamVjdEVs
ZW1lbnQqKQotZ2Jvb2xlYW4gd2Via2l0X2RvbV9odG1sX29iamVjdF9lbGVtZW50X2dldF9kZWNs
YXJlKFdlYktpdERPTUhUTUxPYmplY3RFbGVtZW50KikKLVdlYktpdERPTUhUTUxGb3JtRWxlbWVu
dCogd2Via2l0X2RvbV9odG1sX29iamVjdF9lbGVtZW50X2dldF9mb3JtKFdlYktpdERPTUhUTUxP
YmplY3RFbGVtZW50KikKLWdjaGFyKiB3ZWJraXRfZG9tX2h0bWxfb2JqZWN0X2VsZW1lbnRfZ2V0
X2hlaWdodChXZWJLaXRET01IVE1MT2JqZWN0RWxlbWVudCopCi1nbG9uZyB3ZWJraXRfZG9tX2h0
bWxfb2JqZWN0X2VsZW1lbnRfZ2V0X2hzcGFjZShXZWJLaXRET01IVE1MT2JqZWN0RWxlbWVudCop
Ci1nY2hhciogd2Via2l0X2RvbV9odG1sX29iamVjdF9lbGVtZW50X2dldF9uYW1lKFdlYktpdERP
TUhUTUxPYmplY3RFbGVtZW50KikKLWdjaGFyKiB3ZWJraXRfZG9tX2h0bWxfb2JqZWN0X2VsZW1l
bnRfZ2V0X3N0YW5kYnkoV2ViS2l0RE9NSFRNTE9iamVjdEVsZW1lbnQqKQotZ2NoYXIqIHdlYmtp
dF9kb21faHRtbF9vYmplY3RfZWxlbWVudF9nZXRfdXNlX21hcChXZWJLaXRET01IVE1MT2JqZWN0
RWxlbWVudCopCi1nbG9uZyB3ZWJraXRfZG9tX2h0bWxfb2JqZWN0X2VsZW1lbnRfZ2V0X3ZzcGFj
ZShXZWJLaXRET01IVE1MT2JqZWN0RWxlbWVudCopCi1nY2hhciogd2Via2l0X2RvbV9odG1sX29i
amVjdF9lbGVtZW50X2dldF93aWR0aChXZWJLaXRET01IVE1MT2JqZWN0RWxlbWVudCopCi12b2lk
IHdlYmtpdF9kb21faHRtbF9vYmplY3RfZWxlbWVudF9zZXRfYWxpZ24oV2ViS2l0RE9NSFRNTE9i
amVjdEVsZW1lbnQqLCBjb25zdCBnY2hhciopCi12b2lkIHdlYmtpdF9kb21faHRtbF9vYmplY3Rf
ZWxlbWVudF9zZXRfYXJjaGl2ZShXZWJLaXRET01IVE1MT2JqZWN0RWxlbWVudCosIGNvbnN0IGdj
aGFyKikKLXZvaWQgd2Via2l0X2RvbV9odG1sX29iamVjdF9lbGVtZW50X3NldF9ib3JkZXIoV2Vi
S2l0RE9NSFRNTE9iamVjdEVsZW1lbnQqLCBjb25zdCBnY2hhciopCi12b2lkIHdlYmtpdF9kb21f
aHRtbF9vYmplY3RfZWxlbWVudF9zZXRfY29kZV9iYXNlKFdlYktpdERPTUhUTUxPYmplY3RFbGVt
ZW50KiwgY29uc3QgZ2NoYXIqKQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfb2JqZWN0X2VsZW1lbnRf
c2V0X2NvZGVfdHlwZShXZWJLaXRET01IVE1MT2JqZWN0RWxlbWVudCosIGNvbnN0IGdjaGFyKikK
LXZvaWQgd2Via2l0X2RvbV9odG1sX29iamVjdF9lbGVtZW50X3NldF9jb2RlKFdlYktpdERPTUhU
TUxPYmplY3RFbGVtZW50KiwgY29uc3QgZ2NoYXIqKQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfb2Jq
ZWN0X2VsZW1lbnRfc2V0X2RhdGEoV2ViS2l0RE9NSFRNTE9iamVjdEVsZW1lbnQqLCBjb25zdCBn
Y2hhciopCi12b2lkIHdlYmtpdF9kb21faHRtbF9vYmplY3RfZWxlbWVudF9zZXRfZGVjbGFyZShX
ZWJLaXRET01IVE1MT2JqZWN0RWxlbWVudCosIGdib29sZWFuKQotdm9pZCB3ZWJraXRfZG9tX2h0
bWxfb2JqZWN0X2VsZW1lbnRfc2V0X2hlaWdodChXZWJLaXRET01IVE1MT2JqZWN0RWxlbWVudCos
IGNvbnN0IGdjaGFyKikKLXZvaWQgd2Via2l0X2RvbV9odG1sX29iamVjdF9lbGVtZW50X3NldF9o
c3BhY2UoV2ViS2l0RE9NSFRNTE9iamVjdEVsZW1lbnQqLCBnbG9uZykKLXZvaWQgd2Via2l0X2Rv
bV9odG1sX29iamVjdF9lbGVtZW50X3NldF9uYW1lKFdlYktpdERPTUhUTUxPYmplY3RFbGVtZW50
KiwgY29uc3QgZ2NoYXIqKQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfb2JqZWN0X2VsZW1lbnRfc2V0
X3N0YW5kYnkoV2ViS2l0RE9NSFRNTE9iamVjdEVsZW1lbnQqLCBjb25zdCBnY2hhciopCi12b2lk
IHdlYmtpdF9kb21faHRtbF9vYmplY3RfZWxlbWVudF9zZXRfdXNlX21hcChXZWJLaXRET01IVE1M
T2JqZWN0RWxlbWVudCosIGNvbnN0IGdjaGFyKikKLXZvaWQgd2Via2l0X2RvbV9odG1sX29iamVj
dF9lbGVtZW50X3NldF92c3BhY2UoV2ViS2l0RE9NSFRNTE9iamVjdEVsZW1lbnQqLCBnbG9uZykK
LXZvaWQgd2Via2l0X2RvbV9odG1sX29iamVjdF9lbGVtZW50X3NldF93aWR0aChXZWJLaXRET01I
VE1MT2JqZWN0RWxlbWVudCosIGNvbnN0IGdjaGFyKikKLUdUeXBlIHdlYmtpdF9kb21faHRtbF9v
cHRfZ3JvdXBfZWxlbWVudF9nZXRfdHlwZSh2b2lkKQotZ2Jvb2xlYW4gd2Via2l0X2RvbV9odG1s
X29wdF9ncm91cF9lbGVtZW50X2dldF9kaXNhYmxlZChXZWJLaXRET01IVE1MT3B0R3JvdXBFbGVt
ZW50KikKLWdjaGFyKiB3ZWJraXRfZG9tX2h0bWxfb3B0X2dyb3VwX2VsZW1lbnRfZ2V0X2xhYmVs
KFdlYktpdERPTUhUTUxPcHRHcm91cEVsZW1lbnQqKQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfb3B0
X2dyb3VwX2VsZW1lbnRfc2V0X2Rpc2FibGVkKFdlYktpdERPTUhUTUxPcHRHcm91cEVsZW1lbnQq
LCBnYm9vbGVhbikKLXZvaWQgd2Via2l0X2RvbV9odG1sX29wdF9ncm91cF9lbGVtZW50X3NldF9s
YWJlbChXZWJLaXRET01IVE1MT3B0R3JvdXBFbGVtZW50KiwgY29uc3QgZ2NoYXIqKQotR1R5cGUg
d2Via2l0X2RvbV9odG1sX29wdGlvbl9lbGVtZW50X2dldF90eXBlKHZvaWQpCi1nYm9vbGVhbiB3
ZWJraXRfZG9tX2h0bWxfb3B0aW9uX2VsZW1lbnRfZ2V0X2RlZmF1bHRfc2VsZWN0ZWQoV2ViS2l0
RE9NSFRNTE9wdGlvbkVsZW1lbnQqKQotZ2Jvb2xlYW4gd2Via2l0X2RvbV9odG1sX29wdGlvbl9l
bGVtZW50X2dldF9kaXNhYmxlZChXZWJLaXRET01IVE1MT3B0aW9uRWxlbWVudCopCi1XZWJLaXRE
T01IVE1MRm9ybUVsZW1lbnQqIHdlYmtpdF9kb21faHRtbF9vcHRpb25fZWxlbWVudF9nZXRfZm9y
bShXZWJLaXRET01IVE1MT3B0aW9uRWxlbWVudCopCi1nbG9uZyB3ZWJraXRfZG9tX2h0bWxfb3B0
aW9uX2VsZW1lbnRfZ2V0X2luZGV4KFdlYktpdERPTUhUTUxPcHRpb25FbGVtZW50KikKLWdjaGFy
KiB3ZWJraXRfZG9tX2h0bWxfb3B0aW9uX2VsZW1lbnRfZ2V0X2xhYmVsKFdlYktpdERPTUhUTUxP
cHRpb25FbGVtZW50KikKLWdib29sZWFuIHdlYmtpdF9kb21faHRtbF9vcHRpb25fZWxlbWVudF9n
ZXRfc2VsZWN0ZWQoV2ViS2l0RE9NSFRNTE9wdGlvbkVsZW1lbnQqKQotZ2NoYXIqIHdlYmtpdF9k
b21faHRtbF9vcHRpb25fZWxlbWVudF9nZXRfdGV4dChXZWJLaXRET01IVE1MT3B0aW9uRWxlbWVu
dCopCi1nY2hhciogd2Via2l0X2RvbV9odG1sX29wdGlvbl9lbGVtZW50X2dldF92YWx1ZShXZWJL
aXRET01IVE1MT3B0aW9uRWxlbWVudCopCi12b2lkIHdlYmtpdF9kb21faHRtbF9vcHRpb25fZWxl
bWVudF9zZXRfZGVmYXVsdF9zZWxlY3RlZChXZWJLaXRET01IVE1MT3B0aW9uRWxlbWVudCosIGdi
b29sZWFuKQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfb3B0aW9uX2VsZW1lbnRfc2V0X2Rpc2FibGVk
KFdlYktpdERPTUhUTUxPcHRpb25FbGVtZW50KiwgZ2Jvb2xlYW4pCi12b2lkIHdlYmtpdF9kb21f
aHRtbF9vcHRpb25fZWxlbWVudF9zZXRfbGFiZWwoV2ViS2l0RE9NSFRNTE9wdGlvbkVsZW1lbnQq
LCBjb25zdCBnY2hhciopCi12b2lkIHdlYmtpdF9kb21faHRtbF9vcHRpb25fZWxlbWVudF9zZXRf
c2VsZWN0ZWQoV2ViS2l0RE9NSFRNTE9wdGlvbkVsZW1lbnQqLCBnYm9vbGVhbikKLXZvaWQgd2Vi
a2l0X2RvbV9odG1sX29wdGlvbl9lbGVtZW50X3NldF92YWx1ZShXZWJLaXRET01IVE1MT3B0aW9u
RWxlbWVudCosIGNvbnN0IGdjaGFyKikKLUdUeXBlIHdlYmtpdF9kb21faHRtbF9vcHRpb25zX2Nv
bGxlY3Rpb25fZ2V0X3R5cGUodm9pZCkKLWd1bG9uZyB3ZWJraXRfZG9tX2h0bWxfb3B0aW9uc19j
b2xsZWN0aW9uX2dldF9sZW5ndGgoV2ViS2l0RE9NSFRNTE9wdGlvbnNDb2xsZWN0aW9uKikKLWds
b25nIHdlYmtpdF9kb21faHRtbF9vcHRpb25zX2NvbGxlY3Rpb25fZ2V0X3NlbGVjdGVkX2luZGV4
KFdlYktpdERPTUhUTUxPcHRpb25zQ29sbGVjdGlvbiopCi1XZWJLaXRET01Ob2RlKiB3ZWJraXRf
ZG9tX2h0bWxfb3B0aW9uc19jb2xsZWN0aW9uX25hbWVkX2l0ZW0oV2ViS2l0RE9NSFRNTE9wdGlv
bnNDb2xsZWN0aW9uKiwgY29uc3QgZ2NoYXIqKQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfb3B0aW9u
c19jb2xsZWN0aW9uX3NldF9zZWxlY3RlZF9pbmRleChXZWJLaXRET01IVE1MT3B0aW9uc0NvbGxl
Y3Rpb24qLCBnbG9uZykKLUdUeXBlIHdlYmtpdF9kb21faHRtbF9wYXJhZ3JhcGhfZWxlbWVudF9n
ZXRfdHlwZSh2b2lkKQotZ2NoYXIqIHdlYmtpdF9kb21faHRtbF9wYXJhZ3JhcGhfZWxlbWVudF9n
ZXRfYWxpZ24oV2ViS2l0RE9NSFRNTFBhcmFncmFwaEVsZW1lbnQqKQotdm9pZCB3ZWJraXRfZG9t
X2h0bWxfcGFyYWdyYXBoX2VsZW1lbnRfc2V0X2FsaWduKFdlYktpdERPTUhUTUxQYXJhZ3JhcGhF
bGVtZW50KiwgY29uc3QgZ2NoYXIqKQotR1R5cGUgd2Via2l0X2RvbV9odG1sX3BhcmFtX2VsZW1l
bnRfZ2V0X3R5cGUodm9pZCkKLWdjaGFyKiB3ZWJraXRfZG9tX2h0bWxfcGFyYW1fZWxlbWVudF9n
ZXRfdHlwZV9hdHRyKFdlYktpdERPTUhUTUxQYXJhbUVsZW1lbnQqKQotdm9pZCB3ZWJraXRfZG9t
X2h0bWxfcGFyYW1fZWxlbWVudF9zZXRfdHlwZV9hdHRyKFdlYktpdERPTUhUTUxQYXJhbUVsZW1l
bnQqLCBjb25zdCBnY2hhciopCi1nY2hhciogd2Via2l0X2RvbV9odG1sX3BhcmFtX2VsZW1lbnRf
Z2V0X25hbWUoV2ViS2l0RE9NSFRNTFBhcmFtRWxlbWVudCopCi1nY2hhciogd2Via2l0X2RvbV9o
dG1sX3BhcmFtX2VsZW1lbnRfZ2V0X3ZhbHVlX3R5cGUoV2ViS2l0RE9NSFRNTFBhcmFtRWxlbWVu
dCopCi1nY2hhciogd2Via2l0X2RvbV9odG1sX3BhcmFtX2VsZW1lbnRfZ2V0X3ZhbHVlKFdlYktp
dERPTUhUTUxQYXJhbUVsZW1lbnQqKQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfcGFyYW1fZWxlbWVu
dF9zZXRfbmFtZShXZWJLaXRET01IVE1MUGFyYW1FbGVtZW50KiwgY29uc3QgZ2NoYXIqKQotdm9p
ZCB3ZWJraXRfZG9tX2h0bWxfcGFyYW1fZWxlbWVudF9zZXRfdmFsdWVfdHlwZShXZWJLaXRET01I
VE1MUGFyYW1FbGVtZW50KiwgY29uc3QgZ2NoYXIqKQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfcGFy
YW1fZWxlbWVudF9zZXRfdmFsdWUoV2ViS2l0RE9NSFRNTFBhcmFtRWxlbWVudCosIGNvbnN0IGdj
aGFyKikKLUdUeXBlIHdlYmtpdF9kb21faHRtbF9wcmVfZWxlbWVudF9nZXRfdHlwZSh2b2lkKQot
Z2xvbmcgd2Via2l0X2RvbV9odG1sX3ByZV9lbGVtZW50X2dldF93aWR0aChXZWJLaXRET01IVE1M
UHJlRWxlbWVudCopCi1nYm9vbGVhbiB3ZWJraXRfZG9tX2h0bWxfcHJlX2VsZW1lbnRfZ2V0X3dy
YXAoV2ViS2l0RE9NSFRNTFByZUVsZW1lbnQqKQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfcHJlX2Vs
ZW1lbnRfc2V0X3dpZHRoKFdlYktpdERPTUhUTUxQcmVFbGVtZW50KiwgZ2xvbmcpCi12b2lkIHdl
YmtpdF9kb21faHRtbF9wcmVfZWxlbWVudF9zZXRfd3JhcChXZWJLaXRET01IVE1MUHJlRWxlbWVu
dCosIGdib29sZWFuKQotR1R5cGUgd2Via2l0X2RvbV9odG1sX3F1b3RlX2VsZW1lbnRfZ2V0X3R5
cGUodm9pZCkKLWdjaGFyKiB3ZWJraXRfZG9tX2h0bWxfcXVvdGVfZWxlbWVudF9nZXRfY2l0ZShX
ZWJLaXRET01IVE1MUXVvdGVFbGVtZW50KikKLXZvaWQgd2Via2l0X2RvbV9odG1sX3F1b3RlX2Vs
ZW1lbnRfc2V0X2NpdGUoV2ViS2l0RE9NSFRNTFF1b3RlRWxlbWVudCosIGNvbnN0IGdjaGFyKikK
LUdUeXBlIHdlYmtpdF9kb21faHRtbF9zY3JpcHRfZWxlbWVudF9nZXRfdHlwZSh2b2lkKQotZ2No
YXIqIHdlYmtpdF9kb21faHRtbF9zY3JpcHRfZWxlbWVudF9nZXRfdHlwZV9hdHRyKFdlYktpdERP
TUhUTUxTY3JpcHRFbGVtZW50KikKLXZvaWQgd2Via2l0X2RvbV9odG1sX3NjcmlwdF9lbGVtZW50
X3NldF90eXBlX2F0dHIoV2ViS2l0RE9NSFRNTFNjcmlwdEVsZW1lbnQqLCBjb25zdCBnY2hhciop
Ci1nY2hhciogd2Via2l0X2RvbV9odG1sX3NjcmlwdF9lbGVtZW50X2dldF9jaGFyc2V0KFdlYktp
dERPTUhUTUxTY3JpcHRFbGVtZW50KikKLWdib29sZWFuIHdlYmtpdF9kb21faHRtbF9zY3JpcHRf
ZWxlbWVudF9nZXRfZGVmZXIoV2ViS2l0RE9NSFRNTFNjcmlwdEVsZW1lbnQqKQotZ2NoYXIqIHdl
YmtpdF9kb21faHRtbF9zY3JpcHRfZWxlbWVudF9nZXRfZXZlbnQoV2ViS2l0RE9NSFRNTFNjcmlw
dEVsZW1lbnQqKQotZ2NoYXIqIHdlYmtpdF9kb21faHRtbF9zY3JpcHRfZWxlbWVudF9nZXRfaHRt
bF9mb3IoV2ViS2l0RE9NSFRNTFNjcmlwdEVsZW1lbnQqKQotZ2NoYXIqIHdlYmtpdF9kb21faHRt
bF9zY3JpcHRfZWxlbWVudF9nZXRfc3JjKFdlYktpdERPTUhUTUxTY3JpcHRFbGVtZW50KikKLWdj
aGFyKiB3ZWJraXRfZG9tX2h0bWxfc2NyaXB0X2VsZW1lbnRfZ2V0X3RleHQoV2ViS2l0RE9NSFRN
TFNjcmlwdEVsZW1lbnQqKQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfc2NyaXB0X2VsZW1lbnRfc2V0
X2RlZmVyKFdlYktpdERPTUhUTUxTY3JpcHRFbGVtZW50KiwgZ2Jvb2xlYW4pCi12b2lkIHdlYmtp
dF9kb21faHRtbF9zY3JpcHRfZWxlbWVudF9zZXRfZXZlbnQoV2ViS2l0RE9NSFRNTFNjcmlwdEVs
ZW1lbnQqLCBjb25zdCBnY2hhciopCi12b2lkIHdlYmtpdF9kb21faHRtbF9zY3JpcHRfZWxlbWVu
dF9zZXRfaHRtbF9mb3IoV2ViS2l0RE9NSFRNTFNjcmlwdEVsZW1lbnQqLCBjb25zdCBnY2hhciop
Ci12b2lkIHdlYmtpdF9kb21faHRtbF9zY3JpcHRfZWxlbWVudF9zZXRfc3JjKFdlYktpdERPTUhU
TUxTY3JpcHRFbGVtZW50KiwgY29uc3QgZ2NoYXIqKQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfc2Ny
aXB0X2VsZW1lbnRfc2V0X3RleHQoV2ViS2l0RE9NSFRNTFNjcmlwdEVsZW1lbnQqLCBjb25zdCBn
Y2hhciopCi1HVHlwZSB3ZWJraXRfZG9tX2h0bWxfc2VsZWN0X2VsZW1lbnRfZ2V0X3R5cGUodm9p
ZCkKLWdjaGFyKiB3ZWJraXRfZG9tX2h0bWxfc2VsZWN0X2VsZW1lbnRfZ2V0X3NlbGVjdF90eXBl
KFdlYktpdERPTUhUTUxTZWxlY3RFbGVtZW50KikKLXZvaWQgd2Via2l0X2RvbV9odG1sX3NlbGVj
dF9lbGVtZW50X2FkZChXZWJLaXRET01IVE1MU2VsZWN0RWxlbWVudCosIFdlYktpdERPTUhUTUxF
bGVtZW50KiwgV2ViS2l0RE9NSFRNTEVsZW1lbnQqLCBHRXJyb3IqKikKLWdib29sZWFuIHdlYmtp
dF9kb21faHRtbF9zZWxlY3RfZWxlbWVudF9nZXRfYXV0b2ZvY3VzKFdlYktpdERPTUhUTUxTZWxl
Y3RFbGVtZW50KikKLWdib29sZWFuIHdlYmtpdF9kb21faHRtbF9zZWxlY3RfZWxlbWVudF9nZXRf
ZGlzYWJsZWQoV2ViS2l0RE9NSFRNTFNlbGVjdEVsZW1lbnQqKQotV2ViS2l0RE9NSFRNTEZvcm1F
bGVtZW50KiB3ZWJraXRfZG9tX2h0bWxfc2VsZWN0X2VsZW1lbnRfZ2V0X2Zvcm0oV2ViS2l0RE9N
SFRNTFNlbGVjdEVsZW1lbnQqKQotZ3Vsb25nIHdlYmtpdF9kb21faHRtbF9zZWxlY3RfZWxlbWVu
dF9nZXRfbGVuZ3RoKFdlYktpdERPTUhUTUxTZWxlY3RFbGVtZW50KikKLWdib29sZWFuIHdlYmtp
dF9kb21faHRtbF9zZWxlY3RfZWxlbWVudF9nZXRfbXVsdGlwbGUoV2ViS2l0RE9NSFRNTFNlbGVj
dEVsZW1lbnQqKQotZ2NoYXIqIHdlYmtpdF9kb21faHRtbF9zZWxlY3RfZWxlbWVudF9nZXRfbmFt
ZShXZWJLaXRET01IVE1MU2VsZWN0RWxlbWVudCopCi1XZWJLaXRET01IVE1MT3B0aW9uc0NvbGxl
Y3Rpb24qIHdlYmtpdF9kb21faHRtbF9zZWxlY3RfZWxlbWVudF9nZXRfb3B0aW9ucyhXZWJLaXRE
T01IVE1MU2VsZWN0RWxlbWVudCopCi1nbG9uZyB3ZWJraXRfZG9tX2h0bWxfc2VsZWN0X2VsZW1l
bnRfZ2V0X3NlbGVjdGVkX2luZGV4KFdlYktpdERPTUhUTUxTZWxlY3RFbGVtZW50KikKLWdsb25n
IHdlYmtpdF9kb21faHRtbF9zZWxlY3RfZWxlbWVudF9nZXRfc2l6ZShXZWJLaXRET01IVE1MU2Vs
ZWN0RWxlbWVudCopCi1nY2hhciogd2Via2l0X2RvbV9odG1sX3NlbGVjdF9lbGVtZW50X2dldF92
YWx1ZShXZWJLaXRET01IVE1MU2VsZWN0RWxlbWVudCopCi1nYm9vbGVhbiB3ZWJraXRfZG9tX2h0
bWxfc2VsZWN0X2VsZW1lbnRfZ2V0X3dpbGxfdmFsaWRhdGUoV2ViS2l0RE9NSFRNTFNlbGVjdEVs
ZW1lbnQqKQotV2ViS2l0RE9NTm9kZSogd2Via2l0X2RvbV9odG1sX3NlbGVjdF9lbGVtZW50X2l0
ZW0oV2ViS2l0RE9NSFRNTFNlbGVjdEVsZW1lbnQqLCBndWxvbmcpCi1XZWJLaXRET01Ob2RlKiB3
ZWJraXRfZG9tX2h0bWxfc2VsZWN0X2VsZW1lbnRfbmFtZWRfaXRlbShXZWJLaXRET01IVE1MU2Vs
ZWN0RWxlbWVudCosIGNvbnN0IGdjaGFyKikKLXZvaWQgd2Via2l0X2RvbV9odG1sX3NlbGVjdF9l
bGVtZW50X3JlbW92ZShXZWJLaXRET01IVE1MU2VsZWN0RWxlbWVudCosIGdsb25nKQotdm9pZCB3
ZWJraXRfZG9tX2h0bWxfc2VsZWN0X2VsZW1lbnRfc2V0X2F1dG9mb2N1cyhXZWJLaXRET01IVE1M
U2VsZWN0RWxlbWVudCosIGdib29sZWFuKQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfc2VsZWN0X2Vs
ZW1lbnRfc2V0X2Rpc2FibGVkKFdlYktpdERPTUhUTUxTZWxlY3RFbGVtZW50KiwgZ2Jvb2xlYW4p
Ci12b2lkIHdlYmtpdF9kb21faHRtbF9zZWxlY3RfZWxlbWVudF9zZXRfbGVuZ3RoKFdlYktpdERP
TUhUTUxTZWxlY3RFbGVtZW50KiwgZ3Vsb25nLCBHRXJyb3IqKikKLXZvaWQgd2Via2l0X2RvbV9o
dG1sX3NlbGVjdF9lbGVtZW50X3NldF9tdWx0aXBsZShXZWJLaXRET01IVE1MU2VsZWN0RWxlbWVu
dCosIGdib29sZWFuKQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfc2VsZWN0X2VsZW1lbnRfc2V0X25h
bWUoV2ViS2l0RE9NSFRNTFNlbGVjdEVsZW1lbnQqLCBjb25zdCBnY2hhciopCi12b2lkIHdlYmtp
dF9kb21faHRtbF9zZWxlY3RfZWxlbWVudF9zZXRfc2VsZWN0ZWRfaW5kZXgoV2ViS2l0RE9NSFRN
TFNlbGVjdEVsZW1lbnQqLCBnbG9uZykKLXZvaWQgd2Via2l0X2RvbV9odG1sX3NlbGVjdF9lbGVt
ZW50X3NldF9zaXplKFdlYktpdERPTUhUTUxTZWxlY3RFbGVtZW50KiwgZ2xvbmcpCi12b2lkIHdl
YmtpdF9kb21faHRtbF9zZWxlY3RfZWxlbWVudF9zZXRfdmFsdWUoV2ViS2l0RE9NSFRNTFNlbGVj
dEVsZW1lbnQqLCBjb25zdCBnY2hhciopCi1HVHlwZSB3ZWJraXRfZG9tX2h0bWxfc3R5bGVfZWxl
bWVudF9nZXRfdHlwZSh2b2lkKQotZ2NoYXIqIHdlYmtpdF9kb21faHRtbF9zdHlsZV9lbGVtZW50
X2dldF90eXBlX2F0dHIoV2ViS2l0RE9NSFRNTFN0eWxlRWxlbWVudCopCi12b2lkIHdlYmtpdF9k
b21faHRtbF9zdHlsZV9lbGVtZW50X3NldF90eXBlX2F0dHIoV2ViS2l0RE9NSFRNTFN0eWxlRWxl
bWVudCosIGNvbnN0IGdjaGFyKikKLWdib29sZWFuIHdlYmtpdF9kb21faHRtbF9zdHlsZV9lbGVt
ZW50X2dldF9kaXNhYmxlZChXZWJLaXRET01IVE1MU3R5bGVFbGVtZW50KikKLWdjaGFyKiB3ZWJr
aXRfZG9tX2h0bWxfc3R5bGVfZWxlbWVudF9nZXRfbWVkaWEoV2ViS2l0RE9NSFRNTFN0eWxlRWxl
bWVudCopCi1XZWJLaXRET01TdHlsZVNoZWV0KiB3ZWJraXRfZG9tX2h0bWxfc3R5bGVfZWxlbWVu
dF9nZXRfc2hlZXQoV2ViS2l0RE9NSFRNTFN0eWxlRWxlbWVudCopCi12b2lkIHdlYmtpdF9kb21f
aHRtbF9zdHlsZV9lbGVtZW50X3NldF9kaXNhYmxlZChXZWJLaXRET01IVE1MU3R5bGVFbGVtZW50
KiwgZ2Jvb2xlYW4pCi12b2lkIHdlYmtpdF9kb21faHRtbF9zdHlsZV9lbGVtZW50X3NldF9tZWRp
YShXZWJLaXRET01IVE1MU3R5bGVFbGVtZW50KiwgY29uc3QgZ2NoYXIqKQotR1R5cGUgd2Via2l0
X2RvbV9odG1sX3RhYmxlX2NhcHRpb25fZWxlbWVudF9nZXRfdHlwZSh2b2lkKQotZ2NoYXIqIHdl
YmtpdF9kb21faHRtbF90YWJsZV9jYXB0aW9uX2VsZW1lbnRfZ2V0X2FsaWduKFdlYktpdERPTUhU
TUxUYWJsZUNhcHRpb25FbGVtZW50KikKLXZvaWQgd2Via2l0X2RvbV9odG1sX3RhYmxlX2NhcHRp
b25fZWxlbWVudF9zZXRfYWxpZ24oV2ViS2l0RE9NSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQqLCBj
b25zdCBnY2hhciopCi1HVHlwZSB3ZWJraXRfZG9tX2h0bWxfdGFibGVfY2VsbF9lbGVtZW50X2dl
dF90eXBlKHZvaWQpCi1nY2hhciogd2Via2l0X2RvbV9odG1sX3RhYmxlX2NlbGxfZWxlbWVudF9n
ZXRfYWJicihXZWJLaXRET01IVE1MVGFibGVDZWxsRWxlbWVudCopCi1nY2hhciogd2Via2l0X2Rv
bV9odG1sX3RhYmxlX2NlbGxfZWxlbWVudF9nZXRfYWxpZ24oV2ViS2l0RE9NSFRNTFRhYmxlQ2Vs
bEVsZW1lbnQqKQotZ2NoYXIqIHdlYmtpdF9kb21faHRtbF90YWJsZV9jZWxsX2VsZW1lbnRfZ2V0
X2F4aXMoV2ViS2l0RE9NSFRNTFRhYmxlQ2VsbEVsZW1lbnQqKQotZ2NoYXIqIHdlYmtpdF9kb21f
aHRtbF90YWJsZV9jZWxsX2VsZW1lbnRfZ2V0X2JnX2NvbG9yKFdlYktpdERPTUhUTUxUYWJsZUNl
bGxFbGVtZW50KikKLWdsb25nIHdlYmtpdF9kb21faHRtbF90YWJsZV9jZWxsX2VsZW1lbnRfZ2V0
X2NlbGxfaW5kZXgoV2ViS2l0RE9NSFRNTFRhYmxlQ2VsbEVsZW1lbnQqKQotZ2NoYXIqIHdlYmtp
dF9kb21faHRtbF90YWJsZV9jZWxsX2VsZW1lbnRfZ2V0X2NoX29mZihXZWJLaXRET01IVE1MVGFi
bGVDZWxsRWxlbWVudCopCi1nY2hhciogd2Via2l0X2RvbV9odG1sX3RhYmxlX2NlbGxfZWxlbWVu
dF9nZXRfY2goV2ViS2l0RE9NSFRNTFRhYmxlQ2VsbEVsZW1lbnQqKQotZ2xvbmcgd2Via2l0X2Rv
bV9odG1sX3RhYmxlX2NlbGxfZWxlbWVudF9nZXRfY29sX3NwYW4oV2ViS2l0RE9NSFRNTFRhYmxl
Q2VsbEVsZW1lbnQqKQotZ2NoYXIqIHdlYmtpdF9kb21faHRtbF90YWJsZV9jZWxsX2VsZW1lbnRf
Z2V0X2hlYWRlcnMoV2ViS2l0RE9NSFRNTFRhYmxlQ2VsbEVsZW1lbnQqKQotZ2NoYXIqIHdlYmtp
dF9kb21faHRtbF90YWJsZV9jZWxsX2VsZW1lbnRfZ2V0X2hlaWdodChXZWJLaXRET01IVE1MVGFi
bGVDZWxsRWxlbWVudCopCi1nYm9vbGVhbiB3ZWJraXRfZG9tX2h0bWxfdGFibGVfY2VsbF9lbGVt
ZW50X2dldF9ub193cmFwKFdlYktpdERPTUhUTUxUYWJsZUNlbGxFbGVtZW50KikKLWdsb25nIHdl
YmtpdF9kb21faHRtbF90YWJsZV9jZWxsX2VsZW1lbnRfZ2V0X3Jvd19zcGFuKFdlYktpdERPTUhU
TUxUYWJsZUNlbGxFbGVtZW50KikKLWdjaGFyKiB3ZWJraXRfZG9tX2h0bWxfdGFibGVfY2VsbF9l
bGVtZW50X2dldF9zY29wZShXZWJLaXRET01IVE1MVGFibGVDZWxsRWxlbWVudCopCi1nY2hhciog
d2Via2l0X2RvbV9odG1sX3RhYmxlX2NlbGxfZWxlbWVudF9nZXRfdl9hbGlnbihXZWJLaXRET01I
VE1MVGFibGVDZWxsRWxlbWVudCopCi1nY2hhciogd2Via2l0X2RvbV9odG1sX3RhYmxlX2NlbGxf
ZWxlbWVudF9nZXRfd2lkdGgoV2ViS2l0RE9NSFRNTFRhYmxlQ2VsbEVsZW1lbnQqKQotdm9pZCB3
ZWJraXRfZG9tX2h0bWxfdGFibGVfY2VsbF9lbGVtZW50X3NldF9hYmJyKFdlYktpdERPTUhUTUxU
YWJsZUNlbGxFbGVtZW50KiwgY29uc3QgZ2NoYXIqKQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfdGFi
bGVfY2VsbF9lbGVtZW50X3NldF9hbGlnbihXZWJLaXRET01IVE1MVGFibGVDZWxsRWxlbWVudCos
IGNvbnN0IGdjaGFyKikKLXZvaWQgd2Via2l0X2RvbV9odG1sX3RhYmxlX2NlbGxfZWxlbWVudF9z
ZXRfYXhpcyhXZWJLaXRET01IVE1MVGFibGVDZWxsRWxlbWVudCosIGNvbnN0IGdjaGFyKikKLXZv
aWQgd2Via2l0X2RvbV9odG1sX3RhYmxlX2NlbGxfZWxlbWVudF9zZXRfYmdfY29sb3IoV2ViS2l0
RE9NSFRNTFRhYmxlQ2VsbEVsZW1lbnQqLCBjb25zdCBnY2hhciopCi12b2lkIHdlYmtpdF9kb21f
aHRtbF90YWJsZV9jZWxsX2VsZW1lbnRfc2V0X2NoX29mZihXZWJLaXRET01IVE1MVGFibGVDZWxs
RWxlbWVudCosIGNvbnN0IGdjaGFyKikKLXZvaWQgd2Via2l0X2RvbV9odG1sX3RhYmxlX2NlbGxf
ZWxlbWVudF9zZXRfY2goV2ViS2l0RE9NSFRNTFRhYmxlQ2VsbEVsZW1lbnQqLCBjb25zdCBnY2hh
ciopCi12b2lkIHdlYmtpdF9kb21faHRtbF90YWJsZV9jZWxsX2VsZW1lbnRfc2V0X2NvbF9zcGFu
KFdlYktpdERPTUhUTUxUYWJsZUNlbGxFbGVtZW50KiwgZ2xvbmcpCi12b2lkIHdlYmtpdF9kb21f
aHRtbF90YWJsZV9jZWxsX2VsZW1lbnRfc2V0X2hlYWRlcnMoV2ViS2l0RE9NSFRNTFRhYmxlQ2Vs
bEVsZW1lbnQqLCBjb25zdCBnY2hhciopCi12b2lkIHdlYmtpdF9kb21faHRtbF90YWJsZV9jZWxs
X2VsZW1lbnRfc2V0X2hlaWdodChXZWJLaXRET01IVE1MVGFibGVDZWxsRWxlbWVudCosIGNvbnN0
IGdjaGFyKikKLXZvaWQgd2Via2l0X2RvbV9odG1sX3RhYmxlX2NlbGxfZWxlbWVudF9zZXRfbm9f
d3JhcChXZWJLaXRET01IVE1MVGFibGVDZWxsRWxlbWVudCosIGdib29sZWFuKQotdm9pZCB3ZWJr
aXRfZG9tX2h0bWxfdGFibGVfY2VsbF9lbGVtZW50X3NldF9yb3dfc3BhbihXZWJLaXRET01IVE1M
VGFibGVDZWxsRWxlbWVudCosIGdsb25nKQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfdGFibGVfY2Vs
bF9lbGVtZW50X3NldF9zY29wZShXZWJLaXRET01IVE1MVGFibGVDZWxsRWxlbWVudCosIGNvbnN0
IGdjaGFyKikKLXZvaWQgd2Via2l0X2RvbV9odG1sX3RhYmxlX2NlbGxfZWxlbWVudF9zZXRfdl9h
bGlnbihXZWJLaXRET01IVE1MVGFibGVDZWxsRWxlbWVudCosIGNvbnN0IGdjaGFyKikKLXZvaWQg
d2Via2l0X2RvbV9odG1sX3RhYmxlX2NlbGxfZWxlbWVudF9zZXRfd2lkdGgoV2ViS2l0RE9NSFRN
TFRhYmxlQ2VsbEVsZW1lbnQqLCBjb25zdCBnY2hhciopCi1HVHlwZSB3ZWJraXRfZG9tX2h0bWxf
dGFibGVfY29sX2VsZW1lbnRfZ2V0X3R5cGUodm9pZCkKLWdjaGFyKiB3ZWJraXRfZG9tX2h0bWxf
dGFibGVfY29sX2VsZW1lbnRfZ2V0X2FsaWduKFdlYktpdERPTUhUTUxUYWJsZUNvbEVsZW1lbnQq
KQotZ2NoYXIqIHdlYmtpdF9kb21faHRtbF90YWJsZV9jb2xfZWxlbWVudF9nZXRfY2hfb2ZmKFdl
YktpdERPTUhUTUxUYWJsZUNvbEVsZW1lbnQqKQotZ2NoYXIqIHdlYmtpdF9kb21faHRtbF90YWJs
ZV9jb2xfZWxlbWVudF9nZXRfY2goV2ViS2l0RE9NSFRNTFRhYmxlQ29sRWxlbWVudCopCi1nbG9u
ZyB3ZWJraXRfZG9tX2h0bWxfdGFibGVfY29sX2VsZW1lbnRfZ2V0X3NwYW4oV2ViS2l0RE9NSFRN
TFRhYmxlQ29sRWxlbWVudCopCi1nY2hhciogd2Via2l0X2RvbV9odG1sX3RhYmxlX2NvbF9lbGVt
ZW50X2dldF92X2FsaWduKFdlYktpdERPTUhUTUxUYWJsZUNvbEVsZW1lbnQqKQotZ2NoYXIqIHdl
YmtpdF9kb21faHRtbF90YWJsZV9jb2xfZWxlbWVudF9nZXRfd2lkdGgoV2ViS2l0RE9NSFRNTFRh
YmxlQ29sRWxlbWVudCopCi12b2lkIHdlYmtpdF9kb21faHRtbF90YWJsZV9jb2xfZWxlbWVudF9z
ZXRfYWxpZ24oV2ViS2l0RE9NSFRNTFRhYmxlQ29sRWxlbWVudCosIGNvbnN0IGdjaGFyKikKLXZv
aWQgd2Via2l0X2RvbV9odG1sX3RhYmxlX2NvbF9lbGVtZW50X3NldF9jaF9vZmYoV2ViS2l0RE9N
SFRNTFRhYmxlQ29sRWxlbWVudCosIGNvbnN0IGdjaGFyKikKLXZvaWQgd2Via2l0X2RvbV9odG1s
X3RhYmxlX2NvbF9lbGVtZW50X3NldF9jaChXZWJLaXRET01IVE1MVGFibGVDb2xFbGVtZW50Kiwg
Y29uc3QgZ2NoYXIqKQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfdGFibGVfY29sX2VsZW1lbnRfc2V0
X3NwYW4oV2ViS2l0RE9NSFRNTFRhYmxlQ29sRWxlbWVudCosIGdsb25nKQotdm9pZCB3ZWJraXRf
ZG9tX2h0bWxfdGFibGVfY29sX2VsZW1lbnRfc2V0X3ZfYWxpZ24oV2ViS2l0RE9NSFRNTFRhYmxl
Q29sRWxlbWVudCosIGNvbnN0IGdjaGFyKikKLXZvaWQgd2Via2l0X2RvbV9odG1sX3RhYmxlX2Nv
bF9lbGVtZW50X3NldF93aWR0aChXZWJLaXRET01IVE1MVGFibGVDb2xFbGVtZW50KiwgY29uc3Qg
Z2NoYXIqKQotR1R5cGUgd2Via2l0X2RvbV9odG1sX3RhYmxlX2VsZW1lbnRfZ2V0X3R5cGUodm9p
ZCkKLVdlYktpdERPTUhUTUxFbGVtZW50KiB3ZWJraXRfZG9tX2h0bWxfdGFibGVfZWxlbWVudF9j
cmVhdGVfY2FwdGlvbihXZWJLaXRET01IVE1MVGFibGVFbGVtZW50KikKLVdlYktpdERPTUhUTUxF
bGVtZW50KiB3ZWJraXRfZG9tX2h0bWxfdGFibGVfZWxlbWVudF9jcmVhdGVfdF9mb290KFdlYktp
dERPTUhUTUxUYWJsZUVsZW1lbnQqKQotV2ViS2l0RE9NSFRNTEVsZW1lbnQqIHdlYmtpdF9kb21f
aHRtbF90YWJsZV9lbGVtZW50X2NyZWF0ZV90X2hlYWQoV2ViS2l0RE9NSFRNTFRhYmxlRWxlbWVu
dCopCi12b2lkIHdlYmtpdF9kb21faHRtbF90YWJsZV9lbGVtZW50X2RlbGV0ZV9jYXB0aW9uKFdl
YktpdERPTUhUTUxUYWJsZUVsZW1lbnQqKQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfdGFibGVfZWxl
bWVudF9kZWxldGVfcm93KFdlYktpdERPTUhUTUxUYWJsZUVsZW1lbnQqLCBnbG9uZywgR0Vycm9y
KiopCi12b2lkIHdlYmtpdF9kb21faHRtbF90YWJsZV9lbGVtZW50X2RlbGV0ZV90X2Zvb3QoV2Vi
S2l0RE9NSFRNTFRhYmxlRWxlbWVudCopCi12b2lkIHdlYmtpdF9kb21faHRtbF90YWJsZV9lbGVt
ZW50X2RlbGV0ZV90X2hlYWQoV2ViS2l0RE9NSFRNTFRhYmxlRWxlbWVudCopCi1nY2hhciogd2Vi
a2l0X2RvbV9odG1sX3RhYmxlX2VsZW1lbnRfZ2V0X2FsaWduKFdlYktpdERPTUhUTUxUYWJsZUVs
ZW1lbnQqKQotZ2NoYXIqIHdlYmtpdF9kb21faHRtbF90YWJsZV9lbGVtZW50X2dldF9iZ19jb2xv
cihXZWJLaXRET01IVE1MVGFibGVFbGVtZW50KikKLWdjaGFyKiB3ZWJraXRfZG9tX2h0bWxfdGFi
bGVfZWxlbWVudF9nZXRfYm9yZGVyKFdlYktpdERPTUhUTUxUYWJsZUVsZW1lbnQqKQotV2ViS2l0
RE9NSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQqIHdlYmtpdF9kb21faHRtbF90YWJsZV9lbGVtZW50
X2dldF9jYXB0aW9uKFdlYktpdERPTUhUTUxUYWJsZUVsZW1lbnQqKQotZ2NoYXIqIHdlYmtpdF9k
b21faHRtbF90YWJsZV9lbGVtZW50X2dldF9jZWxsX3BhZGRpbmcoV2ViS2l0RE9NSFRNTFRhYmxl
RWxlbWVudCopCi1nY2hhciogd2Via2l0X2RvbV9odG1sX3RhYmxlX2VsZW1lbnRfZ2V0X2NlbGxf
c3BhY2luZyhXZWJLaXRET01IVE1MVGFibGVFbGVtZW50KikKLVdlYktpdERPTUhUTUxDb2xsZWN0
aW9uKiB3ZWJraXRfZG9tX2h0bWxfdGFibGVfZWxlbWVudF9nZXRfcm93cyhXZWJLaXRET01IVE1M
VGFibGVFbGVtZW50KikKLWdjaGFyKiB3ZWJraXRfZG9tX2h0bWxfdGFibGVfZWxlbWVudF9nZXRf
cnVsZXMoV2ViS2l0RE9NSFRNTFRhYmxlRWxlbWVudCopCi1nY2hhciogd2Via2l0X2RvbV9odG1s
X3RhYmxlX2VsZW1lbnRfZ2V0X3N1bW1hcnkoV2ViS2l0RE9NSFRNTFRhYmxlRWxlbWVudCopCi1X
ZWJLaXRET01IVE1MQ29sbGVjdGlvbiogd2Via2l0X2RvbV9odG1sX3RhYmxlX2VsZW1lbnRfZ2V0
X3RfYm9kaWVzKFdlYktpdERPTUhUTUxUYWJsZUVsZW1lbnQqKQotV2ViS2l0RE9NSFRNTFRhYmxl
U2VjdGlvbkVsZW1lbnQqIHdlYmtpdF9kb21faHRtbF90YWJsZV9lbGVtZW50X2dldF90X2Zvb3Qo
V2ViS2l0RE9NSFRNTFRhYmxlRWxlbWVudCopCi1XZWJLaXRET01IVE1MVGFibGVTZWN0aW9uRWxl
bWVudCogd2Via2l0X2RvbV9odG1sX3RhYmxlX2VsZW1lbnRfZ2V0X3RfaGVhZChXZWJLaXRET01I
VE1MVGFibGVFbGVtZW50KikKLWdjaGFyKiB3ZWJraXRfZG9tX2h0bWxfdGFibGVfZWxlbWVudF9n
ZXRfd2lkdGgoV2ViS2l0RE9NSFRNTFRhYmxlRWxlbWVudCopCi1XZWJLaXRET01IVE1MRWxlbWVu
dCogd2Via2l0X2RvbV9odG1sX3RhYmxlX2VsZW1lbnRfaW5zZXJ0X3JvdyhXZWJLaXRET01IVE1M
VGFibGVFbGVtZW50KiwgZ2xvbmcsIEdFcnJvcioqKQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfdGFi
bGVfZWxlbWVudF9zZXRfYWxpZ24oV2ViS2l0RE9NSFRNTFRhYmxlRWxlbWVudCosIGNvbnN0IGdj
aGFyKikKLXZvaWQgd2Via2l0X2RvbV9odG1sX3RhYmxlX2VsZW1lbnRfc2V0X2JnX2NvbG9yKFdl
YktpdERPTUhUTUxUYWJsZUVsZW1lbnQqLCBjb25zdCBnY2hhciopCi12b2lkIHdlYmtpdF9kb21f
aHRtbF90YWJsZV9lbGVtZW50X3NldF9ib3JkZXIoV2ViS2l0RE9NSFRNTFRhYmxlRWxlbWVudCos
IGNvbnN0IGdjaGFyKikKLXZvaWQgd2Via2l0X2RvbV9odG1sX3RhYmxlX2VsZW1lbnRfc2V0X2Nh
cHRpb24oV2ViS2l0RE9NSFRNTFRhYmxlRWxlbWVudCosIFdlYktpdERPTUhUTUxUYWJsZUNhcHRp
b25FbGVtZW50KiwgR0Vycm9yKiopCi12b2lkIHdlYmtpdF9kb21faHRtbF90YWJsZV9lbGVtZW50
X3NldF9jZWxsX3BhZGRpbmcoV2ViS2l0RE9NSFRNTFRhYmxlRWxlbWVudCosIGNvbnN0IGdjaGFy
KikKLXZvaWQgd2Via2l0X2RvbV9odG1sX3RhYmxlX2VsZW1lbnRfc2V0X2NlbGxfc3BhY2luZyhX
ZWJLaXRET01IVE1MVGFibGVFbGVtZW50KiwgY29uc3QgZ2NoYXIqKQotdm9pZCB3ZWJraXRfZG9t
X2h0bWxfdGFibGVfZWxlbWVudF9zZXRfcnVsZXMoV2ViS2l0RE9NSFRNTFRhYmxlRWxlbWVudCos
IGNvbnN0IGdjaGFyKikKLXZvaWQgd2Via2l0X2RvbV9odG1sX3RhYmxlX2VsZW1lbnRfc2V0X3N1
bW1hcnkoV2ViS2l0RE9NSFRNTFRhYmxlRWxlbWVudCosIGNvbnN0IGdjaGFyKikKLXZvaWQgd2Vi
a2l0X2RvbV9odG1sX3RhYmxlX2VsZW1lbnRfc2V0X3RfZm9vdChXZWJLaXRET01IVE1MVGFibGVF
bGVtZW50KiwgV2ViS2l0RE9NSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQqLCBHRXJyb3IqKikKLXZv
aWQgd2Via2l0X2RvbV9odG1sX3RhYmxlX2VsZW1lbnRfc2V0X3RfaGVhZChXZWJLaXRET01IVE1M
VGFibGVFbGVtZW50KiwgV2ViS2l0RE9NSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQqLCBHRXJyb3Iq
KikKLXZvaWQgd2Via2l0X2RvbV9odG1sX3RhYmxlX2VsZW1lbnRfc2V0X3dpZHRoKFdlYktpdERP
TUhUTUxUYWJsZUVsZW1lbnQqLCBjb25zdCBnY2hhciopCi1HVHlwZSB3ZWJraXRfZG9tX2h0bWxf
dGFibGVfcm93X2VsZW1lbnRfZ2V0X3R5cGUodm9pZCkKLWdjaGFyKiB3ZWJraXRfZG9tX2h0bWxf
dGFibGVfcm93X2VsZW1lbnRfZ2V0X2FsaWduKFdlYktpdERPTUhUTUxUYWJsZVJvd0VsZW1lbnQq
KQotZ2NoYXIqIHdlYmtpdF9kb21faHRtbF90YWJsZV9yb3dfZWxlbWVudF9nZXRfYmdfY29sb3Io
V2ViS2l0RE9NSFRNTFRhYmxlUm93RWxlbWVudCopCi1XZWJLaXRET01IVE1MQ29sbGVjdGlvbiog
d2Via2l0X2RvbV9odG1sX3RhYmxlX3Jvd19lbGVtZW50X2dldF9jZWxscyhXZWJLaXRET01IVE1M
VGFibGVSb3dFbGVtZW50KikKLWdjaGFyKiB3ZWJraXRfZG9tX2h0bWxfdGFibGVfcm93X2VsZW1l
bnRfZ2V0X2NoX29mZihXZWJLaXRET01IVE1MVGFibGVSb3dFbGVtZW50KikKLWdjaGFyKiB3ZWJr
aXRfZG9tX2h0bWxfdGFibGVfcm93X2VsZW1lbnRfZ2V0X2NoKFdlYktpdERPTUhUTUxUYWJsZVJv
d0VsZW1lbnQqKQotZ2xvbmcgd2Via2l0X2RvbV9odG1sX3RhYmxlX3Jvd19lbGVtZW50X2dldF9y
b3dfaW5kZXgoV2ViS2l0RE9NSFRNTFRhYmxlUm93RWxlbWVudCopCi1nbG9uZyB3ZWJraXRfZG9t
X2h0bWxfdGFibGVfcm93X2VsZW1lbnRfZ2V0X3NlY3Rpb25fcm93X2luZGV4KFdlYktpdERPTUhU
TUxUYWJsZVJvd0VsZW1lbnQqKQotZ2NoYXIqIHdlYmtpdF9kb21faHRtbF90YWJsZV9yb3dfZWxl
bWVudF9nZXRfdl9hbGlnbihXZWJLaXRET01IVE1MVGFibGVSb3dFbGVtZW50KikKLVdlYktpdERP
TUhUTUxFbGVtZW50KiB3ZWJraXRfZG9tX2h0bWxfdGFibGVfcm93X2VsZW1lbnRfaW5zZXJ0X2Nl
bGwoV2ViS2l0RE9NSFRNTFRhYmxlUm93RWxlbWVudCosIGdsb25nLCBHRXJyb3IqKikKLXZvaWQg
d2Via2l0X2RvbV9odG1sX3RhYmxlX3Jvd19lbGVtZW50X3NldF9hbGlnbihXZWJLaXRET01IVE1M
VGFibGVSb3dFbGVtZW50KiwgY29uc3QgZ2NoYXIqKQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfdGFi
bGVfcm93X2VsZW1lbnRfc2V0X2JnX2NvbG9yKFdlYktpdERPTUhUTUxUYWJsZVJvd0VsZW1lbnQq
LCBjb25zdCBnY2hhciopCi12b2lkIHdlYmtpdF9kb21faHRtbF90YWJsZV9yb3dfZWxlbWVudF9z
ZXRfY2hfb2ZmKFdlYktpdERPTUhUTUxUYWJsZVJvd0VsZW1lbnQqLCBjb25zdCBnY2hhciopCi12
b2lkIHdlYmtpdF9kb21faHRtbF90YWJsZV9yb3dfZWxlbWVudF9zZXRfY2goV2ViS2l0RE9NSFRN
TFRhYmxlUm93RWxlbWVudCosIGNvbnN0IGdjaGFyKikKLXZvaWQgd2Via2l0X2RvbV9odG1sX3Rh
YmxlX3Jvd19lbGVtZW50X3NldF92X2FsaWduKFdlYktpdERPTUhUTUxUYWJsZVJvd0VsZW1lbnQq
LCBjb25zdCBnY2hhciopCi12b2lkIHdlYmtpdF9kb21faHRtbF90YWJsZV9yb3dfZWxlbWVudF9k
ZWxldGVfY2VsbChXZWJLaXRET01IVE1MVGFibGVSb3dFbGVtZW50KiwgZ2xvbmcsIEdFcnJvcioq
KQotR1R5cGUgd2Via2l0X2RvbV9odG1sX3RhYmxlX3NlY3Rpb25fZWxlbWVudF9nZXRfdHlwZSh2
b2lkKQotZ2NoYXIqIHdlYmtpdF9kb21faHRtbF90YWJsZV9zZWN0aW9uX2VsZW1lbnRfZ2V0X2Fs
aWduKFdlYktpdERPTUhUTUxUYWJsZVNlY3Rpb25FbGVtZW50KikKLWdjaGFyKiB3ZWJraXRfZG9t
X2h0bWxfdGFibGVfc2VjdGlvbl9lbGVtZW50X2dldF9jaF9vZmYoV2ViS2l0RE9NSFRNTFRhYmxl
U2VjdGlvbkVsZW1lbnQqKQotZ2NoYXIqIHdlYmtpdF9kb21faHRtbF90YWJsZV9zZWN0aW9uX2Vs
ZW1lbnRfZ2V0X2NoKFdlYktpdERPTUhUTUxUYWJsZVNlY3Rpb25FbGVtZW50KikKLVdlYktpdERP
TUhUTUxDb2xsZWN0aW9uKiB3ZWJraXRfZG9tX2h0bWxfdGFibGVfc2VjdGlvbl9lbGVtZW50X2dl
dF9yb3dzKFdlYktpdERPTUhUTUxUYWJsZVNlY3Rpb25FbGVtZW50KikKLWdjaGFyKiB3ZWJraXRf
ZG9tX2h0bWxfdGFibGVfc2VjdGlvbl9lbGVtZW50X2dldF92X2FsaWduKFdlYktpdERPTUhUTUxU
YWJsZVNlY3Rpb25FbGVtZW50KikKLVdlYktpdERPTUhUTUxFbGVtZW50KiB3ZWJraXRfZG9tX2h0
bWxfdGFibGVfc2VjdGlvbl9lbGVtZW50X2luc2VydF9yb3coV2ViS2l0RE9NSFRNTFRhYmxlU2Vj
dGlvbkVsZW1lbnQqLCBnbG9uZywgR0Vycm9yKiopCi12b2lkIHdlYmtpdF9kb21faHRtbF90YWJs
ZV9zZWN0aW9uX2VsZW1lbnRfZGVsZXRlX3JvdyhXZWJLaXRET01IVE1MVGFibGVTZWN0aW9uRWxl
bWVudCosIGdsb25nLCBHRXJyb3IqKikKLXZvaWQgd2Via2l0X2RvbV9odG1sX3RhYmxlX3NlY3Rp
b25fZWxlbWVudF9zZXRfYWxpZ24oV2ViS2l0RE9NSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQqLCBj
b25zdCBnY2hhciopCi12b2lkIHdlYmtpdF9kb21faHRtbF90YWJsZV9zZWN0aW9uX2VsZW1lbnRf
c2V0X2NoX29mZihXZWJLaXRET01IVE1MVGFibGVTZWN0aW9uRWxlbWVudCosIGNvbnN0IGdjaGFy
KikKLXZvaWQgd2Via2l0X2RvbV9odG1sX3RhYmxlX3NlY3Rpb25fZWxlbWVudF9zZXRfY2goV2Vi
S2l0RE9NSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQqLCBjb25zdCBnY2hhciopCi12b2lkIHdlYmtp
dF9kb21faHRtbF90YWJsZV9zZWN0aW9uX2VsZW1lbnRfc2V0X3ZfYWxpZ24oV2ViS2l0RE9NSFRN
TFRhYmxlU2VjdGlvbkVsZW1lbnQqLCBjb25zdCBnY2hhciopCi1HVHlwZSB3ZWJraXRfZG9tX2h0
bWxfdGV4dF9hcmVhX2VsZW1lbnRfZ2V0X3R5cGUodm9pZCkKLWdjaGFyKiB3ZWJraXRfZG9tX2h0
bWxfdGV4dF9hcmVhX2VsZW1lbnRfZ2V0X2FyZWFfdHlwZShXZWJLaXRET01IVE1MVGV4dEFyZWFF
bGVtZW50KikKLWdib29sZWFuIHdlYmtpdF9kb21faHRtbF90ZXh0X2FyZWFfZWxlbWVudF9nZXRf
YXV0b2ZvY3VzKFdlYktpdERPTUhUTUxUZXh0QXJlYUVsZW1lbnQqKQotZ2xvbmcgd2Via2l0X2Rv
bV9odG1sX3RleHRfYXJlYV9lbGVtZW50X2dldF9jb2xzKFdlYktpdERPTUhUTUxUZXh0QXJlYUVs
ZW1lbnQqKQotZ2NoYXIqIHdlYmtpdF9kb21faHRtbF90ZXh0X2FyZWFfZWxlbWVudF9nZXRfZGVm
YXVsdF92YWx1ZShXZWJLaXRET01IVE1MVGV4dEFyZWFFbGVtZW50KikKLWdib29sZWFuIHdlYmtp
dF9kb21faHRtbF90ZXh0X2FyZWFfZWxlbWVudF9nZXRfZGlzYWJsZWQoV2ViS2l0RE9NSFRNTFRl
eHRBcmVhRWxlbWVudCopCi1XZWJLaXRET01IVE1MRm9ybUVsZW1lbnQqIHdlYmtpdF9kb21faHRt
bF90ZXh0X2FyZWFfZWxlbWVudF9nZXRfZm9ybShXZWJLaXRET01IVE1MVGV4dEFyZWFFbGVtZW50
KikKLWdjaGFyKiB3ZWJraXRfZG9tX2h0bWxfdGV4dF9hcmVhX2VsZW1lbnRfZ2V0X25hbWUoV2Vi
S2l0RE9NSFRNTFRleHRBcmVhRWxlbWVudCopCi1nYm9vbGVhbiB3ZWJraXRfZG9tX2h0bWxfdGV4
dF9hcmVhX2VsZW1lbnRfZ2V0X3JlYWRfb25seShXZWJLaXRET01IVE1MVGV4dEFyZWFFbGVtZW50
KikKLWdsb25nIHdlYmtpdF9kb21faHRtbF90ZXh0X2FyZWFfZWxlbWVudF9nZXRfcm93cyhXZWJL
aXRET01IVE1MVGV4dEFyZWFFbGVtZW50KikKLWdsb25nIHdlYmtpdF9kb21faHRtbF90ZXh0X2Fy
ZWFfZWxlbWVudF9nZXRfc2VsZWN0aW9uX2VuZChXZWJLaXRET01IVE1MVGV4dEFyZWFFbGVtZW50
KikKLWdsb25nIHdlYmtpdF9kb21faHRtbF90ZXh0X2FyZWFfZWxlbWVudF9nZXRfc2VsZWN0aW9u
X3N0YXJ0KFdlYktpdERPTUhUTUxUZXh0QXJlYUVsZW1lbnQqKQotZ2NoYXIqIHdlYmtpdF9kb21f
aHRtbF90ZXh0X2FyZWFfZWxlbWVudF9nZXRfdmFsdWUoV2ViS2l0RE9NSFRNTFRleHRBcmVhRWxl
bWVudCopCi1nYm9vbGVhbiB3ZWJraXRfZG9tX2h0bWxfdGV4dF9hcmVhX2VsZW1lbnRfZ2V0X3dp
bGxfdmFsaWRhdGUoV2ViS2l0RE9NSFRNTFRleHRBcmVhRWxlbWVudCopCi12b2lkIHdlYmtpdF9k
b21faHRtbF90ZXh0X2FyZWFfZWxlbWVudF9zZWxlY3QoV2ViS2l0RE9NSFRNTFRleHRBcmVhRWxl
bWVudCopCi12b2lkIHdlYmtpdF9kb21faHRtbF90ZXh0X2FyZWFfZWxlbWVudF9zZXRfYXV0b2Zv
Y3VzKFdlYktpdERPTUhUTUxUZXh0QXJlYUVsZW1lbnQqLCBnYm9vbGVhbikKLXZvaWQgd2Via2l0
X2RvbV9odG1sX3RleHRfYXJlYV9lbGVtZW50X3NldF9jb2xzKFdlYktpdERPTUhUTUxUZXh0QXJl
YUVsZW1lbnQqLCBnbG9uZykKLXZvaWQgd2Via2l0X2RvbV9odG1sX3RleHRfYXJlYV9lbGVtZW50
X3NldF9kZWZhdWx0X3ZhbHVlKFdlYktpdERPTUhUTUxUZXh0QXJlYUVsZW1lbnQqLCBjb25zdCBn
Y2hhciopCi12b2lkIHdlYmtpdF9kb21faHRtbF90ZXh0X2FyZWFfZWxlbWVudF9zZXRfZGlzYWJs
ZWQoV2ViS2l0RE9NSFRNTFRleHRBcmVhRWxlbWVudCosIGdib29sZWFuKQotdm9pZCB3ZWJraXRf
ZG9tX2h0bWxfdGV4dF9hcmVhX2VsZW1lbnRfc2V0X25hbWUoV2ViS2l0RE9NSFRNTFRleHRBcmVh
RWxlbWVudCosIGNvbnN0IGdjaGFyKikKLXZvaWQgd2Via2l0X2RvbV9odG1sX3RleHRfYXJlYV9l
bGVtZW50X3NldF9yZWFkX29ubHkoV2ViS2l0RE9NSFRNTFRleHRBcmVhRWxlbWVudCosIGdib29s
ZWFuKQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfdGV4dF9hcmVhX2VsZW1lbnRfc2V0X3Jvd3MoV2Vi
S2l0RE9NSFRNTFRleHRBcmVhRWxlbWVudCosIGdsb25nKQotdm9pZCB3ZWJraXRfZG9tX2h0bWxf
dGV4dF9hcmVhX2VsZW1lbnRfc2V0X3NlbGVjdGlvbl9lbmQoV2ViS2l0RE9NSFRNTFRleHRBcmVh
RWxlbWVudCosIGdsb25nKQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfdGV4dF9hcmVhX2VsZW1lbnRf
c2V0X3NlbGVjdGlvbl9yYW5nZShXZWJLaXRET01IVE1MVGV4dEFyZWFFbGVtZW50KiwgZ2xvbmcs
IGdsb25nLCBjb25zdCBnY2hhciopCi12b2lkIHdlYmtpdF9kb21faHRtbF90ZXh0X2FyZWFfZWxl
bWVudF9zZXRfc2VsZWN0aW9uX3N0YXJ0KFdlYktpdERPTUhUTUxUZXh0QXJlYUVsZW1lbnQqLCBn
bG9uZykKLXZvaWQgd2Via2l0X2RvbV9odG1sX3RleHRfYXJlYV9lbGVtZW50X3NldF92YWx1ZShX
ZWJLaXRET01IVE1MVGV4dEFyZWFFbGVtZW50KiwgY29uc3QgZ2NoYXIqKQotZ2Jvb2xlYW4gd2Vi
a2l0X2RvbV9odG1sX3RleHRfYXJlYV9lbGVtZW50X2lzX2VkaXRlZChXZWJLaXRET01IVE1MVGV4
dEFyZWFFbGVtZW50KikKLUdUeXBlIHdlYmtpdF9kb21faHRtbF90aXRsZV9lbGVtZW50X2dldF90
eXBlKHZvaWQpCi1nY2hhciogd2Via2l0X2RvbV9odG1sX3RpdGxlX2VsZW1lbnRfZ2V0X3RleHQo
V2ViS2l0RE9NSFRNTFRpdGxlRWxlbWVudCopCi12b2lkIHdlYmtpdF9kb21faHRtbF90aXRsZV9l
bGVtZW50X3NldF90ZXh0KFdlYktpdERPTUhUTUxUaXRsZUVsZW1lbnQqLCBjb25zdCBnY2hhciop
Ci1HVHlwZSB3ZWJraXRfZG9tX2h0bWxfdV9saXN0X2VsZW1lbnRfZ2V0X3R5cGUodm9pZCkKLWdj
aGFyKiB3ZWJraXRfZG9tX2h0bWxfdV9saXN0X2VsZW1lbnRfZ2V0X3R5cGVfYXR0cihXZWJLaXRE
T01IVE1MVUxpc3RFbGVtZW50KikKLXZvaWQgd2Via2l0X2RvbV9odG1sX3VfbGlzdF9lbGVtZW50
X3NldF90eXBlX2F0dHIoV2ViS2l0RE9NSFRNTFVMaXN0RWxlbWVudCosIGNvbnN0IGdjaGFyKikK
LWdib29sZWFuIHdlYmtpdF9kb21faHRtbF91X2xpc3RfZWxlbWVudF9nZXRfY29tcGFjdChXZWJL
aXRET01IVE1MVUxpc3RFbGVtZW50KikKLXZvaWQgd2Via2l0X2RvbV9odG1sX3VfbGlzdF9lbGVt
ZW50X3NldF9jb21wYWN0KFdlYktpdERPTUhUTUxVTGlzdEVsZW1lbnQqLCBnYm9vbGVhbikKLUdU
eXBlIHdlYmtpdF9kb21fc3R5bGVfc2hlZXRfbGlzdF9nZXRfdHlwZSh2b2lkKQotZ3Vsb25nIHdl
YmtpdF9kb21fc3R5bGVfc2hlZXRfbGlzdF9nZXRfbGVuZ3RoKFdlYktpdERPTVN0eWxlU2hlZXRM
aXN0KikKLVdlYktpdERPTVN0eWxlU2hlZXQqIHdlYmtpdF9kb21fc3R5bGVfc2hlZXRfbGlzdF9p
dGVtKFdlYktpdERPTVN0eWxlU2hlZXRMaXN0KiwgZ3Vsb25nKQotR1R5cGUgd2Via2l0X2RvbV9j
c3NfcnVsZV9nZXRfdHlwZSh2b2lkKQotV0VCS0lUX0RPTV9DU1NfUlVMRV9VTktOT1dOX1JVTEUK
LVdFQktJVF9ET01fQ1NTX1JVTEVfU1RZTEVfUlVMRQotV0VCS0lUX0RPTV9DU1NfUlVMRV9DSEFS
U0VUX1JVTEUKLVdFQktJVF9ET01fQ1NTX1JVTEVfSU1QT1JUX1JVTEUKLVdFQktJVF9ET01fQ1NT
X1JVTEVfTUVESUFfUlVMRQotV0VCS0lUX0RPTV9DU1NfUlVMRV9GT05UX0ZBQ0VfUlVMRQotV0VC
S0lUX0RPTV9DU1NfUlVMRV9QQUdFX1JVTEUKLWd1c2hvcnQgd2Via2l0X2RvbV9jc3NfcnVsZV9n
ZXRfcnVsZV90eXBlKFdlYktpdERPTUNTU1J1bGUqKQotZ2NoYXIqIHdlYmtpdF9kb21fY3NzX3J1
bGVfZ2V0X2Nzc190ZXh0KFdlYktpdERPTUNTU1J1bGUqKQotV2ViS2l0RE9NQ1NTUnVsZSogd2Vi
a2l0X2RvbV9jc3NfcnVsZV9nZXRfcGFyZW50X3J1bGUoV2ViS2l0RE9NQ1NTUnVsZSopCi1XZWJL
aXRET01DU1NTdHlsZVNoZWV0KiB3ZWJraXRfZG9tX2Nzc19ydWxlX2dldF9wYXJlbnRfc3R5bGVf
c2hlZXQoV2ViS2l0RE9NQ1NTUnVsZSopCi12b2lkIHdlYmtpdF9kb21fY3NzX3J1bGVfc2V0X2Nz
c190ZXh0KFdlYktpdERPTUNTU1J1bGUqLCBjb25zdCBnY2hhciosIEdFcnJvcioqKQotR1R5cGUg
d2Via2l0X2RvbV9jc3NfcnVsZV9saXN0X2dldF90eXBlKHZvaWQpCi1ndWxvbmcgd2Via2l0X2Rv
bV9jc3NfcnVsZV9saXN0X2dldF9sZW5ndGgoV2ViS2l0RE9NQ1NTUnVsZUxpc3QqKQotV2ViS2l0
RE9NQ1NTUnVsZSogd2Via2l0X2RvbV9jc3NfcnVsZV9saXN0X2l0ZW0oV2ViS2l0RE9NQ1NTUnVs
ZUxpc3QqLCBndWxvbmcpCi1HVHlwZSB3ZWJraXRfZG9tX2Nzc19zdHlsZV9kZWNsYXJhdGlvbl9n
ZXRfdHlwZSh2b2lkKQotZ2NoYXIqIHdlYmtpdF9kb21fY3NzX3N0eWxlX2RlY2xhcmF0aW9uX2dl
dF9jc3NfdGV4dChXZWJLaXRET01DU1NTdHlsZURlY2xhcmF0aW9uKikKLWd1bG9uZyB3ZWJraXRf
ZG9tX2Nzc19zdHlsZV9kZWNsYXJhdGlvbl9nZXRfbGVuZ3RoKFdlYktpdERPTUNTU1N0eWxlRGVj
bGFyYXRpb24qKQotV2ViS2l0RE9NQ1NTUnVsZSogd2Via2l0X2RvbV9jc3Nfc3R5bGVfZGVjbGFy
YXRpb25fZ2V0X3BhcmVudF9ydWxlKFdlYktpdERPTUNTU1N0eWxlRGVjbGFyYXRpb24qKQotZ2No
YXIqIHdlYmtpdF9kb21fY3NzX3N0eWxlX2RlY2xhcmF0aW9uX2dldF9wcm9wZXJ0eV9wcmlvcml0
eShXZWJLaXRET01DU1NTdHlsZURlY2xhcmF0aW9uKiwgY29uc3QgZ2NoYXIqKQotZ2NoYXIqIHdl
YmtpdF9kb21fY3NzX3N0eWxlX2RlY2xhcmF0aW9uX2dldF9wcm9wZXJ0eV9zaG9ydGhhbmQoV2Vi
S2l0RE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiosIGNvbnN0IGdjaGFyKikKLWdjaGFyKiB3ZWJraXRf
ZG9tX2Nzc19zdHlsZV9kZWNsYXJhdGlvbl9nZXRfcHJvcGVydHlfdmFsdWUoV2ViS2l0RE9NQ1NT
U3R5bGVEZWNsYXJhdGlvbiosIGNvbnN0IGdjaGFyKikKLWdib29sZWFuIHdlYmtpdF9kb21fY3Nz
X3N0eWxlX2RlY2xhcmF0aW9uX2lzX3Byb3BlcnR5X2ltcGxpY2l0KFdlYktpdERPTUNTU1N0eWxl
RGVjbGFyYXRpb24qLCBjb25zdCBnY2hhciopCi1nY2hhciogd2Via2l0X2RvbV9jc3Nfc3R5bGVf
ZGVjbGFyYXRpb25faXRlbShXZWJLaXRET01DU1NTdHlsZURlY2xhcmF0aW9uKiwgZ3Vsb25nKQot
Z2NoYXIqIHdlYmtpdF9kb21fY3NzX3N0eWxlX2RlY2xhcmF0aW9uX3JlbW92ZV9wcm9wZXJ0eShX
ZWJLaXRET01DU1NTdHlsZURlY2xhcmF0aW9uKiwgY29uc3QgZ2NoYXIqLCBHRXJyb3IqKikKLXZv
aWQgd2Via2l0X2RvbV9jc3Nfc3R5bGVfZGVjbGFyYXRpb25fc2V0X2Nzc190ZXh0KFdlYktpdERP
TUNTU1N0eWxlRGVjbGFyYXRpb24qLCBjb25zdCBnY2hhciosIEdFcnJvcioqKQotdm9pZCB3ZWJr
aXRfZG9tX2Nzc19zdHlsZV9kZWNsYXJhdGlvbl9zZXRfcHJvcGVydHkoV2ViS2l0RE9NQ1NTU3R5
bGVEZWNsYXJhdGlvbiosIGNvbnN0IGdjaGFyKiwgY29uc3QgZ2NoYXIqLCBjb25zdCBnY2hhcios
IEdFcnJvcioqKQotR1R5cGUgd2Via2l0X2RvbV9zdHlsZV9zaGVldF9nZXRfdHlwZSh2b2lkKQot
Z2NoYXIqIHdlYmtpdF9kb21fc3R5bGVfc2hlZXRfZ2V0X2NvbnRlbnRfdHlwZShXZWJLaXRET01T
dHlsZVNoZWV0KikKLWdib29sZWFuIHdlYmtpdF9kb21fc3R5bGVfc2hlZXRfZ2V0X2Rpc2FibGVk
KFdlYktpdERPTVN0eWxlU2hlZXQqKQotZ2NoYXIqIHdlYmtpdF9kb21fc3R5bGVfc2hlZXRfZ2V0
X2hyZWYoV2ViS2l0RE9NU3R5bGVTaGVldCopCi1XZWJLaXRET01NZWRpYUxpc3QqIHdlYmtpdF9k
b21fc3R5bGVfc2hlZXRfZ2V0X21lZGlhKFdlYktpdERPTVN0eWxlU2hlZXQqKQotV2ViS2l0RE9N
Tm9kZSogd2Via2l0X2RvbV9zdHlsZV9zaGVldF9nZXRfb3duZXJfbm9kZShXZWJLaXRET01TdHls
ZVNoZWV0KikKLVdlYktpdERPTVN0eWxlU2hlZXQqIHdlYmtpdF9kb21fc3R5bGVfc2hlZXRfZ2V0
X3BhcmVudF9zdHlsZV9zaGVldChXZWJLaXRET01TdHlsZVNoZWV0KikKLWdjaGFyKiB3ZWJraXRf
ZG9tX3N0eWxlX3NoZWV0X2dldF90aXRsZShXZWJLaXRET01TdHlsZVNoZWV0KikKLXZvaWQgd2Vi
a2l0X2RvbV9zdHlsZV9zaGVldF9zZXRfZGlzYWJsZWQoV2ViS2l0RE9NU3R5bGVTaGVldCosIGdi
b29sZWFuKQotR1R5cGUgd2Via2l0X2RvbV9jc3Nfc3R5bGVfc2hlZXRfZ2V0X3R5cGUodm9pZCkK
LWdsb25nIHdlYmtpdF9kb21fY3NzX3N0eWxlX3NoZWV0X2FkZF9ydWxlKFdlYktpdERPTUNTU1N0
eWxlU2hlZXQqLCBjb25zdCBnY2hhciosIGNvbnN0IGdjaGFyKiwgZ3Vsb25nLCBHRXJyb3IqKikK
LXZvaWQgd2Via2l0X2RvbV9jc3Nfc3R5bGVfc2hlZXRfZGVsZXRlX3J1bGUoV2ViS2l0RE9NQ1NT
U3R5bGVTaGVldCosIGd1bG9uZywgR0Vycm9yKiopCi1XZWJLaXRET01DU1NSdWxlTGlzdCogd2Vi
a2l0X2RvbV9jc3Nfc3R5bGVfc2hlZXRfZ2V0X2Nzc19ydWxlcyhXZWJLaXRET01DU1NTdHlsZVNo
ZWV0KikKLVdlYktpdERPTUNTU1J1bGUqIHdlYmtpdF9kb21fY3NzX3N0eWxlX3NoZWV0X2dldF9v
d25lcl9ydWxlKFdlYktpdERPTUNTU1N0eWxlU2hlZXQqKQotV2ViS2l0RE9NQ1NTUnVsZUxpc3Qq
IHdlYmtpdF9kb21fY3NzX3N0eWxlX3NoZWV0X2dldF9ydWxlcyhXZWJLaXRET01DU1NTdHlsZVNo
ZWV0KikKLWd1bG9uZyB3ZWJraXRfZG9tX2Nzc19zdHlsZV9zaGVldF9pbnNlcnRfcnVsZShXZWJL
aXRET01DU1NTdHlsZVNoZWV0KiwgY29uc3QgZ2NoYXIqLCBndWxvbmcsIEdFcnJvcioqKQotdm9p
ZCB3ZWJraXRfZG9tX2Nzc19zdHlsZV9zaGVldF9yZW1vdmVfcnVsZShXZWJLaXRET01DU1NTdHls
ZVNoZWV0KiwgZ3Vsb25nLCBHRXJyb3IqKikKLUdUeXBlIHdlYmtpdF9kb21fY3NzX3ZhbHVlX2dl
dF90eXBlKHZvaWQpCi1XRUJLSVRfRE9NX0NTU19WQUxVRV9DU1NfSU5IRVJJVAotV0VCS0lUX0RP
TV9DU1NfVkFMVUVfQ1NTX1BSSU1JVElWRV9WQUxVRQotV0VCS0lUX0RPTV9DU1NfVkFMVUVfQ1NT
X1ZBTFVFX0xJU1QKLVdFQktJVF9ET01fQ1NTX1ZBTFVFX0NTU19DVVNUT00KLWdjaGFyKiB3ZWJr
aXRfZG9tX2Nzc192YWx1ZV9nZXRfY3NzX3RleHQoV2ViS2l0RE9NQ1NTVmFsdWUqKQotZ3VzaG9y
dCB3ZWJraXRfZG9tX2Nzc192YWx1ZV9nZXRfY3NzX3ZhbHVlX3R5cGUoV2ViS2l0RE9NQ1NTVmFs
dWUqKQotdm9pZCB3ZWJraXRfZG9tX2Nzc192YWx1ZV9zZXRfY3NzX3RleHQoV2ViS2l0RE9NQ1NT
VmFsdWUqLCBjb25zdCBnY2hhciosIEdFcnJvcioqKQotR1R5cGUgd2Via2l0X2RvbV9ldmVudF9n
ZXRfdHlwZSh2b2lkKQotV0VCS0lUX0RPTV9FVkVOVF9OT05FCi1XRUJLSVRfRE9NX0VWRU5UX0NB
UFRVUklOR19QSEFTRQotV0VCS0lUX0RPTV9FVkVOVF9BVF9UQVJHRVQKLVdFQktJVF9ET01fRVZF
TlRfQlVCQkxJTkdfUEhBU0UKLVdFQktJVF9ET01fRVZFTlRfTU9VU0VET1dOCi1XRUJLSVRfRE9N
X0VWRU5UX01PVVNFVVAKLVdFQktJVF9ET01fRVZFTlRfTU9VU0VPVkVSCi1XRUJLSVRfRE9NX0VW
RU5UX01PVVNFT1VUCi1XRUJLSVRfRE9NX0VWRU5UX01PVVNFTU9WRQotV0VCS0lUX0RPTV9FVkVO
VF9NT1VTRURSQUcKLVdFQktJVF9ET01fRVZFTlRfQ0xJQ0sKLVdFQktJVF9ET01fRVZFTlRfREJM
Q0xJQ0sKLVdFQktJVF9ET01fRVZFTlRfS0VZRE9XTgotV0VCS0lUX0RPTV9FVkVOVF9LRVlVUAot
V0VCS0lUX0RPTV9FVkVOVF9LRVlQUkVTUwotV0VCS0lUX0RPTV9FVkVOVF9EUkFHRFJPUAotV0VC
S0lUX0RPTV9FVkVOVF9GT0NVUwotV0VCS0lUX0RPTV9FVkVOVF9CTFVSCi1XRUJLSVRfRE9NX0VW
RU5UX1NFTEVDVAotV0VCS0lUX0RPTV9FVkVOVF9DSEFOR0UKLWdjaGFyKiB3ZWJraXRfZG9tX2V2
ZW50X2dldF9ldmVudF90eXBlKFdlYktpdERPTUV2ZW50KikKLWdib29sZWFuIHdlYmtpdF9kb21f
ZXZlbnRfZ2V0X2J1YmJsZXMoV2ViS2l0RE9NRXZlbnQqKQotZ2Jvb2xlYW4gd2Via2l0X2RvbV9l
dmVudF9nZXRfY2FuY2VsYWJsZShXZWJLaXRET01FdmVudCopCi1nYm9vbGVhbiB3ZWJraXRfZG9t
X2V2ZW50X2dldF9jYW5jZWxfYnViYmxlKFdlYktpdERPTUV2ZW50KikKLVdlYktpdERPTUV2ZW50
VGFyZ2V0KiB3ZWJraXRfZG9tX2V2ZW50X2dldF9jdXJyZW50X3RhcmdldChXZWJLaXRET01FdmVu
dCopCi1ndXNob3J0IHdlYmtpdF9kb21fZXZlbnRfZ2V0X2V2ZW50X3BoYXNlKFdlYktpdERPTUV2
ZW50KikKLWdib29sZWFuIHdlYmtpdF9kb21fZXZlbnRfZ2V0X3JldHVybl92YWx1ZShXZWJLaXRE
T01FdmVudCopCi1XZWJLaXRET01FdmVudFRhcmdldCogd2Via2l0X2RvbV9ldmVudF9nZXRfc3Jj
X2VsZW1lbnQoV2ViS2l0RE9NRXZlbnQqKQotV2ViS2l0RE9NRXZlbnRUYXJnZXQqIHdlYmtpdF9k
b21fZXZlbnRfZ2V0X3RhcmdldChXZWJLaXRET01FdmVudCopCi1ndWludDMyIHdlYmtpdF9kb21f
ZXZlbnRfZ2V0X3RpbWVfc3RhbXAoV2ViS2l0RE9NRXZlbnQqKQotdm9pZCB3ZWJraXRfZG9tX2V2
ZW50X2luaXRfZXZlbnQoV2ViS2l0RE9NRXZlbnQqLCBjb25zdCBnY2hhciosIGdib29sZWFuLCBn
Ym9vbGVhbikKLXZvaWQgd2Via2l0X2RvbV9ldmVudF9wcmV2ZW50X2RlZmF1bHQoV2ViS2l0RE9N
RXZlbnQqKQotdm9pZCB3ZWJraXRfZG9tX2V2ZW50X3NldF9jYW5jZWxfYnViYmxlKFdlYktpdERP
TUV2ZW50KiwgZ2Jvb2xlYW4pCi12b2lkIHdlYmtpdF9kb21fZXZlbnRfc2V0X3JldHVybl92YWx1
ZShXZWJLaXRET01FdmVudCosIGdib29sZWFuKQotdm9pZCB3ZWJraXRfZG9tX2V2ZW50X3N0b3Bf
cHJvcGFnYXRpb24oV2ViS2l0RE9NRXZlbnQqKQotR1R5cGUgd2Via2l0X2RvbV91aV9ldmVudF9n
ZXRfdHlwZSh2b2lkKQotZ2xvbmcgd2Via2l0X2RvbV91aV9ldmVudF9nZXRfY2hhcl9jb2RlKFdl
YktpdERPTVVJRXZlbnQqKQotZ2xvbmcgd2Via2l0X2RvbV91aV9ldmVudF9nZXRfZGV0YWlsKFdl
YktpdERPTVVJRXZlbnQqKQotZ2xvbmcgd2Via2l0X2RvbV91aV9ldmVudF9nZXRfa2V5X2NvZGUo
V2ViS2l0RE9NVUlFdmVudCopCi1nbG9uZyB3ZWJraXRfZG9tX3VpX2V2ZW50X2dldF9sYXllcl94
KFdlYktpdERPTVVJRXZlbnQqKQotZ2xvbmcgd2Via2l0X2RvbV91aV9ldmVudF9nZXRfbGF5ZXJf
eShXZWJLaXRET01VSUV2ZW50KikKLWdsb25nIHdlYmtpdF9kb21fdWlfZXZlbnRfZ2V0X3BhZ2Vf
eChXZWJLaXRET01VSUV2ZW50KikKLWdsb25nIHdlYmtpdF9kb21fdWlfZXZlbnRfZ2V0X3BhZ2Vf
eShXZWJLaXRET01VSUV2ZW50KikKLVdlYktpdERPTURPTVdpbmRvdyogd2Via2l0X2RvbV91aV9l
dmVudF9nZXRfdmlldyhXZWJLaXRET01VSUV2ZW50KikKLXZvaWQgd2Via2l0X2RvbV91aV9ldmVu
dF9pbml0X3VpX2V2ZW50KFdlYktpdERPTVVJRXZlbnQqLCBjb25zdCBnY2hhciosIGdib29sZWFu
LCBnYm9vbGVhbiwgV2ViS2l0RE9NRE9NV2luZG93KiwgZ2xvbmcpCi1HVHlwZSB3ZWJraXRfZG9t
X3doZWVsX2V2ZW50X2dldF90eXBlKHZvaWQpCi1nbG9uZyB3ZWJraXRfZG9tX3doZWVsX2V2ZW50
X2dldF93aGVlbF9kZWx0YShXZWJLaXRET01XaGVlbEV2ZW50KikKLWdsb25nIHdlYmtpdF9kb21f
d2hlZWxfZXZlbnRfZ2V0X3doZWVsX2RlbHRhX3goV2ViS2l0RE9NV2hlZWxFdmVudCopCi1nbG9u
ZyB3ZWJraXRfZG9tX3doZWVsX2V2ZW50X2dldF93aGVlbF9kZWx0YV95KFdlYktpdERPTVdoZWVs
RXZlbnQqKQotdm9pZCB3ZWJraXRfZG9tX3doZWVsX2V2ZW50X2luaXRfd2hlZWxfZXZlbnQoV2Vi
S2l0RE9NV2hlZWxFdmVudCosIGdsb25nLCBnbG9uZywgV2ViS2l0RE9NRE9NV2luZG93KiwgZ2xv
bmcsIGdsb25nLCBnbG9uZywgZ2xvbmcsIGdib29sZWFuLCBnYm9vbGVhbiwgZ2Jvb2xlYW4sIGdi
b29sZWFuKQotR1R5cGUgd2Via2l0X2RvbV9rZXlib2FyZF9ldmVudF9nZXRfdHlwZSh2b2lkKQot
V0VCS0lUX0RPTV9LRVlCT0FSRF9FVkVOVF9LRVlfTE9DQVRJT05fU1RBTkRBUkQKLVdFQktJVF9E
T01fS0VZQk9BUkRfRVZFTlRfS0VZX0xPQ0FUSU9OX0xFRlQKLVdFQktJVF9ET01fS0VZQk9BUkRf
RVZFTlRfS0VZX0xPQ0FUSU9OX1JJR0hUCi1XRUJLSVRfRE9NX0tFWUJPQVJEX0VWRU5UX0tFWV9M
T0NBVElPTl9OVU1QQUQKLWdib29sZWFuIHdlYmtpdF9kb21fa2V5Ym9hcmRfZXZlbnRfZ2V0X2Fs
dF9ncmFwaF9rZXkoV2ViS2l0RE9NS2V5Ym9hcmRFdmVudCopCi1nYm9vbGVhbiB3ZWJraXRfZG9t
X2tleWJvYXJkX2V2ZW50X2dldF9hbHRfa2V5KFdlYktpdERPTUtleWJvYXJkRXZlbnQqKQotZ2Jv
b2xlYW4gd2Via2l0X2RvbV9rZXlib2FyZF9ldmVudF9nZXRfY3RybF9rZXkoV2ViS2l0RE9NS2V5
Ym9hcmRFdmVudCopCi1nY2hhciogd2Via2l0X2RvbV9rZXlib2FyZF9ldmVudF9nZXRfa2V5X2lk
ZW50aWZpZXIoV2ViS2l0RE9NS2V5Ym9hcmRFdmVudCopCi1ndWxvbmcgd2Via2l0X2RvbV9rZXli
b2FyZF9ldmVudF9nZXRfa2V5X2xvY2F0aW9uKFdlYktpdERPTUtleWJvYXJkRXZlbnQqKQotZ2Jv
b2xlYW4gd2Via2l0X2RvbV9rZXlib2FyZF9ldmVudF9nZXRfbWV0YV9rZXkoV2ViS2l0RE9NS2V5
Ym9hcmRFdmVudCopCi1nYm9vbGVhbiB3ZWJraXRfZG9tX2tleWJvYXJkX2V2ZW50X2dldF9tb2Rp
Zmllcl9zdGF0ZShXZWJLaXRET01LZXlib2FyZEV2ZW50KiwgY29uc3QgZ2NoYXIqKQotZ2Jvb2xl
YW4gd2Via2l0X2RvbV9rZXlib2FyZF9ldmVudF9nZXRfc2hpZnRfa2V5KFdlYktpdERPTUtleWJv
YXJkRXZlbnQqKQotdm9pZCB3ZWJraXRfZG9tX2tleWJvYXJkX2V2ZW50X2luaXRfa2V5Ym9hcmRf
ZXZlbnQoV2ViS2l0RE9NS2V5Ym9hcmRFdmVudCosIGNvbnN0IGdjaGFyKiwgZ2Jvb2xlYW4sIGdi
b29sZWFuLCBXZWJLaXRET01ET01XaW5kb3cqLCBjb25zdCBnY2hhciosIGd1bG9uZywgZ2Jvb2xl
YW4sIGdib29sZWFuLCBnYm9vbGVhbiwgZ2Jvb2xlYW4sIGdib29sZWFuKQotR1R5cGUgd2Via2l0
X2RvbV9tb3VzZV9ldmVudF9nZXRfdHlwZSh2b2lkKQotZ2Jvb2xlYW4gd2Via2l0X2RvbV9tb3Vz
ZV9ldmVudF9nZXRfYWx0X2tleShXZWJLaXRET01Nb3VzZUV2ZW50KikKLWd1c2hvcnQgd2Via2l0
X2RvbV9tb3VzZV9ldmVudF9nZXRfYnV0dG9uKFdlYktpdERPTU1vdXNlRXZlbnQqKQotZ2xvbmcg
d2Via2l0X2RvbV9tb3VzZV9ldmVudF9nZXRfY2xpZW50X3goV2ViS2l0RE9NTW91c2VFdmVudCop
Ci1nbG9uZyB3ZWJraXRfZG9tX21vdXNlX2V2ZW50X2dldF9jbGllbnRfeShXZWJLaXRET01Nb3Vz
ZUV2ZW50KikKLWdib29sZWFuIHdlYmtpdF9kb21fbW91c2VfZXZlbnRfZ2V0X2N0cmxfa2V5KFdl
YktpdERPTU1vdXNlRXZlbnQqKQotV2ViS2l0RE9NTm9kZSogd2Via2l0X2RvbV9tb3VzZV9ldmVu
dF9nZXRfZnJvbV9lbGVtZW50KFdlYktpdERPTU1vdXNlRXZlbnQqKQotZ2Jvb2xlYW4gd2Via2l0
X2RvbV9tb3VzZV9ldmVudF9nZXRfbWV0YV9rZXkoV2ViS2l0RE9NTW91c2VFdmVudCopCi1nbG9u
ZyB3ZWJraXRfZG9tX21vdXNlX2V2ZW50X2dldF9vZmZzZXRfeChXZWJLaXRET01Nb3VzZUV2ZW50
KikKLWdsb25nIHdlYmtpdF9kb21fbW91c2VfZXZlbnRfZ2V0X29mZnNldF95KFdlYktpdERPTU1v
dXNlRXZlbnQqKQotV2ViS2l0RE9NRXZlbnRUYXJnZXQqIHdlYmtpdF9kb21fbW91c2VfZXZlbnRf
Z2V0X3JlbGF0ZWRfdGFyZ2V0KFdlYktpdERPTU1vdXNlRXZlbnQqKQotZ2xvbmcgd2Via2l0X2Rv
bV9tb3VzZV9ldmVudF9nZXRfc2NyZWVuX3goV2ViS2l0RE9NTW91c2VFdmVudCopCi1nbG9uZyB3
ZWJraXRfZG9tX21vdXNlX2V2ZW50X2dldF9zY3JlZW5feShXZWJLaXRET01Nb3VzZUV2ZW50KikK
LWdib29sZWFuIHdlYmtpdF9kb21fbW91c2VfZXZlbnRfZ2V0X3NoaWZ0X2tleShXZWJLaXRET01N
b3VzZUV2ZW50KikKLVdlYktpdERPTU5vZGUqIHdlYmtpdF9kb21fbW91c2VfZXZlbnRfZ2V0X3Rv
X2VsZW1lbnQoV2ViS2l0RE9NTW91c2VFdmVudCopCi1nbG9uZyB3ZWJraXRfZG9tX21vdXNlX2V2
ZW50X2dldF94KFdlYktpdERPTU1vdXNlRXZlbnQqKQotZ2xvbmcgd2Via2l0X2RvbV9tb3VzZV9l
dmVudF9nZXRfeShXZWJLaXRET01Nb3VzZUV2ZW50KikKLXZvaWQgd2Via2l0X2RvbV9tb3VzZV9l
dmVudF9pbml0X21vdXNlX2V2ZW50KFdlYktpdERPTU1vdXNlRXZlbnQqLCBjb25zdCBnY2hhcios
IGdib29sZWFuLCBnYm9vbGVhbiwgV2ViS2l0RE9NRE9NV2luZG93KiwgZ2xvbmcsIGdsb25nLCBn
bG9uZywgZ2xvbmcsIGdsb25nLCBnYm9vbGVhbiwgZ2Jvb2xlYW4sIGdib29sZWFuLCBnYm9vbGVh
biwgZ3VzaG9ydCwgV2ViS2l0RE9NRXZlbnRUYXJnZXQqKQotR1R5cGUgd2Via2l0X2RvbV9vYmpl
Y3RfZ2V0X3R5cGUodm9pZCkKLUdUeXBlIHdlYmtpdF9kb21fcmFuZ2VfZ2V0X3R5cGUodm9pZCkK
LVdFQktJVF9ET01fUkFOR0VfU1RBUlRfVE9fU1RBUlQKLVdFQktJVF9ET01fUkFOR0VfU1RBUlRf
VE9fRU5ECi1XRUJLSVRfRE9NX1JBTkdFX0VORF9UT19FTkQKLVdFQktJVF9ET01fUkFOR0VfRU5E
X1RPX1NUQVJUCi1XRUJLSVRfRE9NX1JBTkdFX05PREVfQkVGT1JFCi1XRUJLSVRfRE9NX1JBTkdF
X05PREVfQUZURVIKLVdFQktJVF9ET01fUkFOR0VfTk9ERV9CRUZPUkVfQU5EX0FGVEVSCi1XRUJL
SVRfRE9NX1JBTkdFX05PREVfSU5TSURFCi1XZWJLaXRET01Eb2N1bWVudEZyYWdtZW50KiB3ZWJr
aXRfZG9tX3JhbmdlX2Nsb25lX2NvbnRlbnRzKFdlYktpdERPTVJhbmdlKiwgR0Vycm9yKiopCi1X
ZWJLaXRET01SYW5nZSogd2Via2l0X2RvbV9yYW5nZV9jbG9uZV9yYW5nZShXZWJLaXRET01SYW5n
ZSosIEdFcnJvcioqKQotdm9pZCB3ZWJraXRfZG9tX3JhbmdlX2NvbGxhcHNlKFdlYktpdERPTVJh
bmdlKiwgZ2Jvb2xlYW4sIEdFcnJvcioqKQotZ3Nob3J0IHdlYmtpdF9kb21fcmFuZ2VfY29tcGFy
ZV9ib3VuZGFyeV9wb2ludHMoV2ViS2l0RE9NUmFuZ2UqLCBndXNob3J0LCBXZWJLaXRET01SYW5n
ZSosIEdFcnJvcioqKQotZ3Nob3J0IHdlYmtpdF9kb21fcmFuZ2VfY29tcGFyZV9ub2RlKFdlYktp
dERPTVJhbmdlKiwgV2ViS2l0RE9NTm9kZSosIEdFcnJvcioqKQotZ3Nob3J0IHdlYmtpdF9kb21f
cmFuZ2VfY29tcGFyZV9wb2ludChXZWJLaXRET01SYW5nZSosIFdlYktpdERPTU5vZGUqLCBnbG9u
ZywgR0Vycm9yKiopCi12b2lkIHdlYmtpdF9kb21fcmFuZ2VfZGVsZXRlX2NvbnRlbnRzKFdlYktp
dERPTVJhbmdlKiwgR0Vycm9yKiopCi12b2lkIHdlYmtpdF9kb21fcmFuZ2VfZGV0YWNoKFdlYktp
dERPTVJhbmdlKiwgR0Vycm9yKiopCi1XZWJLaXRET01Eb2N1bWVudEZyYWdtZW50KiB3ZWJraXRf
ZG9tX3JhbmdlX2V4dHJhY3RfY29udGVudHMoV2ViS2l0RE9NUmFuZ2UqLCBHRXJyb3IqKikKLWdi
b29sZWFuIHdlYmtpdF9kb21fcmFuZ2VfZ2V0X2NvbGxhcHNlZChXZWJLaXRET01SYW5nZSosIEdF
cnJvcioqKQotV2ViS2l0RE9NTm9kZSogd2Via2l0X2RvbV9yYW5nZV9nZXRfY29tbW9uX2FuY2Vz
dG9yX2NvbnRhaW5lcihXZWJLaXRET01SYW5nZSosIEdFcnJvcioqKQotV2ViS2l0RE9NTm9kZSog
d2Via2l0X2RvbV9yYW5nZV9nZXRfZW5kX2NvbnRhaW5lcihXZWJLaXRET01SYW5nZSosIEdFcnJv
cioqKQotZ2xvbmcgd2Via2l0X2RvbV9yYW5nZV9nZXRfZW5kX29mZnNldChXZWJLaXRET01SYW5n
ZSosIEdFcnJvcioqKQotV2ViS2l0RE9NTm9kZSogd2Via2l0X2RvbV9yYW5nZV9nZXRfc3RhcnRf
Y29udGFpbmVyKFdlYktpdERPTVJhbmdlKiwgR0Vycm9yKiopCi1nbG9uZyB3ZWJraXRfZG9tX3Jh
bmdlX2dldF9zdGFydF9vZmZzZXQoV2ViS2l0RE9NUmFuZ2UqLCBHRXJyb3IqKikKLWdjaGFyKiB3
ZWJraXRfZG9tX3JhbmdlX2dldF90ZXh0KFdlYktpdERPTVJhbmdlKikKLXZvaWQgd2Via2l0X2Rv
bV9yYW5nZV9pbnNlcnRfbm9kZShXZWJLaXRET01SYW5nZSosIFdlYktpdERPTU5vZGUqLCBHRXJy
b3IqKikKLWdib29sZWFuIHdlYmtpdF9kb21fcmFuZ2VfaW50ZXJzZWN0c19ub2RlKFdlYktpdERP
TVJhbmdlKiwgV2ViS2l0RE9NTm9kZSosIEdFcnJvcioqKQotZ2Jvb2xlYW4gd2Via2l0X2RvbV9y
YW5nZV9pc19wb2ludF9pbl9yYW5nZShXZWJLaXRET01SYW5nZSosIFdlYktpdERPTU5vZGUqLCBn
bG9uZywgR0Vycm9yKiopCi12b2lkIHdlYmtpdF9kb21fcmFuZ2Vfc2VsZWN0X25vZGVfY29udGVu
dHMoV2ViS2l0RE9NUmFuZ2UqLCBXZWJLaXRET01Ob2RlKiwgR0Vycm9yKiopCi12b2lkIHdlYmtp
dF9kb21fcmFuZ2Vfc2VsZWN0X25vZGUoV2ViS2l0RE9NUmFuZ2UqLCBXZWJLaXRET01Ob2RlKiwg
R0Vycm9yKiopCi12b2lkIHdlYmtpdF9kb21fcmFuZ2Vfc2V0X2VuZF9hZnRlcihXZWJLaXRET01S
YW5nZSosIFdlYktpdERPTU5vZGUqLCBHRXJyb3IqKikKLXZvaWQgd2Via2l0X2RvbV9yYW5nZV9z
ZXRfZW5kX2JlZm9yZShXZWJLaXRET01SYW5nZSosIFdlYktpdERPTU5vZGUqLCBHRXJyb3IqKikK
LXZvaWQgd2Via2l0X2RvbV9yYW5nZV9zZXRfZW5kKFdlYktpdERPTVJhbmdlKiwgV2ViS2l0RE9N
Tm9kZSosIGdsb25nLCBHRXJyb3IqKikKLXZvaWQgd2Via2l0X2RvbV9yYW5nZV9zZXRfc3RhcnRf
YWZ0ZXIoV2ViS2l0RE9NUmFuZ2UqLCBXZWJLaXRET01Ob2RlKiwgR0Vycm9yKiopCi12b2lkIHdl
YmtpdF9kb21fcmFuZ2Vfc2V0X3N0YXJ0X2JlZm9yZShXZWJLaXRET01SYW5nZSosIFdlYktpdERP
TU5vZGUqLCBHRXJyb3IqKikKLXZvaWQgd2Via2l0X2RvbV9yYW5nZV9zZXRfc3RhcnQoV2ViS2l0
RE9NUmFuZ2UqLCBXZWJLaXRET01Ob2RlKiwgZ2xvbmcsIEdFcnJvcioqKQotdm9pZCB3ZWJraXRf
ZG9tX3JhbmdlX3N1cnJvdW5kX2NvbnRlbnRzKFdlYktpdERPTVJhbmdlKiwgV2ViS2l0RE9NTm9k
ZSosIEdFcnJvcioqKQotV2ViS2l0RE9NRG9jdW1lbnRGcmFnbWVudCogd2Via2l0X2RvbV9yYW5n
ZV9jcmVhdGVfY29udGV4dHVhbF9mcmFnbWVudChXZWJLaXRET01SYW5nZSosIGNvbnN0IGdjaGFy
KiwgR0Vycm9yKiopCi1nY2hhciogd2Via2l0X2RvbV9yYW5nZV90b19zdHJpbmcoV2ViS2l0RE9N
UmFuZ2UqLCBHRXJyb3IqKikKLUdUeXBlIHdlYmtpdF9kb21fbm9kZV9pdGVyYXRvcl9nZXRfdHlw
ZSh2b2lkKQotdm9pZCB3ZWJraXRfZG9tX25vZGVfaXRlcmF0b3JfZGV0YWNoKFdlYktpdERPTU5v
ZGVJdGVyYXRvciopCi1nYm9vbGVhbiB3ZWJraXRfZG9tX25vZGVfaXRlcmF0b3JfZ2V0X2V4cGFu
ZF9lbnRpdHlfcmVmZXJlbmNlcyhXZWJLaXRET01Ob2RlSXRlcmF0b3IqKQotV2ViS2l0RE9NTm9k
ZUZpbHRlciogd2Via2l0X2RvbV9ub2RlX2l0ZXJhdG9yX2dldF9maWx0ZXIoV2ViS2l0RE9NTm9k
ZUl0ZXJhdG9yKikKLWdib29sZWFuIHdlYmtpdF9kb21fbm9kZV9pdGVyYXRvcl9nZXRfcG9pbnRl
cl9iZWZvcmVfcmVmZXJlbmNlX25vZGUoV2ViS2l0RE9NTm9kZUl0ZXJhdG9yKikKLVdlYktpdERP
TU5vZGUqIHdlYmtpdF9kb21fbm9kZV9pdGVyYXRvcl9nZXRfcmVmZXJlbmNlX25vZGUoV2ViS2l0
RE9NTm9kZUl0ZXJhdG9yKikKLVdlYktpdERPTU5vZGUqIHdlYmtpdF9kb21fbm9kZV9pdGVyYXRv
cl9nZXRfcm9vdChXZWJLaXRET01Ob2RlSXRlcmF0b3IqKQotZ3Vsb25nIHdlYmtpdF9kb21fbm9k
ZV9pdGVyYXRvcl9nZXRfd2hhdF90b19zaG93KFdlYktpdERPTU5vZGVJdGVyYXRvciopCi1XZWJL
aXRET01Ob2RlKiB3ZWJraXRfZG9tX25vZGVfaXRlcmF0b3JfbmV4dF9ub2RlKFdlYktpdERPTU5v
ZGVJdGVyYXRvciosIEdFcnJvcioqKQotV2ViS2l0RE9NTm9kZSogd2Via2l0X2RvbV9ub2RlX2l0
ZXJhdG9yX3ByZXZpb3VzX25vZGUoV2ViS2l0RE9NTm9kZUl0ZXJhdG9yKiwgR0Vycm9yKiopCi1H
VHlwZSB3ZWJraXRfZG9tX21lZGlhX2xpc3RfZ2V0X3R5cGUodm9pZCkKLXZvaWQgd2Via2l0X2Rv
bV9tZWRpYV9saXN0X2FwcGVuZF9tZWRpdW0oV2ViS2l0RE9NTWVkaWFMaXN0KiwgY29uc3QgZ2No
YXIqLCBHRXJyb3IqKikKLXZvaWQgd2Via2l0X2RvbV9tZWRpYV9saXN0X2RlbGV0ZV9tZWRpdW0o
V2ViS2l0RE9NTWVkaWFMaXN0KiwgY29uc3QgZ2NoYXIqLCBHRXJyb3IqKikKLWd1bG9uZyB3ZWJr
aXRfZG9tX21lZGlhX2xpc3RfZ2V0X2xlbmd0aChXZWJLaXRET01NZWRpYUxpc3QqKQotZ2NoYXIq
IHdlYmtpdF9kb21fbWVkaWFfbGlzdF9nZXRfbWVkaWFfdGV4dChXZWJLaXRET01NZWRpYUxpc3Qq
KQotZ2NoYXIqIHdlYmtpdF9kb21fbWVkaWFfbGlzdF9pdGVtKFdlYktpdERPTU1lZGlhTGlzdCos
IGd1bG9uZykKLXZvaWQgd2Via2l0X2RvbV9tZWRpYV9saXN0X3NldF9tZWRpYV90ZXh0KFdlYktp
dERPTU1lZGlhTGlzdCosIGNvbnN0IGdjaGFyKiwgR0Vycm9yKiopCi1HVHlwZSB3ZWJraXRfZG9t
X3RyZWVfd2Fsa2VyX2dldF90eXBlKHZvaWQpCi1XZWJLaXRET01Ob2RlKiB3ZWJraXRfZG9tX3Ry
ZWVfd2Fsa2VyX2ZpcnN0X2NoaWxkKFdlYktpdERPTVRyZWVXYWxrZXIqKQotV2ViS2l0RE9NTm9k
ZSogd2Via2l0X2RvbV90cmVlX3dhbGtlcl9nZXRfY3VycmVudF9ub2RlKFdlYktpdERPTVRyZWVX
YWxrZXIqKQotZ2Jvb2xlYW4gd2Via2l0X2RvbV90cmVlX3dhbGtlcl9nZXRfZXhwYW5kX2VudGl0
eV9yZWZlcmVuY2VzKFdlYktpdERPTVRyZWVXYWxrZXIqKQotV2ViS2l0RE9NTm9kZUZpbHRlciog
d2Via2l0X2RvbV90cmVlX3dhbGtlcl9nZXRfZmlsdGVyKFdlYktpdERPTVRyZWVXYWxrZXIqKQot
V2ViS2l0RE9NTm9kZSogd2Via2l0X2RvbV90cmVlX3dhbGtlcl9nZXRfcm9vdChXZWJLaXRET01U
cmVlV2Fsa2VyKikKLWd1bG9uZyB3ZWJraXRfZG9tX3RyZWVfd2Fsa2VyX2dldF93aGF0X3RvX3No
b3coV2ViS2l0RE9NVHJlZVdhbGtlciopCi1XZWJLaXRET01Ob2RlKiB3ZWJraXRfZG9tX3RyZWVf
d2Fsa2VyX2xhc3RfY2hpbGQoV2ViS2l0RE9NVHJlZVdhbGtlciopCi1XZWJLaXRET01Ob2RlKiB3
ZWJraXRfZG9tX3RyZWVfd2Fsa2VyX25leHRfbm9kZShXZWJLaXRET01UcmVlV2Fsa2VyKikKLVdl
YktpdERPTU5vZGUqIHdlYmtpdF9kb21fdHJlZV93YWxrZXJfbmV4dF9zaWJsaW5nKFdlYktpdERP
TVRyZWVXYWxrZXIqKQotV2ViS2l0RE9NTm9kZSogd2Via2l0X2RvbV90cmVlX3dhbGtlcl9wYXJl
bnRfbm9kZShXZWJLaXRET01UcmVlV2Fsa2VyKikKLVdlYktpdERPTU5vZGUqIHdlYmtpdF9kb21f
dHJlZV93YWxrZXJfcHJldmlvdXNfbm9kZShXZWJLaXRET01UcmVlV2Fsa2VyKikKLVdlYktpdERP
TU5vZGUqIHdlYmtpdF9kb21fdHJlZV93YWxrZXJfcHJldmlvdXNfc2libGluZyhXZWJLaXRET01U
cmVlV2Fsa2VyKikKLXZvaWQgd2Via2l0X2RvbV90cmVlX3dhbGtlcl9zZXRfY3VycmVudF9ub2Rl
KFdlYktpdERPTVRyZWVXYWxrZXIqLCBXZWJLaXRET01Ob2RlKiwgR0Vycm9yKiopCi1HVHlwZSB3
ZWJraXRfZG9tX3hwYXRoX3Jlc3VsdF9nZXRfdHlwZSh2b2lkKQotV0VCS0lUX0RPTV9YUEFUSF9S
RVNVTFRfQU5ZX1RZUEUKLVdFQktJVF9ET01fWFBBVEhfUkVTVUxUX05VTUJFUl9UWVBFCi1XRUJL
SVRfRE9NX1hQQVRIX1JFU1VMVF9TVFJJTkdfVFlQRQotV0VCS0lUX0RPTV9YUEFUSF9SRVNVTFRf
Qk9PTEVBTl9UWVBFCi1XRUJLSVRfRE9NX1hQQVRIX1JFU1VMVF9VTk9SREVSRURfTk9ERV9JVEVS
QVRPUl9UWVBFCi1XRUJLSVRfRE9NX1hQQVRIX1JFU1VMVF9PUkRFUkVEX05PREVfSVRFUkFUT1Jf
VFlQRQotV0VCS0lUX0RPTV9YUEFUSF9SRVNVTFRfVU5PUkRFUkVEX05PREVfU05BUFNIT1RfVFlQ
RQotV0VCS0lUX0RPTV9YUEFUSF9SRVNVTFRfT1JERVJFRF9OT0RFX1NOQVBTSE9UX1RZUEUKLVdF
QktJVF9ET01fWFBBVEhfUkVTVUxUX0FOWV9VTk9SREVSRURfTk9ERV9UWVBFCi1XRUJLSVRfRE9N
X1hQQVRIX1JFU1VMVF9GSVJTVF9PUkRFUkVEX05PREVfVFlQRQotZ2Jvb2xlYW4gd2Via2l0X2Rv
bV94cGF0aF9yZXN1bHRfZ2V0X2Jvb2xlYW5fdmFsdWUoV2ViS2l0RE9NWFBhdGhSZXN1bHQqLCBH
RXJyb3IqKikKLWdib29sZWFuIHdlYmtpdF9kb21feHBhdGhfcmVzdWx0X2dldF9pbnZhbGlkX2l0
ZXJhdG9yX3N0YXRlKFdlYktpdERPTVhQYXRoUmVzdWx0KikKLWdkb3VibGUgd2Via2l0X2RvbV94
cGF0aF9yZXN1bHRfZ2V0X251bWJlcl92YWx1ZShXZWJLaXRET01YUGF0aFJlc3VsdCosIEdFcnJv
cioqKQotZ3VzaG9ydCB3ZWJraXRfZG9tX3hwYXRoX3Jlc3VsdF9nZXRfcmVzdWx0X3R5cGUoV2Vi
S2l0RE9NWFBhdGhSZXN1bHQqKQotV2ViS2l0RE9NTm9kZSogd2Via2l0X2RvbV94cGF0aF9yZXN1
bHRfZ2V0X3NpbmdsZV9ub2RlX3ZhbHVlKFdlYktpdERPTVhQYXRoUmVzdWx0KiwgR0Vycm9yKiop
Ci1ndWxvbmcgd2Via2l0X2RvbV94cGF0aF9yZXN1bHRfZ2V0X3NuYXBzaG90X2xlbmd0aChXZWJL
aXRET01YUGF0aFJlc3VsdCosIEdFcnJvcioqKQotZ2NoYXIqIHdlYmtpdF9kb21feHBhdGhfcmVz
dWx0X2dldF9zdHJpbmdfdmFsdWUoV2ViS2l0RE9NWFBhdGhSZXN1bHQqLCBHRXJyb3IqKikKLVdl
YktpdERPTU5vZGUqIHdlYmtpdF9kb21feHBhdGhfcmVzdWx0X2l0ZXJhdGVfbmV4dChXZWJLaXRE
T01YUGF0aFJlc3VsdCosIEdFcnJvcioqKQotV2ViS2l0RE9NTm9kZSogd2Via2l0X2RvbV94cGF0
aF9yZXN1bHRfc25hcHNob3RfaXRlbShXZWJLaXRET01YUGF0aFJlc3VsdCosIGd1bG9uZywgR0Vy
cm9yKiopCi1HVHlwZSB3ZWJraXRfZG9tX3hwYXRoX2V4cHJlc3Npb25fZ2V0X3R5cGUodm9pZCkK
LVdlYktpdERPTVhQYXRoUmVzdWx0KiB3ZWJraXRfZG9tX3hwYXRoX2V4cHJlc3Npb25fZXZhbHVh
dGUoV2ViS2l0RE9NWFBhdGhFeHByZXNzaW9uKiwgV2ViS2l0RE9NTm9kZSosIGd1c2hvcnQsIFdl
YktpdERPTVhQYXRoUmVzdWx0KiwgR0Vycm9yKiopCi1HVHlwZSB3ZWJraXRfZG9tX2V2ZW50X3Rh
cmdldF9nZXRfdHlwZSh2b2lkKQotZ2Jvb2xlYW4gd2Via2l0X2RvbV9ldmVudF90YXJnZXRfYWRk
X2V2ZW50X2xpc3RlbmVyKFdlYktpdERPTUV2ZW50VGFyZ2V0KiB0YXJnZXQsIGNvbnN0IGNoYXIq
LCBHQ2FsbGJhY2ssIGdib29sZWFuLCBncG9pbnRlcikKLWdib29sZWFuIHdlYmtpdF9kb21fZXZl
bnRfdGFyZ2V0X2FkZF9ldmVudF9saXN0ZW5lcl93aXRoX2Nsb3N1cmUoV2ViS2l0RE9NRXZlbnRU
YXJnZXQqLCBjb25zdCBjaGFyKiwgR0Nsb3N1cmUqLCBnYm9vbGVhbikKLXZvaWQgd2Via2l0X2Rv
bV9ldmVudF90YXJnZXRfZGlzcGF0Y2hfZXZlbnQoV2ViS2l0RE9NRXZlbnRUYXJnZXQqLCBXZWJL
aXRET01FdmVudCogZXZlbnQsIEdFcnJvcioqKQotZ2Jvb2xlYW4gd2Via2l0X2RvbV9ldmVudF90
YXJnZXRfcmVtb3ZlX2V2ZW50X2xpc3RlbmVyKFdlYktpdERPTUV2ZW50VGFyZ2V0KiwgY29uc3Qg
Y2hhciosIEdDYWxsYmFjaywgZ2Jvb2xlYW4pCi1nYm9vbGVhbiB3ZWJraXRfZG9tX2V2ZW50X3Rh
cmdldF9yZW1vdmVfZXZlbnRfbGlzdGVuZXJfd2l0aF9jbG9zdXJlKFdlYktpdERPTUV2ZW50VGFy
Z2V0KiwgY29uc3QgY2hhciosIEdDbG9zdXJlKiwgZ2Jvb2xlYW4pCi1HVHlwZSB3ZWJraXRfZG9t
X25vZGVfZmlsdGVyX2dldF90eXBlKHZvaWQpCi1XRUJLSVRfRE9NX05PREVfRklMVEVSX0FDQ0VQ
VAotV0VCS0lUX0RPTV9OT0RFX0ZJTFRFUl9SRUpFQ1QKLVdFQktJVF9ET01fTk9ERV9GSUxURVJf
U0tJUAotV0VCS0lUX0RPTV9OT0RFX0ZJTFRFUl9TSE9XX0FMTAotV0VCS0lUX0RPTV9OT0RFX0ZJ
TFRFUl9TSE9XX0VMRU1FTlQKLVdFQktJVF9ET01fTk9ERV9GSUxURVJfU0hPV19BVFRSSUJVVEUK
LVdFQktJVF9ET01fTk9ERV9GSUxURVJfU0hPV19URVhUCi1XRUJLSVRfRE9NX05PREVfRklMVEVS
X1NIT1dfQ0RBVEFfU0VDVElPTgotV0VCS0lUX0RPTV9OT0RFX0ZJTFRFUl9TSE9XX0VOVElUWV9S
RUZFUkVOQ0UKLVdFQktJVF9ET01fTk9ERV9GSUxURVJfU0hPV19FTlRJVFkKLVdFQktJVF9ET01f
Tk9ERV9GSUxURVJfU0hPV19QUk9DRVNTSU5HX0lOU1RSVUNUSU9OCi1XRUJLSVRfRE9NX05PREVf
RklMVEVSX1NIT1dfQ09NTUVOVAotV0VCS0lUX0RPTV9OT0RFX0ZJTFRFUl9TSE9XX0RPQ1VNRU5U
Ci1XRUJLSVRfRE9NX05PREVfRklMVEVSX1NIT1dfRE9DVU1FTlRfVFlQRQotV0VCS0lUX0RPTV9O
T0RFX0ZJTFRFUl9TSE9XX0RPQ1VNRU5UX0ZSQUdNRU5UCi1XRUJLSVRfRE9NX05PREVfRklMVEVS
X1NIT1dfTk9UQVRJT04KLWdzaG9ydCB3ZWJraXRfZG9tX25vZGVfZmlsdGVyX2FjY2VwdF9ub2Rl
KFdlYktpdERPTU5vZGVGaWx0ZXIqLCBXZWJLaXRET01Ob2RlKikKLUdUeXBlIHdlYmtpdF9kb21f
eHBhdGhfbnNfcmVzb2x2ZXJfZ2V0X3R5cGUodm9pZCkKLWdjaGFyKiB3ZWJraXRfZG9tX3hwYXRo
X25zX3Jlc29sdmVyX2xvb2t1cF9uYW1lc3BhY2VfdXJpKFdlYktpdERPTVhQYXRoTlNSZXNvbHZl
ciosIGNvbnN0IGdjaGFyKikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vd2Via2l0ZG9tYXV0b2NsZWFudXBzLXVuc3RhYmxl
LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9N
L3dlYmtpdGRvbWF1dG9jbGVhbnVwcy11bnN0YWJsZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA4NTM5ZDk1Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vd2Via2l0ZG9tYXV0b2NsZWFudXBzLXVuc3RhYmxl
LmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDUgKzAsMCBAQAotLyogVGhpcyBmaWxlIGlzIHBhcnQg
b2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICAgVGhpcyBmaWxlIGhhcyBiZWVu
IGdlbmVyYXRlZCBieSBnb2JqZWN0LWdlbmVyYXRlLWhlYWRlcnMucGwuICBETyBOT1QgTU9ESUZZ
IQotICAgCi0gICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCi0gICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAot
ICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKLSAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KLQotICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
LSAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCi0gICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSovCi0KLSNp
Zm5kZWYgd2Via2l0ZG9tYXV0b2NsZWFudXBzX2gKLSNkZWZpbmUgd2Via2l0ZG9tYXV0b2NsZWFu
dXBzX2gKLQotI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+Ci0KLSNpZmRlZiBHX0RFRklORV9BVVRP
UFRSX0NMRUFOVVBfRlVOQwotI2lmbmRlZiBfX0dJX1NDQU5ORVJfXwotCi1HX0RFRklORV9BVVRP
UFRSX0NMRUFOVVBfRlVOQyAoV2ViS2l0RE9NQW5pbWF0YWJsZSwgZ19vYmplY3RfdW5yZWYpCi1H
X0RFRklORV9BVVRPUFRSX0NMRUFOVVBfRlVOQyAoV2ViS2l0RE9NQW5pbWF0aW9uRWZmZWN0LCBn
X29iamVjdF91bnJlZikKLUdfREVGSU5FX0FVVE9QVFJfQ0xFQU5VUF9GVU5DIChXZWJLaXRET01B
bmltYXRpb25UaW1lbGluZSwgZ19vYmplY3RfdW5yZWYpCi1HX0RFRklORV9BVVRPUFRSX0NMRUFO
VVBfRlVOQyAoV2ViS2l0RE9NQXVkaW9UcmFjaywgZ19vYmplY3RfdW5yZWYpCi1HX0RFRklORV9B
VVRPUFRSX0NMRUFOVVBfRlVOQyAoV2ViS2l0RE9NQXVkaW9UcmFja0xpc3QsIGdfb2JqZWN0X3Vu
cmVmKQotR19ERUZJTkVfQVVUT1BUUl9DTEVBTlVQX0ZVTkMgKFdlYktpdERPTUJhclByb3AsIGdf
b2JqZWN0X3VucmVmKQotR19ERUZJTkVfQVVUT1BUUl9DTEVBTlVQX0ZVTkMgKFdlYktpdERPTUJh
dHRlcnlNYW5hZ2VyLCBnX29iamVjdF91bnJlZikKLUdfREVGSU5FX0FVVE9QVFJfQ0xFQU5VUF9G
VU5DIChXZWJLaXRET01ET01BcHBsaWNhdGlvbkNhY2hlLCBnX29iamVjdF91bnJlZikKLUdfREVG
SU5FX0FVVE9QVFJfQ0xFQU5VUF9GVU5DIChXZWJLaXRET01ET01DU1NOYW1lc3BhY2UsIGdfb2Jq
ZWN0X3VucmVmKQotR19ERUZJTkVfQVVUT1BUUl9DTEVBTlVQX0ZVTkMgKFdlYktpdERPTURPTU1p
bWVUeXBlLCBnX29iamVjdF91bnJlZikKLUdfREVGSU5FX0FVVE9QVFJfQ0xFQU5VUF9GVU5DIChX
ZWJLaXRET01ET01NaW1lVHlwZUFycmF5LCBnX29iamVjdF91bnJlZikKLUdfREVGSU5FX0FVVE9Q
VFJfQ0xFQU5VUF9GVU5DIChXZWJLaXRET01ET01OYW1lZEZsb3dDb2xsZWN0aW9uLCBnX29iamVj
dF91bnJlZikKLUdfREVGSU5FX0FVVE9QVFJfQ0xFQU5VUF9GVU5DIChXZWJLaXRET01ET01QbHVn
aW4sIGdfb2JqZWN0X3VucmVmKQotR19ERUZJTkVfQVVUT1BUUl9DTEVBTlVQX0ZVTkMgKFdlYktp
dERPTURPTVBsdWdpbkFycmF5LCBnX29iamVjdF91bnJlZikKLUdfREVGSU5FX0FVVE9QVFJfQ0xF
QU5VUF9GVU5DIChXZWJLaXRET01ET01TZWxlY3Rpb24sIGdfb2JqZWN0X3VucmVmKQotR19ERUZJ
TkVfQVVUT1BUUl9DTEVBTlVQX0ZVTkMgKFdlYktpdERPTURPTVN0cmluZ0xpc3QsIGdfb2JqZWN0
X3VucmVmKQotR19ERUZJTkVfQVVUT1BUUl9DTEVBTlVQX0ZVTkMgKFdlYktpdERPTURPTVN0cmlu
Z01hcCwgZ19vYmplY3RfdW5yZWYpCi1HX0RFRklORV9BVVRPUFRSX0NMRUFOVVBfRlVOQyAoV2Vi
S2l0RE9NRE9NVG9rZW5MaXN0LCBnX29iamVjdF91bnJlZikKLUdfREVGSU5FX0FVVE9QVFJfQ0xF
QU5VUF9GVU5DIChXZWJLaXRET01ET01XaW5kb3dTcGVlY2hTeW50aGVzaXMsIGdfb2JqZWN0X3Vu
cmVmKQotR19ERUZJTkVfQVVUT1BUUl9DTEVBTlVQX0ZVTkMgKFdlYktpdERPTURhdGFDdWUsIGdf
b2JqZWN0X3VucmVmKQotR19ERUZJTkVfQVVUT1BUUl9DTEVBTlVQX0ZVTkMgKFdlYktpdERPTURh
dGFiYXNlLCBnX29iamVjdF91bnJlZikKLUdfREVGSU5FX0FVVE9QVFJfQ0xFQU5VUF9GVU5DIChX
ZWJLaXRET01Eb2N1bWVudEFuaW1hdGlvbiwgZ19vYmplY3RfdW5yZWYpCi1HX0RFRklORV9BVVRP
UFRSX0NMRUFOVVBfRlVOQyAoV2ViS2l0RE9NRG9jdW1lbnRUaW1lbGluZSwgZ19vYmplY3RfdW5y
ZWYpCi1HX0RFRklORV9BVVRPUFRSX0NMRUFOVVBfRlVOQyAoV2ViS2l0RE9NR2FtZXBhZCwgZ19v
YmplY3RfdW5yZWYpCi1HX0RFRklORV9BVVRPUFRSX0NMRUFOVVBfRlVOQyAoV2ViS2l0RE9NR2Ft
ZXBhZExpc3QsIGdfb2JqZWN0X3VucmVmKQotR19ERUZJTkVfQVVUT1BUUl9DTEVBTlVQX0ZVTkMg
KFdlYktpdERPTUdlb2xvY2F0aW9uLCBnX29iamVjdF91bnJlZikKLUdfREVGSU5FX0FVVE9QVFJf
Q0xFQU5VUF9GVU5DIChXZWJLaXRET01IVE1MQXVkaW9FbGVtZW50LCBnX29iamVjdF91bnJlZikK
LUdfREVGSU5FX0FVVE9QVFJfQ0xFQU5VUF9GVU5DIChXZWJLaXRET01IVE1MRGV0YWlsc0VsZW1l
bnQsIGdfb2JqZWN0X3VucmVmKQotR19ERUZJTkVfQVVUT1BUUl9DTEVBTlVQX0ZVTkMgKFdlYktp
dERPTUhUTUxLZXlnZW5FbGVtZW50LCBnX29iamVjdF91bnJlZikKLUdfREVGSU5FX0FVVE9QVFJf
Q0xFQU5VUF9GVU5DIChXZWJLaXRET01IVE1MTWVkaWFFbGVtZW50LCBnX29iamVjdF91bnJlZikK
LUdfREVGSU5FX0FVVE9QVFJfQ0xFQU5VUF9GVU5DIChXZWJLaXRET01IVE1MVmlkZW9FbGVtZW50
LCBnX29iamVjdF91bnJlZikKLUdfREVGSU5FX0FVVE9QVFJfQ0xFQU5VUF9GVU5DIChXZWJLaXRE
T01IaXN0b3J5LCBnX29iamVjdF91bnJlZikKLUdfREVGSU5FX0FVVE9QVFJfQ0xFQU5VUF9GVU5D
IChXZWJLaXRET01LZXlmcmFtZUVmZmVjdCwgZ19vYmplY3RfdW5yZWYpCi1HX0RFRklORV9BVVRP
UFRSX0NMRUFOVVBfRlVOQyAoV2ViS2l0RE9NTG9jYXRpb24sIGdfb2JqZWN0X3VucmVmKQotR19E
RUZJTkVfQVVUT1BUUl9DTEVBTlVQX0ZVTkMgKFdlYktpdERPTU1lZGlhQ29udHJvbGxlciwgZ19v
YmplY3RfdW5yZWYpCi1HX0RFRklORV9BVVRPUFRSX0NMRUFOVVBfRlVOQyAoV2ViS2l0RE9NTWVk
aWFEZXZpY2VzLCBnX29iamVjdF91bnJlZikKLUdfREVGSU5FX0FVVE9QVFJfQ0xFQU5VUF9GVU5D
IChXZWJLaXRET01NZWRpYUVycm9yLCBnX29iamVjdF91bnJlZikKLUdfREVGSU5FX0FVVE9QVFJf
Q0xFQU5VUF9GVU5DIChXZWJLaXRET01NZWRpYVF1ZXJ5TGlzdCwgZ19vYmplY3RfdW5yZWYpCi1H
X0RFRklORV9BVVRPUFRSX0NMRUFOVVBfRlVOQyAoV2ViS2l0RE9NTWVkaWFUcmFja1N1cHBvcnRl
ZENvbnN0cmFpbnRzLCBnX29iamVjdF91bnJlZikKLUdfREVGSU5FX0FVVE9QVFJfQ0xFQU5VUF9G
VU5DIChXZWJLaXRET01NZXNzYWdlUG9ydCwgZ19vYmplY3RfdW5yZWYpCi1HX0RFRklORV9BVVRP
UFRSX0NMRUFOVVBfRlVOQyAoV2ViS2l0RE9NTmF2aWdhdG9yLCBnX29iamVjdF91bnJlZikKLUdf
REVGSU5FX0FVVE9QVFJfQ0xFQU5VUF9GVU5DIChXZWJLaXRET01OYXZpZ2F0b3JNZWRpYURldmlj
ZXMsIGdfb2JqZWN0X3VucmVmKQotR19ERUZJTkVfQVVUT1BUUl9DTEVBTlVQX0ZVTkMgKFdlYktp
dERPTVBlcmZvcm1hbmNlLCBnX29iamVjdF91bnJlZikKLUdfREVGSU5FX0FVVE9QVFJfQ0xFQU5V
UF9GVU5DIChXZWJLaXRET01QZXJmb3JtYW5jZUVudHJ5LCBnX29iamVjdF91bnJlZikKLUdfREVG
SU5FX0FVVE9QVFJfQ0xFQU5VUF9GVU5DIChXZWJLaXRET01QZXJmb3JtYW5jZU5hdmlnYXRpb24s
IGdfb2JqZWN0X3VucmVmKQotR19ERUZJTkVfQVVUT1BUUl9DTEVBTlVQX0ZVTkMgKFdlYktpdERP
TVBlcmZvcm1hbmNlVGltaW5nLCBnX29iamVjdF91bnJlZikKLUdfREVGSU5FX0FVVE9QVFJfQ0xF
QU5VUF9GVU5DIChXZWJLaXRET01TY3JlZW4sIGdfb2JqZWN0X3VucmVmKQotR19ERUZJTkVfQVVU
T1BUUl9DTEVBTlVQX0ZVTkMgKFdlYktpdERPTVNwZWVjaFN5bnRoZXNpcywgZ19vYmplY3RfdW5y
ZWYpCi1HX0RFRklORV9BVVRPUFRSX0NMRUFOVVBfRlVOQyAoV2ViS2l0RE9NU3BlZWNoU3ludGhl
c2lzRXZlbnQsIGdfb2JqZWN0X3VucmVmKQotR19ERUZJTkVfQVVUT1BUUl9DTEVBTlVQX0ZVTkMg
KFdlYktpdERPTVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSwgZ19vYmplY3RfdW5yZWYpCi1HX0RF
RklORV9BVVRPUFRSX0NMRUFOVVBfRlVOQyAoV2ViS2l0RE9NU3BlZWNoU3ludGhlc2lzVm9pY2Us
IGdfb2JqZWN0X3VucmVmKQotR19ERUZJTkVfQVVUT1BUUl9DTEVBTlVQX0ZVTkMgKFdlYktpdERP
TVN0b3JhZ2UsIGdfb2JqZWN0X3VucmVmKQotR19ERUZJTkVfQVVUT1BUUl9DTEVBTlVQX0ZVTkMg
KFdlYktpdERPTVN0b3JhZ2VJbmZvLCBnX29iamVjdF91bnJlZikKLUdfREVGSU5FX0FVVE9QVFJf
Q0xFQU5VUF9GVU5DIChXZWJLaXRET01TdG9yYWdlUXVvdGEsIGdfb2JqZWN0X3VucmVmKQotR19E
RUZJTkVfQVVUT1BUUl9DTEVBTlVQX0ZVTkMgKFdlYktpdERPTVN0eWxlTWVkaWEsIGdfb2JqZWN0
X3VucmVmKQotR19ERUZJTkVfQVVUT1BUUl9DTEVBTlVQX0ZVTkMgKFdlYktpdERPTVRleHRUcmFj
aywgZ19vYmplY3RfdW5yZWYpCi1HX0RFRklORV9BVVRPUFRSX0NMRUFOVVBfRlVOQyAoV2ViS2l0
RE9NVGV4dFRyYWNrQ3VlLCBnX29iamVjdF91bnJlZikKLUdfREVGSU5FX0FVVE9QVFJfQ0xFQU5V
UF9GVU5DIChXZWJLaXRET01UZXh0VHJhY2tDdWVMaXN0LCBnX29iamVjdF91bnJlZikKLUdfREVG
SU5FX0FVVE9QVFJfQ0xFQU5VUF9GVU5DIChXZWJLaXRET01UZXh0VHJhY2tMaXN0LCBnX29iamVj
dF91bnJlZikKLUdfREVGSU5FX0FVVE9QVFJfQ0xFQU5VUF9GVU5DIChXZWJLaXRET01UaW1lUmFu
Z2VzLCBnX29iamVjdF91bnJlZikKLUdfREVGSU5FX0FVVE9QVFJfQ0xFQU5VUF9GVU5DIChXZWJL
aXRET01Ub3VjaCwgZ19vYmplY3RfdW5yZWYpCi1HX0RFRklORV9BVVRPUFRSX0NMRUFOVVBfRlVO
QyAoV2ViS2l0RE9NVHJhY2tFdmVudCwgZ19vYmplY3RfdW5yZWYpCi1HX0RFRklORV9BVVRPUFRS
X0NMRUFOVVBfRlVOQyAoV2ViS2l0RE9NVXNlck1lc3NhZ2VIYW5kbGVyLCBnX29iamVjdF91bnJl
ZikKLUdfREVGSU5FX0FVVE9QVFJfQ0xFQU5VUF9GVU5DIChXZWJLaXRET01Vc2VyTWVzc2FnZUhh
bmRsZXJzTmFtZXNwYWNlLCBnX29iamVjdF91bnJlZikKLUdfREVGSU5FX0FVVE9QVFJfQ0xFQU5V
UF9GVU5DIChXZWJLaXRET01WVFRDdWUsIGdfb2JqZWN0X3VucmVmKQotR19ERUZJTkVfQVVUT1BU
Ul9DTEVBTlVQX0ZVTkMgKFdlYktpdERPTVZhbGlkaXR5U3RhdGUsIGdfb2JqZWN0X3VucmVmKQot
R19ERUZJTkVfQVVUT1BUUl9DTEVBTlVQX0ZVTkMgKFdlYktpdERPTVZpZGVvUGxheWJhY2tRdWFs
aXR5LCBnX29iamVjdF91bnJlZikKLUdfREVGSU5FX0FVVE9QVFJfQ0xFQU5VUF9GVU5DIChXZWJL
aXRET01WaWRlb1RyYWNrLCBnX29iamVjdF91bnJlZikKLUdfREVGSU5FX0FVVE9QVFJfQ0xFQU5V
UF9GVU5DIChXZWJLaXRET01WaWRlb1RyYWNrTGlzdCwgZ19vYmplY3RfdW5yZWYpCi1HX0RFRklO
RV9BVVRPUFRSX0NMRUFOVVBfRlVOQyAoV2ViS2l0RE9NV2ViQW5pbWF0aW9uLCBnX29iamVjdF91
bnJlZikKLUdfREVGSU5FX0FVVE9QVFJfQ0xFQU5VUF9GVU5DIChXZWJLaXRET01XZWJLaXROYW1l
ZEZsb3csIGdfb2JqZWN0X3VucmVmKQotR19ERUZJTkVfQVVUT1BUUl9DTEVBTlVQX0ZVTkMgKFdl
YktpdERPTVdlYktpdE5hbWVzcGFjZSwgZ19vYmplY3RfdW5yZWYpCi1HX0RFRklORV9BVVRPUFRS
X0NMRUFOVVBfRlVOQyAoV2ViS2l0RE9NV2ViS2l0UG9pbnQsIGdfb2JqZWN0X3VucmVmKQotCi0j
ZW5kaWYKLSNlbmRpZgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vd2Via2l0ZG9tZGVmaW5lcy11bnN0YWJs
ZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RP
TS93ZWJraXRkb21kZWZpbmVzLXVuc3RhYmxlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDJjNzJmOWUuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS93ZWJraXRkb21kZWZpbmVzLXVuc3RhYmxlLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSwyNDUgKzAsMCBAQAotLyogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdl
YktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRl
ZCBieSBnb2JqZWN0LWdlbmVyYXRlLWhlYWRlcnMucGwuICBETyBOT1QgTU9ESUZZIQotICAgCi0g
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCi0gICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYwotICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
LSAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCi0gICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KLQotICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCi0gICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSovCi0KLSNpZm5kZWYgd2Vi
a2l0ZG9tZGVmaW5lc191bnN0YWJsZV9oCi0jZGVmaW5lIHdlYmtpdGRvbWRlZmluZXNfdW5zdGFi
bGVfaAotCi0jaW5jbHVkZSA8d2Via2l0ZG9tL3dlYmtpdGRvbWRlZmluZXMuaD4KLQotI2lmZGVm
IFdFQktJVF9ET01fVVNFX1VOU1RBQkxFX0FQSQotCi10eXBlZGVmIHN0cnVjdCBfV2ViS2l0RE9N
QW5pbWF0YWJsZSBXZWJLaXRET01BbmltYXRhYmxlOwotdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdERP
TUFuaW1hdGFibGVDbGFzcyBXZWJLaXRET01BbmltYXRhYmxlQ2xhc3M7Ci0KLXR5cGVkZWYgc3Ry
dWN0IF9XZWJLaXRET01BbmltYXRpb25FZmZlY3QgV2ViS2l0RE9NQW5pbWF0aW9uRWZmZWN0Owot
dHlwZWRlZiBzdHJ1Y3QgX1dlYktpdERPTUFuaW1hdGlvbkVmZmVjdENsYXNzIFdlYktpdERPTUFu
aW1hdGlvbkVmZmVjdENsYXNzOwotCi10eXBlZGVmIHN0cnVjdCBfV2ViS2l0RE9NQW5pbWF0aW9u
VGltZWxpbmUgV2ViS2l0RE9NQW5pbWF0aW9uVGltZWxpbmU7Ci10eXBlZGVmIHN0cnVjdCBfV2Vi
S2l0RE9NQW5pbWF0aW9uVGltZWxpbmVDbGFzcyBXZWJLaXRET01BbmltYXRpb25UaW1lbGluZUNs
YXNzOwotCi10eXBlZGVmIHN0cnVjdCBfV2ViS2l0RE9NQXVkaW9UcmFjayBXZWJLaXRET01BdWRp
b1RyYWNrOwotdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdERPTUF1ZGlvVHJhY2tDbGFzcyBXZWJLaXRE
T01BdWRpb1RyYWNrQ2xhc3M7Ci0KLXR5cGVkZWYgc3RydWN0IF9XZWJLaXRET01BdWRpb1RyYWNr
TGlzdCBXZWJLaXRET01BdWRpb1RyYWNrTGlzdDsKLXR5cGVkZWYgc3RydWN0IF9XZWJLaXRET01B
dWRpb1RyYWNrTGlzdENsYXNzIFdlYktpdERPTUF1ZGlvVHJhY2tMaXN0Q2xhc3M7Ci0KLXR5cGVk
ZWYgc3RydWN0IF9XZWJLaXRET01CYXJQcm9wIFdlYktpdERPTUJhclByb3A7Ci10eXBlZGVmIHN0
cnVjdCBfV2ViS2l0RE9NQmFyUHJvcENsYXNzIFdlYktpdERPTUJhclByb3BDbGFzczsKLQotdHlw
ZWRlZiBzdHJ1Y3QgX1dlYktpdERPTUJhdHRlcnlNYW5hZ2VyIFdlYktpdERPTUJhdHRlcnlNYW5h
Z2VyOwotdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdERPTUJhdHRlcnlNYW5hZ2VyQ2xhc3MgV2ViS2l0
RE9NQmF0dGVyeU1hbmFnZXJDbGFzczsKLQotdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdERPTURPTUFw
cGxpY2F0aW9uQ2FjaGUgV2ViS2l0RE9NRE9NQXBwbGljYXRpb25DYWNoZTsKLXR5cGVkZWYgc3Ry
dWN0IF9XZWJLaXRET01ET01BcHBsaWNhdGlvbkNhY2hlQ2xhc3MgV2ViS2l0RE9NRE9NQXBwbGlj
YXRpb25DYWNoZUNsYXNzOwotCi10eXBlZGVmIHN0cnVjdCBfV2ViS2l0RE9NRE9NQ1NTTmFtZXNw
YWNlIFdlYktpdERPTURPTUNTU05hbWVzcGFjZTsKLXR5cGVkZWYgc3RydWN0IF9XZWJLaXRET01E
T01DU1NOYW1lc3BhY2VDbGFzcyBXZWJLaXRET01ET01DU1NOYW1lc3BhY2VDbGFzczsKLQotdHlw
ZWRlZiBzdHJ1Y3QgX1dlYktpdERPTURPTU1pbWVUeXBlIFdlYktpdERPTURPTU1pbWVUeXBlOwot
dHlwZWRlZiBzdHJ1Y3QgX1dlYktpdERPTURPTU1pbWVUeXBlQ2xhc3MgV2ViS2l0RE9NRE9NTWlt
ZVR5cGVDbGFzczsKLQotdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdERPTURPTU1pbWVUeXBlQXJyYXkg
V2ViS2l0RE9NRE9NTWltZVR5cGVBcnJheTsKLXR5cGVkZWYgc3RydWN0IF9XZWJLaXRET01ET01N
aW1lVHlwZUFycmF5Q2xhc3MgV2ViS2l0RE9NRE9NTWltZVR5cGVBcnJheUNsYXNzOwotCi10eXBl
ZGVmIHN0cnVjdCBfV2ViS2l0RE9NRE9NTmFtZWRGbG93Q29sbGVjdGlvbiBXZWJLaXRET01ET01O
YW1lZEZsb3dDb2xsZWN0aW9uOwotdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdERPTURPTU5hbWVkRmxv
d0NvbGxlY3Rpb25DbGFzcyBXZWJLaXRET01ET01OYW1lZEZsb3dDb2xsZWN0aW9uQ2xhc3M7Ci0K
LXR5cGVkZWYgc3RydWN0IF9XZWJLaXRET01ET01QbHVnaW4gV2ViS2l0RE9NRE9NUGx1Z2luOwot
dHlwZWRlZiBzdHJ1Y3QgX1dlYktpdERPTURPTVBsdWdpbkNsYXNzIFdlYktpdERPTURPTVBsdWdp
bkNsYXNzOwotCi10eXBlZGVmIHN0cnVjdCBfV2ViS2l0RE9NRE9NUGx1Z2luQXJyYXkgV2ViS2l0
RE9NRE9NUGx1Z2luQXJyYXk7Ci10eXBlZGVmIHN0cnVjdCBfV2ViS2l0RE9NRE9NUGx1Z2luQXJy
YXlDbGFzcyBXZWJLaXRET01ET01QbHVnaW5BcnJheUNsYXNzOwotCi10eXBlZGVmIHN0cnVjdCBf
V2ViS2l0RE9NRE9NU3RyaW5nTGlzdCBXZWJLaXRET01ET01TdHJpbmdMaXN0OwotdHlwZWRlZiBz
dHJ1Y3QgX1dlYktpdERPTURPTVN0cmluZ0xpc3RDbGFzcyBXZWJLaXRET01ET01TdHJpbmdMaXN0
Q2xhc3M7Ci0KLXR5cGVkZWYgc3RydWN0IF9XZWJLaXRET01ET01TdHJpbmdNYXAgV2ViS2l0RE9N
RE9NU3RyaW5nTWFwOwotdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdERPTURPTVN0cmluZ01hcENsYXNz
IFdlYktpdERPTURPTVN0cmluZ01hcENsYXNzOwotCi10eXBlZGVmIHN0cnVjdCBfV2ViS2l0RE9N
RE9NV2luZG93U3BlZWNoU3ludGhlc2lzIFdlYktpdERPTURPTVdpbmRvd1NwZWVjaFN5bnRoZXNp
czsKLXR5cGVkZWYgc3RydWN0IF9XZWJLaXRET01ET01XaW5kb3dTcGVlY2hTeW50aGVzaXNDbGFz
cyBXZWJLaXRET01ET01XaW5kb3dTcGVlY2hTeW50aGVzaXNDbGFzczsKLQotdHlwZWRlZiBzdHJ1
Y3QgX1dlYktpdERPTURhdGFDdWUgV2ViS2l0RE9NRGF0YUN1ZTsKLXR5cGVkZWYgc3RydWN0IF9X
ZWJLaXRET01EYXRhQ3VlQ2xhc3MgV2ViS2l0RE9NRGF0YUN1ZUNsYXNzOwotCi10eXBlZGVmIHN0
cnVjdCBfV2ViS2l0RE9NRGF0YWJhc2UgV2ViS2l0RE9NRGF0YWJhc2U7Ci10eXBlZGVmIHN0cnVj
dCBfV2ViS2l0RE9NRGF0YWJhc2VDbGFzcyBXZWJLaXRET01EYXRhYmFzZUNsYXNzOwotCi10eXBl
ZGVmIHN0cnVjdCBfV2ViS2l0RE9NRG9jdW1lbnRBbmltYXRpb24gV2ViS2l0RE9NRG9jdW1lbnRB
bmltYXRpb247Ci10eXBlZGVmIHN0cnVjdCBfV2ViS2l0RE9NRG9jdW1lbnRBbmltYXRpb25DbGFz
cyBXZWJLaXRET01Eb2N1bWVudEFuaW1hdGlvbkNsYXNzOwotCi10eXBlZGVmIHN0cnVjdCBfV2Vi
S2l0RE9NRG9jdW1lbnRUaW1lbGluZSBXZWJLaXRET01Eb2N1bWVudFRpbWVsaW5lOwotdHlwZWRl
ZiBzdHJ1Y3QgX1dlYktpdERPTURvY3VtZW50VGltZWxpbmVDbGFzcyBXZWJLaXRET01Eb2N1bWVu
dFRpbWVsaW5lQ2xhc3M7Ci0KLXR5cGVkZWYgc3RydWN0IF9XZWJLaXRET01HYW1lcGFkIFdlYktp
dERPTUdhbWVwYWQ7Ci10eXBlZGVmIHN0cnVjdCBfV2ViS2l0RE9NR2FtZXBhZENsYXNzIFdlYktp
dERPTUdhbWVwYWRDbGFzczsKLQotdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdERPTUdhbWVwYWRMaXN0
IFdlYktpdERPTUdhbWVwYWRMaXN0OwotdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdERPTUdhbWVwYWRM
aXN0Q2xhc3MgV2ViS2l0RE9NR2FtZXBhZExpc3RDbGFzczsKLQotdHlwZWRlZiBzdHJ1Y3QgX1dl
YktpdERPTUdlb2xvY2F0aW9uIFdlYktpdERPTUdlb2xvY2F0aW9uOwotdHlwZWRlZiBzdHJ1Y3Qg
X1dlYktpdERPTUdlb2xvY2F0aW9uQ2xhc3MgV2ViS2l0RE9NR2VvbG9jYXRpb25DbGFzczsKLQot
dHlwZWRlZiBzdHJ1Y3QgX1dlYktpdERPTUhUTUxBdWRpb0VsZW1lbnQgV2ViS2l0RE9NSFRNTEF1
ZGlvRWxlbWVudDsKLXR5cGVkZWYgc3RydWN0IF9XZWJLaXRET01IVE1MQXVkaW9FbGVtZW50Q2xh
c3MgV2ViS2l0RE9NSFRNTEF1ZGlvRWxlbWVudENsYXNzOwotCi10eXBlZGVmIHN0cnVjdCBfV2Vi
S2l0RE9NSFRNTERldGFpbHNFbGVtZW50IFdlYktpdERPTUhUTUxEZXRhaWxzRWxlbWVudDsKLXR5
cGVkZWYgc3RydWN0IF9XZWJLaXRET01IVE1MRGV0YWlsc0VsZW1lbnRDbGFzcyBXZWJLaXRET01I
VE1MRGV0YWlsc0VsZW1lbnRDbGFzczsKLQotdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdERPTUhUTUxL
ZXlnZW5FbGVtZW50IFdlYktpdERPTUhUTUxLZXlnZW5FbGVtZW50OwotdHlwZWRlZiBzdHJ1Y3Qg
X1dlYktpdERPTUhUTUxLZXlnZW5FbGVtZW50Q2xhc3MgV2ViS2l0RE9NSFRNTEtleWdlbkVsZW1l
bnRDbGFzczsKLQotdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdERPTUhUTUxNZWRpYUVsZW1lbnQgV2Vi
S2l0RE9NSFRNTE1lZGlhRWxlbWVudDsKLXR5cGVkZWYgc3RydWN0IF9XZWJLaXRET01IVE1MTWVk
aWFFbGVtZW50Q2xhc3MgV2ViS2l0RE9NSFRNTE1lZGlhRWxlbWVudENsYXNzOwotCi10eXBlZGVm
IHN0cnVjdCBfV2ViS2l0RE9NSFRNTFZpZGVvRWxlbWVudCBXZWJLaXRET01IVE1MVmlkZW9FbGVt
ZW50OwotdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdERPTUhUTUxWaWRlb0VsZW1lbnRDbGFzcyBXZWJL
aXRET01IVE1MVmlkZW9FbGVtZW50Q2xhc3M7Ci0KLXR5cGVkZWYgc3RydWN0IF9XZWJLaXRET01I
aXN0b3J5IFdlYktpdERPTUhpc3Rvcnk7Ci10eXBlZGVmIHN0cnVjdCBfV2ViS2l0RE9NSGlzdG9y
eUNsYXNzIFdlYktpdERPTUhpc3RvcnlDbGFzczsKLQotdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdERP
TUtleWZyYW1lRWZmZWN0IFdlYktpdERPTUtleWZyYW1lRWZmZWN0OwotdHlwZWRlZiBzdHJ1Y3Qg
X1dlYktpdERPTUtleWZyYW1lRWZmZWN0Q2xhc3MgV2ViS2l0RE9NS2V5ZnJhbWVFZmZlY3RDbGFz
czsKLQotdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdERPTUxvY2F0aW9uIFdlYktpdERPTUxvY2F0aW9u
OwotdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdERPTUxvY2F0aW9uQ2xhc3MgV2ViS2l0RE9NTG9jYXRp
b25DbGFzczsKLQotdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdERPTU1lZGlhQ29udHJvbGxlciBXZWJL
aXRET01NZWRpYUNvbnRyb2xsZXI7Ci10eXBlZGVmIHN0cnVjdCBfV2ViS2l0RE9NTWVkaWFDb250
cm9sbGVyQ2xhc3MgV2ViS2l0RE9NTWVkaWFDb250cm9sbGVyQ2xhc3M7Ci0KLXR5cGVkZWYgc3Ry
dWN0IF9XZWJLaXRET01NZWRpYURldmljZXMgV2ViS2l0RE9NTWVkaWFEZXZpY2VzOwotdHlwZWRl
ZiBzdHJ1Y3QgX1dlYktpdERPTU1lZGlhRGV2aWNlc0NsYXNzIFdlYktpdERPTU1lZGlhRGV2aWNl
c0NsYXNzOwotCi10eXBlZGVmIHN0cnVjdCBfV2ViS2l0RE9NTWVkaWFFcnJvciBXZWJLaXRET01N
ZWRpYUVycm9yOwotdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdERPTU1lZGlhRXJyb3JDbGFzcyBXZWJL
aXRET01NZWRpYUVycm9yQ2xhc3M7Ci0KLXR5cGVkZWYgc3RydWN0IF9XZWJLaXRET01NZWRpYVF1
ZXJ5TGlzdCBXZWJLaXRET01NZWRpYVF1ZXJ5TGlzdDsKLXR5cGVkZWYgc3RydWN0IF9XZWJLaXRE
T01NZWRpYVF1ZXJ5TGlzdENsYXNzIFdlYktpdERPTU1lZGlhUXVlcnlMaXN0Q2xhc3M7Ci0KLXR5
cGVkZWYgc3RydWN0IF9XZWJLaXRET01NZWRpYVRyYWNrU3VwcG9ydGVkQ29uc3RyYWludHMgV2Vi
S2l0RE9NTWVkaWFUcmFja1N1cHBvcnRlZENvbnN0cmFpbnRzOwotdHlwZWRlZiBzdHJ1Y3QgX1dl
YktpdERPTU1lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50c0NsYXNzIFdlYktpdERPTU1lZGlh
VHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50c0NsYXNzOwotCi10eXBlZGVmIHN0cnVjdCBfV2ViS2l0
RE9NTWVzc2FnZVBvcnQgV2ViS2l0RE9NTWVzc2FnZVBvcnQ7Ci10eXBlZGVmIHN0cnVjdCBfV2Vi
S2l0RE9NTWVzc2FnZVBvcnRDbGFzcyBXZWJLaXRET01NZXNzYWdlUG9ydENsYXNzOwotCi10eXBl
ZGVmIHN0cnVjdCBfV2ViS2l0RE9NTmF2aWdhdG9yIFdlYktpdERPTU5hdmlnYXRvcjsKLXR5cGVk
ZWYgc3RydWN0IF9XZWJLaXRET01OYXZpZ2F0b3JDbGFzcyBXZWJLaXRET01OYXZpZ2F0b3JDbGFz
czsKLQotdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdERPTU5hdmlnYXRvck1lZGlhRGV2aWNlcyBXZWJL
aXRET01OYXZpZ2F0b3JNZWRpYURldmljZXM7Ci10eXBlZGVmIHN0cnVjdCBfV2ViS2l0RE9NTmF2
aWdhdG9yTWVkaWFEZXZpY2VzQ2xhc3MgV2ViS2l0RE9NTmF2aWdhdG9yTWVkaWFEZXZpY2VzQ2xh
c3M7Ci0KLXR5cGVkZWYgc3RydWN0IF9XZWJLaXRET01QZXJmb3JtYW5jZSBXZWJLaXRET01QZXJm
b3JtYW5jZTsKLXR5cGVkZWYgc3RydWN0IF9XZWJLaXRET01QZXJmb3JtYW5jZUNsYXNzIFdlYktp
dERPTVBlcmZvcm1hbmNlQ2xhc3M7Ci0KLXR5cGVkZWYgc3RydWN0IF9XZWJLaXRET01QZXJmb3Jt
YW5jZUVudHJ5IFdlYktpdERPTVBlcmZvcm1hbmNlRW50cnk7Ci10eXBlZGVmIHN0cnVjdCBfV2Vi
S2l0RE9NUGVyZm9ybWFuY2VFbnRyeUNsYXNzIFdlYktpdERPTVBlcmZvcm1hbmNlRW50cnlDbGFz
czsKLQotdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdERPTVBlcmZvcm1hbmNlTmF2aWdhdGlvbiBXZWJL
aXRET01QZXJmb3JtYW5jZU5hdmlnYXRpb247Ci10eXBlZGVmIHN0cnVjdCBfV2ViS2l0RE9NUGVy
Zm9ybWFuY2VOYXZpZ2F0aW9uQ2xhc3MgV2ViS2l0RE9NUGVyZm9ybWFuY2VOYXZpZ2F0aW9uQ2xh
c3M7Ci0KLXR5cGVkZWYgc3RydWN0IF9XZWJLaXRET01QZXJmb3JtYW5jZVRpbWluZyBXZWJLaXRE
T01QZXJmb3JtYW5jZVRpbWluZzsKLXR5cGVkZWYgc3RydWN0IF9XZWJLaXRET01QZXJmb3JtYW5j
ZVRpbWluZ0NsYXNzIFdlYktpdERPTVBlcmZvcm1hbmNlVGltaW5nQ2xhc3M7Ci0KLXR5cGVkZWYg
c3RydWN0IF9XZWJLaXRET01TY3JlZW4gV2ViS2l0RE9NU2NyZWVuOwotdHlwZWRlZiBzdHJ1Y3Qg
X1dlYktpdERPTVNjcmVlbkNsYXNzIFdlYktpdERPTVNjcmVlbkNsYXNzOwotCi10eXBlZGVmIHN0
cnVjdCBfV2ViS2l0RE9NU3BlZWNoU3ludGhlc2lzIFdlYktpdERPTVNwZWVjaFN5bnRoZXNpczsK
LXR5cGVkZWYgc3RydWN0IF9XZWJLaXRET01TcGVlY2hTeW50aGVzaXNDbGFzcyBXZWJLaXRET01T
cGVlY2hTeW50aGVzaXNDbGFzczsKLQotdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdERPTVNwZWVjaFN5
bnRoZXNpc0V2ZW50IFdlYktpdERPTVNwZWVjaFN5bnRoZXNpc0V2ZW50OwotdHlwZWRlZiBzdHJ1
Y3QgX1dlYktpdERPTVNwZWVjaFN5bnRoZXNpc0V2ZW50Q2xhc3MgV2ViS2l0RE9NU3BlZWNoU3lu
dGhlc2lzRXZlbnRDbGFzczsKLQotdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdERPTVNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZSBXZWJLaXRET01TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U7Ci10eXBlZGVm
IHN0cnVjdCBfV2ViS2l0RE9NU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlQ2xhc3MgV2ViS2l0RE9N
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlQ2xhc3M7Ci0KLXR5cGVkZWYgc3RydWN0IF9XZWJLaXRE
T01TcGVlY2hTeW50aGVzaXNWb2ljZSBXZWJLaXRET01TcGVlY2hTeW50aGVzaXNWb2ljZTsKLXR5
cGVkZWYgc3RydWN0IF9XZWJLaXRET01TcGVlY2hTeW50aGVzaXNWb2ljZUNsYXNzIFdlYktpdERP
TVNwZWVjaFN5bnRoZXNpc1ZvaWNlQ2xhc3M7Ci0KLXR5cGVkZWYgc3RydWN0IF9XZWJLaXRET01T
dG9yYWdlIFdlYktpdERPTVN0b3JhZ2U7Ci10eXBlZGVmIHN0cnVjdCBfV2ViS2l0RE9NU3RvcmFn
ZUNsYXNzIFdlYktpdERPTVN0b3JhZ2VDbGFzczsKLQotdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdERP
TVN0b3JhZ2VJbmZvIFdlYktpdERPTVN0b3JhZ2VJbmZvOwotdHlwZWRlZiBzdHJ1Y3QgX1dlYktp
dERPTVN0b3JhZ2VJbmZvQ2xhc3MgV2ViS2l0RE9NU3RvcmFnZUluZm9DbGFzczsKLQotdHlwZWRl
ZiBzdHJ1Y3QgX1dlYktpdERPTVN0b3JhZ2VRdW90YSBXZWJLaXRET01TdG9yYWdlUXVvdGE7Ci10
eXBlZGVmIHN0cnVjdCBfV2ViS2l0RE9NU3RvcmFnZVF1b3RhQ2xhc3MgV2ViS2l0RE9NU3RvcmFn
ZVF1b3RhQ2xhc3M7Ci0KLXR5cGVkZWYgc3RydWN0IF9XZWJLaXRET01TdHlsZU1lZGlhIFdlYktp
dERPTVN0eWxlTWVkaWE7Ci10eXBlZGVmIHN0cnVjdCBfV2ViS2l0RE9NU3R5bGVNZWRpYUNsYXNz
IFdlYktpdERPTVN0eWxlTWVkaWFDbGFzczsKLQotdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdERPTVRl
eHRUcmFjayBXZWJLaXRET01UZXh0VHJhY2s7Ci10eXBlZGVmIHN0cnVjdCBfV2ViS2l0RE9NVGV4
dFRyYWNrQ2xhc3MgV2ViS2l0RE9NVGV4dFRyYWNrQ2xhc3M7Ci0KLXR5cGVkZWYgc3RydWN0IF9X
ZWJLaXRET01UZXh0VHJhY2tDdWUgV2ViS2l0RE9NVGV4dFRyYWNrQ3VlOwotdHlwZWRlZiBzdHJ1
Y3QgX1dlYktpdERPTVRleHRUcmFja0N1ZUNsYXNzIFdlYktpdERPTVRleHRUcmFja0N1ZUNsYXNz
OwotCi10eXBlZGVmIHN0cnVjdCBfV2ViS2l0RE9NVGV4dFRyYWNrQ3VlTGlzdCBXZWJLaXRET01U
ZXh0VHJhY2tDdWVMaXN0OwotdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdERPTVRleHRUcmFja0N1ZUxp
c3RDbGFzcyBXZWJLaXRET01UZXh0VHJhY2tDdWVMaXN0Q2xhc3M7Ci0KLXR5cGVkZWYgc3RydWN0
IF9XZWJLaXRET01UZXh0VHJhY2tMaXN0IFdlYktpdERPTVRleHRUcmFja0xpc3Q7Ci10eXBlZGVm
IHN0cnVjdCBfV2ViS2l0RE9NVGV4dFRyYWNrTGlzdENsYXNzIFdlYktpdERPTVRleHRUcmFja0xp
c3RDbGFzczsKLQotdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdERPTVRpbWVSYW5nZXMgV2ViS2l0RE9N
VGltZVJhbmdlczsKLXR5cGVkZWYgc3RydWN0IF9XZWJLaXRET01UaW1lUmFuZ2VzQ2xhc3MgV2Vi
S2l0RE9NVGltZVJhbmdlc0NsYXNzOwotCi10eXBlZGVmIHN0cnVjdCBfV2ViS2l0RE9NVG91Y2gg
V2ViS2l0RE9NVG91Y2g7Ci10eXBlZGVmIHN0cnVjdCBfV2ViS2l0RE9NVG91Y2hDbGFzcyBXZWJL
aXRET01Ub3VjaENsYXNzOwotCi10eXBlZGVmIHN0cnVjdCBfV2ViS2l0RE9NVHJhY2tFdmVudCBX
ZWJLaXRET01UcmFja0V2ZW50OwotdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdERPTVRyYWNrRXZlbnRD
bGFzcyBXZWJLaXRET01UcmFja0V2ZW50Q2xhc3M7Ci0KLXR5cGVkZWYgc3RydWN0IF9XZWJLaXRE
T01Vc2VyTWVzc2FnZUhhbmRsZXIgV2ViS2l0RE9NVXNlck1lc3NhZ2VIYW5kbGVyOwotdHlwZWRl
ZiBzdHJ1Y3QgX1dlYktpdERPTVVzZXJNZXNzYWdlSGFuZGxlckNsYXNzIFdlYktpdERPTVVzZXJN
ZXNzYWdlSGFuZGxlckNsYXNzOwotCi10eXBlZGVmIHN0cnVjdCBfV2ViS2l0RE9NVXNlck1lc3Nh
Z2VIYW5kbGVyc05hbWVzcGFjZSBXZWJLaXRET01Vc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNl
OwotdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdERPTVVzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2VD
bGFzcyBXZWJLaXRET01Vc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlQ2xhc3M7Ci0KLXR5cGVk
ZWYgc3RydWN0IF9XZWJLaXRET01WVFRDdWUgV2ViS2l0RE9NVlRUQ3VlOwotdHlwZWRlZiBzdHJ1
Y3QgX1dlYktpdERPTVZUVEN1ZUNsYXNzIFdlYktpdERPTVZUVEN1ZUNsYXNzOwotCi10eXBlZGVm
IHN0cnVjdCBfV2ViS2l0RE9NVmFsaWRpdHlTdGF0ZSBXZWJLaXRET01WYWxpZGl0eVN0YXRlOwot
dHlwZWRlZiBzdHJ1Y3QgX1dlYktpdERPTVZhbGlkaXR5U3RhdGVDbGFzcyBXZWJLaXRET01WYWxp
ZGl0eVN0YXRlQ2xhc3M7Ci0KLXR5cGVkZWYgc3RydWN0IF9XZWJLaXRET01WaWRlb1BsYXliYWNr
UXVhbGl0eSBXZWJLaXRET01WaWRlb1BsYXliYWNrUXVhbGl0eTsKLXR5cGVkZWYgc3RydWN0IF9X
ZWJLaXRET01WaWRlb1BsYXliYWNrUXVhbGl0eUNsYXNzIFdlYktpdERPTVZpZGVvUGxheWJhY2tR
dWFsaXR5Q2xhc3M7Ci0KLXR5cGVkZWYgc3RydWN0IF9XZWJLaXRET01WaWRlb1RyYWNrIFdlYktp
dERPTVZpZGVvVHJhY2s7Ci10eXBlZGVmIHN0cnVjdCBfV2ViS2l0RE9NVmlkZW9UcmFja0NsYXNz
IFdlYktpdERPTVZpZGVvVHJhY2tDbGFzczsKLQotdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdERPTVZp
ZGVvVHJhY2tMaXN0IFdlYktpdERPTVZpZGVvVHJhY2tMaXN0OwotdHlwZWRlZiBzdHJ1Y3QgX1dl
YktpdERPTVZpZGVvVHJhY2tMaXN0Q2xhc3MgV2ViS2l0RE9NVmlkZW9UcmFja0xpc3RDbGFzczsK
LQotdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdERPTVdlYkFuaW1hdGlvbiBXZWJLaXRET01XZWJBbmlt
YXRpb247Ci10eXBlZGVmIHN0cnVjdCBfV2ViS2l0RE9NV2ViQW5pbWF0aW9uQ2xhc3MgV2ViS2l0
RE9NV2ViQW5pbWF0aW9uQ2xhc3M7Ci0KLXR5cGVkZWYgc3RydWN0IF9XZWJLaXRET01XZWJLaXRO
YW1lZEZsb3cgV2ViS2l0RE9NV2ViS2l0TmFtZWRGbG93OwotdHlwZWRlZiBzdHJ1Y3QgX1dlYktp
dERPTVdlYktpdE5hbWVkRmxvd0NsYXNzIFdlYktpdERPTVdlYktpdE5hbWVkRmxvd0NsYXNzOwot
Ci10eXBlZGVmIHN0cnVjdCBfV2ViS2l0RE9NV2ViS2l0TmFtZXNwYWNlIFdlYktpdERPTVdlYktp
dE5hbWVzcGFjZTsKLXR5cGVkZWYgc3RydWN0IF9XZWJLaXRET01XZWJLaXROYW1lc3BhY2VDbGFz
cyBXZWJLaXRET01XZWJLaXROYW1lc3BhY2VDbGFzczsKLQotdHlwZWRlZiBzdHJ1Y3QgX1dlYktp
dERPTVdlYktpdFBvaW50IFdlYktpdERPTVdlYktpdFBvaW50OwotdHlwZWRlZiBzdHJ1Y3QgX1dl
YktpdERPTVdlYktpdFBvaW50Q2xhc3MgV2ViS2l0RE9NV2ViS2l0UG9pbnRDbGFzczsKLQotI2lu
Y2x1ZGUgPHdlYmtpdGRvbS93ZWJraXRkb21hdXRvY2xlYW51cHMtdW5zdGFibGUuaD4KLQotI2Vu
ZGlmIC8qIFdFQktJVF9ET01fVVNFX1VOU1RBQkxFX0FQSSAqLwotCi0KLSNlbmRpZgo=
</data>
<flag name="review"
          id="311522"
          type_id="1"
          status="+"
          setter="pnormand"
    />
          </attachment>
      

    </bug>

</bugzilla>