<?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>204918</bug_id>
          
          <creation_ts>2019-12-05 14:21:19 -0800</creation_ts>
          <short_desc>Implementation of additional attribute caching in the IsolatedTree.</short_desc>
          <delta_ts>2019-12-07 12:34:45 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Accessibility</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andres Gonzalez">andresg_22</reporter>
          <assigned_to name="Andres Gonzalez">andresg_22</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cfleizach</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>samuel_white</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1596000</commentid>
    <comment_count>0</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2019-12-05 14:21:19 -0800</bug_when>
    <thetext>Implementation of additional attribute caching in the IsolatedTree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596034</commentid>
    <comment_count>1</comment_count>
      <attachid>384963</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2019-12-05 14:56:59 -0800</bug_when>
    <thetext>Created attachment 384963
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596102</commentid>
    <comment_count>2</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2019-12-05 16:39:42 -0800</bug_when>
    <thetext>Looks like some real GTK failures

../../Source/WebCore/accessibility/atk/WebKitAccessibleInterfaceAction.cpp:86:119: error: ‘class WTF::String’ has no member named ‘string’; did you mean ‘String’?
     return webkitAccessibleCacheAndReturnAtkProperty(accessible, AtkCachedActionKeyBinding, core(action)-&gt;accessKey().string().utf8());
                                                                                                                       ^~~~~~
                                                                                                                       String

../../Source/WebCore/accessibility/atk/WebKitAccessibleHyperlink.cpp: In function ‘const gchar* webkitAccessibleHyperlinkActionGetKeybinding(AtkAction*, gint)’:
../../Source/WebCore/accessibility/atk/WebKitAccessibleHyperlink.cpp:101:74: error: ‘class WTF::String’ has no member named ‘string’; did you mean ‘String’?
     accessibleHyperlink-&gt;priv-&gt;actionKeyBinding = coreObject.accessKey().string().utf8();
                                                                          ^~~~~~
                                                                          String</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596103</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-12-05 16:40:34 -0800</bug_when>
    <thetext>&lt;rdar://problem/57682455&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596150</commentid>
    <comment_count>4</comment_count>
      <attachid>384985</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2019-12-05 18:29:20 -0800</bug_when>
    <thetext>Created attachment 384985
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596153</commentid>
    <comment_count>5</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2019-12-05 18:34:45 -0800</bug_when>
    <thetext>Fix for GTK build: AXCoreObject::accessKey() was returning an AtomString and now returns a String, so no need to call AtomString::string().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596178</commentid>
    <comment_count>6</comment_count>
      <attachid>384985</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2019-12-06 00:41:24 -0800</bug_when>
    <thetext>Comment on attachment 384985
Patch

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

&gt; Source/WebCore/accessibility/isolatedtree/AXIsolatedTreeNode.h:641
&gt; +    bool isMediaControlLabel() const override { return boolAttributeValue(AXPropertyName::IsMediaControlLabel); }

is isMediaControlLabel() this one in the wrong group? or is it implemented unnecessarily?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596231</commentid>
    <comment_count>7</comment_count>
      <attachid>385010</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2019-12-06 06:42:05 -0800</bug_when>
    <thetext>Created attachment 385010
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596233</commentid>
    <comment_count>8</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2019-12-06 06:48:01 -0800</bug_when>
    <thetext>(In reply to chris fleizach from comment #6)
&gt; Comment on attachment 384985 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=384985&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/accessibility/isolatedtree/AXIsolatedTreeNode.h:641
&gt; &gt; +    bool isMediaControlLabel() const override { return boolAttributeValue(AXPropertyName::IsMediaControlLabel); }
&gt; 
&gt; is isMediaControlLabel() this one in the wrong group? or is it implemented
&gt; unnecessarily?

I removed isMediaControlLabel from AXCoreObject since it is not used outside the AXObject class hierarchy. The same applies to all methods that need no implementation in AXIsolatedObject. But we can do this progressively as we go through all the methods. The goal would be that AXCoreObject contains only the methods that are used by client code, and it is a subset of AXObject and AXIsolatedObject.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596605</commentid>
    <comment_count>9</comment_count>
      <attachid>385010</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-07 12:34:43 -0800</bug_when>
    <thetext>Comment on attachment 385010
Patch

Clearing flags on attachment: 385010

Committed r253261: &lt;https://trac.webkit.org/changeset/253261&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596606</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-07 12:34:45 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384963</attachid>
            <date>2019-12-05 14:56:59 -0800</date>
            <delta_ts>2019-12-05 18:29:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204918-20191205175657.patch</filename>
            <type>text/plain</type>
            <size>203600</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzMTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjM4MDA4YTZkMGI4YjFi
MjY1MWUxOGQ0OWJiOGM3ZTBhYjhjYWZjZS4uNDI4NTZlYjIyNTBlOGU4MmM0MGQ5ODA4ZWEyNTA0
YzNlZmVhNjNmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwMyBAQAorMjAxOS0xMi0wNSAgQW5k
cmVzIEdvbnphbGV6ICA8YW5kcmVzZ18yMkBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50
YXRpb24gb2YgYWRkaXRpb25hbCBhdHRyaWJ1dGUgY2FjaGluZyBpbiB0aGUgSXNvbGF0ZWRUcmVl
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0OTE4
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzLCBubyBuZXcgZnVuY3Rpb25hbGl0eS4gVXBkYXRlZCBzZXZlcmFsIHRlc3RzIHRvIGZp
eGVkCisgICAgICAgIGV4cGVjdGVkIG91dHB1dC4KKworICAgICAgICAtIEltcGxlbWVudGF0aW9u
IG9mIGFyb3VuZCAyMDAgbWV0aG9kcyBpbiB0aGUgQVhJc29sYXRlZE9iamVjdCBjbGFzcy4KKyAg
ICAgICAgLSBUaGUgcGVuZGluZyBtZXRob2QgaW1wbGVtZW50YXRpb25zIGhhdmUgYW4gQVNTRVJU
X05PVF9SRUFDSEVELgorICAgICAgICAtIFN1cHBvcnQgZm9yIGRpc3BhdGNoaW5nIHRvIHRoZSBt
YWluIHRocmVhZCBzb21lCisgICAgICAgIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIG1l
dGhvZHMgdGhhdCBjYW5ub3QgYmUgcnVuIGluIHRoZQorICAgICAgICBzZWNvbmRhcnkgdGhyZWFk
LgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmNyZWF0ZUlzb2xhdGVkVHJlZUhpZXJhcmNoeSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpnZW5lcmF0ZUlzb2xhdGVkVHJlZSk6Cisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmg6CisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6YXJpYUxhYmVsZWRCeVRleHQgY29uc3QpOgorICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphY3Rpb25WZXJiIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmRhdGV0aW1lQXR0cmlidXRlVmFsdWUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bGlua1JlbFZhbHVlIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzSW5saW5lVGV4
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjppZGVudGlm
aWVyQXR0cmlidXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OmRvY3VtZW50VVJJIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmRvY3VtZW50RW5jb2RpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6c2Vzc2lvbklEIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlPYmplY3Q6OnRhZ05hbWUgY29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRl
eHQ6OkFjY2Vzc2liaWxpdHlUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmFjdGlvblZlcmIgY29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdEludGVyZmFjZS5oOiBCYXNlIGltcGxlbWVudGF0aW9uIGZvcgorICAgICAg
ICBzZXZlcmFsIGlzWFhYIG1ldGhvZHMgdGhhdCByZWx5IG9uIHRoZSBvYmplY3Qgcm9sZVZhbHVl
LgorICAgICAgICAoV2ViQ29yZTo6QVhDb3JlT2JqZWN0Ojppc0ltYWdlTWFwIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFYQ29yZU9iamVjdDo6aXNXZWJBcmVhIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkFYQ29yZU9iamVjdDo6aXNDaGVja2JveCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpBWENvcmVPYmplY3Q6OmlzUmFkaW9CdXR0b24gY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6QVhDb3JlT2JqZWN0Ojppc0xpc3RCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhD
b3JlT2JqZWN0Ojppc1NwaW5CdXR0b24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhDb3Jl
T2JqZWN0Ojppc1N3aXRjaCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWENvcmVPYmplY3Q6
OmlzVG9nZ2xlQnV0dG9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYQ29yZU9iamVjdDo6
aXNUYWJMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYQ29yZU9iamVjdDo6aXNUYWJJ
dGVtIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYQ29yZU9iamVjdDo6aXNSYWRpb0dyb3Vw
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYQ29yZU9iamVjdDo6aXNDb21ib0JveCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpBWENvcmVPYmplY3Q6OmlzVHJlZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpBWENvcmVPYmplY3Q6OmlzVHJlZUdyaWQgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6QVhDb3JlT2JqZWN0Ojppc1RyZWVJdGVtIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkFYQ29yZU9iamVjdDo6aXNTY3JvbGxiYXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
QVhDb3JlT2JqZWN0Ojppc0xpc3RJdGVtIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYQ29y
ZU9iamVjdDo6aXNDaGVja2JveE9yUmFkaW8gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhD
b3JlT2JqZWN0Ojppc1Njcm9sbFZpZXcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhDb3Jl
T2JqZWN0Ojppc0NhbnZhcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWENvcmVPYmplY3Q6
OmlzUG9wVXBCdXR0b24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhDb3JlT2JqZWN0Ojpp
c0NvbG9yV2VsbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWENvcmVPYmplY3Q6OmlzU3Bs
aXR0ZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhDb3JlT2JqZWN0Ojppc1Rvb2xiYXIg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhDb3JlT2JqZWN0Ojppc1N1bW1hcnkgY29uc3Qp
OgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphY2Nlc3NLZXkg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWN0
aW9uVmVyYiBjb25zdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0Lmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U3BpbkJ1
dHRvbi5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRU
cmVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjpzZXRSb290Tm9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6c2V0Um9vdCk6IFJlbmFtZWQgc2V0
Um9vdE5vZGUuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRl
ZFRyZWUuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVk
VHJlZU5vZGUuY3BwOiBJbXBsZW1lbnRhdGlvbiBvZgorICAgICAgICBhcm91bmQgMjAwIG1ldGhv
ZHMgaW4gdGhlIEFYSXNvbGF0ZWRPYmplY3QgY2xhc3MuIFRoZSBtZXRob2RzIHRoYXQgYXJlCisg
ICAgICAgIHBlbmRpbmcsIGhhdmUgYSBzdHViIGltcGxlbWV0YXRpb24gd2l0aCBhbiBBU1NFUlRf
Tk9UX1JFQUNIRUQuCisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpBWElzb2xh
dGVkT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojppbml0aWFsaXplQXR0cmlidXRl
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpzZXRNYXRoc2NyaXB0
cyk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpzZXRPYmplY3RWZWN0b3JQ
cm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojppc0RldGFjaGVk
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmlzRGV0YWNoZWRG
cm9tUGFyZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmFjY2Vzc2li
aWxpdHlUZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmNs
YXNzTGlzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpzZXNz
aW9uSUQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6ZG9jdW1l
bnRVUkkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6cHJldmVu
dEtleWJvYXJkRE9NRXZlbnREaXNwYXRjaCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElz
b2xhdGVkT2JqZWN0Ojpkb2N1bWVudEVuY29kaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkFYSXNvbGF0ZWRPYmplY3Q6Omluc2VydE1hdGhQYWlycyk6CisgICAgICAgIChXZWJDb3JlOjpB
WElzb2xhdGVkT2JqZWN0OjptYXRoUHJlc2NyaXB0cyk6CisgICAgICAgIChXZWJDb3JlOjpBWElz
b2xhdGVkT2JqZWN0OjptYXRoUG9zdHNjcmlwdHMpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29s
YXRlZE9iamVjdDo6c2Nyb2xsQmFyKToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmpl
Y3Q6OmNvbG9yVmFsdWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVj
dDo6aW50UG9pbnRBdHRyaWJ1dGVWYWx1ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElz
b2xhdGVkT2JqZWN0Ojp2ZWN0b3JBdHRyaWJ1dGVWYWx1ZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpBWElzb2xhdGVkT2JqZWN0OjpvcHRpb25TZXRBdHRyaWJ1dGVWYWx1ZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojp1aW50NjRBdHRyaWJ1dGVWYWx1ZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojp1cmxBdHRyaWJ1dGVW
YWx1ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojpjb2xvckF0
dHJpYnV0ZVZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6
OmZsb2F0QXR0cmlidXRlVmFsdWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRl
ZE9iamVjdDo6ZmlsbENoaWxkcmVuVmVjdG9yRm9yUHJvcGVydHkgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6cmVwbGFjZVRleHRJblJhbmdlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6Omluc2VydFRleHQpOgorICAgICAgICAoV2ViQ29y
ZTo6QVhJc29sYXRlZE9iamVjdDo6cHJlc3MpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRl
ZE9iamVjdDo6cGVyZm9ybURlZmF1bHRBY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29s
YXRlZE9iamVjdDo6aXNBY2Nlc3NpYmlsaXR5T2JqZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmlzQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6aXNBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmlzQWNj
ZXNzaWJpbGl0eVNjcm9sbGJhciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVk
T2JqZWN0Ojppc0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmlzQWNjZXNzaWJpbGl0eVNWR1Jvb3QgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6aXNBY2Nlc3NpYmlsaXR5U1ZHRWxlbWVu
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojpjb250YWluc1Rl
eHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6aXNBdHRhY2ht
ZW50RWxlbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojpp
c05hdGl2ZUltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6
OmlzSW1hZ2VCdXR0b24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVj
dDo6aXNDb250YWluZWRCeVBhc3N3b3JkRmllbGQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
QVhJc29sYXRlZE9iamVjdDo6cGFzc3dvcmRGaWVsZE9yQ29udGFpbmluZ1Bhc3N3b3JkRmllbGQp
OgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6aXNOYXRpdmVUZXh0Q29udHJv
bCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojppc05hdGl2ZUxp
c3RCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6aXNMaXN0
Qm94T3B0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6Omlz
U2xpZGVyVGh1bWIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6
aXNJbnB1dFNsaWRlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0
Ojppc0xhYmVsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6Omlz
RGF0YVRhYmxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6Omlz
SW1hZ2VNYXBMaW5rIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6
OmlzTmF0aXZlU3BpbkJ1dHRvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVk
T2JqZWN0Ojppc1NwaW5CdXR0b25QYXJ0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNv
bGF0ZWRPYmplY3Q6OmlzTW9ja09iamVjdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElz
b2xhdGVkT2JqZWN0Ojppc01lZGlhT2JqZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFY
SXNvbGF0ZWRPYmplY3Q6OmlzQVJJQVRleHRDb250cm9sIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmlzTm9uTmF0aXZlVGV4dENvbnRyb2wgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6aXNCbG9ja3F1b3RlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmlzTGFuZG1hcmsgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6aXNGaWd1cmVFbGVtZW50IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmlzS2V5Ym9hcmRGb2N1c2FibGUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6aXNIb3ZlcmVkIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmlzSW5kZXRlcm1pbmF0
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojppc0xvYWRlZCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojppc09uU2NyZWVuIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmlzT2ZmU2NyZWVuIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmlzUHJlc3NlZCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojppc1VudmlzaXRlZCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojppc0xpbmtlZCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojppc1Zpc2libGUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6aXNDb2xsYXBzZWQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6aXNTZWxlY3RlZE9wdGlvbkFjdGl2
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpoYXNCb2xkRm9u
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpoYXNJdGFsaWNG
b250IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6Omhhc01pc3Nw
ZWxsaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6Omhhc1Bs
YWluVGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpoYXNT
YW1lRm9udCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpoYXNT
YW1lRm9udENvbG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6
Omhhc1NhbWVTdHlsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0
Ojppc1N0YXRpY1RleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVj
dDo6aGFzVW5kZXJsaW5lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmpl
Y3Q6Omhhc0hpZ2hsaWdodGluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVk
T2JqZWN0OjplbGVtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmpl
Y3Q6Om5vZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6cmVu
ZGVyZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6ZGVmYXVs
dE9iamVjdEluY2x1c2lvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2Jq
ZWN0OjphY2Nlc3NpYmlsaXR5SXNJZ25vcmVkQnlEZWZhdWx0IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OnN0ZXBWYWx1ZUZvclJhbmdlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OnNlbGVjdGVkTGlzdEl0ZW0pOgorICAgICAg
ICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6YXJpYUFjdGl2ZURlc2NlbmRhbnRSZWZlcmVu
Y2luZ0VsZW1lbnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6
OmFyaWFDb250cm9sc1JlZmVyZW5jaW5nRWxlbWVudHMgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6QVhJc29sYXRlZE9iamVjdDo6YXJpYURlc2NyaWJlZEJ5RWxlbWVudHMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6YXJpYURlc2NyaWJlZEJ5UmVmZXJlbmNp
bmdFbGVtZW50cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojph
cmlhRGV0YWlsc1JlZmVyZW5jaW5nRWxlbWVudHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
QVhJc29sYXRlZE9iamVjdDo6YXJpYUVycm9yTWVzc2FnZVJlZmVyZW5jaW5nRWxlbWVudHMgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6YXJpYUZsb3dUb1JlZmVy
ZW5jaW5nRWxlbWVudHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVj
dDo6YXJpYUxhYmVsbGVkQnlFbGVtZW50cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElz
b2xhdGVkT2JqZWN0OjphcmlhTGFiZWxsZWRCeVJlZmVyZW5jaW5nRWxlbWVudHMgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6YXJpYU93bnNSZWZlcmVuY2luZ0Vs
ZW1lbnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6Omhhc0Rh
dGFsaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OnN1cHBv
cnRzSGFzUG9wdXAgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6
c3VwcG9ydHNQcmVzc2VkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmpl
Y3Q6OnN1cHBvcnRzQ2hlY2tlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVk
T2JqZWN0OjppZ25vcmVkRnJvbU1vZGFsUHJlc2VuY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6QVhJc29sYXRlZE9iamVjdDo6aXNNb2RhbERlc2NlbmRhbnQgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6aXNNb2RhbE5vZGUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6ZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmZpcnN0Q2hpbGQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6bGFzdENoaWxkIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OnByZXZpb3VzU2libGluZyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpuZXh0U2libGluZyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpuZXh0U2libGluZ1Vu
aWdub3JlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpwcmV2
aW91c1NpYmxpbmdVbmlnbm9yZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRl
ZE9iamVjdDo6cGFyZW50T2JqZWN0SWZFeGlzdHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
QVhJc29sYXRlZE9iamVjdDo6aXNEZXNjZW5kYW50T2ZCYXJyZW5QYXJlbnQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6aXNEZXNjZW5kYW50T2ZSb2xlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6Om9ic2VydmFibGVPYmplY3Qg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6Y29ycmVzcG9uZGlu
Z0xhYmVsRm9yQ29udHJvbEVsZW1lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29s
YXRlZE9iamVjdDo6Y29ycmVzcG9uZGluZ0NvbnRyb2xGb3JMYWJlbEVsZW1lbnQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6aXNQcmVzZW50YXRpb25hbENoaWxk
T2ZBcmlhUm9sZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojph
cmlhUm9sZUhhc1ByZXNlbnRhdGlvbmFsQ2hpbGRyZW4gY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6QVhJc29sYXRlZE9iamVjdDo6aW5oZXJpdHNQcmVzZW50YXRpb25hbFJvbGUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6c2V0QWNjZXNzaWJsZU5hbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6aGFzQXR0cmlidXRlc1JlcXVpcmVk
Rm9ySW5jbHVzaW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6
OmFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElz
b2xhdGVkT2JqZWN0Ojp0aXRsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVk
T2JqZWN0OjpoZWxwVGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2Jq
ZWN0Ojppc0FSSUFTdGF0aWNUZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0
ZWRPYmplY3Q6OnN0cmluZ1ZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0
ZWRPYmplY3Q6OnRleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVj
dDo6YXJpYUxhYmVsZWRCeUF0dHJpYnV0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElz
b2xhdGVkT2JqZWN0OjphcmlhRGVzY3JpYmVkQnlBdHRyaWJ1dGUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6YWNjZXNzaWJsZU5hbWVEZXJpdmVzRnJvbUNvbnRl
bnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6ZWxlbWVudHNG
cm9tQXR0cmlidXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6
OmF4T2JqZWN0Q2FjaGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVj
dDo6YW5jaG9yRWxlbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2Jq
ZWN0OjphY3Rpb25FbGVtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRP
YmplY3Q6OmVsZW1lbnRQYXRoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRP
YmplY3Q6OnN1cHBvcnRzUGF0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVk
T2JqZWN0Ojp0ZXh0SXRlcmF0b3JCZWhhdmlvckZvclRleHRSYW5nZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojp3aWRnZXQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6QVhJc29sYXRlZE9iamVjdDo6d2lkZ2V0Rm9yQXR0YWNobWVudFZpZXcgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6cGFnZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojpkb2N1bWVudCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojpkb2N1bWVudEZyYW1lVmlldyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpmcmFtZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjptYWluRnJhbWUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6QVhJc29sYXRlZE9iamVjdDo6dG9wRG9jdW1lbnQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6QVhJc29sYXRlZE9iamVjdDo6c2Nyb2xsVmlld0FuY2VzdG9yIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAg
IChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojp0ZXh0Q2hhbmdlZCk6CisgICAgICAgIChXZWJD
b3JlOjpBWElzb2xhdGVkT2JqZWN0Ojp1cGRhdGVBY2Nlc3NpYmlsaXR5Um9sZSk6CisgICAgICAg
IChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjphZGRDaGlsZHJlbik6CisgICAgICAgIChXZWJD
b3JlOjpBWElzb2xhdGVkT2JqZWN0OjphZGRDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpBWElz
b2xhdGVkT2JqZWN0OjppbnNlcnRDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVk
T2JqZWN0OjpzaG91bGRJZ25vcmVBdHRyaWJ1dGVSb2xlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmNhbkhhdmVDaGlsZHJlbiBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpoYXNDaGlsZHJlbiBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpzZXROZWVkc1RvVXBkYXRlQ2hpbGRyZW4pOgorICAg
ICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6c2V0TmVlZHNUb1VwZGF0ZVN1YnRyZWUp
OgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6Y2xlYXJDaGlsZHJlbik6Cisg
ICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpuZWVkc1RvVXBkYXRlQ2hpbGRyZW4g
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6ZGV0YWNoRnJvbVBh
cmVudCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpzaG91bGRGb2N1c0Fj
dGl2ZURlc2NlbmRhbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVj
dDo6YWN0aXZlRGVzY2VuZGFudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVk
T2JqZWN0OjpoYW5kbGVBY3RpdmVEZXNjZW5kYW50Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpBWElzb2xhdGVkT2JqZWN0OjpoYW5kbGVBcmlhRXhwYW5kZWRDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmlzRGVzY2VuZGFudE9mT2JqZWN0IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmlzQW5jZXN0b3JPZk9iamVjdCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpmaXJzdEFub255bW91
c0Jsb2NrQ2hpbGQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6
aGFzQXR0cmlidXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6
OmdldEF0dHJpYnV0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0
OjpoYXNUYWdOYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6
OnN0cmluZ1ZhbHVlRm9yTVNBQSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVk
T2JqZWN0OjpzdHJpbmdSb2xlRm9yTVNBQSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElz
b2xhdGVkT2JqZWN0OjpuYW1lRm9yTVNBQSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElz
b2xhdGVkT2JqZWN0OjpkZXNjcmlwdGlvbkZvck1TQUEgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6QVhJc29sYXRlZE9iamVjdDo6cm9sZVZhbHVlRm9yTVNBQSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpwYXNzd29yZEZpZWxkVmFsdWUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6bGl2ZVJlZ2lvbkFuY2VzdG9yIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6Omhhc0NvbnRlbnRFZGl0YWJs
ZUF0dHJpYnV0ZVNldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0
OjpzdXBwb3J0c1JlYWRPbmx5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRP
YmplY3Q6OnN1cHBvcnRzQXV0b0NvbXBsZXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFY
SXNvbGF0ZWRPYmplY3Q6OnN1cHBvcnRzQVJJQUF0dHJpYnV0ZXMgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6c2Nyb2xsQnlQYWdlIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OnNjcm9sbFBvc2l0aW9uIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OnNjcm9sbENvbnRlbnRzU2l6ZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpzY3JvbGxWaXNpYmxlQ29udGVu
dFJlY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6c2Nyb2xs
VG9NYWtlVmlzaWJsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0
OjpsYXN0S25vd25Jc0lnbm9yZWRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVk
T2JqZWN0OjpzZXRMYXN0S25vd25Jc0lnbm9yZWRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpB
WElzb2xhdGVkT2JqZWN0Ojpub3RpZnlJZklnbm9yZWRWYWx1ZUNoYW5nZWQpOgorICAgICAgICAo
V2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6aXNNYXRoU2NyaXB0T2JqZWN0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmlzQVhIaWRkZW4g
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6aXNET01IaWRkZW4g
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6aXNIaWRkZW4gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6b3ZlcnJpZGVBdHRhY2ht
ZW50UGFyZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmFjY2Vzc2li
aWxpdHlJZ25vcmVBdHRhY2htZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0
ZWRPYmplY3Q6OmFjY2Vzc2liaWxpdHlQbGF0Zm9ybUluY2x1ZGVzT2JqZWN0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6Omhhc0FwcGxlUERGQW5ub3RhdGlvbkF0
dHJpYnV0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjphbmNl
c3RvckFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFY
SXNvbGF0ZWRPYmplY3Q6OnNldElzSWdub3JlZEZyb21QYXJlbnREYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmNsZWFySXNJZ25vcmVkRnJvbVBhcmVudERhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6c2V0SXNJZ25vcmVkRnJvbVBhcmVu
dERhdGFGb3JDaGlsZCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJ
c29sYXRlZFRyZWVOb2RlLmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW06IEFkZGVkCisgICAgICAgIGRpc3BhdGNoaW5nIHRv
IHRoZSBtYWluIHRocmVhZCBzb21lIG9mIHRoZSBtZXRob2RzIHRoYXQgY2Fubm90IGJlIHJ1bgor
ICAgICAgICBpbiB0aGUgc2Vjb25kYXJ5IHRocmVhZC4KKyAgICAgICAgKHBlcmZvcm1BY2Nlc3Np
YmlsaXR5RnVuY3Rpb25Pbk1haW5UaHJlYWQpOgorICAgICAgICAocmV0cmlldmVBY2Nlc3NpYmls
aXR5VmFsdWVGcm9tTWFpblRocmVhZCk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyIGF0dGFjaG1lbnRWaWV3XSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyIHNjcmVlblRvQ29udGVudHM6XSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyIHJlbmRlcldpZGdldENoaWxkcmVuXSk6CisgICAgICAgICgtW1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHJlbW90ZUFjY2Vzc2liaWxpdHlQYXJlbnRPYmpl
Y3RdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYXNzb2NpYXRl
ZFBsdWdpblBhcmVudF0pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ciBzdWJyb2xlXSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHNj
cm9sbFZpZXdQYXJlbnRdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXIgd2luZG93RWxlbWVudDpdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOl0pOgorICAgICAgICAoLVtXZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlciBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19F
TkRdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJp
bGl0eVNob3dDb250ZXh0TWVudV0pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlciBfYWNjZXNzaWJpbGl0eVNob3dDb250ZXh0TWVudV0pOgorICAgICAgICAoLVtXZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBfY29udmVydFRvTlNSYW5nZTpdKToKKyAgICAgICAg
KC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgX3RleHRNYXJrZXJGb3JJbmRleDpdKToK
KwogMjAxOS0xMi0wNCAgeW91ZW5uIGZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAg
ICAgTW92ZSBzb2Z0IHVwZGF0ZSBoYW5kbGluZyB0byBuZXR3b3JrIHByb2Nlc3MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCmluZGV4IDAzZTYwMDRl
MjUzZjM1OWQwNjIzYjg5OGFkN2Q4Y2QwY2FjZTI3NWQuLjVhMjAyNDQ3NjZhMGY2OGM5MGNiNGE3
NDI1NzQ1MzRlMDA4MWFiYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQVhPYmplY3RDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WE9iamVjdENhY2hlLmNwcApAQCAtMzA2NCw5ICszMDY0LDkgQEAgdm9pZCBBWE9iamVjdENhY2hl
OjpwZXJmb3JtRGVmZXJyZWRDYWNoZVVwZGF0ZSgpCiB9CiAgICAgCiAjaWYgRU5BQkxFKEFDQ0VT
U0lCSUxJVFlfSVNPTEFURURfVFJFRSkKLVJlZjxBWElzb2xhdGVkT2JqZWN0PiBBWE9iamVjdENh
Y2hlOjpjcmVhdGVJc29sYXRlZFRyZWVIaWVyYXJjaHkoQVhDb3JlT2JqZWN0JiBvYmplY3QsIEFY
SUQgcGFyZW50SUQsIEFYT2JqZWN0Q2FjaGUqIGF4T2JqZWN0Q2FjaGUsIEFYSXNvbGF0ZWRUcmVl
JiB0cmVlLCBWZWN0b3I8UmVmPEFYSXNvbGF0ZWRPYmplY3Q+PiYgbm9kZUNoYW5nZXMpCitSZWY8
QVhJc29sYXRlZE9iamVjdD4gQVhPYmplY3RDYWNoZTo6Y3JlYXRlSXNvbGF0ZWRUcmVlSGllcmFy
Y2h5KEFYQ29yZU9iamVjdCYgb2JqZWN0LCBBWElEIHBhcmVudElELCBBWE9iamVjdENhY2hlKiBh
eE9iamVjdENhY2hlLCBBWElzb2xhdGVkVHJlZSYgdHJlZSwgVmVjdG9yPFJlZjxBWElzb2xhdGVk
T2JqZWN0Pj4mIG5vZGVDaGFuZ2VzLCBib29sIGlzUm9vdCkKIHsKLSAgICBhdXRvIGlzb2xhdGVk
VHJlZU5vZGUgPSBBWElzb2xhdGVkT2JqZWN0OjpjcmVhdGUob2JqZWN0KTsKKyAgICBhdXRvIGlz
b2xhdGVkVHJlZU5vZGUgPSBBWElzb2xhdGVkT2JqZWN0OjpjcmVhdGUob2JqZWN0LCBpc1Jvb3Qp
OwogICAgIG5vZGVDaGFuZ2VzLmFwcGVuZChpc29sYXRlZFRyZWVOb2RlLmNvcHlSZWYoKSk7CiAK
ICAgICBpc29sYXRlZFRyZWVOb2RlLT5zZXRUcmVlSWRlbnRpZmllcih0cmVlLnRyZWVJZGVudGlm
aWVyKCkpOwpAQCAtMzA3NCw3ICszMDc0LDcgQEAgUmVmPEFYSXNvbGF0ZWRPYmplY3Q+IEFYT2Jq
ZWN0Q2FjaGU6OmNyZWF0ZUlzb2xhdGVkVHJlZUhpZXJhcmNoeShBWENvcmVPYmplY3QmIG8KICAg
ICBheE9iamVjdENhY2hlLT5hdHRhY2hXcmFwcGVyKCZpc29sYXRlZFRyZWVOb2RlLmdldCgpKTsK
IAogICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGQgOiBvYmplY3QuY2hpbGRyZW4oKSkgewotICAg
ICAgICBhdXRvIHN0YXRpY0NoaWxkID0gY3JlYXRlSXNvbGF0ZWRUcmVlSGllcmFyY2h5KCpjaGls
ZCwgaXNvbGF0ZWRUcmVlTm9kZS0+b2JqZWN0SUQoKSwgYXhPYmplY3RDYWNoZSwgdHJlZSwgbm9k
ZUNoYW5nZXMpOworICAgICAgICBhdXRvIHN0YXRpY0NoaWxkID0gY3JlYXRlSXNvbGF0ZWRUcmVl
SGllcmFyY2h5KCpjaGlsZCwgaXNvbGF0ZWRUcmVlTm9kZS0+b2JqZWN0SUQoKSwgYXhPYmplY3RD
YWNoZSwgdHJlZSwgbm9kZUNoYW5nZXMsIGZhbHNlKTsKICAgICAgICAgaXNvbGF0ZWRUcmVlTm9k
ZS0+YXBwZW5kQ2hpbGQoc3RhdGljQ2hpbGQtPm9iamVjdElEKCkpOwogICAgIH0KIApAQCAtMzA5
OCw4ICszMDk4LDggQEAgUmVmPEFYSXNvbGF0ZWRUcmVlPiBBWE9iamVjdENhY2hlOjpnZW5lcmF0
ZUlzb2xhdGVkVHJlZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIEQKICAgICBhdXRvKiBheFJvb3Qg
PSBheE9iamVjdENhY2hlLT5nZXRPckNyZWF0ZShkb2N1bWVudC52aWV3KCkpOwogICAgIGlmIChh
eFJvb3QpIHsKICAgICAgICAgVmVjdG9yPFJlZjxBWElzb2xhdGVkT2JqZWN0Pj4gbm9kZUNoYW5n
ZXM7Ci0gICAgICAgIGF1dG8gaXNvbGF0ZWRSb290ID0gY3JlYXRlSXNvbGF0ZWRUcmVlSGllcmFy
Y2h5KCpheFJvb3QsIEludmFsaWRBWElELCBheE9iamVjdENhY2hlLCAqdHJlZSwgbm9kZUNoYW5n
ZXMpOwotICAgICAgICB0cmVlLT5zZXRSb290KGlzb2xhdGVkUm9vdCk7CisgICAgICAgIGF1dG8g
aXNvbGF0ZWRSb290ID0gY3JlYXRlSXNvbGF0ZWRUcmVlSGllcmFyY2h5KCpheFJvb3QsIEludmFs
aWRBWElELCBheE9iamVjdENhY2hlLCAqdHJlZSwgbm9kZUNoYW5nZXMsIHRydWUpOworICAgICAg
ICB0cmVlLT5zZXRSb290Tm9kZShpc29sYXRlZFJvb3QpOwogICAgICAgICB0cmVlLT5hcHBlbmRO
b2RlQ2hhbmdlcyhub2RlQ2hhbmdlcyk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCmluZGV4IGU1OWUyMjA5OTg2NDBlNTU4NTg1ZjIzZTg5
MzhiODVjMWIxMDQyZmEuLjgwMmE3NTU0ZTZiOTI2NTJhYTkxNWRjZTNiNmRkMWViMDliYzdiNWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCkBAIC0x
OTgsNyArMTk4LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgQVhDb3JlT2JqZWN0KiBpc29sYXRl
ZFRyZWVGb2N1c2VkT2JqZWN0KERvY3VtZW50Jik7CiAgICAgdm9pZCBzZXRJc29sYXRlZFRyZWVG
b2N1c2VkT2JqZWN0KE5vZGUqKTsKICAgICBzdGF0aWMgUmVmPEFYSXNvbGF0ZWRUcmVlPiBnZW5l
cmF0ZUlzb2xhdGVkVHJlZShQYWdlSWRlbnRpZmllciwgRG9jdW1lbnQmKTsKLSAgICBzdGF0aWMg
UmVmPEFYSXNvbGF0ZWRPYmplY3Q+IGNyZWF0ZUlzb2xhdGVkVHJlZUhpZXJhcmNoeShBWENvcmVP
YmplY3QmLCBBWElELCBBWE9iamVjdENhY2hlKiwgQVhJc29sYXRlZFRyZWUmLCBWZWN0b3I8UmVm
PEFYSXNvbGF0ZWRPYmplY3Q+PiYpOworICAgIHN0YXRpYyBSZWY8QVhJc29sYXRlZE9iamVjdD4g
Y3JlYXRlSXNvbGF0ZWRUcmVlSGllcmFyY2h5KEFYQ29yZU9iamVjdCYsIEFYSUQsIEFYT2JqZWN0
Q2FjaGUqLCBBWElzb2xhdGVkVHJlZSYsIFZlY3RvcjxSZWY8QVhJc29sYXRlZE9iamVjdD4+Jiwg
Ym9vbCBpc1Jvb3QpOwogI2VuZGlmCiAKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKaW5kZXggNjFi
N2E0ZWM4M2M2M2Y2OTc4YTliNmQ0OWRmMWNkNTNlYzVmZDkwZC4uMTZiNjI0MDU1YTI3NDZjNzYw
NWUzOWQ0MmM0NjIwNWZkMzc4ZDIwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKQEAgLTE1MTMsMTEgKzE1
MTMsMTEgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6YXJpYUxhYmVsZWRCeVRleHQo
VmVjdG9yPEFjY2Vzc2liaWxpdHlUZXh0PiYgdGV4dE8KICAgICAgICAgVmVjdG9yPEVsZW1lbnQq
PiBlbGVtZW50czsKICAgICAgICAgYXJpYUxhYmVsZWRCeUVsZW1lbnRzKGVsZW1lbnRzKTsKIAot
ICAgICAgICBWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+PiBheEVsZW1lbnRzOwor
ICAgICAgICBWZWN0b3I8QVhDb3JlT2JqZWN0Kj4gYXhFbGVtZW50czsKICAgICAgICAgZm9yIChj
b25zdCBhdXRvJiBlbGVtZW50IDogZWxlbWVudHMpCiAgICAgICAgICAgICBheEVsZW1lbnRzLmFw
cGVuZChvYmplY3RDYWNoZS0+Z2V0T3JDcmVhdGUoZWxlbWVudCkpOwogICAgICAgICAKLSAgICAg
ICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4dChhcmlhTGFiZWxlZEJ5LCBBY2Nl
c3NpYmlsaXR5VGV4dFNvdXJjZTo6QWx0ZXJuYXRpdmUsIFdURk1vdmUoYXhFbGVtZW50cykpKTsK
KyAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4dChhcmlhTGFiZWxlZEJ5
LCBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6QWx0ZXJuYXRpdmUsIGF4RWxlbWVudHMpKTsKICAg
ICB9CiB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5T2JqZWN0LmNwcAppbmRleCA4MGFjMWVlMDI0YTdhZmFmMzViYTc2ZGExNTUwYjAw
YTRjMjQwNzUzLi44MWY0M2I0NWFiZDVhZWJiNDRlZDllZWNkYjY3ZjU2ZjZjN2ZiZTJhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVj
dC5jcHAKQEAgLTIwOTQsNyArMjA5NCw3IEBAIGNvbnN0IFN0cmluZyBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpkZWZhdWx0TGl2ZVJlZ2lvblN0YXR1c0ZvclJvbGUoQWNjZXNzaWJpbGl0eVJvCiB9CiAg
ICAgCiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFkpCi1jb25zdCBTdHJpbmcmIEFjY2Vzc2liaWxp
dHlPYmplY3Q6OmFjdGlvblZlcmIoKSBjb25zdAorU3RyaW5nIEFjY2Vzc2liaWxpdHlPYmplY3Q6
OmFjdGlvblZlcmIoKSBjb25zdAogewogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8v
IEZJWE1FOiBOZWVkIHRvIGFkZCB2ZXJicyBmb3Igc2VsZWN0IGVsZW1lbnRzLgpAQCAtMjcyMywx
NiArMjcyMywyMSBAQCBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnN1cHBvcnRzRGF0ZXRpbWVB
dHRyaWJ1dGUoKSBjb25zdAogICAgIHJldHVybiBoYXNUYWdOYW1lKGluc1RhZykgfHwgaGFzVGFn
TmFtZShkZWxUYWcpIHx8IGhhc1RhZ05hbWUodGltZVRhZyk7CiB9CiAKLWNvbnN0IEF0b21TdHJp
bmcmIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmRhdGV0aW1lQXR0cmlidXRlVmFsdWUoKSBjb25zdAor
U3RyaW5nIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmRhdGV0aW1lQXR0cmlidXRlVmFsdWUoKSBjb25z
dAogewogICAgIHJldHVybiBnZXRBdHRyaWJ1dGUoZGF0ZXRpbWVBdHRyKTsKIH0KICAgICAKLWNv
bnN0IEF0b21TdHJpbmcmIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmxpbmtSZWxWYWx1ZSgpIGNvbnN0
CitTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdDo6bGlua1JlbFZhbHVlKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gZ2V0QXR0cmlidXRlKHJlbEF0dHIpOwogfQogICAgIAorYm9vbCBBY2Nlc3NpYmls
aXR5T2JqZWN0Ojppc0lubGluZVRleHQoKSBjb25zdAoreworICAgIHJldHVybiBpczxSZW5kZXJJ
bmxpbmU+KHJlbmRlcmVyKCkpOworfQorCiBjb25zdCBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVj
dDo6a2V5U2hvcnRjdXRzVmFsdWUoKSBjb25zdAogewogICAgIHJldHVybiBnZXRBdHRyaWJ1dGUo
YXJpYV9rZXlzaG9ydGN1dHNBdHRyKTsKQEAgLTI5NjgsNyArMjk3Myw3IEBAIGludCBBY2Nlc3Np
YmlsaXR5T2JqZWN0Ojpwb3NJblNldCgpIGNvbnN0CiAgICAgcmV0dXJuIGdldEF0dHJpYnV0ZShh
cmlhX3Bvc2luc2V0QXR0cikudG9JbnQoKTsKIH0KICAgICAKLWNvbnN0IEF0b21TdHJpbmcmIEFj
Y2Vzc2liaWxpdHlPYmplY3Q6OmlkZW50aWZpZXJBdHRyaWJ1dGUoKSBjb25zdAorU3RyaW5nIEFj
Y2Vzc2liaWxpdHlPYmplY3Q6OmlkZW50aWZpZXJBdHRyaWJ1dGUoKSBjb25zdAogewogICAgIHJl
dHVybiBnZXRBdHRyaWJ1dGUoaWRBdHRyKTsKIH0KQEAgLTM2MzUsNiArMzY0MCwzNyBAQCBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpyYWRpb0dyb3VwQW5jZXN0b3Io
KSBjb25zdAogICAgIH0pOwogfQogCitTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdDo6ZG9jdW1l
bnRVUkkoKSBjb25zdAoreworICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50
KCkpCisgICAgICAgIHJldHVybiBkb2N1bWVudC0+ZG9jdW1lbnRVUkkoKTsKKyAgICByZXR1cm4g
U3RyaW5nKCk7Cit9CisKK1N0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpkb2N1bWVudEVuY29k
aW5nKCkgY29uc3QKK3sKKyAgICBpZiAoYXV0byogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgp
KQorICAgICAgICByZXR1cm4gZG9jdW1lbnQtPmVuY29kaW5nKCk7CisgICAgcmV0dXJuIFN0cmlu
ZygpOworfQorCit1aW50NjRfdCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXNzaW9uSUQoKSBjb25z
dAoreworICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IHRvcERvY3VtZW50KCkpIHsKKyAgICAgICAg
aWYgKGF1dG8qIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgpKQorICAgICAgICAgICAgcmV0dXJuIHBh
Z2UtPnNlc3Npb25JRCgpLnRvVUludDY0KCk7CisgICAgfQorICAgIHJldHVybiAwOworfQorCitT
dHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdDo6dGFnTmFtZSgpIGNvbnN0Cit7CisgICAgaWYgKEVs
ZW1lbnQqIGVsZW1lbnQgPSB0aGlzLT5lbGVtZW50KCkpCisgICAgICAgIHJldHVybiBlbGVtZW50
LT5sb2NhbE5hbWUoKTsKKworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKwogYm9vbCBBY2Nlc3Np
YmlsaXR5T2JqZWN0Ojppc1N0eWxlRm9ybWF0R3JvdXAoKSBjb25zdAogewogICAgIE5vZGUqIG5v
ZGUgPSB0aGlzLT5ub2RlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU9iamVjdC5oCmluZGV4IDRjYmRmN2YxYWMzMzM5MWVmYzI0MDQ1NzMyNzAw
M2I0NzMwNjMxY2YuLjVlZjljMmY3NDc3NzNjZTMxYTFiNmVlNjdkMzEzZWNlYTYzNzgxNzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVj
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVj
dC5oCkBAIC02Niw0MSArNjYsMzAgQEAgY2xhc3MgSW50UG9pbnQ7CiBjbGFzcyBJbnRTaXplOwog
Y2xhc3MgU2Nyb2xsYWJsZUFyZWE7CiAKLWVudW0gY2xhc3MgQWNjZXNzaWJpbGl0eVRleHRTb3Vy
Y2UgewotICAgIEFsdGVybmF0aXZlLAotICAgIENoaWxkcmVuLAotICAgIFN1bW1hcnksCi0gICAg
SGVscCwKLSAgICBWaXNpYmxlLAotICAgIFRpdGxlVGFnLAotICAgIFBsYWNlaG9sZGVyLAotICAg
IExhYmVsQnlFbGVtZW50LAotICAgIFRpdGxlLAotICAgIFN1YnRpdGxlLAotICAgIEFjdGlvbiwK
LX07Ci0gICAgCiBzdHJ1Y3QgQWNjZXNzaWJpbGl0eVRleHQgewogICAgIFN0cmluZyB0ZXh0Owog
ICAgIEFjY2Vzc2liaWxpdHlUZXh0U291cmNlIHRleHRTb3VyY2U7Ci0gICAgVmVjdG9yPFJlZlB0
cjxBY2Nlc3NpYmlsaXR5T2JqZWN0Pj4gdGV4dEVsZW1lbnRzOworICAgIFZlY3RvcjxSZWZQdHI8
QVhDb3JlT2JqZWN0Pj4gdGV4dEVsZW1lbnRzOwogICAgIAogICAgIEFjY2Vzc2liaWxpdHlUZXh0
KGNvbnN0IFN0cmluZyYgdCwgY29uc3QgQWNjZXNzaWJpbGl0eVRleHRTb3VyY2UmIHMpCiAgICAg
ICAgIDogdGV4dCh0KQogICAgICAgICAsIHRleHRTb3VyY2UocykKICAgICB7IH0KIAotICAgIEFj
Y2Vzc2liaWxpdHlUZXh0KGNvbnN0IFN0cmluZyYgdCwgY29uc3QgQWNjZXNzaWJpbGl0eVRleHRT
b3VyY2UmIHMsIFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4+IGVsZW1lbnRzKQor
ICAgIEFjY2Vzc2liaWxpdHlUZXh0KGNvbnN0IFN0cmluZyYgdCwgY29uc3QgQWNjZXNzaWJpbGl0
eVRleHRTb3VyY2UmIHMsIFZlY3RvcjxBWENvcmVPYmplY3QqPiBlbGVtZW50cykKICAgICAgICAg
OiB0ZXh0KHQpCiAgICAgICAgICwgdGV4dFNvdXJjZShzKQotICAgICAgICAsIHRleHRFbGVtZW50
cyhXVEZNb3ZlKGVsZW1lbnRzKSkKLSAgICB7IH0KKyAgICB7CisgICAgICAgIHRleHRFbGVtZW50
cy5yZXNlcnZlQ2FwYWNpdHkoZWxlbWVudHMuc2l6ZSgpKTsKKyAgICAgICAgZm9yIChhdXRvIGVs
ZW1lbnQgOiBlbGVtZW50cykKKyAgICAgICAgICAgIHRleHRFbGVtZW50cy51bmNoZWNrZWRBcHBl
bmQoZWxlbWVudCk7CisgICAgfQogCi0gICAgQWNjZXNzaWJpbGl0eVRleHQoY29uc3QgU3RyaW5n
JiB0LCBjb25zdCBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZSYgcywgUmVmUHRyPEFjY2Vzc2liaWxp
dHlPYmplY3Q+JiYgZWxlbWVudCkKKyAgICBBY2Nlc3NpYmlsaXR5VGV4dChjb25zdCBTdHJpbmcm
IHQsIGNvbnN0IEFjY2Vzc2liaWxpdHlUZXh0U291cmNlJiBzLCBBWENvcmVPYmplY3QqIGVsZW1l
bnQpCiAgICAgICAgIDogdGV4dCh0KQogICAgICAgICAsIHRleHRTb3VyY2UocykKICAgICB7Ci0g
ICAgICAgIHRleHRFbGVtZW50cy5hcHBlbmQoV1RGTW92ZShlbGVtZW50KSk7CisgICAgICAgIHRl
eHRFbGVtZW50cy5hcHBlbmQoZWxlbWVudCk7CiAgICAgfQogfTsKIApAQCAtMTM3LDcgKzEyNiw2
IEBAIHB1YmxpYzoKICAgICBib29sIGlzSGVhZGluZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9CiAgICAgYm9vbCBpc0xpbmsoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxz
ZTsgfQogICAgIGJvb2wgaXNJbWFnZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
Ci0gICAgYm9vbCBpc0ltYWdlTWFwKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcm9sZVZhbHVl
KCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkltYWdlTWFwOyB9CiAgICAgYm9vbCBpc05hdGl2ZUlt
YWdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGlzSW1hZ2VC
dXR0b24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgaXNQYXNz
d29yZEZpZWxkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTE0NSwxMSAr
MTMzLDcgQEAgcHVibGljOgogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhc3N3b3JkRmllbGRP
ckNvbnRhaW5pbmdQYXNzd29yZEZpZWxkKCkgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQog
ICAgIGJvb2wgaXNOYXRpdmVUZXh0Q29udHJvbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgYm9vbCBpc1NlYXJjaEZpZWxkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
ZmFsc2U7IH0KLSAgICBib29sIGlzV2ViQXJlYSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJv
bGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpXZWJBcmVhOyB9Ci0gICAgYm9vbCBpc0No
ZWNrYm94KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJp
bGl0eVJvbGU6OkNoZWNrQm94OyB9Ci0gICAgYm9vbCBpc1JhZGlvQnV0dG9uKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlJhZGlvQnV0
dG9uOyB9CiAgICAgYm9vbCBpc05hdGl2ZUxpc3RCb3goKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQotICAgIGJvb2wgaXNMaXN0Qm94KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RCb3g7IH0KICAgICBib29sIGlz
TGlzdEJveE9wdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9v
bCBpc0F0dGFjaG1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJv
b2wgaXNNZWRpYVRpbWVsaW5lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KQEAg
LTE3OSw0MiArMTYzLDIyIEBAIHB1YmxpYzoKICAgICBib29sIGlzTWVudUxpc3QoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgaXNNZW51TGlzdFBvcHVwKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGlzTWVudUxpc3RPcHRpb24o
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNTcGluQnV0dG9u
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJv
bGU6OlNwaW5CdXR0b247IH0KICAgICBib29sIGlzTmF0aXZlU3BpbkJ1dHRvbigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc1NwaW5CdXR0b25QYXJ0KCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGlzTW9ja09iamVjdCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc01lZGlhQ29udHJvbExh
YmVsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGlzTWVkaWFP
YmplY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNTd2l0
Y2goKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5
Um9sZTo6U3dpdGNoOyB9Ci0gICAgYm9vbCBpc1RvZ2dsZUJ1dHRvbigpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUb2dnbGVCdXR0b247
IH0KICAgICBib29sIGlzVGV4dENvbnRyb2woKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGlz
QVJJQVRleHRDb250cm9sKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc05vbk5hdGl2ZVRl
eHRDb250cm9sKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc1RhYkxpc3QoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFiTGlz
dDsgfQotICAgIGJvb2wgaXNUYWJJdGVtKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcm9sZVZh
bHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRhYjsgfQotICAgIGJvb2wgaXNSYWRpb0dyb3Vw
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJv
bGU6OlJhZGlvR3JvdXA7IH0KLSAgICBib29sIGlzQ29tYm9Cb3goKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q29tYm9Cb3g7IH0KLSAg
ICBib29sIGlzVHJlZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFj
Y2Vzc2liaWxpdHlSb2xlOjpUcmVlOyB9Ci0gICAgYm9vbCBpc1RyZWVHcmlkKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWVHcmlk
OyB9Ci0gICAgYm9vbCBpc1RyZWVJdGVtKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcm9sZVZh
bHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWVJdGVtOyB9Ci0gICAgYm9vbCBpc1Njcm9s
bGJhcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxp
dHlSb2xlOjpTY3JvbGxCYXI7IH0KICAgICBib29sIGlzQnV0dG9uKCkgY29uc3Qgb3ZlcnJpZGU7
Ci0gICAgYm9vbCBpc0xpc3RJdGVtKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcm9sZVZhbHVl
KCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RJdGVtOyB9Ci0gICAgYm9vbCBpc0NoZWNrYm94
T3JSYWRpbygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGlzQ2hlY2tib3goKSB8fCBpc1JhZGlv
QnV0dG9uKCk7IH0KLSAgICBib29sIGlzU2Nyb2xsVmlldygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpTY3JvbGxBcmVhOyB9Ci0gICAg
Ym9vbCBpc0NhbnZhcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFj
Y2Vzc2liaWxpdHlSb2xlOjpDYW52YXM7IH0KLSAgICBib29sIGlzUG9wVXBCdXR0b24oKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6UG9w
VXBCdXR0b247IH0KICAgICBib29sIGlzQmxvY2txdW90ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAg
IGJvb2wgaXNMYW5kbWFyaygpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgaXNDb2xvcldlbGwo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6Q29sb3JXZWxsOyB9CiAgICAgYm9vbCBpc1JhbmdlQ29udHJvbCgpIGNvbnN0IG92ZXJyaWRl
OwogICAgIGJvb2wgaXNNZXRlcigpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgaXNTcGxpdHRl
cigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlS
b2xlOjpTcGxpdHRlcjsgfQotICAgIGJvb2wgaXNUb29sYmFyKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRvb2xiYXI7IH0KICAgICBi
b29sIGlzU3R5bGVGb3JtYXRHcm91cCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgaXNGaWd1
cmVFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc0tleWJvYXJkRm9jdXNhYmxl
KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc1N1bW1hcnkoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3VtbWFyeTsgfQogICAg
IGJvb2wgaXNPdXRwdXQoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIGJvb2wgaXNDaGVja2VkKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTI1NSw3ICsyMTksNyBAQCBwdWJs
aWM6CiAgICAgYm9vbCBoYXNIaWdobGlnaHRpbmcoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIGJv
b2wgc3VwcG9ydHNEYXRldGltZUF0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIGNvbnN0
IEF0b21TdHJpbmcmIGRhdGV0aW1lQXR0cmlidXRlVmFsdWUoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBTdHJpbmcgZGF0ZXRpbWVBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAg
Ym9vbCBjYW5TZXRGb2N1c0F0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgYm9vbCBjYW5TZXRUZXh0UmFuZ2VBdHRyaWJ1dGVzKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KQEAgLTMyMyw4ICsyODcsOCBAQCBwdWJsaWM6CiAgICAgQWNjZXNz
aWJpbGl0eVNvcnREaXJlY3Rpb24gc29ydERpcmVjdGlvbigpIGNvbnN0IG92ZXJyaWRlOwogICAg
IGJvb2wgY2FudmFzSGFzRmFsbGJhY2tDb250ZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
ZmFsc2U7IH0KICAgICBib29sIHN1cHBvcnRzUmFuZ2VWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlOwot
ICAgIGNvbnN0IEF0b21TdHJpbmcmIGlkZW50aWZpZXJBdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlk
ZTsKLSAgICBjb25zdCBBdG9tU3RyaW5nJiBsaW5rUmVsVmFsdWUoKSBjb25zdCBvdmVycmlkZTsK
KyAgICBTdHJpbmcgaWRlbnRpZmllckF0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFN0
cmluZyBsaW5rUmVsVmFsdWUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGNsYXNzTGlzdChW
ZWN0b3I8U3RyaW5nPiYpIGNvbnN0IG92ZXJyaWRlOwogICAgIEFjY2Vzc2liaWxpdHlDdXJyZW50
U3RhdGUgY3VycmVudFN0YXRlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIGN1cnJlbnRW
YWx1ZSgpIGNvbnN0IG92ZXJyaWRlOwpAQCAtNDU0LDggKzQxOCw4IEBAIHB1YmxpYzoKICAgICBV
UkwgdXJsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVVJMKCk7IH0KICAgICBWaXNpYmxlU2Vs
ZWN0aW9uIHNlbGVjdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFZpc2libGVTZWxlY3Rp
b24oKTsgfQogICAgIFN0cmluZyBzZWxlY3RlZFRleHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBTdHJpbmcoKTsgfQotICAgIGNvbnN0IEF0b21TdHJpbmcmIGFjY2Vzc0tleSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG51bGxBdG9tKCk7IH0KLSAgICBjb25zdCBTdHJpbmcmIGFjdGlvblZl
cmIoKSBjb25zdCBvdmVycmlkZTsKKyAgICBTdHJpbmcgYWNjZXNzS2V5KCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gbnVsbEF0b20oKTsgfQorICAgIFN0cmluZyBhY3Rpb25WZXJiKCkgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgV2lkZ2V0KiB3aWRnZXQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBu
dWxscHRyOyB9CiAgICAgV2lkZ2V0KiB3aWRnZXRGb3JBdHRhY2htZW50VmlldygpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICBQYWdlKiBwYWdlKCkgY29uc3Qgb3ZlcnJp
ZGU7CkBAIC00NjgsNiArNDMyLDcgQEAgcHVibGljOgogICAgIFN0cmluZyBsYW5ndWFnZSgpIGNv
bnN0IG92ZXJyaWRlOwogICAgIC8vIDEtYmFzZWQsIHRvIG1hdGNoIHRoZSBhcmlhLWxldmVsIHNw
ZWMuCiAgICAgdW5zaWduZWQgaGllcmFyY2hpY2FsTGV2ZWwoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiAwOyB9CisgICAgYm9vbCBpc0lubGluZVRleHQoKSBjb25zdCBvdmVycmlkZTsKIAogICAg
IHZvaWQgc2V0Rm9jdXNlZChib29sKSBvdmVycmlkZSB7IH0KICAgICB2b2lkIHNldFNlbGVjdGVk
VGV4dChjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IH0KQEAgLTUyOCw2ICs0OTMsNyBAQCBwdWJs
aWM6CiAgICAgYm9vbCBoYXNBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IG92
ZXJyaWRlOwogICAgIGNvbnN0IEF0b21TdHJpbmcmIGdldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBoYXNUYWdOYW1lKGNvbnN0IFF1YWxp
ZmllZE5hbWUmKSBjb25zdCBvdmVycmlkZTsKKyAgICBTdHJpbmcgdGFnTmFtZSgpIGNvbnN0IG92
ZXJyaWRlOwogCiAgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgdmlzaWJsZVBvc2l0aW9uUmFuZ2Uo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBWaXNpYmxlUG9zaXRpb25SYW5nZSgpOyB9CiAgICAg
VmlzaWJsZVBvc2l0aW9uUmFuZ2UgdmlzaWJsZVBvc2l0aW9uUmFuZ2VGb3JMaW5lKHVuc2lnbmVk
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBWaXNpYmxlUG9zaXRpb25SYW5nZSgpOyB9CkBAIC02
MjksNiArNTk1LDcgQEAgcHVibGljOgogICAgIGJvb2wgc3VwcG9ydHNBdXRvQ29tcGxldGUoKSBj
b25zdCBvdmVycmlkZTsKICAgICBTdHJpbmcgYXV0b0NvbXBsZXRlVmFsdWUoKSBjb25zdCBvdmVy
cmlkZTsKIAorICAgIGJvb2wgaGFzQVJJQVZhbHVlTm93KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gaGFzQXR0cmlidXRlKEhUTUxOYW1lczo6YXJpYV92YWx1ZW5vd0F0dHIpOyB9CiAgICAgYm9v
bCBzdXBwb3J0c0FSSUFBdHRyaWJ1dGVzKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICAvLyBDU1Mz
IFNwZWVjaCBwcm9wZXJ0aWVzLgpAQCAtNzUwLDYgKzcxNyw3IEBAIHB1YmxpYzoKICAgICBTdHJp
bmcgZGVzY3JpcHRpb25BdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFN0cmlu
ZyBoZWxwVGV4dEF0dHJpYnV0ZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHRp
dGxlQXR0cmlidXRlVmFsdWUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGhhc0FwcGxlUERG
QW5ub3RhdGlvbkF0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGhhc0F0dHJpYnV0
ZShIVE1MTmFtZXM6OnhfYXBwbGVfcGRmX2Fubm90YXRpb25BdHRyKTsgfQogI2VuZGlmCiAKICNp
ZiBQTEFURk9STShDT0NPQSkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC03NjYsNiArNzM0
LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFySXNJZ25vcmVkRnJvbVBhcmVudERhdGEoKSBv
dmVycmlkZSB7IG1faXNJZ25vcmVkRnJvbVBhcmVudERhdGEgPSBBY2Nlc3NpYmlsaXR5SXNJZ25v
cmVkRnJvbVBhcmVudERhdGEoKTsgfQogICAgIHZvaWQgc2V0SXNJZ25vcmVkRnJvbVBhcmVudERh
dGFGb3JDaGlsZChBWENvcmVPYmplY3QqKSBvdmVycmlkZTsKIAorICAgIHVpbnQ2NF90IHNlc3Np
b25JRCgpIGNvbnN0IG92ZXJyaWRlOworICAgIFN0cmluZyBkb2N1bWVudFVSSSgpIGNvbnN0IG92
ZXJyaWRlOworICAgIFN0cmluZyBkb2N1bWVudEVuY29kaW5nKCkgY29uc3Qgb3ZlcnJpZGU7CisK
IHByb3RlY3RlZDoKICAgICBBWElEIG1faWQgeyAwIH07CiAgICAgQWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yIG1fY2hpbGRyZW47CkBAIC04MjMsNyArNzk1LDcgQEAgcHJvdGVjdGVkOgogCiAj
aWYgIUVOQUJMRShBQ0NFU1NJQklMSVRZKQogaW5saW5lIGNvbnN0IEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgQWNjZXNzaWJpbGl0eU9iamVjdDo6Y2hp
bGRyZW4oYm9vbCkgeyByZXR1cm4gbV9jaGlsZHJlbjsgfQotaW5saW5lIGNvbnN0IFN0cmluZyYg
QWNjZXNzaWJpbGl0eU9iamVjdDo6YWN0aW9uVmVyYigpIGNvbnN0IHsgcmV0dXJuIGVtcHR5U3Ry
aW5nKCk7IH0KK2lubGluZSBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdDo6YWN0aW9uVmVyYigp
IGNvbnN0IHsgcmV0dXJuIGVtcHR5U3RyaW5nKCk7IH0KIGlubGluZSBpbnQgQWNjZXNzaWJpbGl0
eU9iamVjdDo6bGluZUZvclBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IHsg
cmV0dXJuIC0xOyB9CiBpbmxpbmUgdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp1cGRhdGVCYWNr
aW5nU3RvcmUoKSB7IH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaAppbmRleCBhMmQ1ZTg4
NmYzMDM2MDFkNjU3YTdhMTMzNWFiZWZkNWE0OWNkNWRmLi5jZjMyYzgxYzgxZWY4NTlmYjc2N2Zj
ZWVmNDI4ZTU1YjE5NzYzNDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaApAQCAtMjM0LDYgKzIz
NCwyMCBAQCBlbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlTZWFyY2hEaXJlY3Rpb24gewogICAgIFBy
ZXZpb3VzLAogfTsKIAorZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZSB7CisgICAg
QWx0ZXJuYXRpdmUsCisgICAgQ2hpbGRyZW4sCisgICAgU3VtbWFyeSwKKyAgICBIZWxwLAorICAg
IFZpc2libGUsCisgICAgVGl0bGVUYWcsCisgICAgUGxhY2Vob2xkZXIsCisgICAgTGFiZWxCeUVs
ZW1lbnQsCisgICAgVGl0bGUsCisgICAgU3VidGl0bGUsCisgICAgQWN0aW9uLAorfTsKKwogZW51
bSBjbGFzcyBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5IHsKICAgICBBbnlUeXBlID0gMSwKICAgICBB
cnRpY2xlLApAQCAtNDc5LDcgKzQ5Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNI
ZWFkaW5nKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc0xpbmsoKSBjb25zdCA9IDA7
CiAgICAgdmlydHVhbCBib29sIGlzSW1hZ2UoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBib29s
IGlzSW1hZ2VNYXAoKSBjb25zdCA9IDA7CisgICAgYm9vbCBpc0ltYWdlTWFwKCkgY29uc3QgeyBy
ZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkltYWdlTWFwOyB9CiAgICAg
dmlydHVhbCBib29sIGlzTmF0aXZlSW1hZ2UoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29s
IGlzSW1hZ2VCdXR0b24oKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzUGFzc3dvcmRG
aWVsZCgpIGNvbnN0ID0gMDsKQEAgLTQ4NywxMSArNTAxLDExIEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIEFYQ29yZU9iamVjdCogcGFzc3dvcmRGaWVsZE9yQ29udGFpbmluZ1Bhc3N3b3JkRmllbGQo
KSA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzTmF0aXZlVGV4dENvbnRyb2woKSBjb25zdCA9IDA7
CiAgICAgdmlydHVhbCBib29sIGlzU2VhcmNoRmllbGQoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVh
bCBib29sIGlzV2ViQXJlYSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNDaGVja2Jv
eCgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNSYWRpb0J1dHRvbigpIGNvbnN0ID0g
MDsKKyAgICBib29sIGlzV2ViQXJlYSgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFj
Y2Vzc2liaWxpdHlSb2xlOjpXZWJBcmVhOyB9CisgICAgYm9vbCBpc0NoZWNrYm94KCkgY29uc3Qg
eyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkNoZWNrQm94OyB9Cisg
ICAgYm9vbCBpc1JhZGlvQnV0dG9uKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNj
ZXNzaWJpbGl0eVJvbGU6OlJhZGlvQnV0dG9uOyB9CisgICAgYm9vbCBpc0xpc3RCb3goKSBjb25z
dCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEJveDsgfQog
ICAgIHZpcnR1YWwgYm9vbCBpc05hdGl2ZUxpc3RCb3goKSBjb25zdCA9IDA7Ci0gICAgdmlydHVh
bCBib29sIGlzTGlzdEJveCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNMaXN0Qm94
T3B0aW9uKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc0F0dGFjaG1lbnQoKSBjb25z
dCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzTWVkaWFUaW1lbGluZSgpIGNvbnN0ID0gMDsKQEAg
LTUyMSw0MiArNTM1LDQ0IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNNZW51TGlzdCgp
IGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNNZW51TGlzdFBvcHVwKCkgY29uc3QgPSAw
OwogICAgIHZpcnR1YWwgYm9vbCBpc01lbnVMaXN0T3B0aW9uKCkgY29uc3QgPSAwOwotICAgIHZp
cnR1YWwgYm9vbCBpc1NwaW5CdXR0b24oKSBjb25zdCA9IDA7CisgICAgYm9vbCBpc1NwaW5CdXR0
b24oKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3Bp
bkJ1dHRvbjsgfQogICAgIHZpcnR1YWwgYm9vbCBpc05hdGl2ZVNwaW5CdXR0b24oKSBjb25zdCA9
IDA7CiAgICAgdmlydHVhbCBib29sIGlzU3BpbkJ1dHRvblBhcnQoKSBjb25zdCA9IDA7CiAgICAg
dmlydHVhbCBib29sIGlzTW9ja09iamVjdCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wg
aXNNZWRpYUNvbnRyb2xMYWJlbCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNNZWRp
YU9iamVjdCgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNTd2l0Y2goKSBjb25zdCA9
IDA7Ci0gICAgdmlydHVhbCBib29sIGlzVG9nZ2xlQnV0dG9uKCkgY29uc3QgPSAwOworICAgIGJv
b2wgaXNTd2l0Y2goKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5
Um9sZTo6U3dpdGNoOyB9CisgICAgYm9vbCBpc1RvZ2dsZUJ1dHRvbigpIGNvbnN0IHsgcmV0dXJu
IHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUb2dnbGVCdXR0b247IH0KICAgICB2
aXJ0dWFsIGJvb2wgaXNUZXh0Q29udHJvbCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wg
aXNBUklBVGV4dENvbnRyb2woKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzTm9uTmF0
aXZlVGV4dENvbnRyb2woKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBib29sIGlzVGFiTGlzdCgp
IGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNUYWJJdGVtKCkgY29uc3QgPSAwOwotICAg
IHZpcnR1YWwgYm9vbCBpc1JhZGlvR3JvdXAoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBib29s
IGlzQ29tYm9Cb3goKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBib29sIGlzVHJlZSgpIGNvbnN0
ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNUcmVlR3JpZCgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0
dWFsIGJvb2wgaXNUcmVlSXRlbSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNTY3Jv
bGxiYXIoKSBjb25zdCA9IDA7CisgICAgYm9vbCBpc1RhYkxpc3QoKSBjb25zdCB7IHJldHVybiBy
b2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFiTGlzdDsgfQorICAgIGJvb2wgaXNU
YWJJdGVtKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6
OlRhYjsgfQorICAgIGJvb2wgaXNSYWRpb0dyb3VwKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVl
KCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlJhZGlvR3JvdXA7IH0KKyAgICBib29sIGlzQ29tYm9C
b3goKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q29t
Ym9Cb3g7IH0KKyAgICBib29sIGlzVHJlZSgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09
IEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlOyB9CisgICAgYm9vbCBpc1RyZWVHcmlkKCkgY29uc3Qg
eyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWVHcmlkOyB9Cisg
ICAgYm9vbCBpc1RyZWVJdGVtKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNz
aWJpbGl0eVJvbGU6OlRyZWVJdGVtOyB9CisgICAgYm9vbCBpc1Njcm9sbGJhcigpIGNvbnN0IHsg
cmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpTY3JvbGxCYXI7IH0KICAg
ICB2aXJ0dWFsIGJvb2wgaXNCdXR0b24oKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBib29sIGlz
TGlzdEl0ZW0oKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBib29sIGlzQ2hlY2tib3hPclJhZGlv
KCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBpc1Njcm9sbFZpZXcoKSBjb25zdCA9IDA7
Ci0gICAgdmlydHVhbCBib29sIGlzQ2FudmFzKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9v
bCBpc1BvcFVwQnV0dG9uKCkgY29uc3QgPSAwOworCisgICAgYm9vbCBpc0xpc3RJdGVtKCkgY29u
c3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RJdGVtOyB9
CisgICAgYm9vbCBpc0NoZWNrYm94T3JSYWRpbygpIGNvbnN0IHsgcmV0dXJuIGlzQ2hlY2tib3go
KSB8fCBpc1JhZGlvQnV0dG9uKCk7IH0KKyAgICBib29sIGlzU2Nyb2xsVmlldygpIGNvbnN0IHsg
cmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpTY3JvbGxBcmVhOyB9Cisg
ICAgYm9vbCBpc0NhbnZhcygpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2li
aWxpdHlSb2xlOjpDYW52YXM7IH0KKyAgICBib29sIGlzUG9wVXBCdXR0b24oKSBjb25zdCB7IHJl
dHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6UG9wVXBCdXR0b247IH0KKyAg
ICBib29sIGlzQ29sb3JXZWxsKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNz
aWJpbGl0eVJvbGU6OkNvbG9yV2VsbDsgfQorICAgIGJvb2wgaXNTcGxpdHRlcigpIGNvbnN0IHsg
cmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpTcGxpdHRlcjsgfQorICAg
IGJvb2wgaXNUb29sYmFyKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJp
bGl0eVJvbGU6OlRvb2xiYXI7IH0KKyAgICBib29sIGlzU3VtbWFyeSgpIGNvbnN0IHsgcmV0dXJu
IHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpTdW1tYXJ5OyB9CisKICAgICB2aXJ0
dWFsIGJvb2wgaXNCbG9ja3F1b3RlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc0xh
bmRtYXJrKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBpc0NvbG9yV2VsbCgpIGNvbnN0
ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNSYW5nZUNvbnRyb2woKSBjb25zdCA9IDA7CiAgICAg
dmlydHVhbCBib29sIGlzTWV0ZXIoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBib29sIGlzU3Bs
aXR0ZXIoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBib29sIGlzVG9vbGJhcigpIGNvbnN0ID0g
MDsKICAgICB2aXJ0dWFsIGJvb2wgaXNTdHlsZUZvcm1hdEdyb3VwKCkgY29uc3QgPSAwOwogICAg
IHZpcnR1YWwgYm9vbCBpc0ZpZ3VyZUVsZW1lbnQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBi
b29sIGlzS2V5Ym9hcmRGb2N1c2FibGUoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBib29sIGlz
U3VtbWFyeSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNPdXRwdXQoKSBjb25zdCA9
IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNDaGVja2VkKCkgY29uc3QgPSAwOwpAQCAtNTk5LDcg
KzYxNSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaGFzSGlnaGxpZ2h0aW5nKCkgY29u
c3QgPSAwOwogCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRGF0ZXRpbWVBdHRyaWJ1dGUoKSBj
b25zdCA9IDA7Ci0gICAgdmlydHVhbCBjb25zdCBBdG9tU3RyaW5nJiBkYXRldGltZUF0dHJpYnV0
ZVZhbHVlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIGRhdGV0aW1lQXR0cmlidXRl
VmFsdWUoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0Rm9jdXNBdHRyaWJ1
dGUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGNhblNldFRleHRSYW5nZUF0dHJpYnV0
ZXMoKSBjb25zdCA9IDA7CkBAIC02NjYsOCArNjgyLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwg
QWNjZXNzaWJpbGl0eVNvcnREaXJlY3Rpb24gc29ydERpcmVjdGlvbigpIGNvbnN0ID0gMDsKICAg
ICB2aXJ0dWFsIGJvb2wgY2FudmFzSGFzRmFsbGJhY2tDb250ZW50KCkgY29uc3QgPSAwOwogICAg
IHZpcnR1YWwgYm9vbCBzdXBwb3J0c1JhbmdlVmFsdWUoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVh
bCBjb25zdCBBdG9tU3RyaW5nJiBpZGVudGlmaWVyQXR0cmlidXRlKCkgY29uc3QgPSAwOwotICAg
IHZpcnR1YWwgY29uc3QgQXRvbVN0cmluZyYgbGlua1JlbFZhbHVlKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgU3RyaW5nIGlkZW50aWZpZXJBdHRyaWJ1dGUoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBTdHJpbmcgbGlua1JlbFZhbHVlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBj
bGFzc0xpc3QoVmVjdG9yPFN0cmluZz4mKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBBY2Nlc3Np
YmlsaXR5Q3VycmVudFN0YXRlIGN1cnJlbnRTdGF0ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFs
IFN0cmluZyBjdXJyZW50VmFsdWUoKSBjb25zdCA9IDA7CkBAIC03OTEsOCArODA3LDggQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgVVJMIHVybCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFZpc2li
bGVTZWxlY3Rpb24gc2VsZWN0aW9uKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIHNl
bGVjdGVkVGV4dCgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGNvbnN0IEF0b21TdHJpbmcmIGFj
Y2Vzc0tleSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGNvbnN0IFN0cmluZyYgYWN0aW9uVmVy
YigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBhY2Nlc3NLZXkoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBTdHJpbmcgYWN0aW9uVmVyYigpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFs
IFdpZGdldCogd2lkZ2V0KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgV2lkZ2V0KiB3aWRnZXRG
b3JBdHRhY2htZW50VmlldygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFBhZ2UqIHBhZ2UoKSBj
b25zdCA9IDA7CkBAIC04MDUsNyArODIxLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5n
IGxhbmd1YWdlKCkgY29uc3QgPSAwOwogICAgIC8vIDEtYmFzZWQsIHRvIG1hdGNoIHRoZSBhcmlh
LWxldmVsIHNwZWMuCiAgICAgdmlydHVhbCB1bnNpZ25lZCBoaWVyYXJjaGljYWxMZXZlbCgpIGNv
bnN0ID0gMDsKLQorICAgIHZpcnR1YWwgYm9vbCBpc0lubGluZVRleHQoKSBjb25zdCA9IDA7Cisg
ICAgCiAgICAgdmlydHVhbCB2b2lkIHNldEZvY3VzZWQoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBzZXRTZWxlY3RlZFRleHQoY29uc3QgU3RyaW5nJikgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBzZXRTZWxlY3RlZFRleHRSYW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYpID0gMDsKQEAgLTg2
MCw2ICs4NzcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGhhc0F0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgY29uc3QgQXRvbVN0cmlu
ZyYgZ2V0QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdCA9IDA7CiAgICAgdmly
dHVhbCBib29sIGhhc1RhZ05hbWUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIFN0cmluZyB0YWdOYW1lKCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCBWaXNp
YmxlUG9zaXRpb25SYW5nZSB2aXNpYmxlUG9zaXRpb25SYW5nZSgpIGNvbnN0ID0gMDsKICAgICB2
aXJ0dWFsIFZpc2libGVQb3NpdGlvblJhbmdlIHZpc2libGVQb3NpdGlvblJhbmdlRm9yTGluZSh1
bnNpZ25lZCkgY29uc3QgPSAwOwpAQCAtOTMwLDYgKzk0OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIGJvb2wgaXNWYWx1ZUF1dG9maWxsZWQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29s
IGlzVmFsdWVBdXRvZmlsbEF2YWlsYWJsZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIEF1dG9G
aWxsQnV0dG9uVHlwZSB2YWx1ZUF1dG9maWxsQnV0dG9uVHlwZSgpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIGJvb2wgaGFzQVJJQVZhbHVlTm93KCkgY29uc3QgPSAwOwogCiAgICAgLy8gVXNlZCBi
eSBhbiBBUklBIHRyZWUgdG8gZ2V0IGFsbCBpdHMgcm93cy4KICAgICB2aXJ0dWFsIHZvaWQgYXJp
YVRyZWVSb3dzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpID0gMDsKQEAgLTEwMjcsNyAr
MTA0Niw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNBbm9ueW1vdXNNYXRoT3BlcmF0
b3IoKSBjb25zdCA9IDA7CiAKICAgICAvLyBNdWx0aXNjcmlwdHMgY29tcG9uZW50cy4KLSAgICB0
eXBlZGVmIFZlY3RvcjxzdGQ6OnBhaXI8QVhDb3JlT2JqZWN0KiwgQVhDb3JlT2JqZWN0Kj4+IEFj
Y2Vzc2liaWxpdHlNYXRoTXVsdGlzY3JpcHRQYWlyczsKKyAgICB0eXBlZGVmIHN0ZDo6cGFpcjxB
WENvcmVPYmplY3QqLCBBWENvcmVPYmplY3QqPiBBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0
UGFpcjsKKyAgICB0eXBlZGVmIFZlY3RvcjxBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0UGFp
cj4gQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdFBhaXJzOwogICAgIHZpcnR1YWwgdm9pZCBt
YXRoUHJlc2NyaXB0cyhBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0UGFpcnMmKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIG1hdGhQb3N0c2NyaXB0cyhBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2Ny
aXB0UGFpcnMmKSA9IDA7CiAKQEAgLTEwNjQsNiArMTA4NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIFN0cmluZyBkZXNjcmlwdGlvbkF0dHJpYnV0ZVZhbHVlKCkgY29uc3QgPSAwOwogICAgIHZp
cnR1YWwgU3RyaW5nIGhlbHBUZXh0QXR0cmlidXRlVmFsdWUoKSBjb25zdCA9IDA7CiAgICAgdmly
dHVhbCBTdHJpbmcgdGl0bGVBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IGJvb2wgaGFzQXBwbGVQREZBbm5vdGF0aW9uQXR0cmlidXRlKCkgY29uc3QgPSAwOwogI2VuZGlm
CiAKICNpZiBQTEFURk9STShDT0NPQSkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC0xMDgw
LDYgKzExMDEsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRJc0lnbm9yZWRGcm9t
UGFyZW50RGF0YShBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkRnJvbVBhcmVudERhdGEmKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGNsZWFySXNJZ25vcmVkRnJvbVBhcmVudERhdGEoKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHNldElzSWdub3JlZEZyb21QYXJlbnREYXRhRm9yQ2hpbGQoQVhDb3JlT2Jq
ZWN0KikgPSAwOworICAgIAorICAgIHZpcnR1YWwgdWludDY0X3Qgc2Vzc2lvbklEKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgU3RyaW5nIGRvY3VtZW50VVJJKCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgU3RyaW5nIGRvY3VtZW50RW5jb2RpbmcoKSBjb25zdCA9IDA7CiB9OwogCiBuYW1lc3Bh
Y2UgQWNjZXNzaWJpbGl0eSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAppbmRleCA4OTQ5NmJkNjQ3ZTAy
MWYzODBmMGU1OGFlZmI3MGE5MjU1NTE0NzRhLi5iN2RhNmFhY2QzZDYyYTY2NTI0ZTVjMWFlMmYz
OGZiNjFjNjZhMWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKQEAgLTE1NzAsNyArMTU3MCw3IEBA
IFN0cmluZyBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzZWxlY3RlZFRleHQoKSBjb25zdAog
ICAgIHJldHVybiBkb0FYU3RyaW5nRm9yUmFuZ2UoZG9jdW1lbnRCYXNlZFNlbGVjdGVkVGV4dFJh
bmdlKCkpOwogfQogCi1jb25zdCBBdG9tU3RyaW5nJiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjphY2Nlc3NLZXkoKSBjb25zdAorU3RyaW5nIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFj
Y2Vzc0tleSgpIGNvbnN0CiB7CiAgICAgTm9kZSogbm9kZSA9IG1fcmVuZGVyZXItPm5vZGUoKTsK
ICAgICBpZiAoIWlzPEVsZW1lbnQ+KG5vZGUpKQpAQCAtMzU4Miw3ICszNTgyLDcgQEAgdm9pZCBB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp0YWJDaGlsZHJlbihBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5WZWN0b3ImIHJlc3VsdCkKICAgICB9CiB9CiAgICAgCi1jb25zdCBTdHJpbmcmIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OmFjdGlvblZlcmIoKSBjb25zdAorU3RyaW5nIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OmFjdGlvblZlcmIoKSBjb25zdAogewogI2lmICFQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIC8vIEZJWE1FOiBOZWVkIHRvIGFkZCB2ZXJicyBmb3Igc2VsZWN0IGVsZW1l
bnRzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QuaAppbmRleCAzOTYxNzMwNGNlYTM3MGY0OTdiZjM0YzVmNTE0NzIx
MDE3ZGJiNzAyLi4zZjM0Njc4M2U0OGE5NWQ4M2I5ZDMzZTEwZGNmM2I5ZDUwYjg5Y2IwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3QuaApAQCAtMTM0LDggKzEzNCw4IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgdGV4
dCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGludCB0ZXh0TGVuZ3RoKCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgU3RyaW5nIHNlbGVjdGVkVGV4dCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIGNvbnN0IEF0
b21TdHJpbmcmIGFjY2Vzc0tleSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIGNvbnN0IFN0cmluZyYg
YWN0aW9uVmVyYigpIGNvbnN0IG92ZXJyaWRlOworICAgIFN0cmluZyBhY2Nlc3NLZXkoKSBjb25z
dCBvdmVycmlkZTsKKyAgICBTdHJpbmcgYWN0aW9uVmVyYigpIGNvbnN0IG92ZXJyaWRlOwogICAg
IFdpZGdldCogd2lkZ2V0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgV2lkZ2V0KiB3aWRnZXRGb3JB
dHRhY2htZW50VmlldygpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBnZXREb2N1
bWVudExpbmtzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbi5oIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbi5oCmluZGV4
IDAwZTkwYTI5M2Y0NzllMDg5NTc2ZDljYThhNDE2MzEyMWU0MWI0MTkuLjFhMmRjOTY4NzUzY2Uz
NGJjNGExZmQ1ZTMyYTI0MzY2Mzc4NWJiNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTcGluQnV0dG9uLmgKQEAgLTQ2LDcgKzQ2LDYg
QEAgcHJpdmF0ZToKICAgICBBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbigpOwogCiAgICAgQWNjZXNz
aWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQWNjZXNzaWJp
bGl0eVJvbGU6OlNwaW5CdXR0b247IH0KLSAgICBib29sIGlzU3BpbkJ1dHRvbigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICBib29sIGlzTmF0aXZlU3BpbkJ1dHRvbigpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB2b2lkIGFkZENoaWxkcmVuKCkgb3Zl
cnJpZGU7CiAgICAgTGF5b3V0UmVjdCBlbGVtZW50UmVjdCgpIGNvbnN0IG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29s
YXRlZFRyZWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUv
QVhJc29sYXRlZFRyZWUuY3BwCmluZGV4IDVkM2ZjYmExZjg4Mzc2YWExZTQyMmZmN2U0NTNkMmYz
ZmIyYTc3YzAuLjNjMzkxOGE3MGE3OTJlZGNiODI0MWIwMmFiNWE0Mjk5NTQ3YWQ4NTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0
ZWRUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJl
ZS9BWElzb2xhdGVkVHJlZS5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCBSZWZQdHI8QVhJc29sYXRl
ZE9iamVjdD4gQVhJc29sYXRlZFRyZWU6OnJvb3ROb2RlKCkKICAgICByZXR1cm4gbm9kZUZvcklE
KG1fcm9vdE5vZGVJRCk7CiB9CiAKLXZvaWQgQVhJc29sYXRlZFRyZWU6OnNldFJvb3QoUmVmPEFY
SXNvbGF0ZWRPYmplY3Q+JiByb290KQordm9pZCBBWElzb2xhdGVkVHJlZTo6c2V0Um9vdE5vZGUo
UmVmPEFYSXNvbGF0ZWRPYmplY3Q+JiByb290KQogewogICAgIExvY2tIb2xkZXIgbG9ja2VyIHsg
bV9jaGFuZ2VMb2dMb2NrIH07CiAgICAgbV9yb290Tm9kZUlEID0gcm9vdC0+b2JqZWN0SUQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FY
SXNvbGF0ZWRUcmVlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJl
ZS9BWElzb2xhdGVkVHJlZS5oCmluZGV4IDMwN2NkOTFhMDdkMmM1ZjMwYjM3Y2Y3MWY4YzMxMjgy
MTE5NDk1YmMuLjllZmIyMmJlZjE3Yjg0YzkxMjBlMDEzMTgyMjZiZjlhMDRhNmEzODggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0
ZWRUcmVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUv
QVhJc29sYXRlZFRyZWUuaApAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBl
bmROb2RlQ2hhbmdlcyhWZWN0b3I8UmVmPEFYSXNvbGF0ZWRPYmplY3Q+PiYpOwogICAgIHZvaWQg
cmVtb3ZlTm9kZShBWElEKTsKIAotICAgIHZvaWQgc2V0Um9vdChSZWY8QVhJc29sYXRlZE9iamVj
dD4mKTsKKyAgICB2b2lkIHNldFJvb3ROb2RlKFJlZjxBWElzb2xhdGVkT2JqZWN0PiYpOwogICAg
IHZvaWQgc2V0Rm9jdXNlZE5vZGVJRChBWElEKTsKICAgICAKICAgICAvLyBDYWxsIG9uIEFYIHRo
cmVhZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRy
ZWUvQVhJc29sYXRlZFRyZWVOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlTm9kZS5jcHAKaW5kZXggODcwNGY5NDE3ODAxODEz
YzM0YTE1YTIwOGQ0NzA1OTdhNDQwZGNlMi4uNzAyYzY3YmQ5ZGZmMzBkNjY1N2IyNGRlNDQ2NGRl
ODY1MThmODQyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29s
YXRlZHRyZWUvQVhJc29sYXRlZFRyZWVOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZU5vZGUuY3BwCkBAIC0zMiwyNCAr
MzIsMjQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1BWElzb2xhdGVkT2JqZWN0OjpBWElz
b2xhdGVkT2JqZWN0KEFYQ29yZU9iamVjdCYgb2JqZWN0KQorQVhJc29sYXRlZE9iamVjdDo6QVhJ
c29sYXRlZE9iamVjdChBWENvcmVPYmplY3QmIG9iamVjdCwgYm9vbCBpc1Jvb3QpCiAgICAgOiBt
X2lkKG9iamVjdC5vYmplY3RJRCgpKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0g
ICAgaW5pdGlhbGl6ZUF0dHJpYnV0ZURhdGEob2JqZWN0KTsKKyAgICBpbml0aWFsaXplQXR0cmli
dXRlRGF0YShvYmplY3QsIGlzUm9vdCk7CiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIG1faW5p
dGlhbGl6ZWQgPSB0cnVlOwogI2VuZGlmCiB9CiAKLVJlZjxBWElzb2xhdGVkT2JqZWN0PiBBWElz
b2xhdGVkT2JqZWN0OjpjcmVhdGUoQVhDb3JlT2JqZWN0JiBvYmplY3QpCitSZWY8QVhJc29sYXRl
ZE9iamVjdD4gQVhJc29sYXRlZE9iamVjdDo6Y3JlYXRlKEFYQ29yZU9iamVjdCYgb2JqZWN0LCBi
b29sIGlzUm9vdCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBWElzb2xhdGVkT2JqZWN0
KG9iamVjdCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFYSXNvbGF0ZWRPYmplY3Qob2Jq
ZWN0LCBpc1Jvb3QpKTsKIH0KIAogQVhJc29sYXRlZE9iamVjdDo6fkFYSXNvbGF0ZWRPYmplY3Qo
KSA9IGRlZmF1bHQ7CiAKLXZvaWQgQVhJc29sYXRlZE9iamVjdDo6aW5pdGlhbGl6ZUF0dHJpYnV0
ZURhdGEoQVhDb3JlT2JqZWN0JiBvYmplY3QpCit2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OmluaXRp
YWxpemVBdHRyaWJ1dGVEYXRhKEFYQ29yZU9iamVjdCYgb2JqZWN0LCBib29sIGlzUm9vdCkKIHsK
ICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6Qm91bmRpbmdCb3hSZWN0LCBvYmplY3Qu
Ym91bmRpbmdCb3hSZWN0KCkpOwogICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpFbGVt
ZW50UmVjdCwgb2JqZWN0LmVsZW1lbnRSZWN0KCkpOwpAQCAtNzEsNyArNzEsNDEgQEAgdm9pZCBB
WElzb2xhdGVkT2JqZWN0Ojppbml0aWFsaXplQXR0cmlidXRlRGF0YShBWENvcmVPYmplY3QmIG9i
amVjdCkKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6VGl0bGUsIG9iamVjdC50aXRs
ZUF0dHJpYnV0ZVZhbHVlKCkuaXNvbGF0ZWRDb3B5KCkpOwogICAgIHNldFByb3BlcnR5KEFYUHJv
cGVydHlOYW1lOjpEZXNjcmlwdGlvbiwgb2JqZWN0LmRlc2NyaXB0aW9uQXR0cmlidXRlVmFsdWUo
KS5pc29sYXRlZENvcHkoKSk7CiAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkhlbHBU
ZXh0LCBvYmplY3QuaGVscFRleHRBdHRyaWJ1dGVWYWx1ZSgpLmlzb2xhdGVkQ29weSgpKTsKLQor
ICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc1NlYXJjaEZpZWxkLCBvYmplY3QuaXNT
ZWFyY2hGaWVsZCgpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNNZWRpYVRp
bWVsaW5lLCBvYmplY3QuaXNNZWRpYVRpbWVsaW5lKCkpOworICAgIHNldFByb3BlcnR5KEFYUHJv
cGVydHlOYW1lOjpJc01lbnVSZWxhdGVkLCBvYmplY3QuaXNNZW51UmVsYXRlZCgpKTsKKyAgICBz
ZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNNZW51LCBvYmplY3QuaXNNZW51KCkpOworICAg
IHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc01lbnVCYXIsIG9iamVjdC5pc01lbnVCYXIo
KSk7CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OklzTWVudUJ1dHRvbiwgb2JqZWN0
LmlzTWVudUJ1dHRvbigpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNNZW51
SXRlbSwgb2JqZWN0LmlzTWVudUl0ZW0oKSk7CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5h
bWU6OklzSW5wdXRJbWFnZSwgb2JqZWN0LmlzSW5wdXRJbWFnZSgpKTsKKyAgICBzZXRQcm9wZXJ0
eShBWFByb3BlcnR5TmFtZTo6SXNQcm9ncmVzc0luZGljYXRvciwgb2JqZWN0LmlzUHJvZ3Jlc3NJ
bmRpY2F0b3IoKSk7CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OklzU2xpZGVyLCBv
YmplY3QuaXNTbGlkZXIoKSk7CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OklzQ29u
dHJvbCwgb2JqZWN0LmlzQ29udHJvbCgpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFt
ZTo6SXNMaXN0LCBvYmplY3QuaXNMaXN0KCkpOworICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlO
YW1lOjpJc1RhYmxlLCBvYmplY3QuaXNUYWJsZSgpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3Bl
cnR5TmFtZTo6SXNUYWJsZVJvdywgb2JqZWN0LmlzVGFibGVSb3coKSk7CisgICAgc2V0UHJvcGVy
dHkoQVhQcm9wZXJ0eU5hbWU6OklzVGFibGVDb2x1bW4sIG9iamVjdC5pc1RhYmxlQ29sdW1uKCkp
OworICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc1RhYmxlQ2VsbCwgb2JqZWN0Lmlz
VGFibGVDZWxsKCkpOworICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc0ZpZWxkc2V0
LCBvYmplY3QuaXNGaWVsZHNldCgpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6
SXNHcm91cCwgb2JqZWN0LmlzR3JvdXAoKSk7CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5h
bWU6OklzQVJJQVRyZWVHcmlkUm93LCBvYmplY3QuaXNBUklBVHJlZUdyaWRSb3coKSk7CisgICAg
c2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OklzTWVudUxpc3QsIG9iamVjdC5pc01lbnVMaXN0
KCkpOworICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc01lbnVMaXN0UG9wdXAsIG9i
amVjdC5pc01lbnVMaXN0UG9wdXAoKSk7CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6
OklzTWVudUxpc3RPcHRpb24sIG9iamVjdC5pc01lbnVMaXN0T3B0aW9uKCkpOworICAgIHNldFBy
b3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc1RleHRDb250cm9sLCBvYmplY3QuaXNUZXh0Q29udHJv
bCgpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNCdXR0b24sIG9iamVjdC5p
c0J1dHRvbigpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNSYW5nZUNvbnRy
b2wsIG9iamVjdC5pc1JhbmdlQ29udHJvbCgpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5
TmFtZTo6SXNTdHlsZUZvcm1hdEdyb3VwLCBvYmplY3QuaXNTdHlsZUZvcm1hdEdyb3VwKCkpOwor
ICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc091dHB1dCwgb2JqZWN0LmlzT3V0cHV0
KCkpOworICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpTdXBwb3J0c0RhdGV0aW1lQXR0
cmlidXRlLCBvYmplY3Quc3VwcG9ydHNEYXRldGltZUF0dHJpYnV0ZSgpKTsKKyAgICBzZXRQcm9w
ZXJ0eShBWFByb3BlcnR5TmFtZTo6RGF0ZXRpbWVBdHRyaWJ1dGVWYWx1ZSwgb2JqZWN0LmRhdGV0
aW1lQXR0cmlidXRlVmFsdWUoKSk7CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkNh
blNldEZvY3VzQXR0cmlidXRlLCBvYmplY3QuY2FuU2V0Rm9jdXNBdHRyaWJ1dGUoKSk7CisgICAg
c2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkNhblNldFRleHRSYW5nZUF0dHJpYnV0ZXMsIG9i
amVjdC5jYW5TZXRUZXh0UmFuZ2VBdHRyaWJ1dGVzKCkpOworICAgIHNldFByb3BlcnR5KEFYUHJv
cGVydHlOYW1lOjpDYW5TZXRWYWx1ZUF0dHJpYnV0ZSwgb2JqZWN0LmNhblNldFZhbHVlQXR0cmli
dXRlKCkpOworICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpDYW5TZXROdW1lcmljVmFs
dWUsIG9iamVjdC5jYW5TZXROdW1lcmljVmFsdWUoKSk7CisgICAgc2V0UHJvcGVydHkoQVhQcm9w
ZXJ0eU5hbWU6OklzUGFzc3dvcmRGaWVsZCwgb2JqZWN0LmlzUGFzc3dvcmRGaWVsZCgpKTsKKyAg
ICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNIZWFkaW5nLCBvYmplY3QuaXNIZWFkaW5n
KCkpOwogICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc0NoZWNrZWQsIG9iamVjdC5p
c0NoZWNrZWQoKSk7CiAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OklzRW5hYmxlZCwg
b2JqZWN0LmlzRW5hYmxlZCgpKTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNT
ZWxlY3RlZCwgb2JqZWN0LmlzU2VsZWN0ZWQoKSk7CkBAIC05Miw3ICsxMjYsMTY0IEBAIHZvaWQg
QVhJc29sYXRlZE9iamVjdDo6aW5pdGlhbGl6ZUF0dHJpYnV0ZURhdGEoQVhDb3JlT2JqZWN0JiBv
YmplY3QpCiAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OklzVmlzaWJsZSwgb2JqZWN0
LmlzVmlzaWJsZSgpKTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNDb2xsYXBz
ZWQsIG9iamVjdC5pc0NvbGxhcHNlZCgpKTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFt
ZTo6SXNTZWxlY3RlZE9wdGlvbkFjdGl2ZSwgb2JqZWN0LmlzU2VsZWN0ZWRPcHRpb25BY3RpdmUo
KSk7CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkNhblNldFNlbGVjdGVkQXR0cmli
dXRlLCBvYmplY3QuY2FuU2V0U2VsZWN0ZWRBdHRyaWJ1dGUoKSk7CisgICAgc2V0UHJvcGVydHko
QVhQcm9wZXJ0eU5hbWU6OkNhblNldFNlbGVjdGVkQ2hpbGRyZW5BdHRyaWJ1dGUsIG9iamVjdC5j
YW5TZXRTZWxlY3RlZENoaWxkcmVuQXR0cmlidXRlKCkpOworICAgIHNldFByb3BlcnR5KEFYUHJv
cGVydHlOYW1lOjpDYW5TZXRFeHBhbmRlZEF0dHJpYnV0ZSwgb2JqZWN0LmNhblNldEV4cGFuZGVk
QXR0cmlidXRlKCkpOworICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc1Nob3dpbmdW
YWxpZGF0aW9uTWVzc2FnZSwgb2JqZWN0LmlzU2hvd2luZ1ZhbGlkYXRpb25NZXNzYWdlKCkpOwor
ICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpWYWxpZGF0aW9uTWVzc2FnZSwgb2JqZWN0
LnZhbGlkYXRpb25NZXNzYWdlKCkpOworICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpC
bG9ja3F1b3RlTGV2ZWwsIG9iamVjdC5ibG9ja3F1b3RlTGV2ZWwoKSk7CisgICAgc2V0UHJvcGVy
dHkoQVhQcm9wZXJ0eU5hbWU6OkhlYWRpbmdMZXZlbCwgb2JqZWN0LmhlYWRpbmdMZXZlbCgpKTsK
KyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6VGFibGVMZXZlbCwgb2JqZWN0LnRhYmxl
TGV2ZWwoKSk7CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkFjY2Vzc2liaWxpdHlC
dXR0b25TdGF0ZSwgc3RhdGljX2Nhc3Q8aW50PihvYmplY3QuY2hlY2tib3hPclJhZGlvVmFsdWUo
KSkpOworICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpWYWx1ZURlc2NyaXB0aW9uLCBv
YmplY3QudmFsdWVEZXNjcmlwdGlvbigpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFt
ZTo6VmFsdWVGb3JSYW5nZSwgb2JqZWN0LnZhbHVlRm9yUmFuZ2UoKSk7CisgICAgc2V0UHJvcGVy
dHkoQVhQcm9wZXJ0eU5hbWU6Ok1heFZhbHVlRm9yUmFuZ2UsIG9iamVjdC5tYXhWYWx1ZUZvclJh
bmdlKCkpOworICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpNaW5WYWx1ZUZvclJhbmdl
LCBvYmplY3QubWluVmFsdWVGb3JSYW5nZSgpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5
TmFtZTo6U2VsZWN0ZWRSYWRpb0J1dHRvbiwgb2JqZWN0LnNlbGVjdGVkUmFkaW9CdXR0b24oKSk7
CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OlNlbGVjdGVkVGFiSXRlbSwgb2JqZWN0
LnNlbGVjdGVkVGFiSXRlbSgpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6TGF5
b3V0Q291bnQsIG9iamVjdC5sYXlvdXRDb3VudCgpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3Bl
cnR5TmFtZTo6RXN0aW1hdGVkTG9hZGluZ1Byb2dyZXNzLCBvYmplY3QuZXN0aW1hdGVkTG9hZGlu
Z1Byb2dyZXNzKCkpOworICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpTdXBwb3J0c0FS
SUFPd25zLCBvYmplY3Quc3VwcG9ydHNBUklBT3ducygpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFBy
b3BlcnR5TmFtZTo6SXNBY3RpdmVEZXNjZW5kYW50T2ZGb2N1c2VkQ29udGFpbmVyLCBvYmplY3Qu
aXNBY3RpdmVEZXNjZW5kYW50T2ZGb2N1c2VkQ29udGFpbmVyKCkpOworICAgIHNldFByb3BlcnR5
KEFYUHJvcGVydHlOYW1lOjpIYXNQb3B1cCwgb2JqZWN0Lmhhc1BvcHVwKCkpOworICAgIHNldFBy
b3BlcnR5KEFYUHJvcGVydHlOYW1lOjpQb3B1cFZhbHVlLCBvYmplY3QucG9wdXBWYWx1ZSgpKTsK
KyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6UHJlc3NlZElzUHJlc2VudCwgb2JqZWN0
LnByZXNzZWRJc1ByZXNlbnQoKSk7CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkFS
SUFJc011bHRpbGluZSwgb2JqZWN0LmFyaWFJc011bHRpbGluZSgpKTsKKyAgICBzZXRQcm9wZXJ0
eShBWFByb3BlcnR5TmFtZTo6SW52YWxpZFN0YXR1cywgb2JqZWN0LmludmFsaWRTdGF0dXMoKSk7
CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OlN1cHBvcnRzRXhwYW5kZWQsIG9iamVj
dC5zdXBwb3J0c0V4cGFuZGVkKCkpOworICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpT
b3J0RGlyZWN0aW9uLCBzdGF0aWNfY2FzdDxpbnQ+KG9iamVjdC5zb3J0RGlyZWN0aW9uKCkpKTsK
KyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6Q2FudmFzSGFzRmFsbGJhY2tDb250ZW50
LCBvYmplY3QuY2FudmFzSGFzRmFsbGJhY2tDb250ZW50KCkpOworICAgIHNldFByb3BlcnR5KEFY
UHJvcGVydHlOYW1lOjpTdXBwb3J0c1JhbmdlVmFsdWUsIG9iamVjdC5zdXBwb3J0c1JhbmdlVmFs
dWUoKSk7CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OklkZW50aWZpZXJBdHRyaWJ1
dGUsIG9iamVjdC5pZGVudGlmaWVyQXR0cmlidXRlKCkpOworICAgIHNldFByb3BlcnR5KEFYUHJv
cGVydHlOYW1lOjpMaW5rUmVsVmFsdWUsIG9iamVjdC5saW5rUmVsVmFsdWUoKSk7CisgICAgc2V0
UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkN1cnJlbnRTdGF0ZSwgc3RhdGljX2Nhc3Q8aW50Pihv
YmplY3QuY3VycmVudFN0YXRlKCkpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6
Q3VycmVudFZhbHVlLCBvYmplY3QuY3VycmVudFZhbHVlKCkpOworICAgIHNldFByb3BlcnR5KEFY
UHJvcGVydHlOYW1lOjpTdXBwb3J0c0N1cnJlbnQsIG9iamVjdC5zdXBwb3J0c0N1cnJlbnQoKSk7
CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OktleVNob3J0Y3V0c1ZhbHVlLCBvYmpl
Y3Qua2V5U2hvcnRjdXRzVmFsdWUoKSk7CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6
OlN1cHBvcnRzU2V0U2l6ZSwgb2JqZWN0LnN1cHBvcnRzU2V0U2l6ZSgpKTsKKyAgICBzZXRQcm9w
ZXJ0eShBWFByb3BlcnR5TmFtZTo6U3VwcG9ydHNQb3NJblNldCwgb2JqZWN0LnN1cHBvcnRzUG9z
SW5TZXQoKSk7CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OlNldFNpemUsIG9iamVj
dC5zZXRTaXplKCkpOworICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpQb3NJblNldCwg
b2JqZWN0LnBvc0luU2V0KCkpOworICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpTdXBw
b3J0c0FSSUFEcm9wcGluZywgb2JqZWN0LnN1cHBvcnRzQVJJQURyb3BwaW5nKCkpOworICAgIHNl
dFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpTdXBwb3J0c0FSSUFEcmFnZ2luZywgb2JqZWN0LnN1
cHBvcnRzQVJJQURyYWdnaW5nKCkpOworICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJ
c0FSSUFHcmFiYmVkLCBvYmplY3QuaXNBUklBR3JhYmJlZCgpKTsKKyAgICBzZXRQcm9wZXJ0eShB
WFByb3BlcnR5TmFtZTo6QVJJQURyb3BFZmZlY3RzLCBvYmplY3QuZGV0ZXJtaW5lQVJJQURyb3BF
ZmZlY3RzKCkpOworICAgIHNldE9iamVjdFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpUaXRsZVVJ
RWxlbWVudCwgb2JqZWN0LnRpdGxlVUlFbGVtZW50KCkpOworICAgIHNldFByb3BlcnR5KEFYUHJv
cGVydHlOYW1lOjpFeHBvc2VzVGl0bGVVSUVsZW1lbnQsIG9iamVjdC5leHBvc2VzVGl0bGVVSUVs
ZW1lbnQoKSk7CisgICAgc2V0T2JqZWN0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OlZlcnRpY2Fs
U2Nyb2xsQmFyLCBvYmplY3Quc2Nyb2xsQmFyKEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbjo6VmVy
dGljYWwpKTsKKyAgICBzZXRPYmplY3RQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SG9yaXpvbnRh
bFNjcm9sbEJhciwgb2JqZWN0LnNjcm9sbEJhcihBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb246Okhv
cml6b250YWwpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6QVJJQVJvbGVBdHRy
aWJ1dGUsIHN0YXRpY19jYXN0PGludD4ob2JqZWN0LmFyaWFSb2xlQXR0cmlidXRlKCkpKTsKKyAg
ICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6Q29tcHV0ZWRMYWJlbCwgb2JqZWN0LmNvbXB1
dGVkTGFiZWwoKSk7CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OlBsYWNlaG9sZGVy
VmFsdWUsIG9iamVjdC5wbGFjZWhvbGRlclZhbHVlKCkpOworICAgIHNldFByb3BlcnR5KEFYUHJv
cGVydHlOYW1lOjpFeHBhbmRlZFRleHRWYWx1ZSwgb2JqZWN0LmV4cGFuZGVkVGV4dFZhbHVlKCkp
OworICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpTdXBwb3J0c0V4cGFuZGVkVGV4dFZh
bHVlLCBvYmplY3Quc3VwcG9ydHNFeHBhbmRlZFRleHRWYWx1ZSgpKTsKKyAgICBzZXRQcm9wZXJ0
eShBWFByb3BlcnR5TmFtZTo6U3VwcG9ydHNQcmVzc0FjdGlvbiwgb2JqZWN0LnN1cHBvcnRzUHJl
c3NBY3Rpb24oKSk7CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkNsaWNrUG9pbnQs
IG9iamVjdC5jbGlja1BvaW50KCkpOworICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpD
b21wdXRlZFJvbGVTdHJpbmcsIG9iamVjdC5jb21wdXRlZFJvbGVTdHJpbmcoKSk7CisgICAgc2V0
UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OklzVmFsdWVBdXRvZmlsbGVkLCBvYmplY3QuaXNWYWx1
ZUF1dG9maWxsZWQoKSk7CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OklzVmFsdWVB
dXRvZmlsbEF2YWlsYWJsZSwgb2JqZWN0LmlzVmFsdWVBdXRvZmlsbEF2YWlsYWJsZSgpKTsKKyAg
ICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6VmFsdWVBdXRvZmlsbEJ1dHRvblR5cGUsIHN0
YXRpY19jYXN0PGludD4ob2JqZWN0LnZhbHVlQXV0b2ZpbGxCdXR0b25UeXBlKCkpKTsKKyAgICBz
ZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6VVJMLCBvYmplY3QudXJsKCkpOworICAgIHNldFBy
b3BlcnR5KEFYUHJvcGVydHlOYW1lOjpBY2Nlc3NLZXksIG9iamVjdC5hY2Nlc3NLZXkoKSk7Cisg
ICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkFjdGlvblZlcmIsIG9iamVjdC5hY3Rpb25W
ZXJiKCkpOworICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpSZWFkT25seVZhbHVlLCBv
YmplY3QucmVhZE9ubHlWYWx1ZSgpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6
QXV0b0NvbXBsZXRlVmFsdWUsIG9iamVjdC5hdXRvQ29tcGxldGVWYWx1ZSgpKTsKKyAgICBzZXRQ
cm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6U3BlYWtBcywgb2JqZWN0LnNwZWFrQXNQcm9wZXJ0eSgp
KTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6Q2FyZXRCcm93c2luZ0VuYWJsZWQs
IG9iamVjdC5jYXJldEJyb3dzaW5nRW5hYmxlZCgpKTsKKyAgICBzZXRPYmplY3RQcm9wZXJ0eShB
WFByb3BlcnR5TmFtZTo6Rm9jdXNhYmxlQW5jZXN0b3IsIG9iamVjdC5mb2N1c2FibGVBbmNlc3Rv
cigpKTsKKyAgICBzZXRPYmplY3RQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6RWRpdGFibGVBbmNl
c3Rvciwgb2JqZWN0LmVkaXRhYmxlQW5jZXN0b3IoKSk7CisgICAgc2V0T2JqZWN0UHJvcGVydHko
QVhQcm9wZXJ0eU5hbWU6OkhpZ2hlc3RFZGl0YWJsZUFuY2VzdG9yLCBvYmplY3QuaGlnaGVzdEVk
aXRhYmxlQW5jZXN0b3IoKSk7CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6Ok9yaWVu
dGF0aW9uLCBzdGF0aWNfY2FzdDxpbnQ+KG9iamVjdC5vcmllbnRhdGlvbigpKSk7CisgICAgc2V0
UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkhpZXJhcmNoaWNhbExldmVsLCBvYmplY3QuaGllcmFy
Y2hpY2FsTGV2ZWwoKSk7CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6Okxhbmd1YWdl
LCBvYmplY3QubGFuZ3VhZ2UoKSk7CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkNh
bkhhdmVTZWxlY3RlZENoaWxkcmVuLCBvYmplY3QuY2FuSGF2ZVNlbGVjdGVkQ2hpbGRyZW4oKSk7
CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6Okhhc0FSSUFWYWx1ZU5vdywgb2JqZWN0
Lmhhc0FSSUFWYWx1ZU5vdygpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6VGFn
TmFtZSwgb2JqZWN0LnRhZ05hbWUoKSk7CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6
OlN1cHBvcnRzTGl2ZVJlZ2lvbiwgb2JqZWN0LnN1cHBvcnRzTGl2ZVJlZ2lvbigpKTsKKyAgICBz
ZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNJbnNpZGVMaXZlUmVnaW9uLCBvYmplY3QuaXNJ
bnNpZGVMaXZlUmVnaW9uKCkpOworICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpMaXZl
UmVnaW9uU3RhdHVzLCBvYmplY3QubGl2ZVJlZ2lvblN0YXR1cygpKTsKKyAgICBzZXRQcm9wZXJ0
eShBWFByb3BlcnR5TmFtZTo6TGl2ZVJlZ2lvblJlbGV2YW50LCBvYmplY3QubGl2ZVJlZ2lvblJl
bGV2YW50KCkpOworICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpMaXZlUmVnaW9uQXRv
bWljLCBvYmplY3QubGl2ZVJlZ2lvbkF0b21pYygpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3Bl
cnR5TmFtZTo6SXNCdXN5LCBvYmplY3QuaXNCdXN5KCkpOworICAgIHNldFByb3BlcnR5KEFYUHJv
cGVydHlOYW1lOjpJc0lubGluZVRleHQsIG9iamVjdC5pc0lubGluZVRleHQoKSk7CisgICAgaWYg
KG9iamVjdC5pc1RleHRDb250cm9sKCkpCisgICAgICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlO
YW1lOjpUZXh0TGVuZ3RoLCBvYmplY3QudGV4dExlbmd0aCgpKTsKKworICAgIEFjY2Vzc2liaWxp
dHlDaGlsZHJlblZlY3RvciBzZWxlY3RlZENoaWxkcmVuOworICAgIG9iamVjdC5zZWxlY3RlZENo
aWxkcmVuKHNlbGVjdGVkQ2hpbGRyZW4pOworICAgIHNldE9iamVjdFZlY3RvclByb3BlcnR5KEFY
UHJvcGVydHlOYW1lOjpTZWxlY3RlZENoaWxkcmVuLCBzZWxlY3RlZENoaWxkcmVuKTsKKworICAg
IEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciB2aXNpYmxlQ2hpbGRyZW47CisgICAgb2JqZWN0
LnZpc2libGVDaGlsZHJlbih2aXNpYmxlQ2hpbGRyZW4pOworICAgIHNldE9iamVjdFZlY3RvclBy
b3BlcnR5KEFYUHJvcGVydHlOYW1lOjpWaXNpYmxlQ2hpbGRyZW4sIHZpc2libGVDaGlsZHJlbik7
CisKKyAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgdGFiQ2hpbGRyZW47CisgICAgb2Jq
ZWN0LnRhYkNoaWxkcmVuKHRhYkNoaWxkcmVuKTsKKyAgICBzZXRPYmplY3RWZWN0b3JQcm9wZXJ0
eShBWFByb3BlcnR5TmFtZTo6VGFiQ2hpbGRyZW4sIHRhYkNoaWxkcmVuKTsKKworICAgIEFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciBhcmlhVHJlZVJvd3M7CisgICAgb2JqZWN0LmFyaWFUcmVl
Um93cyhhcmlhVHJlZVJvd3MpOworICAgIHNldE9iamVjdFZlY3RvclByb3BlcnR5KEFYUHJvcGVy
dHlOYW1lOjpBUklBVHJlZVJvd3MsIGFyaWFUcmVlUm93cyk7CisKKyAgICBBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5WZWN0b3IgYXJpYVRyZWVJdGVtRGlzY2xvc2VkUm93czsKKyAgICBvYmplY3QuYXJp
YVRyZWVJdGVtRGlzY2xvc2VkUm93cyhhcmlhVHJlZUl0ZW1EaXNjbG9zZWRSb3dzKTsKKyAgICBz
ZXRPYmplY3RWZWN0b3JQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6QVJJQVRyZWVJdGVtRGlzY2xv
c2VkUm93cywgYXJpYVRyZWVJdGVtRGlzY2xvc2VkUm93cyk7CisKKyAgICBBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5WZWN0b3IgYXJpYVRyZWVJdGVtQ29udGVudDsKKyAgICBvYmplY3QuYXJpYVRyZWVJ
dGVtQ29udGVudChhcmlhVHJlZUl0ZW1Db250ZW50KTsKKyAgICBzZXRPYmplY3RWZWN0b3JQcm9w
ZXJ0eShBWFByb3BlcnR5TmFtZTo6QVJJQVRyZWVJdGVtQ29udGVudCwgYXJpYVRyZWVJdGVtQ29u
dGVudCk7CisKKyAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgbGlua2VkVUlFbGVtZW50
czsKKyAgICBvYmplY3QubGlua2VkVUlFbGVtZW50cyhsaW5rZWRVSUVsZW1lbnRzKTsKKyAgICBz
ZXRPYmplY3RWZWN0b3JQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6TGlua2VkVUlFbGVtZW50cywg
bGlua2VkVUlFbGVtZW50cyk7CiAKKyAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgYXJp
YUNvbnRyb2xzRWxlbWVudHM7CisgICAgb2JqZWN0LmFyaWFDb250cm9sc0VsZW1lbnRzKGFyaWFD
b250cm9sc0VsZW1lbnRzKTsKKyAgICBzZXRPYmplY3RWZWN0b3JQcm9wZXJ0eShBWFByb3BlcnR5
TmFtZTo6QVJJQUNvbnRyb2xzRWxlbWVudHMsIGFyaWFDb250cm9sc0VsZW1lbnRzKTsKKworICAg
IEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBhcmlhRGV0YWlsc0VsZW1lbnRzOworICAgIG9i
amVjdC5hcmlhRGV0YWlsc0VsZW1lbnRzKGFyaWFEZXRhaWxzRWxlbWVudHMpOworICAgIHNldE9i
amVjdFZlY3RvclByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpBUklBRGV0YWlsc0VsZW1lbnRzLCBh
cmlhRGV0YWlsc0VsZW1lbnRzKTsKKworICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBh
cmlhRXJyb3JNZXNzYWdlRWxlbWVudHM7CisgICAgb2JqZWN0LmFyaWFFcnJvck1lc3NhZ2VFbGVt
ZW50cyhhcmlhRXJyb3JNZXNzYWdlRWxlbWVudHMpOworICAgIHNldE9iamVjdFZlY3RvclByb3Bl
cnR5KEFYUHJvcGVydHlOYW1lOjpBUklBRXJyb3JNZXNzYWdlRWxlbWVudHMsIGFyaWFFcnJvck1l
c3NhZ2VFbGVtZW50cyk7CisKKyAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgYXJpYUZs
b3dUb0VsZW1lbnRzOworICAgIG9iamVjdC5hcmlhRmxvd1RvRWxlbWVudHMoYXJpYUZsb3dUb0Vs
ZW1lbnRzKTsKKyAgICBzZXRPYmplY3RWZWN0b3JQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6QVJJ
QUZsb3dUb0VsZW1lbnRzLCBhcmlhRmxvd1RvRWxlbWVudHMpOworCisgICAgQWNjZXNzaWJpbGl0
eUNoaWxkcmVuVmVjdG9yIGFyaWFPd25zRWxlbWVudHM7CisgICAgb2JqZWN0LmFyaWFPd25zRWxl
bWVudHMoYXJpYU93bnNFbGVtZW50cyk7CisgICAgc2V0T2JqZWN0VmVjdG9yUHJvcGVydHkoQVhQ
cm9wZXJ0eU5hbWU6OkFSSUFPd25zRWxlbWVudHMsIGFyaWFPd25zRWxlbWVudHMpOworCisgICAg
VmVjdG9yPEFjY2Vzc2liaWxpdHlUZXh0PiB0ZXh0czsKKyAgICBvYmplY3QuYWNjZXNzaWJpbGl0
eVRleHQodGV4dHMpOworICAgIFZlY3RvcjxBY2Nlc3NpYmlsaXR5SXNvbGF0ZWRUcmVlVGV4dD4g
aXNvbGF0ZWRUZXh0czsKKyAgICBpc29sYXRlZFRleHRzLnJlc2VydmVDYXBhY2l0eSh0ZXh0cy5z
aXplKCkpOworICAgIGZvciAoYXV0byB0ZXh0IDogdGV4dHMpIHsKKyAgICAgICAgQWNjZXNzaWJp
bGl0eUlzb2xhdGVkVHJlZVRleHQgaXNvbGF0ZWRUZXh0OworICAgICAgICBpc29sYXRlZFRleHQu
dGV4dCA9IHRleHQudGV4dDsKKyAgICAgICAgaXNvbGF0ZWRUZXh0LnRleHRTb3VyY2UgPSB0ZXh0
LnRleHRTb3VyY2U7CisgICAgICAgIGZvciAoYXV0byBvYmplY3QgOiB0ZXh0LnRleHRFbGVtZW50
cykKKyAgICAgICAgICAgIGlzb2xhdGVkVGV4dC50ZXh0RWxlbWVudHMuYXBwZW5kKG9iamVjdC0+
b2JqZWN0SUQoKSk7CisgICAgICAgIGlzb2xhdGVkVGV4dHMudW5jaGVja2VkQXBwZW5kKGlzb2xh
dGVkVGV4dCk7CisgICAgfQorICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpBY2Nlc3Np
YmlsaXR5VGV4dCwgaXNvbGF0ZWRUZXh0cyk7CisKKyAgICBWZWN0b3I8U3RyaW5nPiBjbGFzc0xp
c3Q7CisgICAgb2JqZWN0LmNsYXNzTGlzdChjbGFzc0xpc3QpOworICAgIFN0cmluZyBjb21iaW5l
ZENsYXNzTGlzdDsKKyAgICBmb3IgKGF1dG8gaXQgPSBjbGFzc0xpc3QuYmVnaW4oKSwgZW5kID0g
Y2xhc3NMaXN0LmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgY29tYmluZWRDbGFz
c0xpc3QuYXBwZW5kKCppdCk7CisgICAgICAgIGNvbWJpbmVkQ2xhc3NMaXN0LmFwcGVuZCgiICIp
OworICAgIH0KKyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6Q2xhc3NMaXN0LCBjb21i
aW5lZENsYXNzTGlzdCk7CisgICAgCisgICAgaW50IHIsIGcsIGI7CisgICAgb2JqZWN0LmNvbG9y
VmFsdWUociwgZywgYik7CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkNvbG9yVmFs
dWUsIENvbG9yKHIsIGcsIGIpKTsKKyAgICAKICAgICBpZiAoYm9vbCBpc01hdGhFbGVtZW50ID0g
b2JqZWN0LmlzTWF0aEVsZW1lbnQoKSkgewogICAgICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5
TmFtZTo6SXNNYXRoRWxlbWVudCwgaXNNYXRoRWxlbWVudCk7CiAgICAgICAgIHNldFByb3BlcnR5
KEFYUHJvcGVydHlOYW1lOjpJc0Fub255bW91c01hdGhPcGVyYXRvciwgb2JqZWN0LmlzQW5vbnlt
b3VzTWF0aE9wZXJhdG9yKCkpOwpAQCAtMTI2LDcgKzMxNyw0MSBAQCB2b2lkIEFYSXNvbGF0ZWRP
YmplY3Q6OmluaXRpYWxpemVBdHRyaWJ1dGVEYXRhKEFYQ29yZU9iamVjdCYgb2JqZWN0KQogICAg
ICAgICBzZXRPYmplY3RQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6TWF0aEJhc2VPYmplY3QsIG9i
amVjdC5tYXRoQmFzZU9iamVjdCgpKTsKICAgICAgICAgc2V0T2JqZWN0UHJvcGVydHkoQVhQcm9w
ZXJ0eU5hbWU6Ok1hdGhTdWJzY3JpcHRPYmplY3QsIG9iamVjdC5tYXRoU3Vic2NyaXB0T2JqZWN0
KCkpOwogICAgICAgICBzZXRPYmplY3RQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6TWF0aFN1cGVy
c2NyaXB0T2JqZWN0LCBvYmplY3QubWF0aFN1cGVyc2NyaXB0T2JqZWN0KCkpOworICAgICAgICBz
ZXRNYXRoc2NyaXB0cyhBWFByb3BlcnR5TmFtZTo6TWF0aFByZXNjcmlwdHMsIG9iamVjdCk7Cisg
ICAgICAgIHNldE1hdGhzY3JpcHRzKEFYUHJvcGVydHlOYW1lOjpNYXRoUG9zdHNjcmlwdHMsIG9i
amVjdCk7CisgICAgfQorICAgIAorICAgIGlmIChpc1Jvb3QpIHsKKyAgICAgICAgc2V0UHJvcGVy
dHkoQVhQcm9wZXJ0eU5hbWU6OlByZXZlbnRLZXlib2FyZERPTUV2ZW50RGlzcGF0Y2gsIG9iamVj
dC5wcmV2ZW50S2V5Ym9hcmRET01FdmVudERpc3BhdGNoKCkpOworICAgICAgICBzZXRQcm9wZXJ0
eShBWFByb3BlcnR5TmFtZTo6U2Vzc2lvbklELCBvYmplY3Quc2Vzc2lvbklEKCkpOworICAgICAg
ICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6RG9jdW1lbnRVUkksIG9iamVjdC5kb2N1bWVu
dFVSSSgpKTsKKyAgICAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkRvY3VtZW50RW5j
b2RpbmcsIG9iamVjdC5kb2N1bWVudEVuY29kaW5nKCkpOworICAgIH0KK30KKwordm9pZCBBWElz
b2xhdGVkT2JqZWN0OjpzZXRNYXRoc2NyaXB0cyhBWFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IEFYQ29yZU9iamVjdCYgb2JqZWN0KQoreworICAgIEFjY2Vzc2liaWxpdHlNYXRoTXVsdGlzY3Jp
cHRQYWlycyBwYWlyczsKKyAgICBpZiAocHJvcGVydHlOYW1lID09IEFYUHJvcGVydHlOYW1lOjpN
YXRoUHJlc2NyaXB0cykKKyAgICAgICAgb2JqZWN0Lm1hdGhQcmVzY3JpcHRzKHBhaXJzKTsKKyAg
ICBlbHNlIGlmIChwcm9wZXJ0eU5hbWUgPT0gQVhQcm9wZXJ0eU5hbWU6Ok1hdGhQb3N0c2NyaXB0
cykKKyAgICAgICAgb2JqZWN0Lm1hdGhQb3N0c2NyaXB0cyhwYWlycyk7CisgICAgCisgICAgc2l6
ZV90IG1hdGhTaXplID0gcGFpcnMuc2l6ZSgpOworICAgIGlmICghbWF0aFNpemUpCisgICAgICAg
IHJldHVybjsKKyAgICAKKyAgICBWZWN0b3I8QWNjZXNzaWJpbGl0eUlzb2xhdGVkVHJlZU1hdGhN
dWx0aXNjcmlwdFBhaXI+IGlkUGFpcnM7CisgICAgaWRQYWlycy5yZXNlcnZlQ2FwYWNpdHkobWF0
aFNpemUpOworICAgIGZvciAoYXV0byBtYXRoUGFpciA6IHBhaXJzKSB7CisgICAgICAgIEFjY2Vz
c2liaWxpdHlJc29sYXRlZFRyZWVNYXRoTXVsdGlzY3JpcHRQYWlyIGlkUGFpcjsKKyAgICAgICAg
aWYgKG1hdGhQYWlyLmZpcnN0KQorICAgICAgICAgICAgaWRQYWlyLmZpcnN0ID0gbWF0aFBhaXIu
Zmlyc3QtPm9iamVjdElEKCk7CisgICAgICAgIGlmIChtYXRoUGFpci5zZWNvbmQpCisgICAgICAg
ICAgICBpZFBhaXIuc2Vjb25kID0gbWF0aFBhaXIuc2Vjb25kLT5vYmplY3RJRCgpOworICAgICAg
ICBpZFBhaXJzLnVuY2hlY2tlZEFwcGVuZChpZFBhaXIpOwogICAgIH0KKyAgICBzZXRQcm9wZXJ0
eShwcm9wZXJ0eU5hbWUsIGlkUGFpcnMpOwogfQogCiB2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OnNl
dE9iamVjdFByb3BlcnR5KEFYUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgQVhDb3JlT2JqZWN0
KiBvYmplY3QpCkBAIC0xMzcsNiArMzYyLDE5IEBAIHZvaWQgQVhJc29sYXRlZE9iamVjdDo6c2V0
T2JqZWN0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBBWENvcmVPYmplCiAg
ICAgICAgIHNldFByb3BlcnR5KHByb3BlcnR5TmFtZSwgbnVsbHB0ciwgdHJ1ZSk7CiB9CiAKK3Zv
aWQgQVhJc29sYXRlZE9iamVjdDo6c2V0T2JqZWN0VmVjdG9yUHJvcGVydHkoQVhQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGNoaWxkcmVuKQor
eworICAgIHNpemVfdCBjaGlsZHJlblNpemUgPSBjaGlsZHJlbi5zaXplKCk7CisgICAgaWYgKCFj
aGlsZHJlblNpemUpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBWZWN0b3I8QVhJRD4gY2hp
bGRyZW5WZWN0b3I7CisgICAgY2hpbGRyZW5WZWN0b3IucmVzZXJ2ZUNhcGFjaXR5KGNoaWxkcmVu
U2l6ZSk7CisgICAgZm9yIChhdXRvIGNoaWxkT2JqZWN0IDogY2hpbGRyZW4pCisgICAgICAgIGNo
aWxkcmVuVmVjdG9yLnVuY2hlY2tlZEFwcGVuZChjaGlsZE9iamVjdC0+b2JqZWN0SUQoKSk7Cisg
ICAgc2V0UHJvcGVydHkocHJvcGVydHlOYW1lLCBjaGlsZHJlblZlY3Rvcik7Cit9CisKIHZvaWQg
QVhJc29sYXRlZE9iamVjdDo6c2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBBdHRyaWJ1dGVWYWx1ZVZhcmlhbnQmJiB2YWx1ZSwgYm9vbCBzaG91bGRSZW1vdmUpCiB7CiAg
ICAgQVNTRVJUKCFtX2luaXRpYWxpemVkKTsKQEAgLTE2MCw2ICszOTgsMTIgQEAgdm9pZCBBWElz
b2xhdGVkT2JqZWN0OjpzZXRQYXJlbnQoQVhJRCBwYXJlbnQpCiAgICAgbV9wYXJlbnQgPSBwYXJl
bnQ7CiB9CiAKK2Jvb2wgQVhJc29sYXRlZE9iamVjdDo6aXNEZXRhY2hlZCgpIGNvbnN0Cit7Cisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiB2b2lkIEFY
SXNvbGF0ZWRPYmplY3Q6OnNldFRyZWVJZGVudGlmaWVyKEFYSXNvbGF0ZWRUcmVlSUQgdHJlZUlk
ZW50aWZpZXIpCiB7CiAgICAgbV90cmVlSWRlbnRpZmllciA9IHRyZWVJZGVudGlmaWVyOwpAQCAt
MTgwLDYgKzQyNCw4MyBAQCBjb25zdCBBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJl
blZlY3RvciYgQVhJc29sYXRlZE9iamVjdDo6Y2hpbGRyZW4oYm9vbAogICAgIHJldHVybiBtX2No
aWxkcmVuOwogfQogCitib29sIEFYSXNvbGF0ZWRPYmplY3Q6OmlzRGV0YWNoZWRGcm9tUGFyZW50
KCkKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K3ZvaWQgQVhJc29sYXRlZE9iamVjdDo6YWNjZXNzaWJpbGl0eVRleHQoVmVjdG9yPEFjY2Vzc2li
aWxpdHlUZXh0PiYgdGV4dHMpIGNvbnN0Cit7CisgICAgYXV0byBpc29sYXRlZFRleHRzID0gdmVj
dG9yQXR0cmlidXRlVmFsdWU8QWNjZXNzaWJpbGl0eUlzb2xhdGVkVHJlZVRleHQ+KEFYUHJvcGVy
dHlOYW1lOjpBY2Nlc3NpYmlsaXR5VGV4dCk7CisgICAgZm9yIChhdXRvIGlzb2xhdGVkVGV4dCA6
IGlzb2xhdGVkVGV4dHMpIHsKKyAgICAgICAgQWNjZXNzaWJpbGl0eVRleHQgdGV4dChpc29sYXRl
ZFRleHQudGV4dCwgaXNvbGF0ZWRUZXh0LnRleHRTb3VyY2UpOworICAgICAgICBmb3IgKGF1dG8g
YXhJRCA6IGlzb2xhdGVkVGV4dC50ZXh0RWxlbWVudHMpIHsKKyAgICAgICAgICAgIGlmIChhdXRv
IG9iamVjdCA9IHRyZWUoKS0+bm9kZUZvcklEKGF4SUQpKQorICAgICAgICAgICAgICAgIHRleHQu
dGV4dEVsZW1lbnRzLmFwcGVuZChvYmplY3QpOworICAgICAgICB9CisgICAgICAgIHRleHRzLmFw
cGVuZCh0ZXh0KTsKKyAgICB9Cit9CisKK3ZvaWQgQVhJc29sYXRlZE9iamVjdDo6Y2xhc3NMaXN0
KFZlY3RvcjxTdHJpbmc+JiBsaXN0KSBjb25zdAoreworICAgIFN0cmluZyBjbGFzc0xpc3QgPSBz
dHJpbmdBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6Q2xhc3NMaXN0KTsKKyAgICBsaXN0
LmFwcGVuZFZlY3RvcihjbGFzc0xpc3Quc3BsaXQoIiAiKSk7Cit9CisKK3VpbnQ2NF90IEFYSXNv
bGF0ZWRPYmplY3Q6OnNlc3Npb25JRCgpIGNvbnN0Cit7CisgICAgaWYgKGF1dG8gcm9vdCA9IHRy
ZWUoKS0+cm9vdE5vZGUoKSkKKyAgICAgICAgcmV0dXJuIHJvb3QtPnVpbnQ2NEF0dHJpYnV0ZVZh
bHVlKEFYUHJvcGVydHlOYW1lOjpTZXNzaW9uSUQpOworICAgIHJldHVybiAwOworfQorCitTdHJp
bmcgQVhJc29sYXRlZE9iamVjdDo6ZG9jdW1lbnRVUkkoKSBjb25zdAoreworICAgIGlmIChhdXRv
IHJvb3QgPSB0cmVlKCktPnJvb3ROb2RlKCkpCisgICAgICAgIHJldHVybiByb290LT5zdHJpbmdB
dHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6RG9jdW1lbnRVUkkpOworICAgIHJldHVybiBT
dHJpbmcoKTsKK30KKworYm9vbCBBWElzb2xhdGVkT2JqZWN0OjpwcmV2ZW50S2V5Ym9hcmRET01F
dmVudERpc3BhdGNoKCkgY29uc3QKK3sKKyAgICBpZiAoYXV0byByb290ID0gdHJlZSgpLT5yb290
Tm9kZSgpKQorICAgICAgICByZXR1cm4gcm9vdC0+Ym9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVy
dHlOYW1lOjpQcmV2ZW50S2V5Ym9hcmRET01FdmVudERpc3BhdGNoKTsKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK1N0cmluZyBBWElzb2xhdGVkT2JqZWN0Ojpkb2N1bWVudEVuY29kaW5nKCkgY29u
c3QKK3sKKyAgICBpZiAoYXV0byByb290ID0gdHJlZSgpLT5yb290Tm9kZSgpKQorICAgICAgICBy
ZXR1cm4gcm9vdC0+c3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkRvY3VtZW50
RW5jb2RpbmcpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKwordm9pZCBBWElzb2xhdGVkT2Jq
ZWN0OjppbnNlcnRNYXRoUGFpcnMoVmVjdG9yPEFjY2Vzc2liaWxpdHlJc29sYXRlZFRyZWVNYXRo
TXVsdGlzY3JpcHRQYWlyPiYgaXNvbGF0ZWRQYWlycywgQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNj
cmlwdFBhaXJzJiBwYWlycykKK3sKKyAgICBmb3IgKGF1dG8gcGFpciA6IGlzb2xhdGVkUGFpcnMp
IHsKKyAgICAgICAgQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdFBhaXIgcHJlc2NyaXB0UGFp
cjsKKyAgICAgICAgaWYgKGF1dG8qIGNvcmVPYmplY3QgPSB0cmVlKCktPm5vZGVGb3JJRChwYWly
LmZpcnN0KS5nZXQoKSkKKyAgICAgICAgICAgIHByZXNjcmlwdFBhaXIuZmlyc3QgPSBjb3JlT2Jq
ZWN0OworICAgICAgICBpZiAoYXV0byogY29yZU9iamVjdCA9IHRyZWUoKS0+bm9kZUZvcklEKHBh
aXIuc2Vjb25kKS5nZXQoKSkKKyAgICAgICAgICAgIHByZXNjcmlwdFBhaXIuc2Vjb25kID0gY29y
ZU9iamVjdDsKKyAgICAgICAgcGFpcnMuYXBwZW5kKHByZXNjcmlwdFBhaXIpOworICAgIH0KK30K
Kwordm9pZCBBWElzb2xhdGVkT2JqZWN0OjptYXRoUHJlc2NyaXB0cyhBY2Nlc3NpYmlsaXR5TWF0
aE11bHRpc2NyaXB0UGFpcnMmIHBhaXJzKQoreworICAgIGF1dG8gaXNvbGF0ZWRQYWlycyA9IHZl
Y3RvckF0dHJpYnV0ZVZhbHVlPEFjY2Vzc2liaWxpdHlJc29sYXRlZFRyZWVNYXRoTXVsdGlzY3Jp
cHRQYWlyPihBWFByb3BlcnR5TmFtZTo6TWF0aFByZXNjcmlwdHMpOworICAgIGluc2VydE1hdGhQ
YWlycyhpc29sYXRlZFBhaXJzLCBwYWlycyk7Cit9CisKK3ZvaWQgQVhJc29sYXRlZE9iamVjdDo6
bWF0aFBvc3RzY3JpcHRzKEFjY2Vzc2liaWxpdHlNYXRoTXVsdGlzY3JpcHRQYWlycyYgcGFpcnMp
Cit7CisgICAgYXV0byBpc29sYXRlZFBhaXJzID0gdmVjdG9yQXR0cmlidXRlVmFsdWU8QWNjZXNz
aWJpbGl0eUlzb2xhdGVkVHJlZU1hdGhNdWx0aXNjcmlwdFBhaXI+KEFYUHJvcGVydHlOYW1lOjpN
YXRoUG9zdHNjcmlwdHMpOworICAgIGluc2VydE1hdGhQYWlycyhpc29sYXRlZFBhaXJzLCBwYWly
cyk7Cit9CisKIEFYQ29yZU9iamVjdCogQVhJc29sYXRlZE9iamVjdDo6Zm9jdXNlZFVJRWxlbWVu
dCgpIGNvbnN0CiB7CiAgICAgaWYgKGF1dG8gZm9jdXNlZEVsZW1lbnQgPSB0cmVlKCktPmZvY3Vz
ZWRVSUVsZW1lbnQoKSkKQEAgLTE5Miw2ICs1MTMsMTkgQEAgQVhDb3JlT2JqZWN0KiBBWElzb2xh
dGVkT2JqZWN0OjpwYXJlbnRPYmplY3RVbmlnbm9yZWQoKSBjb25zdAogICAgIHJldHVybiB0cmVl
KCktPm5vZGVGb3JJRChwYXJlbnQoKSkuZ2V0KCk7CiB9CiAKK0FYQ29yZU9iamVjdCogQVhJc29s
YXRlZE9iamVjdDo6c2Nyb2xsQmFyKEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbiBvcmllbnRhdGlv
bikKK3sKKyAgICByZXR1cm4gb2JqZWN0QXR0cmlidXRlVmFsdWUob3JpZW50YXRpb24gPT0gQWNj
ZXNzaWJpbGl0eU9yaWVudGF0aW9uOjpWZXJ0aWNhbCA/IEFYUHJvcGVydHlOYW1lOjpWZXJ0aWNh
bFNjcm9sbEJhciA6IEFYUHJvcGVydHlOYW1lOjpIb3Jpem9udGFsU2Nyb2xsQmFyKTsKK30KKwor
dm9pZCBBWElzb2xhdGVkT2JqZWN0Ojpjb2xvclZhbHVlKGludCYgciwgaW50JiBnLCBpbnQmIGIp
IGNvbnN0Cit7CisgICAgYXV0byBjb2xvciA9IGNvbG9yQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0
eU5hbWU6OkNvbG9yVmFsdWUpOworICAgIHIgPSBjb2xvci5yZWQoKTsKKyAgICBnID0gY29sb3Iu
Z3JlZW4oKTsKKyAgICBiID0gY29sb3IuYmx1ZSgpOworfQorCiBBWENvcmVPYmplY3QqIEFYSXNv
bGF0ZWRPYmplY3Q6OmFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JiBwb2ludCkg
Y29uc3QKIHsKICAgICBpZiAoIXJlbGF0aXZlRnJhbWUoKS5jb250YWlucyhwb2ludCkpCkBAIC0y
MTAsNiArNTQ0LDE1IEBAIEFYSXNvbGF0ZWRUcmVlKiBBWElzb2xhdGVkT2JqZWN0Ojp0cmVlKCkg
Y29uc3QKICAgICByZXR1cm4gbV9jYWNoZWRUcmVlLmdldCgpOwogfQogCitJbnRQb2ludCBBWElz
b2xhdGVkT2JqZWN0OjppbnRQb2ludEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSkgY29uc3QKK3sKKyAgICBhdXRvIHZhbHVlID0gbV9hdHRyaWJ1dGVNYXAuZ2V0KHBy
b3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24odmFsdWUsCisgICAgICAgIFtd
IChJbnRQb2ludCYgdHlwZWRWYWx1ZSkgeyByZXR1cm4gdHlwZWRWYWx1ZTsgfSwKKyAgICAgICAg
W10gKGF1dG8mKSB7IHJldHVybiBJbnRQb2ludCgpOyB9CisgICAgKTsKK30KKwogQVhDb3JlT2Jq
ZWN0KiBBWElzb2xhdGVkT2JqZWN0OjpvYmplY3RBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUpIGNvbnN0CiB7CiAgICAgYXV0byB2YWx1ZSA9IG1fYXR0cmlidXRlTWFw
LmdldChwcm9wZXJ0eU5hbWUpOwpAQCAtMjMxLDYgKzU3NCw2MiBAQCBUIEFYSXNvbGF0ZWRPYmpl
Y3Q6OnJlY3RBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIGNvbnN0
CiAgICAgKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVD4KK1ZlY3RvcjxUPiBBWElzb2xhdGVk
T2JqZWN0Ojp2ZWN0b3JBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUp
IGNvbnN0Cit7CisgICAgYXV0byB2YWx1ZSA9IG1fYXR0cmlidXRlTWFwLmdldChwcm9wZXJ0eU5h
bWUpOworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKHZhbHVlLAorICAgICAgICBbXSAoVmVjdG9y
PFQ+JiB0eXBlZFZhbHVlKSB7IHJldHVybiB0eXBlZFZhbHVlOyB9LAorICAgICAgICBbXSAoYXV0
byYpIHsgcmV0dXJuIFZlY3RvcjxUPigpOyB9CisgICAgKTsKK30KKwordGVtcGxhdGU8dHlwZW5h
bWUgVD4KK09wdGlvblNldDxUPiBBWElzb2xhdGVkT2JqZWN0OjpvcHRpb25TZXRBdHRyaWJ1dGVW
YWx1ZShBWFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIGNvbnN0Cit7CisgICAgYXV0byB2YWx1
ZSA9IG1fYXR0cmlidXRlTWFwLmdldChwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiBXVEY6OnN3
aXRjaE9uKHZhbHVlLAorICAgICAgICBbXSAoVCYgdHlwZWRWYWx1ZSkgeyByZXR1cm4gdHlwZWRW
YWx1ZTsgfSwKKyAgICAgICAgW10gKGF1dG8mKSB7IHJldHVybiBPcHRpb25TZXQ8VD4oKTsgfQor
ICAgICk7Cit9CisKK3VpbnQ2NF90IEFYSXNvbGF0ZWRPYmplY3Q6OnVpbnQ2NEF0dHJpYnV0ZVZh
bHVlKEFYUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgY29uc3QKK3sKKyAgICBhdXRvIHZhbHVl
ID0gbV9hdHRyaWJ1dGVNYXAuZ2V0KHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIFdURjo6c3dp
dGNoT24odmFsdWUsCisgICAgICAgIFtdICh1aW50NjRfdCYgdHlwZWRWYWx1ZSkgeyByZXR1cm4g
dHlwZWRWYWx1ZTsgfSwKKyAgICAgICAgW10gKGF1dG8mKSB7IHJldHVybiAwOyB9CisgICAgKTsK
K30KKworVVJMIEFYSXNvbGF0ZWRPYmplY3Q6OnVybEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSkgY29uc3QKK3sKKyAgICBhdXRvIHZhbHVlID0gbV9hdHRyaWJ1dGVN
YXAuZ2V0KHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24odmFsdWUsCisg
ICAgICAgIFtdIChVUkwmIHR5cGVkVmFsdWUpIHsgcmV0dXJuIHR5cGVkVmFsdWU7IH0sCisgICAg
ICAgIFtdIChhdXRvJikgeyByZXR1cm4gVVJMKCk7IH0KKyAgICApOworfQorCitDb2xvciBBWElz
b2xhdGVkT2JqZWN0Ojpjb2xvckF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSkgY29uc3QKK3sKKyAgICBhdXRvIHZhbHVlID0gbV9hdHRyaWJ1dGVNYXAuZ2V0KHByb3Bl
cnR5TmFtZSk7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24odmFsdWUsCisgICAgICAgIFtdIChD
b2xvciYgdHlwZWRWYWx1ZSkgeyByZXR1cm4gdHlwZWRWYWx1ZTsgfSwKKyAgICAgICAgW10gKGF1
dG8mKSB7IHJldHVybiBDb2xvcigpOyB9CisgICAgKTsKK30KKworZmxvYXQgQVhJc29sYXRlZE9i
amVjdDo6ZmxvYXRBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIGNv
bnN0Cit7CisgICAgYXV0byB2YWx1ZSA9IG1fYXR0cmlidXRlTWFwLmdldChwcm9wZXJ0eU5hbWUp
OworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKHZhbHVlLAorICAgICAgICBbXSAoZmxvYXQmIHR5
cGVkVmFsdWUpIHsgcmV0dXJuIHR5cGVkVmFsdWU7IH0sCisgICAgICAgIFtdIChhdXRvJikgeyBy
ZXR1cm4gMDsgfQorICAgICk7Cit9CisKIGRvdWJsZSBBWElzb2xhdGVkT2JqZWN0Ojpkb3VibGVB
dHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIGNvbnN0CiB7CiAgICAg
YXV0byB2YWx1ZSA9IG1fYXR0cmlidXRlTWFwLmdldChwcm9wZXJ0eU5hbWUpOwpAQCAtMjc2LDYg
KzY3NSwxNiBAQCBpbnQgQVhJc29sYXRlZE9iamVjdDo6aW50QXR0cmlidXRlVmFsdWUoQVhQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdAogICAgICk7CiB9CiAKK3ZvaWQgQVhJc29sYXRl
ZE9iamVjdDo6ZmlsbENoaWxkcmVuVmVjdG9yRm9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGNoaWxkcmVuKSBjb25zdAor
eworICAgIFZlY3RvcjxBWElEPiBjaGlsZElEcyA9IHZlY3RvckF0dHJpYnV0ZVZhbHVlPEFYSUQ+
KHByb3BlcnR5TmFtZSk7CisgICAgY2hpbGRyZW4ucmVzZXJ2ZUNhcGFjaXR5KGNoaWxkSURzLnNp
emUoKSk7CisgICAgZm9yIChhdXRvIGNoaWxkSUQgOiBjaGlsZElEcykgeworICAgICAgICBpZiAo
YXV0byBvYmplY3QgPSB0cmVlKCktPm5vZGVGb3JJRChjaGlsZElEKSkKKyAgICAgICAgICAgIGNo
aWxkcmVuLnVuY2hlY2tlZEFwcGVuZChvYmplY3QpOworICAgIH0KK30KKwogdm9pZCBBWElzb2xh
dGVkT2JqZWN0Ojp1cGRhdGVCYWNraW5nU3RvcmUoKQogewogICAgIEFTU0VSVCghaXNNYWluVGhy
ZWFkKCkpOwpAQCAtMjg1LDYgKzY5NCwxMDQ5IEBAIHZvaWQgQVhJc29sYXRlZE9iamVjdDo6dXBk
YXRlQmFja2luZ1N0b3JlKCkKICAgICB9CiB9CiAKK2Jvb2wgQVhJc29sYXRlZE9iamVjdDo6cmVw
bGFjZVRleHRJblJhbmdlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFBsYWluVGV4dFJhbmdlJikKK3sK
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wg
QVhJc29sYXRlZE9iamVjdDo6aW5zZXJ0VGV4dChjb25zdCBTdHJpbmcmKQoreworICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBWElzb2xhdGVk
T2JqZWN0OjpwcmVzcygpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJu
IGZhbHNlOworfQorCitib29sIEFYSXNvbGF0ZWRPYmplY3Q6OnBlcmZvcm1EZWZhdWx0QWN0aW9u
KCkKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K2Jvb2wgQVhJc29sYXRlZE9iamVjdDo6aXNBY2Nlc3NpYmlsaXR5T2JqZWN0KCkgY29uc3QKK3sK
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wg
QVhJc29sYXRlZE9iamVjdDo6aXNBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdCgpIGNvbnN0Cit7Cisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFY
SXNvbGF0ZWRPYmplY3Q6OmlzQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCgpIGNvbnN0Cit7Cisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFY
SXNvbGF0ZWRPYmplY3Q6OmlzQWNjZXNzaWJpbGl0eVNjcm9sbGJhcigpIGNvbnN0Cit7CisgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFYSXNv
bGF0ZWRPYmplY3Q6OmlzQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcoKSBjb25zdAoreworICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBWElzb2xh
dGVkT2JqZWN0Ojppc0FjY2Vzc2liaWxpdHlTVkdSb290KCkgY29uc3QKK3sKKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQVhJc29sYXRlZE9i
amVjdDo6aXNBY2Nlc3NpYmlsaXR5U1ZHRWxlbWVudCgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFYSXNvbGF0ZWRPYmpl
Y3Q6OmNvbnRhaW5zVGV4dChTdHJpbmcqKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBWElzb2xhdGVkT2JqZWN0Ojppc0F0
dGFjaG1lbnRFbGVtZW50KCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQVhJc29sYXRlZE9iamVjdDo6aXNOYXRpdmVJbWFn
ZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCitib29sIEFYSXNvbGF0ZWRPYmplY3Q6OmlzSW1hZ2VCdXR0b24oKSBjb25zdAorewor
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBB
WElzb2xhdGVkT2JqZWN0Ojppc0NvbnRhaW5lZEJ5UGFzc3dvcmRGaWVsZCgpIGNvbnN0Cit7Cisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitBWENvcmVP
YmplY3QqIEFYSXNvbGF0ZWRPYmplY3Q6OnBhc3N3b3JkRmllbGRPckNvbnRhaW5pbmdQYXNzd29y
ZEZpZWxkKCkKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gbnVsbHB0
cjsKK30KKworYm9vbCBBWElzb2xhdGVkT2JqZWN0Ojppc05hdGl2ZVRleHRDb250cm9sKCkgY29u
c3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K2Jvb2wgQVhJc29sYXRlZE9iamVjdDo6aXNOYXRpdmVMaXN0Qm94KCkgY29uc3QKK3sKKyAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQVhJc29s
YXRlZE9iamVjdDo6aXNMaXN0Qm94T3B0aW9uKCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQVhJc29sYXRlZE9iamVjdDo6
aXNTbGlkZXJUaHVtYigpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
cmV0dXJuIGZhbHNlOworfQorCitib29sIEFYSXNvbGF0ZWRPYmplY3Q6OmlzSW5wdXRTbGlkZXIo
KSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsK
K30KKworYm9vbCBBWElzb2xhdGVkT2JqZWN0Ojppc0xhYmVsKCkgY29uc3QKK3sKKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQVhJc29sYXRl
ZE9iamVjdDo6aXNEYXRhVGFibGUoKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBWElzb2xhdGVkT2JqZWN0Ojppc0ltYWdl
TWFwTGluaygpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJu
IGZhbHNlOworfQorCitib29sIEFYSXNvbGF0ZWRPYmplY3Q6OmlzTmF0aXZlU3BpbkJ1dHRvbigp
IGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCitib29sIEFYSXNvbGF0ZWRPYmplY3Q6OmlzU3BpbkJ1dHRvblBhcnQoKSBjb25zdAorewor
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBB
WElzb2xhdGVkT2JqZWN0Ojppc01vY2tPYmplY3QoKSBjb25zdAoreworICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBWElzb2xhdGVkT2JqZWN0
Ojppc01lZGlhT2JqZWN0KCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQVhJc29sYXRlZE9iamVjdDo6aXNBUklBVGV4dENv
bnRyb2woKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBm
YWxzZTsKK30KKworYm9vbCBBWElzb2xhdGVkT2JqZWN0Ojppc05vbk5hdGl2ZVRleHRDb250cm9s
KCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK2Jvb2wgQVhJc29sYXRlZE9iamVjdDo6aXNCbG9ja3F1b3RlKCkgY29uc3QKK3sKKyAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQVhJ
c29sYXRlZE9iamVjdDo6aXNMYW5kbWFyaygpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFYSXNvbGF0ZWRPYmplY3Q6Omlz
RmlndXJlRWxlbWVudCgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
cmV0dXJuIGZhbHNlOworfQorCitib29sIEFYSXNvbGF0ZWRPYmplY3Q6OmlzS2V5Ym9hcmRGb2N1
c2FibGUoKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBm
YWxzZTsKK30KKworYm9vbCBBWElzb2xhdGVkT2JqZWN0Ojppc0hvdmVyZWQoKSBjb25zdAorewor
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBB
WElzb2xhdGVkT2JqZWN0Ojppc0luZGV0ZXJtaW5hdGUoKSBjb25zdAoreworICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBWElzb2xhdGVkT2Jq
ZWN0Ojppc0xvYWRlZCgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
cmV0dXJuIGZhbHNlOworfQorCitib29sIEFYSXNvbGF0ZWRPYmplY3Q6OmlzT25TY3JlZW4oKSBj
b25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30K
KworYm9vbCBBWElzb2xhdGVkT2JqZWN0Ojppc09mZlNjcmVlbigpIGNvbnN0Cit7CisgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFYSXNvbGF0
ZWRPYmplY3Q6OmlzUHJlc3NlZCgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFYSXNvbGF0ZWRPYmplY3Q6OmlzVW52aXNp
dGVkKCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK2Jvb2wgQVhJc29sYXRlZE9iamVjdDo6aXNMaW5rZWQoKSBjb25zdAoreworICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBWElz
b2xhdGVkT2JqZWN0Ojppc1Zpc2libGUoKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBWElzb2xhdGVkT2JqZWN0Ojppc0Nv
bGxhcHNlZCgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJu
IGZhbHNlOworfQorCitib29sIEFYSXNvbGF0ZWRPYmplY3Q6OmlzU2VsZWN0ZWRPcHRpb25BY3Rp
dmUoKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxz
ZTsKK30KKworYm9vbCBBWElzb2xhdGVkT2JqZWN0OjpoYXNCb2xkRm9udCgpIGNvbnN0Cit7Cisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFY
SXNvbGF0ZWRPYmplY3Q6Omhhc0l0YWxpY0ZvbnQoKSBjb25zdAoreworICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBWElzb2xhdGVkT2JqZWN0
OjpoYXNNaXNzcGVsbGluZygpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFYSXNvbGF0ZWRPYmplY3Q6Omhhc1BsYWluVGV4
dCgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCitib29sIEFYSXNvbGF0ZWRPYmplY3Q6Omhhc1NhbWVGb250KFJlbmRlck9iamVjdCop
IGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCitib29sIEFYSXNvbGF0ZWRPYmplY3Q6Omhhc1NhbWVGb250Q29sb3IoUmVuZGVyT2JqZWN0
KikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK2Jvb2wgQVhJc29sYXRlZE9iamVjdDo6aGFzU2FtZVN0eWxlKFJlbmRlck9iamVjdCop
IGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCitib29sIEFYSXNvbGF0ZWRPYmplY3Q6OmlzU3RhdGljVGV4dCgpIGNvbnN0Cit7CisgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFYSXNv
bGF0ZWRPYmplY3Q6Omhhc1VuZGVybGluZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFYSXNvbGF0ZWRPYmplY3Q6Omhh
c0hpZ2hsaWdodGluZygpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
cmV0dXJuIGZhbHNlOworfQorCitFbGVtZW50KiBBWElzb2xhdGVkT2JqZWN0OjplbGVtZW50KCkg
Y29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsK
K30KKworTm9kZSogQVhJc29sYXRlZE9iamVjdDo6bm9kZSgpIGNvbnN0Cit7CisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK1JlbmRlck9iamVjdCog
QVhJc29sYXRlZE9iamVjdDo6cmVuZGVyZXIoKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitBY2Nlc3NpYmlsaXR5T2JqZWN0SW5j
bHVzaW9uIEFYSXNvbGF0ZWRPYmplY3Q6OmRlZmF1bHRPYmplY3RJbmNsdXNpb24oKSBjb25zdAor
eworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0SW5jbHVzaW9uOjpEZWZhdWx0QmVoYXZpb3I7Cit9CisKK2Jvb2wgQVhJc29sYXRlZE9iamVj
dDo6YWNjZXNzaWJpbGl0eUlzSWdub3JlZEJ5RGVmYXVsdCgpIGNvbnN0Cit7CisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitmbG9hdCBBWElzb2xhdGVk
T2JqZWN0OjpzdGVwVmFsdWVGb3JSYW5nZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK0FYQ29yZU9iamVjdCogQVhJc29sYXRlZE9iamVj
dDo6c2VsZWN0ZWRMaXN0SXRlbSgpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
cmV0dXJuIG51bGxwdHI7Cit9CisKK3ZvaWQgQVhJc29sYXRlZE9iamVjdDo6YXJpYUFjdGl2ZURl
c2NlbmRhbnRSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYp
IGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgQVhJc29sYXRl
ZE9iamVjdDo6YXJpYUNvbnRyb2xzUmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3ImKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit2
b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OmFyaWFEZXNjcmliZWRCeUVsZW1lbnRzKEFjY2Vzc2liaWxp
dHlDaGlsZHJlblZlY3RvciYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9
CisKK3ZvaWQgQVhJc29sYXRlZE9iamVjdDo6YXJpYURlc2NyaWJlZEJ5UmVmZXJlbmNpbmdFbGVt
ZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdAoreworICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworfQorCit2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OmFyaWFEZXRhaWxzUmVm
ZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdAorewor
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OmFy
aWFFcnJvck1lc3NhZ2VSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgQVhJ
c29sYXRlZE9iamVjdDo6YXJpYUZsb3dUb1JlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0
eUNoaWxkcmVuVmVjdG9yJikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30K
Kwordm9pZCBBWElzb2xhdGVkT2JqZWN0OjphcmlhTGFiZWxsZWRCeUVsZW1lbnRzKEFjY2Vzc2li
aWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Cit9CisKK3ZvaWQgQVhJc29sYXRlZE9iamVjdDo6YXJpYUxhYmVsbGVkQnlSZWZlcmVuY2luZ0Vs
ZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0Cit7CisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgQVhJc29sYXRlZE9iamVjdDo6YXJpYU93bnNSZWZl
cmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0Cit7Cisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK2Jvb2wgQVhJc29sYXRlZE9iamVjdDo6aGFz
RGF0YWxpc3QoKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVy
biBmYWxzZTsKK30KKworYm9vbCBBWElzb2xhdGVkT2JqZWN0OjpzdXBwb3J0c0hhc1BvcHVwKCkg
Y29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK2Jvb2wgQVhJc29sYXRlZE9iamVjdDo6c3VwcG9ydHNQcmVzc2VkKCkgY29uc3QKK3sKKyAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQVhJ
c29sYXRlZE9iamVjdDo6c3VwcG9ydHNDaGVja2VkKCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQVhJc29sYXRlZE9iamVj
dDo6aWdub3JlZEZyb21Nb2RhbFByZXNlbmNlKCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQVhJc29sYXRlZE9iamVjdDo6
aXNNb2RhbERlc2NlbmRhbnQoTm9kZSopIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFYSXNvbGF0ZWRPYmplY3Q6OmlzTW9k
YWxOb2RlKCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK0FYQ29yZU9iamVjdCogQVhJc29sYXRlZE9iamVjdDo6ZWxlbWVudEFjY2Vz
c2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworQVhDb3JlT2JqZWN0KiBBWElz
b2xhdGVkT2JqZWN0OjpmaXJzdENoaWxkKCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworQVhDb3JlT2JqZWN0KiBBWElzb2xhdGVk
T2JqZWN0OjpsYXN0Q2hpbGQoKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIHJldHVybiBudWxscHRyOworfQorCitBWENvcmVPYmplY3QqIEFYSXNvbGF0ZWRPYmplY3Q6
OnByZXZpb3VzU2libGluZygpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0FYQ29yZU9iamVjdCogQVhJc29sYXRlZE9iamVjdDo6
bmV4dFNpYmxpbmcoKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJl
dHVybiBudWxscHRyOworfQorCitBWENvcmVPYmplY3QqIEFYSXNvbGF0ZWRPYmplY3Q6Om5leHRT
aWJsaW5nVW5pZ25vcmVkKGludCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworQVhDb3JlT2JqZWN0KiBBWElzb2xhdGVkT2JqZWN0
OjpwcmV2aW91c1NpYmxpbmdVbmlnbm9yZWQoaW50KSBjb25zdAoreworICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitBWENvcmVPYmplY3QqIEFYSXNv
bGF0ZWRPYmplY3Q6OnBhcmVudE9iamVjdElmRXhpc3RzKCkgY29uc3QKK3sKKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworYm9vbCBBWElzb2xhdGVk
T2JqZWN0Ojppc0Rlc2NlbmRhbnRPZkJhcnJlblBhcmVudCgpIGNvbnN0Cit7CisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFYSXNvbGF0ZWRP
YmplY3Q6OmlzRGVzY2VuZGFudE9mUm9sZShBY2Nlc3NpYmlsaXR5Um9sZSkgY29uc3QKK3sKKyAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK0FYQ29yZU9i
amVjdCogQVhJc29sYXRlZE9iamVjdDo6b2JzZXJ2YWJsZU9iamVjdCgpIGNvbnN0Cit7CisgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0FYQ29yZU9i
amVjdCogQVhJc29sYXRlZE9iamVjdDo6Y29ycmVzcG9uZGluZ0xhYmVsRm9yQ29udHJvbEVsZW1l
bnQoKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBudWxs
cHRyOworfQorCitBWENvcmVPYmplY3QqIEFYSXNvbGF0ZWRPYmplY3Q6OmNvcnJlc3BvbmRpbmdD
b250cm9sRm9yTGFiZWxFbGVtZW50KCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworYm9vbCBBWElzb2xhdGVkT2JqZWN0Ojppc1By
ZXNlbnRhdGlvbmFsQ2hpbGRPZkFyaWFSb2xlKCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQVhJc29sYXRlZE9iamVjdDo6
YXJpYVJvbGVIYXNQcmVzZW50YXRpb25hbENoaWxkcmVuKCkgY29uc3QKK3sKKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQVhJc29sYXRlZE9i
amVjdDo6aW5oZXJpdHNQcmVzZW50YXRpb25hbFJvbGUoKSBjb25zdAoreworICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBBWElzb2xhdGVkT2Jq
ZWN0OjpzZXRBY2Nlc3NpYmxlTmFtZShjb25zdCBBdG9tU3RyaW5nJikKK3sKKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKK30KKworYm9vbCBBWElzb2xhdGVkT2JqZWN0OjpoYXNBdHRyaWJ1dGVz
UmVxdWlyZWRGb3JJbmNsdXNpb24oKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIHJldHVybiBmYWxzZTsKK30KKworU3RyaW5nIEFYSXNvbGF0ZWRPYmplY3Q6OmFjY2Vz
c2liaWxpdHlEZXNjcmlwdGlvbigpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgQVhJc29sYXRlZE9iamVjdDo6dGl0
bGUoKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBTdHJp
bmcoKTsKK30KKworU3RyaW5nIEFYSXNvbGF0ZWRPYmplY3Q6OmhlbHBUZXh0KCkgY29uc3QKK3sK
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK2Jv
b2wgQVhJc29sYXRlZE9iamVjdDo6aXNBUklBU3RhdGljVGV4dCgpIGNvbnN0Cit7CisgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitTdHJpbmcgQVhJc29s
YXRlZE9iamVjdDo6c3RyaW5nVmFsdWUoKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIEFYSXNvbGF0ZWRPYmplY3Q6
OnRleHQoKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBT
dHJpbmcoKTsKK30KKworU3RyaW5nIEFYSXNvbGF0ZWRPYmplY3Q6OmFyaWFMYWJlbGVkQnlBdHRy
aWJ1dGUoKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBT
dHJpbmcoKTsKK30KKworU3RyaW5nIEFYSXNvbGF0ZWRPYmplY3Q6OmFyaWFEZXNjcmliZWRCeUF0
dHJpYnV0ZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJu
IFN0cmluZygpOworfQorCitib29sIEFYSXNvbGF0ZWRPYmplY3Q6OmFjY2Vzc2libGVOYW1lRGVy
aXZlc0Zyb21Db250ZW50KCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgQVhJc29sYXRlZE9iamVjdDo6ZWxlbWVudHNGcm9t
QXR0cmlidXRlKFZlY3RvcjxFbGVtZW50Kj4mLCBjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3QK
K3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworQVhPYmplY3RDYWNoZSogQVhJc29s
YXRlZE9iamVjdDo6YXhPYmplY3RDYWNoZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0VsZW1lbnQqIEFYSXNvbGF0ZWRPYmpl
Y3Q6OmFuY2hvckVsZW1lbnQoKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIHJldHVybiBudWxscHRyOworfQorCitFbGVtZW50KiBBWElzb2xhdGVkT2JqZWN0OjphY3Rp
b25FbGVtZW50KCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1
cm4gbnVsbHB0cjsKK30KKworUGF0aCBBWElzb2xhdGVkT2JqZWN0OjplbGVtZW50UGF0aCgpIGNv
bnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFBhdGgoKTsKK30K
KworYm9vbCBBWElzb2xhdGVkT2JqZWN0OjpzdXBwb3J0c1BhdGgoKSBjb25zdAoreworICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworVGV4dEl0ZXJhdG9y
QmVoYXZpb3IgQVhJc29sYXRlZE9iamVjdDo6dGV4dEl0ZXJhdG9yQmVoYXZpb3JGb3JUZXh0UmFu
Z2UoKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxz
ZTsKK30KKworV2lkZ2V0KiBBWElzb2xhdGVkT2JqZWN0Ojp3aWRnZXQoKSBjb25zdAoreworICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitXaWRnZXQq
IEFYSXNvbGF0ZWRPYmplY3Q6OndpZGdldEZvckF0dGFjaG1lbnRWaWV3KCkgY29uc3QKK3sKKyAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworUGFnZSog
QVhJc29sYXRlZE9iamVjdDo6cGFnZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0RvY3VtZW50KiBBWElzb2xhdGVkT2JqZWN0
Ojpkb2N1bWVudCgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0
dXJuIG51bGxwdHI7Cit9CisKK0ZyYW1lVmlldyogQVhJc29sYXRlZE9iamVjdDo6ZG9jdW1lbnRG
cmFtZVZpZXcoKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVy
biBudWxscHRyOworfQorCitGcmFtZSogQVhJc29sYXRlZE9iamVjdDo6ZnJhbWUoKSBjb25zdAor
eworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitG
cmFtZSogQVhJc29sYXRlZE9iamVjdDo6bWFpbkZyYW1lKCkgY29uc3QKK3sKKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworRG9jdW1lbnQqIEFYSXNv
bGF0ZWRPYmplY3Q6OnRvcERvY3VtZW50KCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworU2Nyb2xsVmlldyogQVhJc29sYXRlZE9i
amVjdDo6c2Nyb2xsVmlld0FuY2VzdG9yKCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordm9pZCBBWElzb2xhdGVkT2JqZWN0Ojpj
aGlsZHJlbkNoYW5nZWQoKQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit2b2lk
IEFYSXNvbGF0ZWRPYmplY3Q6OnRleHRDaGFuZ2VkKCkKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKK30KKwordm9pZCBBWElzb2xhdGVkT2JqZWN0Ojp1cGRhdGVBY2Nlc3NpYmlsaXR5Um9s
ZSgpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgQVhJc29sYXRlZE9i
amVjdDo6YWRkQ2hpbGRyZW4oKQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit2
b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OmFkZENoaWxkKEFYQ29yZU9iamVjdCopCit7CisgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgQVhJc29sYXRlZE9iamVjdDo6aW5zZXJ0Q2hp
bGQoQVhDb3JlT2JqZWN0KiwgdW5zaWduZWQpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Cit9CisKK2Jvb2wgQVhJc29sYXRlZE9iamVjdDo6c2hvdWxkSWdub3JlQXR0cmlidXRlUm9sZSgp
IGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCitib29sIEFYSXNvbGF0ZWRPYmplY3Q6OmNhbkhhdmVDaGlsZHJlbigpIGNvbnN0Cit7Cisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFY
SXNvbGF0ZWRPYmplY3Q6Omhhc0NoaWxkcmVuKCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgQVhJc29sYXRlZE9iamVjdDo6
c2V0TmVlZHNUb1VwZGF0ZUNoaWxkcmVuKCkKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
K30KKwordm9pZCBBWElzb2xhdGVkT2JqZWN0OjpzZXROZWVkc1RvVXBkYXRlU3VidHJlZSgpCit7
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgQVhJc29sYXRlZE9iamVjdDo6
Y2xlYXJDaGlsZHJlbigpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK2Jvb2wg
QVhJc29sYXRlZE9iamVjdDo6bmVlZHNUb1VwZGF0ZUNoaWxkcmVuKCkgY29uc3QKK3sKKyAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgQVhJc29s
YXRlZE9iamVjdDo6ZGV0YWNoRnJvbVBhcmVudCgpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Cit9CisKK2Jvb2wgQVhJc29sYXRlZE9iamVjdDo6c2hvdWxkRm9jdXNBY3RpdmVEZXNjZW5k
YW50KCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK0FYQ29yZU9iamVjdCogQVhJc29sYXRlZE9iamVjdDo6YWN0aXZlRGVzY2VuZGFu
dCgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIG51bGxw
dHI7Cit9CisKK3ZvaWQgQVhJc29sYXRlZE9iamVjdDo6aGFuZGxlQWN0aXZlRGVzY2VuZGFudENo
YW5nZWQoKQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit2b2lkIEFYSXNvbGF0
ZWRPYmplY3Q6OmhhbmRsZUFyaWFFeHBhbmRlZENoYW5nZWQoKQoreworICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworfQorCitib29sIEFYSXNvbGF0ZWRPYmplY3Q6OmlzRGVzY2VuZGFudE9mT2Jq
ZWN0KGNvbnN0IEFYQ29yZU9iamVjdCopIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFYSXNvbGF0ZWRPYmplY3Q6OmlzQW5j
ZXN0b3JPZk9iamVjdChjb25zdCBBWENvcmVPYmplY3QqKSBjb25zdAoreworICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworQVhDb3JlT2JqZWN0KiBBWElz
b2xhdGVkT2JqZWN0OjpmaXJzdEFub255bW91c0Jsb2NrQ2hpbGQoKSBjb25zdAoreworICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitib29sIEFYSXNv
bGF0ZWRPYmplY3Q6Omhhc0F0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3QKK3sK
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2NvbnN0
IEF0b21TdHJpbmcmIEFYSXNvbGF0ZWRPYmplY3Q6OmdldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4g
bnVsbEF0b20oKTsKK30KKworYm9vbCBBWElzb2xhdGVkT2JqZWN0OjpoYXNUYWdOYW1lKGNvbnN0
IFF1YWxpZmllZE5hbWUmKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IHJldHVybiBmYWxzZTsKK30KKworU3RyaW5nIEFYSXNvbGF0ZWRPYmplY3Q6OnN0cmluZ1ZhbHVl
Rm9yTVNBQSgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJu
IFN0cmluZygpOworfQorCitTdHJpbmcgQVhJc29sYXRlZE9iamVjdDo6c3RyaW5nUm9sZUZvck1T
QUEoKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBTdHJp
bmcoKTsKK30KKworU3RyaW5nIEFYSXNvbGF0ZWRPYmplY3Q6Om5hbWVGb3JNU0FBKCkgY29uc3QK
K3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisK
K1N0cmluZyBBWElzb2xhdGVkT2JqZWN0OjpkZXNjcmlwdGlvbkZvck1TQUEoKSBjb25zdAorewor
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworQWNj
ZXNzaWJpbGl0eVJvbGUgQVhJc29sYXRlZE9iamVjdDo6cm9sZVZhbHVlRm9yTVNBQSgpIGNvbnN0
Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlS
b2xlOjpVbmtub3duOworfQorCitTdHJpbmcgQVhJc29sYXRlZE9iamVjdDo6cGFzc3dvcmRGaWVs
ZFZhbHVlKCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4g
U3RyaW5nKCk7Cit9CisKK0FYQ29yZU9iamVjdCogQVhJc29sYXRlZE9iamVjdDo6bGl2ZVJlZ2lv
bkFuY2VzdG9yKGJvb2wpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
cmV0dXJuIG51bGxwdHI7Cit9CisKK2Jvb2wgQVhJc29sYXRlZE9iamVjdDo6aGFzQ29udGVudEVk
aXRhYmxlQXR0cmlidXRlU2V0KCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQVhJc29sYXRlZE9iamVjdDo6c3VwcG9ydHNS
ZWFkT25seSgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJu
IGZhbHNlOworfQorCitib29sIEFYSXNvbGF0ZWRPYmplY3Q6OnN1cHBvcnRzQXV0b0NvbXBsZXRl
KCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK2Jvb2wgQVhJc29sYXRlZE9iamVjdDo6c3VwcG9ydHNBUklBQXR0cmlidXRlcygpIGNv
bnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQor
Citib29sIEFYSXNvbGF0ZWRPYmplY3Q6OnNjcm9sbEJ5UGFnZShTY3JvbGxCeVBhZ2VEaXJlY3Rp
b24pIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCitJbnRQb2ludCBBWElzb2xhdGVkT2JqZWN0OjpzY3JvbGxQb3NpdGlvbigpIGNvbnN0
Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIEludFBvaW50KCk7Cit9
CisKK0ludFNpemUgQVhJc29sYXRlZE9iamVjdDo6c2Nyb2xsQ29udGVudHNTaXplKCkgY29uc3QK
K3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gSW50U2l6ZSgpOworfQor
CitJbnRSZWN0IEFYSXNvbGF0ZWRPYmplY3Q6OnNjcm9sbFZpc2libGVDb250ZW50UmVjdCgpIGNv
bnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIEludFJlY3QoKTsK
K30KKwordm9pZCBBWElzb2xhdGVkT2JqZWN0OjpzY3JvbGxUb01ha2VWaXNpYmxlKGNvbnN0IFNj
cm9sbFJlY3RUb1Zpc2libGVPcHRpb25zJikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKK30KKworYm9vbCBBWElzb2xhdGVkT2JqZWN0OjpsYXN0S25vd25Jc0lnbm9yZWRWYWx1
ZSgpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQor
Cit2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OnNldExhc3RLbm93bklzSWdub3JlZFZhbHVlKGJvb2wp
Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgQVhJc29sYXRlZE9iamVj
dDo6bm90aWZ5SWZJZ25vcmVkVmFsdWVDaGFuZ2VkKCkKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKK30KKworYm9vbCBBWElzb2xhdGVkT2JqZWN0Ojppc01hdGhTY3JpcHRPYmplY3QoQWNj
ZXNzaWJpbGl0eU1hdGhTY3JpcHRPYmplY3RUeXBlKSBjb25zdAoreworICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBWElzb2xhdGVkT2JqZWN0
Ojppc01hdGhNdWx0aXNjcmlwdE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0T2Jq
ZWN0VHlwZSkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK2Jvb2wgQVhJc29sYXRlZE9iamVjdDo6aXNBWEhpZGRlbigpIGNvbnN0Cit7
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29s
IEFYSXNvbGF0ZWRPYmplY3Q6OmlzRE9NSGlkZGVuKCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQVhJc29sYXRlZE9iamVj
dDo6aXNIaWRkZW4oKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJl
dHVybiBmYWxzZTsKK30KKwordm9pZCBBWElzb2xhdGVkT2JqZWN0OjpvdmVycmlkZUF0dGFjaG1l
bnRQYXJlbnQoQVhDb3JlT2JqZWN0KikKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30K
KworYm9vbCBBWElzb2xhdGVkT2JqZWN0OjphY2Nlc3NpYmlsaXR5SWdub3JlQXR0YWNobWVudCgp
IGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCitBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIEFYSXNvbGF0ZWRPYmplY3Q6OmFjY2Vz
c2liaWxpdHlQbGF0Zm9ybUluY2x1ZGVzT2JqZWN0KCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6RGVm
YXVsdEJlaGF2aW9yOworfQorCitib29sIEFYSXNvbGF0ZWRPYmplY3Q6Omhhc0FwcGxlUERGQW5u
b3RhdGlvbkF0dHJpYnV0ZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorCitjb25zdCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldyogQVhJ
c29sYXRlZE9iamVjdDo6YW5jZXN0b3JBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldyhib29sKSBjb25z
dAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBudWxscHRyOworfQor
Cit2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OnNldElzSWdub3JlZEZyb21QYXJlbnREYXRhKEFjY2Vz
c2liaWxpdHlJc0lnbm9yZWRGcm9tUGFyZW50RGF0YSYpCit7CisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Cit9CisKK3ZvaWQgQVhJc29sYXRlZE9iamVjdDo6Y2xlYXJJc0lnbm9yZWRGcm9tUGFy
ZW50RGF0YSgpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgQVhJc29s
YXRlZE9iamVjdDo6c2V0SXNJZ25vcmVkRnJvbVBhcmVudERhdGFGb3JDaGlsZChBWENvcmVPYmpl
Y3QqKQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FY
SXNvbGF0ZWRUcmVlTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRl
ZHRyZWUvQVhJc29sYXRlZFRyZWVOb2RlLmgKaW5kZXggYmQ3NTc5OGU0M2NjYjlmMzNmN2E5ZjJj
NDZiZDIzOWI3NzY5ZGViMS4uYzgzY2FkMjhlMzIzZTZmMTIxZTk0MTYzNDI5ZDA4MTQyZDc0YTQ1
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUv
QVhJc29sYXRlZFRyZWVOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
c29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWVOb2RlLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3Mg
QVhJc29sYXRlZFRyZWU7CiAKIGNsYXNzIEFYSXNvbGF0ZWRPYmplY3QgZmluYWwgOiBwdWJsaWMg
QVhDb3JlT2JqZWN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEFYSXNvbGF0ZWRPYmplY3Q+
IGNyZWF0ZShBWENvcmVPYmplY3QmKTsKKyAgICBzdGF0aWMgUmVmPEFYSXNvbGF0ZWRPYmplY3Q+
IGNyZWF0ZShBWENvcmVPYmplY3QmLCBib29sIGlzUm9vdCk7CiAgICAgfkFYSXNvbGF0ZWRPYmpl
Y3QoKTsKIAogICAgIHZvaWQgc2V0T2JqZWN0SUQoQVhJRCBpZCkgb3ZlcnJpZGUgeyBtX2lkID0g
aWQ7IH0KQEAgLTU2LDYwNiArNTYsMTEwIEBAIHB1YmxpYzoKIAogICAgIEFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyKiB3cmFwcGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV93cmFwcGVy
LmdldCgpOyB9CiAgICAgdm9pZCBkZXRhY2goQWNjZXNzaWJpbGl0eURldGFjaG1lbnRUeXBlLCBB
WE9iamVjdENhY2hlKiA9IG51bGxwdHIpIG92ZXJyaWRlIHsgfQotICAgIGJvb2wgaXNEZXRhY2hl
ZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0RldGFjaGVk
KCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHNldFRyZWVJZGVudGlmaWVyKEFYSXNvbGF0
ZWRUcmVlSUQpOwogICAgIHZvaWQgc2V0UGFyZW50KEFYSUQpOwogICAgIHZvaWQgYXBwZW5kQ2hp
bGQoQVhJRCk7CiAKIHByaXZhdGU6Ci0gICAgYm9vbCBpc0FjY2Vzc2liaWxpdHlPYmplY3QoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5
Tm9kZU9iamVjdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBp
c0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxz
ZTsgfQotICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5
U1ZHUm9vdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc0Fj
Y2Vzc2liaWxpdHlTVkdFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0K
LQotICAgIGJvb2wgY29udGFpbnNUZXh0KFN0cmluZyAqKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQotICAgIGJvb2wgaXNBdHRhY2htZW50RWxlbWVudCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc0hlYWRpbmcoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNMaW5rKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc0xpbmspOyB9Ci0gICAgYm9v
bCBpc0ltYWdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFY
UHJvcGVydHlOYW1lOjpJc0ltYWdlKTsgfQotICAgIGJvb2wgaXNJbWFnZU1hcCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc05hdGl2ZUltYWdlKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzSW1hZ2VCdXR0b24oKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNQYXNzd29yZEZpZWxkKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzQ29udGFpbmVkQnlQ
YXNzd29yZEZpZWxkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBBWENv
cmVPYmplY3QqIHBhc3N3b3JkRmllbGRPckNvbnRhaW5pbmdQYXNzd29yZEZpZWxkKCkgb3ZlcnJp
ZGUgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIGJvb2wgaXNOYXRpdmVUZXh0Q29udHJvbCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc1NlYXJjaEZpZWxkKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzV2ViQXJlYSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc0NoZWNrYm94KCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzUmFkaW9CdXR0b24oKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNOYXRpdmVMaXN0Qm94
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzTGlzdEJveCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc0xpc3RCb3hPcHRp
b24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNBdHRhY2ht
ZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVy
dHlOYW1lOjpJc0F0dGFjaG1lbnQpOyB9Ci0gICAgYm9vbCBpc01lZGlhVGltZWxpbmUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNNZW51UmVsYXRlZCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc01lbnUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNNZW51QmFyKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzTWVudUJ1dHRvbigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc01lbnVJdGVtKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzRmlsZVVwbG9hZEJ1dHRvbigpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6
SXNGaWxlVXBsb2FkQnV0dG9uKTsgfQotICAgIGJvb2wgaXNJbnB1dEltYWdlKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzUHJvZ3Jlc3NJbmRpY2F0b3IoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNTbGlkZXIoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNTbGlkZXJUaHVtYigpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc0lucHV0U2xpZGVyKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzQ29udHJvbCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc0xhYmVsKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzTGlzdCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc1RhYmxlKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzRGF0YVRhYmxlKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzVGFibGVSb3coKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNUYWJsZUNvbHVtbigpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc1RhYmxlQ2VsbCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc0ZpZWxkc2V0KCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzR3JvdXAoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNBUklBVHJlZUdyaWRSb3coKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNJbWFnZU1hcExpbmsoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzSW1hZ2VN
YXBMaW5rKTsgfQotICAgIGJvb2wgaXNNZW51TGlzdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9Ci0gICAgYm9vbCBpc01lbnVMaXN0UG9wdXAoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNNZW51TGlzdE9wdGlvbigpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc1NwaW5CdXR0b24oKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNOYXRpdmVTcGluQnV0dG9uKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzU3BpbkJ1dHRvblBhcnQoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNNb2NrT2JqZWN0KCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzTWVkaWFDb250cm9s
TGFiZWwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9w
ZXJ0eU5hbWU6OklzTWVkaWFDb250cm9sTGFiZWwpOyB9Ci0gICAgYm9vbCBpc01lZGlhT2JqZWN0
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzU3dpdGNoKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzVG9nZ2xlQnV0dG9u
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzVGV4dENvbnRy
b2woKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNBUklBVGV4
dENvbnRyb2woKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNO
b25OYXRpdmVUZXh0Q29udHJvbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0g
ICAgYm9vbCBpc1RhYkxpc3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAg
IGJvb2wgaXNUYWJJdGVtKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBi
b29sIGlzUmFkaW9Hcm91cCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
Ym9vbCBpc0NvbWJvQm94KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBi
b29sIGlzVHJlZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShB
WFByb3BlcnR5TmFtZTo6SXNUcmVlKTsgfQotICAgIGJvb2wgaXNUcmVlR3JpZCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc1RyZWVJdGVtKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc1RyZWVJ
dGVtKTsgfQotICAgIGJvb2wgaXNTY3JvbGxiYXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBi
b29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzU2Nyb2xsYmFyKTsgfQotICAgIGJv
b2wgaXNCdXR0b24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wg
aXNMaXN0SXRlbSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBp
c0NoZWNrYm94T3JSYWRpbygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
Ym9vbCBpc1Njcm9sbFZpZXcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAg
IGJvb2wgaXNDYW52YXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJv
b2wgaXNQb3BVcEJ1dHRvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
Ym9vbCBpc0Jsb2NrcXVvdGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAg
IGJvb2wgaXNMYW5kbWFyaygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
Ym9vbCBpc0NvbG9yV2VsbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
Ym9vbCBpc1JhbmdlQ29udHJvbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0g
ICAgYm9vbCBpc01ldGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBi
b29sIGlzU3BsaXR0ZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJv
b2wgaXNUb29sYmFyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29s
IGlzU3R5bGVGb3JtYXRHcm91cCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0g
ICAgYm9vbCBpc0ZpZ3VyZUVsZW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQotICAgIGJvb2wgaXNLZXlib2FyZEZvY3VzYWJsZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9Ci0gICAgYm9vbCBpc1N1bW1hcnkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQotICAgIGJvb2wgaXNPdXRwdXQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxz
ZTsgfQotCi0gICAgYm9vbCBpc0NoZWNrZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29s
QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzQ2hlY2tlZCk7IH0KLSAgICBib29sIGlz
RW5hYmxlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFBy
b3BlcnR5TmFtZTo6SXNFbmFibGVkKTsgfQotICAgIGJvb2wgaXNTZWxlY3RlZCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNTZWxl
Y3RlZCk7IH0KLSAgICBib29sIGlzRm9jdXNlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJv
b2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNGb2N1c2VkKTsgfQotICAgIGJvb2wg
aXNIb3ZlcmVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFY
UHJvcGVydHlOYW1lOjpJc0hvdmVyZWQpOyB9Ci0gICAgYm9vbCBpc0luZGV0ZXJtaW5hdGUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6
OklzSW5kZXRlcm1pbmF0ZSk7IH0KLSAgICBib29sIGlzTG9hZGVkKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc0xvYWRlZCk7IH0K
LSAgICBib29sIGlzTXVsdGlTZWxlY3RhYmxlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9v
bEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc011bHRpU2VsZWN0YWJsZSk7IH0KLSAg
ICBib29sIGlzT25TY3JlZW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRl
VmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzT25TY3JlZW4pOyB9Ci0gICAgYm9vbCBpc09mZlNjcmVl
bigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5
TmFtZTo6SXNPZmZTY3JlZW4pOyB9Ci0gICAgYm9vbCBpc1ByZXNzZWQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzUHJlc3NlZCk7
IH0KLSAgICBib29sIGlzVW52aXNpdGVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0
dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc1VudmlzaXRlZCk7IH0KLSAgICBib29sIGlz
VmlzaXRlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFBy
b3BlcnR5TmFtZTo6SXNWaXNpdGVkKTsgfQotICAgIGJvb2wgaXNSZXF1aXJlZCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNSZXF1
aXJlZCk7IH0KLSAgICBib29sIHN1cHBvcnRzUmVxdWlyZWRBdHRyaWJ1dGUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OlN1cHBvcnRz
UmVxdWlyZWRBdHRyaWJ1dGUpOyB9Ci0gICAgYm9vbCBpc0xpbmtlZCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNMaW5rZWQpOyB9
Ci0gICAgYm9vbCBpc0V4cGFuZGVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJp
YnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc0V4cGFuZGVkKTsgfQotICAgIGJvb2wgaXNWaXNp
YmxlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVy
dHlOYW1lOjpJc1Zpc2libGUpOyB9Ci0gICAgYm9vbCBpc0NvbGxhcHNlZCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNDb2xsYXBz
ZWQpOyB9Ci0gICAgRmxvYXRSZWN0IHJlbGF0aXZlRnJhbWUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiByZWN0QXR0cmlidXRlVmFsdWU8RmxvYXRSZWN0PihBWFByb3BlcnR5TmFtZTo6UmVsYXRp
dmVGcmFtZSk7IH0KLSAgICBGbG9hdFJlY3QgY29udmVydEZyYW1lVG9TcGFjZShjb25zdCBGbG9h
dFJlY3QmLCBBY2Nlc3NpYmlsaXR5Q29udmVyc2lvblNwYWNlKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBGbG9hdFJlY3QoKTsgfQotCi0gICAgYm9vbCBpc1NlbGVjdGVkT3B0aW9uQWN0aXZlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1l
OjpJc1NlbGVjdGVkT3B0aW9uQWN0aXZlKTsgfQotCi0gICAgdm9pZCBzZXRJc0V4cGFuZGVkKGJv
b2wpIG92ZXJyaWRlIHsgfQotICAgIGJvb2wgaGFzQm9sZEZvbnQoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaGFzSXRhbGljRm9udCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBoYXNNaXNzcGVsbGluZygpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgUmVmUHRyPFJhbmdlPiBnZXRNaXNzcGVsbGluZ1Jh
bmdlKFJlZlB0cjxSYW5nZT4gY29uc3QmLCBBY2Nlc3NpYmlsaXR5U2VhcmNoRGlyZWN0aW9uKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgYm9vbCBoYXNQbGFpblRleHQo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaGFzU2FtZUZvbnQo
UmVuZGVyT2JqZWN0KikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29s
IGhhc1NhbWVGb250Q29sb3IoUmVuZGVyT2JqZWN0KikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
ZmFsc2U7IH0KLSAgICBib29sIGhhc1NhbWVTdHlsZShSZW5kZXJPYmplY3QqKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNTdGF0aWNUZXh0KCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGhhc1VuZGVybGluZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBoYXNIaWdobGlnaHRpbmcoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotCi0gICAgYm9vbCBzdXBwb3J0c0RhdGV0aW1l
QXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBjb25zdCBB
dG9tU3RyaW5nJiBkYXRldGltZUF0dHJpYnV0ZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbnVsbEF0b20oKTsgfQotCi0gICAgYm9vbCBjYW5TZXRGb2N1c0F0dHJpYnV0ZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBjYW5TZXRUZXh0UmFuZ2VBdHRy
aWJ1dGVzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGNhblNl
dFZhbHVlQXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBi
b29sIGNhblNldE51bWVyaWNWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
Ci0gICAgYm9vbCBjYW5TZXRTZWxlY3RlZEF0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBjYW5TZXRTZWxlY3RlZENoaWxkcmVuQXR0cmlidXRlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGNhblNldEV4cGFuZGVk
QXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLQotICAgIEVsZW1l
bnQqIGVsZW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgTm9k
ZSogbm9kZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICBSZW5kZXJP
YmplY3QqIHJlbmRlcmVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQotCi0g
ICAgYm9vbCBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
Ym9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc0FjY2Vzc2liaWxpdHlJZ25vcmVk
KTsgfQotICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gZGVmYXVsdE9iamVjdEluY2x1
c2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNp
b246OkRlZmF1bHRCZWhhdmlvcjsgfQotICAgIGJvb2wgYWNjZXNzaWJpbGl0eUlzSWdub3JlZEJ5
RGVmYXVsdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0KLSAgICBib29sIGlz
U2hvd2luZ1ZhbGlkYXRpb25NZXNzYWdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7
IH0KLSAgICBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBTdHJpbmcoKTsgfQotCi0gICAgdW5zaWduZWQgYmxvY2txdW90ZUxldmVsKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gMDsgfQotICAgIGludCBoZWFkaW5nTGV2ZWwoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiAwOyB9Ci0gICAgaW50IHRhYmxlTGV2ZWwoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiAwOyB9Ci0gICAgQWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRlIGNoZWNrYm94T3JSYWRpb1Zh
bHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRlOjpP
ZmY7IH0KLSAgICBTdHJpbmcgdmFsdWVEZXNjcmlwdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIFN0cmluZygpOyB9Ci0gICAgZmxvYXQgdmFsdWVGb3JSYW5nZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIDA7IH0KLSAgICBmbG9hdCBtYXhWYWx1ZUZvclJhbmdlKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gMDsgfQotICAgIGZsb2F0IG1pblZhbHVlRm9yUmFuZ2UoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiAwOyB9Ci0gICAgZmxvYXQgc3RlcFZhbHVlRm9yUmFuZ2UoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiAwOyB9Ci0gICAgQVhDb3JlT2JqZWN0KiBzZWxlY3RlZFJhZGlvQnV0
dG9uKCkgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIEFYQ29yZU9iamVjdCogc2Vs
ZWN0ZWRUYWJJdGVtKCkgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIEFYQ29yZU9i
amVjdCogc2VsZWN0ZWRMaXN0SXRlbSgpIG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAg
ICBpbnQgbGF5b3V0Q291bnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9Ci0gICAgZG91
YmxlIGVzdGltYXRlZExvYWRpbmdQcm9ncmVzcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7
IH0KLQotICAgIGJvb2wgc3VwcG9ydHNBUklBT3ducygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9Ci0gICAgYm9vbCBpc0FjdGl2ZURlc2NlbmRhbnRPZkZvY3VzZWRDb250YWluZXIo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZvaWQgYXJpYUFjdGl2ZURl
c2NlbmRhbnRSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYp
IGNvbnN0IG92ZXJyaWRlIHsgfQotICAgIHZvaWQgYXJpYUNvbnRyb2xzRWxlbWVudHMoQWNjZXNz
aWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGUgeyB9Ci0gICAgdm9pZCBhcmlh
Q29udHJvbHNSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYp
IGNvbnN0IG92ZXJyaWRlIHsgfQotICAgIHZvaWQgYXJpYURlc2NyaWJlZEJ5RWxlbWVudHMoQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGUgeyB9Ci0gICAgdm9pZCBh
cmlhRGVzY3JpYmVkQnlSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciYpIGNvbnN0IG92ZXJyaWRlIHsgfQotICAgIHZvaWQgYXJpYURldGFpbHNFbGVtZW50cyhB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZSB7IH0KLSAgICB2b2lk
IGFyaWFEZXRhaWxzUmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3ImKSBjb25zdCBvdmVycmlkZSB7IH0KLSAgICB2b2lkIGFyaWFFcnJvck1lc3NhZ2VFbGVtZW50
cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZSB7IH0KLSAgICB2
b2lkIGFyaWFFcnJvck1lc3NhZ2VSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRlIHsgfQotICAgIHZvaWQgYXJpYUZsb3dUb0VsZW1l
bnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRlIHsgfQotICAg
IHZvaWQgYXJpYUZsb3dUb1JlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVu
VmVjdG9yJikgY29uc3Qgb3ZlcnJpZGUgeyB9Ci0gICAgdm9pZCBhcmlhTGFiZWxsZWRCeUVsZW1l
bnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRlIHsgfQotICAg
IHZvaWQgYXJpYUxhYmVsbGVkQnlSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRlIHsgfQotICAgIHZvaWQgYXJpYU93bnNFbGVtZW50
cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZSB7IH0KLSAgICB2
b2lkIGFyaWFPd25zUmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3ImKSBjb25zdCBvdmVycmlkZSB7IH0KLQotICAgIGJvb2wgaGFzUG9wdXAoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIFN0cmluZyBwb3B1cFZhbHVlKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICBib29sIGhhc0RhdGFsaXN0KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIHN1cHBvcnRzSGFzUG9wdXAoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgcHJlc3NlZElzUHJlc2Vu
dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBhcmlhSXNNdWx0
aWxpbmUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIFN0cmluZyBpbnZh
bGlkU3RhdHVzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICBib29s
IHN1cHBvcnRzUHJlc3NlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
Ym9vbCBzdXBwb3J0c0V4cGFuZGVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0K
LSAgICBib29sIHN1cHBvcnRzQ2hlY2tlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgQWNjZXNzaWJpbGl0eVNvcnREaXJlY3Rpb24gc29ydERpcmVjdGlvbigpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIEFjY2Vzc2liaWxpdHlTb3J0RGlyZWN0aW9uOjpOb25lOyB9Ci0g
ICAgYm9vbCBjYW52YXNIYXNGYWxsYmFja0NvbnRlbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQotICAgIGJvb2wgc3VwcG9ydHNSYW5nZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KLSAgICBjb25zdCBBdG9tU3RyaW5nJiBpZGVudGlmaWVyQXR0cmli
dXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbEF0b20oKTsgfQotICAgIGNvbnN0IEF0
b21TdHJpbmcmIGxpbmtSZWxWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxBdG9t
KCk7IH0KLSAgICB2b2lkIGNsYXNzTGlzdChWZWN0b3I8U3RyaW5nPiYpIGNvbnN0IG92ZXJyaWRl
IHsgfQotICAgIEFjY2Vzc2liaWxpdHlDdXJyZW50U3RhdGUgY3VycmVudFN0YXRlKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gQWNjZXNzaWJpbGl0eUN1cnJlbnRTdGF0ZTo6RmFsc2U7IH0KLSAg
ICBTdHJpbmcgY3VycmVudFZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7
IH0KLSAgICBib29sIHN1cHBvcnRzQ3VycmVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9Ci0gICAgY29uc3QgU3RyaW5nIGtleVNob3J0Y3V0c1ZhbHVlKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KLQotICAgIC8vIFRoaXMgZnVuY3Rpb24gY2hlY2tzIGlm
IHRoZSBvYmplY3Qgc2hvdWxkIGJlIGlnbm9yZWQgd2hlbiB0aGVyZSdzIGEgbW9kYWwgZGlhbG9n
IGRpc3BsYXllZC4KLSAgICBib29sIGlnbm9yZWRGcm9tTW9kYWxQcmVzZW5jZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc01vZGFsRGVzY2VuZGFudChOb2Rl
KikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzTW9kYWxOb2Rl
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLQotICAgIGJvb2wgc3VwcG9ydHNT
ZXRTaXplKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIHN1cHBv
cnRzUG9zSW5TZXQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGludCBz
ZXRTaXplKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQotICAgIGludCBwb3NJblNldCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KLQotICAgIGJvb2wgc3VwcG9ydHNBUklBRHJv
cHBpbmcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgc3VwcG9y
dHNBUklBRHJhZ2dpbmcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJv
b2wgaXNBUklBR3JhYmJlZCgpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdm9pZCBz
ZXRBUklBR3JhYmJlZChib29sKSBvdmVycmlkZSB7IH0KLSAgICBWZWN0b3I8U3RyaW5nPiBkZXRl
cm1pbmVBUklBRHJvcEVmZmVjdHMoKSBvdmVycmlkZSB7IHJldHVybiBWZWN0b3I8U3RyaW5nPigp
OyB9Ci0KLSAgICBBWENvcmVPYmplY3QqIGFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBv
aW50JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgQVhDb3JlT2JqZWN0KiBlbGVtZW50QWNjZXNzaWJp
bGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxs
cHRyOyB9Ci0KLSAgICBBWENvcmVPYmplY3QqIGZvY3VzZWRVSUVsZW1lbnQoKSBjb25zdCBvdmVy
cmlkZTsKLQotICAgIEFYQ29yZU9iamVjdCogZmlyc3RDaGlsZCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG51bGxwdHI7IH0KLSAgICBBWENvcmVPYmplY3QqIGxhc3RDaGlsZCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICBBWENvcmVPYmplY3QqIHByZXZpb3VzU2li
bGluZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICBBWENvcmVPYmpl
Y3QqIG5leHRTaWJsaW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQotICAg
IEFYQ29yZU9iamVjdCogbmV4dFNpYmxpbmdVbmlnbm9yZWQoaW50KSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBudWxscHRyOyB9Ci0gICAgQVhDb3JlT2JqZWN0KiBwcmV2aW91c1NpYmxpbmdVbmln
bm9yZWQoaW50KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgQVhDb3Jl
T2JqZWN0KiBwYXJlbnRPYmplY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9
Ci0gICAgQVhDb3JlT2JqZWN0KiBwYXJlbnRPYmplY3RVbmlnbm9yZWQoKSBjb25zdCBvdmVycmlk
ZTsKLSAgICBBWENvcmVPYmplY3QqIHBhcmVudE9iamVjdElmRXhpc3RzKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZvaWQgZmluZE1hdGNoaW5nT2JqZWN0cyhBY2Nl
c3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqLCBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBv
dmVycmlkZSB7IH0KLSAgICBib29sIGlzRGVzY2VuZGFudE9mQmFycmVuUGFyZW50KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzRGVzY2VuZGFudE9mUm9sZShB
Y2Nlc3NpYmlsaXR5Um9sZSkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLQotICAg
IFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiBmaW5kVGV4dFJhbmdlcyhBY2Nlc3NpYmlsaXR5U2VhcmNo
VGV4dENyaXRlcmlhIGNvbnN0JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVmVjdG9yPFJlZlB0
cjxSYW5nZT4+KCk7IH0KLSAgICBWZWN0b3I8U3RyaW5nPiBwZXJmb3JtVGV4dE9wZXJhdGlvbihB
Y2Nlc3NpYmlsaXR5VGV4dE9wZXJhdGlvbiBjb25zdCYpIG92ZXJyaWRlIHsgcmV0dXJuIFZlY3Rv
cjxTdHJpbmc+KCk7IH0KLQotICAgIEFYQ29yZU9iamVjdCogb2JzZXJ2YWJsZU9iamVjdCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2b2lkIGxpbmtlZFVJRWxlbWVu
dHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGUgeyB9Ci0gICAg
QVhDb3JlT2JqZWN0KiB0aXRsZVVJRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51
bGxwdHI7IH0KLSAgICBib29sIGV4cG9zZXNUaXRsZVVJRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgQVhDb3JlT2JqZWN0KiBjb3JyZXNwb25kaW5nTGFiZWxG
b3JDb250cm9sRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAg
ICBBWENvcmVPYmplY3QqIGNvcnJlc3BvbmRpbmdDb250cm9sRm9yTGFiZWxFbGVtZW50KCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIEFYQ29yZU9iamVjdCogc2Nyb2xs
QmFyKEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbikgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsg
fQotCi0gICAgQWNjZXNzaWJpbGl0eVJvbGUgYXJpYVJvbGVBdHRyaWJ1dGUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93bjsgfQotICAgIGJvb2wgaXNQ
cmVzZW50YXRpb25hbENoaWxkT2ZBcmlhUm9sZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9Ci0gICAgYm9vbCBhcmlhUm9sZUhhc1ByZXNlbnRhdGlvbmFsQ2hpbGRyZW4oKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaW5oZXJpdHNQcmVzZW50YXRp
b25hbFJvbGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotCi0gICAgdm9pZCBh
Y2Nlc3NpYmlsaXR5VGV4dChWZWN0b3I8QWNjZXNzaWJpbGl0eVRleHQ+JikgY29uc3Qgb3ZlcnJp
ZGUgeyB9Ci0gICAgU3RyaW5nIGNvbXB1dGVkTGFiZWwoKSBvdmVycmlkZSB7IHJldHVybiBTdHJp
bmcoKTsgfQotCi0gICAgdm9pZCBzZXRBY2Nlc3NpYmxlTmFtZShjb25zdCBBdG9tU3RyaW5nJikg
b3ZlcnJpZGUgeyB9Ci0gICAgYm9vbCBoYXNBdHRyaWJ1dGVzUmVxdWlyZWRGb3JJbmNsdXNpb24o
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotCi0gICAgU3RyaW5nIGFjY2Vzc2li
aWxpdHlEZXNjcmlwdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9Ci0g
ICAgU3RyaW5nIHRpdGxlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAg
ICBTdHJpbmcgaGVscFRleHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJpbmcoKTsgfQot
Ci0gICAgYm9vbCBpc0FSSUFTdGF0aWNUZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFs
c2U7IH0KLSAgICBTdHJpbmcgc3RyaW5nVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBT
dHJpbmcoKTsgfQotICAgIFN0cmluZyB0ZXh0VW5kZXJFbGVtZW50KEFjY2Vzc2liaWxpdHlUZXh0
VW5kZXJFbGVtZW50TW9kZSA9IEFjY2Vzc2liaWxpdHlUZXh0VW5kZXJFbGVtZW50TW9kZSgpKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJpbmcoKTsgfQotICAgIFN0cmluZyB0ZXh0KCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICBpbnQgdGV4dExlbmd0aCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KLSAgICBTdHJpbmcgYXJpYUxhYmVsZWRCeUF0dHJp
YnV0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9Ci0gICAgU3RyaW5nIGFy
aWFEZXNjcmliZWRCeUF0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygp
OyB9Ci0gICAgY29uc3QgU3RyaW5nIHBsYWNlaG9sZGVyVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBTdHJpbmcoKTsgfQotICAgIGJvb2wgYWNjZXNzaWJsZU5hbWVEZXJpdmVzRnJvbUNv
bnRlbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotCi0gICAgU3RyaW5nIGV4
cGFuZGVkVGV4dFZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAg
ICBib29sIHN1cHBvcnRzRXhwYW5kZWRUZXh0VmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQotCi0gICAgdm9pZCBlbGVtZW50c0Zyb21BdHRyaWJ1dGUoVmVjdG9yPEVsZW1l
bnQqPiYsIGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdCBvdmVycmlkZSB7IH0KLQotICAgIHZv
aWQgY29sb3JWYWx1ZShpbnQmLCBpbnQmLCBpbnQmKSBjb25zdCBvdmVycmlkZSB7IH0KLQotICAg
IEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0
YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlSb2xlPihpbnRBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5
TmFtZTo6Um9sZVZhbHVlKSk7IH0KLSAgICBTdHJpbmcgcm9sZVBsYXRmb3JtU3RyaW5nKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6
OlJvbGVQbGF0Zm9ybVN0cmluZyk7IH0KLSAgICBTdHJpbmcgcm9sZURlc2NyaXB0aW9uKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6
OlJvbGVEZXNjcmlwdGlvbik7IH0KLSAgICBTdHJpbmcgYXJpYUxhbmRtYXJrUm9sZURlc2NyaXB0
aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9w
ZXJ0eU5hbWU6OkFSSUFMYW5kbWFya1JvbGVEZXNjcmlwdGlvbik7IH0KLQotICAgIEFYT2JqZWN0
Q2FjaGUqIGF4T2JqZWN0Q2FjaGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9
Ci0KLSAgICBFbGVtZW50KiBhbmNob3JFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bnVsbHB0cjsgfQotICAgIGJvb2wgc3VwcG9ydHNQcmVzc0FjdGlvbigpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgRWxlbWVudCogYWN0aW9uRWxlbWVudCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICBMYXlvdXRSZWN0IGJvdW5kaW5nQm94UmVj
dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJlY3RBdHRyaWJ1dGVWYWx1ZTxMYXlvdXRSZWN0
PihBWFByb3BlcnR5TmFtZTo6Qm91bmRpbmdCb3hSZWN0KTsgfQotICAgIExheW91dFJlY3QgZWxl
bWVudFJlY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiByZWN0QXR0cmlidXRlVmFsdWU8TGF5
b3V0UmVjdD4oQVhQcm9wZXJ0eU5hbWU6OkVsZW1lbnRSZWN0KTsgfQotICAgIEludFBvaW50IGNs
aWNrUG9pbnQoKSBvdmVycmlkZSB7IHJldHVybiBJbnRQb2ludCgpOyB9Ci0gICAgUGF0aCBlbGVt
ZW50UGF0aCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFBhdGgoKTsgfQotICAgIGJvb2wgc3Vw
cG9ydHNQYXRoKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLQotICAgIFRleHRJ
dGVyYXRvckJlaGF2aW9yIHRleHRJdGVyYXRvckJlaGF2aW9yRm9yVGV4dFJhbmdlKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yOyB9Ci0gICAgUGxh
aW5UZXh0UmFuZ2Ugc2VsZWN0ZWRUZXh0UmFuZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBQ
bGFpblRleHRSYW5nZSgpOyB9Ci0gICAgdW5zaWduZWQgc2VsZWN0aW9uU3RhcnQoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiAwOyB9Ci0gICAgdW5zaWduZWQgc2VsZWN0aW9uRW5kKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gMDsgfQotCi0gICAgVVJMIHVybCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIFVSTCgpOyB9Ci0gICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24oKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBWaXNpYmxlU2VsZWN0aW9uKCk7IH0KLSAgICBTdHJpbmcgc2VsZWN0
ZWRUZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICBjb25zdCBB
dG9tU3RyaW5nJiBhY2Nlc3NLZXkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxsQXRvbSgp
OyB9Ci0gICAgY29uc3QgU3RyaW5nJiBhY3Rpb25WZXJiKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbnVsbEF0b20oKTsgfQotICAgIFdpZGdldCogd2lkZ2V0KCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gbnVsbHB0cjsgfQotICAgIFdpZGdldCogd2lkZ2V0Rm9yQXR0YWNobWVudFZpZXcoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgUGFnZSogcGFnZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgRnJhbWVWaWV3KiBkb2N1bWVu
dEZyYW1lVmlldygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICBGcmFt
ZSogZnJhbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgRnJhbWUq
IG1haW5GcmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICBEb2N1
bWVudCogdG9wRG9jdW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9Ci0g
ICAgU2Nyb2xsVmlldyogc2Nyb2xsVmlld0FuY2VzdG9yKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbnVsbHB0cjsgfQotICAgIFN0cmluZyBsYW5ndWFnZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIFN0cmluZygpOyB9Ci0gICAgdW5zaWduZWQgaGllcmFyY2hpY2FsTGV2ZWwoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiAwOyB9Ci0KLSAgICB2b2lkIHNldEZvY3VzZWQoYm9vbCkgb3ZlcnJp
ZGUgeyB9Ci0gICAgdm9pZCBzZXRTZWxlY3RlZFRleHQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGUg
eyB9Ci0gICAgdm9pZCBzZXRTZWxlY3RlZFRleHRSYW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYp
IG92ZXJyaWRlIHsgfQotICAgIHZvaWQgc2V0VmFsdWUoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGUg
eyB9Ci0gICAgYm9vbCByZXBsYWNlVGV4dEluUmFuZ2UoY29uc3QgU3RyaW5nJiwgY29uc3QgUGxh
aW5UZXh0UmFuZ2UmKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaW5zZXJ0
VGV4dChjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotCi0gICAgdm9p
ZCBzZXRWYWx1ZShmbG9hdCkgb3ZlcnJpZGUgeyB9Ci0gICAgdm9pZCBzZXRTZWxlY3RlZChib29s
KSBvdmVycmlkZSB7IH0KLSAgICB2b2lkIHNldFNlbGVjdGVkUm93cyhBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3ImKSBvdmVycmlkZSB7IH0KLQotICAgIHZvaWQgbWFrZVJhbmdlVmlzaWJsZShj
b25zdCBQbGFpblRleHRSYW5nZSYpIG92ZXJyaWRlIHsgfQotICAgIGJvb2wgcHJlc3MoKSBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgcGVyZm9ybURlZmF1bHRBY3Rpb24oKSBv
dmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotCi0gICAgQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9u
IG9yaWVudGF0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQWNjZXNzaWJpbGl0eU9yaWVu
dGF0aW9uOjpVbmRlZmluZWQ7IH0KLSAgICB2b2lkIGluY3JlbWVudCgpIG92ZXJyaWRlIHsgfQot
ICAgIHZvaWQgZGVjcmVtZW50KCkgb3ZlcnJpZGUgeyB9Ci0KLSAgICB2b2lkIGNoaWxkcmVuQ2hh
bmdlZCgpIG92ZXJyaWRlIHsgfQotICAgIHZvaWQgdGV4dENoYW5nZWQoKSBvdmVycmlkZSB7IH0K
LSAgICB2b2lkIHVwZGF0ZUFjY2Vzc2liaWxpdHlSb2xlKCkgb3ZlcnJpZGUgeyB9Ci0gICAgY29u
c3QgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBjaGlsZHJlbihib29sIHVwZGF0ZUNoaWxk
cmVuSWZOZWVkZWQgPSB0cnVlKSBvdmVycmlkZTsKLSAgICB2b2lkIGFkZENoaWxkcmVuKCkgb3Zl
cnJpZGUgeyB9Ci0gICAgdm9pZCBhZGRDaGlsZChBWENvcmVPYmplY3QqKSBvdmVycmlkZSB7IH0K
LSAgICB2b2lkIGluc2VydENoaWxkKEFYQ29yZU9iamVjdCosIHVuc2lnbmVkKSBvdmVycmlkZSB7
IH0KLQotICAgIGJvb2wgc2hvdWxkSWdub3JlQXR0cmlidXRlUm9sZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9Ci0KLSAgICBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBoYXNDaGlsZHJlbigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdm9pZCB1cGRhdGVDaGlsZHJlbklmTmVjZXNz
YXJ5KCkgb3ZlcnJpZGUgeyB9Ci0gICAgdm9pZCBzZXROZWVkc1RvVXBkYXRlQ2hpbGRyZW4oKSBv
dmVycmlkZSB7IH0KLSAgICB2b2lkIHNldE5lZWRzVG9VcGRhdGVTdWJ0cmVlKCkgb3ZlcnJpZGUg
eyB9OwotICAgIHZvaWQgY2xlYXJDaGlsZHJlbigpIG92ZXJyaWRlIHsgfQotICAgIGJvb2wgbmVl
ZHNUb1VwZGF0ZUNoaWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAg
ICB2b2lkIGRldGFjaEZyb21QYXJlbnQoKSBvdmVycmlkZSB7IH0KLSAgICBib29sIGlzRGV0YWNo
ZWRGcm9tUGFyZW50KCkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLQotICAgIGJvb2wgY2Fu
SGF2ZVNlbGVjdGVkQ2hpbGRyZW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQot
ICAgIHZvaWQgc2VsZWN0ZWRDaGlsZHJlbihBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBv
dmVycmlkZSB7IH0KLSAgICB2b2lkIHZpc2libGVDaGlsZHJlbihBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5WZWN0b3ImKSBvdmVycmlkZSB7IH0KLSAgICB2b2lkIHRhYkNoaWxkcmVuKEFjY2Vzc2liaWxp
dHlDaGlsZHJlblZlY3RvciYpIG92ZXJyaWRlIHsgfQotICAgIGJvb2wgc2hvdWxkRm9jdXNBY3Rp
dmVEZXNjZW5kYW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBBWENv
cmVPYmplY3QqIGFjdGl2ZURlc2NlbmRhbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxs
cHRyOyB9Ci0gICAgdm9pZCBoYW5kbGVBY3RpdmVEZXNjZW5kYW50Q2hhbmdlZCgpIG92ZXJyaWRl
IHsgfQotICAgIHZvaWQgaGFuZGxlQXJpYUV4cGFuZGVkQ2hhbmdlZCgpIG92ZXJyaWRlIHsgfQot
ICAgIGJvb2wgaXNEZXNjZW5kYW50T2ZPYmplY3QoY29uc3QgQVhDb3JlT2JqZWN0KikgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzQW5jZXN0b3JPZk9iamVjdChj
b25zdCBBWENvcmVPYmplY3QqKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAg
IEFYQ29yZU9iamVjdCogZmlyc3RBbm9ueW1vdXNCbG9ja0NoaWxkKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbnVsbHB0cjsgfQotCi0gICAgYm9vbCBoYXNBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgY29uc3QgQXRv
bVN0cmluZyYgZ2V0QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBudWxsQXRvbSgpOyB9Ci0gICAgYm9vbCBoYXNUYWdOYW1lKGNvbnN0IFF1YWxp
ZmllZE5hbWUmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotCi0gICAgVmlzaWJs
ZVBvc2l0aW9uUmFuZ2UgdmlzaWJsZVBvc2l0aW9uUmFuZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBWaXNpYmxlUG9zaXRpb25SYW5nZSgpOyB9Ci0gICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2Ug
dmlzaWJsZVBvc2l0aW9uUmFuZ2VGb3JMaW5lKHVuc2lnbmVkKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBWaXNpYmxlUG9zaXRpb25SYW5nZSgpOyB9Ci0gICAgUmVmUHRyPFJhbmdlPiBlbGVtZW50
UmFuZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgVmlzaWJsZVBv
c2l0aW9uUmFuZ2UgdmlzaWJsZVBvc2l0aW9uUmFuZ2VGb3JVbm9yZGVyZWRQb3NpdGlvbnMoY29u
c3QgVmlzaWJsZVBvc2l0aW9uJiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gVmlzaWJsZVBvc2l0aW9uUmFuZ2UoKTsgfQotICAgIFZpc2libGVQb3NpdGlv
blJhbmdlIHBvc2l0aW9uT2ZMZWZ0V29yZChjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBWaXNpYmxlUG9zaXRpb25SYW5nZSgpOyB9Ci0gICAgVmlzaWJsZVBv
c2l0aW9uUmFuZ2UgcG9zaXRpb25PZlJpZ2h0V29yZChjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBWaXNpYmxlUG9zaXRpb25SYW5nZSgpOyB9Ci0gICAgVmlz
aWJsZVBvc2l0aW9uUmFuZ2UgbGVmdExpbmVWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNp
YmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBWaXNpYmxlUG9zaXRpb25SYW5n
ZSgpOyB9Ci0gICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgcmlnaHRMaW5lVmlzaWJsZVBvc2l0aW9u
UmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVmlz
aWJsZVBvc2l0aW9uUmFuZ2UoKTsgfQotICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHNlbnRlbmNl
Rm9yUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gVmlzaWJsZVBvc2l0aW9uUmFuZ2UoKTsgfQotICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHBh
cmFncmFwaEZvclBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIFZpc2libGVQb3NpdGlvblJhbmdlKCk7IH0KLSAgICBWaXNpYmxlUG9zaXRpb25S
YW5nZSBzdHlsZVJhbmdlRm9yUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gVmlzaWJsZVBvc2l0aW9uUmFuZ2UoKTsgfQotICAgIFZpc2libGVQ
b3NpdGlvblJhbmdlIHZpc2libGVQb3NpdGlvblJhbmdlRm9yUmFuZ2UoY29uc3QgUGxhaW5UZXh0
UmFuZ2UmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBWaXNpYmxlUG9zaXRpb25SYW5nZSgpOyB9
Ci0gICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgbGluZVJhbmdlRm9yUG9zaXRpb24oY29uc3QgVmlz
aWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVmlzaWJsZVBvc2l0aW9uUmFu
Z2UoKTsgfQotCi0gICAgUmVmUHRyPFJhbmdlPiByYW5nZUZvclBsYWluVGV4dFJhbmdlKGNvbnN0
IFBsYWluVGV4dFJhbmdlJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQotCi0g
ICAgU3RyaW5nIHN0cmluZ0ZvclJhbmdlKFJlZlB0cjxSYW5nZT4pIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIFN0cmluZygpOyB9Ci0gICAgSW50UmVjdCBib3VuZHNGb3JWaXNpYmxlUG9zaXRpb25S
YW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb25SYW5nZSYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IEludFJlY3QoKTsgfQotICAgIEludFJlY3QgYm91bmRzRm9yUmFuZ2UoY29uc3QgUmVmUHRyPFJh
bmdlPikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gSW50UmVjdCgpOyB9Ci0gICAgaW50IGxlbmd0
aEZvclZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZpc2libGVQb3NpdGlvblJhbmdlJikgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQotICAgIHZvaWQgc2V0U2VsZWN0ZWRWaXNpYmxlUG9z
aXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb25SYW5nZSYpIGNvbnN0IG92ZXJyaWRlIHsg
fQotCi0gICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkZvckJvdW5kcyhjb25zdCBJ
bnRSZWN0JiwgQWNjZXNzaWJpbGl0eVZpc2libGVQb3NpdGlvbkZvckJvdW5kcykgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7IH0KLSAgICBWaXNpYmxlUG9zaXRpb24g
dmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsgfQotICAgIFZpc2libGVQb3NpdGlvbiBuZXh0Vmlz
aWJsZVBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIFZpc2libGVQb3NpdGlvbigpOyB9Ci0gICAgVmlzaWJsZVBvc2l0aW9uIHByZXZpb3VzVmlz
aWJsZVBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIFZpc2libGVQb3NpdGlvbigpOyB9Ci0gICAgVmlzaWJsZVBvc2l0aW9uIG5leHRXb3JkRW5k
KGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFZpc2libGVQ
b3NpdGlvbigpOyB9Ci0gICAgVmlzaWJsZVBvc2l0aW9uIHByZXZpb3VzV29yZFN0YXJ0KGNvbnN0
IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFZpc2libGVQb3NpdGlv
bigpOyB9Ci0gICAgVmlzaWJsZVBvc2l0aW9uIG5leHRMaW5lRW5kUG9zaXRpb24oY29uc3QgVmlz
aWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7
IH0KLSAgICBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXNMaW5lU3RhcnRQb3NpdGlvbihjb25zdCBW
aXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBWaXNpYmxlUG9zaXRpb24o
KTsgfQotICAgIFZpc2libGVQb3NpdGlvbiBuZXh0U2VudGVuY2VFbmRQb3NpdGlvbihjb25zdCBW
aXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBWaXNpYmxlUG9zaXRpb24o
KTsgfQotICAgIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c1NlbnRlbmNlU3RhcnRQb3NpdGlvbihj
b25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBWaXNpYmxlUG9z
aXRpb24oKTsgfQotICAgIFZpc2libGVQb3NpdGlvbiBuZXh0UGFyYWdyYXBoRW5kUG9zaXRpb24o
Y29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVmlzaWJsZVBv
c2l0aW9uKCk7IH0KLSAgICBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXNQYXJhZ3JhcGhTdGFydFBv
c2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFZp
c2libGVQb3NpdGlvbigpOyB9Ci0gICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkZv
ckluZGV4KHVuc2lnbmVkLCBib29sIC8qbGFzdEluZGV4T0sgKi8pIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIFZpc2libGVQb3NpdGlvbigpOyB9Ci0KLSAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJs
ZVBvc2l0aW9uRm9ySW5kZXgoaW50KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBWaXNpYmxlUG9z
aXRpb24oKTsgfQotICAgIGludCBpbmRleEZvclZpc2libGVQb3NpdGlvbihjb25zdCBWaXNpYmxl
UG9zaXRpb24mKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9Ci0KLSAgICBBWENvcmVPYmpl
Y3QqIGFjY2Vzc2liaWxpdHlPYmplY3RGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24m
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgaW50IGxpbmVGb3JQb3Np
dGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9
Ci0gICAgUGxhaW5UZXh0UmFuZ2UgcGxhaW5UZXh0UmFuZ2VGb3JWaXNpYmxlUG9zaXRpb25SYW5n
ZShjb25zdCBWaXNpYmxlUG9zaXRpb25SYW5nZSYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFBs
YWluVGV4dFJhbmdlKCk7IH0KLSAgICBpbnQgaW5kZXgoY29uc3QgVmlzaWJsZVBvc2l0aW9uJikg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQotCi0gICAgdm9pZCBsaW5lQnJlYWtzKFZlY3Rv
cjxpbnQ+JikgY29uc3Qgb3ZlcnJpZGUgeyB9Ci0gICAgUGxhaW5UZXh0UmFuZ2UgZG9BWFJhbmdl
Rm9yTGluZSh1bnNpZ25lZCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gUGxhaW5UZXh0UmFuZ2Uo
KTsgfQotICAgIFBsYWluVGV4dFJhbmdlIGRvQVhSYW5nZUZvclBvc2l0aW9uKGNvbnN0IEludFBv
aW50JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gUGxhaW5UZXh0UmFuZ2UoKTsgfQotICAgIFBs
YWluVGV4dFJhbmdlIGRvQVhSYW5nZUZvckluZGV4KHVuc2lnbmVkKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBQbGFpblRleHRSYW5nZSgpOyB9Ci0gICAgUGxhaW5UZXh0UmFuZ2UgZG9BWFN0eWxl
UmFuZ2VGb3JJbmRleCh1bnNpZ25lZCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gUGxhaW5UZXh0
UmFuZ2UoKTsgfQotCi0gICAgU3RyaW5nIGRvQVhTdHJpbmdGb3JSYW5nZShjb25zdCBQbGFpblRl
eHRSYW5nZSYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9Ci0gICAgSW50UmVj
dCBkb0FYQm91bmRzRm9yUmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBJbnRSZWN0KCk7IH0KLSAgICBJbnRSZWN0IGRvQVhCb3VuZHNGb3JSYW5nZVVz
aW5nQ2hhcmFjdGVyT2Zmc2V0KGNvbnN0IFBsYWluVGV4dFJhbmdlJikgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gSW50UmVjdCgpOyB9Ci0KLSAgICB1bnNpZ25lZCBkb0FYTGluZUZvckluZGV4KHVu
c2lnbmVkKSBvdmVycmlkZSB7IHJldHVybiAwOyB9Ci0KLSAgICBTdHJpbmcgY29tcHV0ZWRSb2xl
U3RyaW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KLQotICAgIC8vIE1T
QUEKLSAgICBTdHJpbmcgc3RyaW5nVmFsdWVGb3JNU0FBKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gU3RyaW5nKCk7IH0KLSAgICBTdHJpbmcgc3RyaW5nUm9sZUZvck1TQUEoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBTdHJpbmcoKTsgfQotICAgIFN0cmluZyBuYW1lRm9yTVNBQSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9Ci0gICAgU3RyaW5nIGRlc2NyaXB0aW9uRm9y
TVNBQSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9Ci0gICAgQWNjZXNzaWJp
bGl0eVJvbGUgcm9sZVZhbHVlRm9yTVNBQSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEFjY2Vz
c2liaWxpdHlSb2xlOjpVbmtub3duOyB9Ci0KLSAgICBTdHJpbmcgcGFzc3dvcmRGaWVsZFZhbHVl
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICBib29sIGlzVmFsdWVB
dXRvZmlsbGVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlz
VmFsdWVBdXRvZmlsbEF2YWlsYWJsZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
Ci0gICAgQXV0b0ZpbGxCdXR0b25UeXBlIHZhbHVlQXV0b2ZpbGxCdXR0b25UeXBlKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gQXV0b0ZpbGxCdXR0b25UeXBlOjpOb25lOyB9Ci0KLSAgICB2b2lk
IGFyaWFUcmVlUm93cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBvdmVycmlkZSB7IH0K
LSAgICB2b2lkIGFyaWFUcmVlSXRlbURpc2Nsb3NlZFJvd3MoQWNjZXNzaWJpbGl0eUNoaWxkcmVu
VmVjdG9yJikgb3ZlcnJpZGUgeyB9Ci0gICAgdm9pZCBhcmlhVHJlZUl0ZW1Db250ZW50KEFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciYpIG92ZXJyaWRlIHsgfQotCi0gICAgYm9vbCBzdXBwb3J0
c0xpdmVSZWdpb24oYm9vbCA9IHRydWUpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
Ci0gICAgYm9vbCBpc0luc2lkZUxpdmVSZWdpb24oYm9vbCA9IHRydWUpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgQVhDb3JlT2JqZWN0KiBsaXZlUmVnaW9uQW5jZXN0b3Io
Ym9vbCA9IHRydWUpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICBjb25z
dCBTdHJpbmcgbGl2ZVJlZ2lvblN0YXR1cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmlu
ZygpOyB9Ci0gICAgY29uc3QgU3RyaW5nIGxpdmVSZWdpb25SZWxldmFudCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIFN0cmluZygpOyB9Ci0gICAgYm9vbCBsaXZlUmVnaW9uQXRvbWljKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzQnVzeSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0KLSAgICBib29sIGhhc0NvbnRlbnRFZGl0YWJsZUF0
dHJpYnV0ZVNldCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0KLSAgICBib29s
IHN1cHBvcnRzUmVhZE9ubHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAg
IFN0cmluZyByZWFkT25seVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7
IH0KLQotICAgIGJvb2wgc3VwcG9ydHNBdXRvQ29tcGxldGUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBmYWxzZTsgfQotICAgIFN0cmluZyBhdXRvQ29tcGxldGVWYWx1ZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIFN0cmluZygpOyB9Ci0KLSAgICBib29sIHN1cHBvcnRzQVJJQUF0dHJpYnV0
ZXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotCi0gICAgT3B0aW9uU2V0PFNw
ZWFrQXM+IHNwZWFrQXNQcm9wZXJ0eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIE9wdGlvblNl
dDxTcGVha0FzPigpOyB9Ci0KLSAgICB2b2lkIHNjcm9sbFRvTWFrZVZpc2libGUoKSBjb25zdCBv
dmVycmlkZSB7IH0KLSAgICB2b2lkIHNjcm9sbFRvTWFrZVZpc2libGVXaXRoU3ViRm9jdXMoY29u
c3QgSW50UmVjdCYpIGNvbnN0IG92ZXJyaWRlIHsgfQotICAgIHZvaWQgc2Nyb2xsVG9HbG9iYWxQ
b2ludChjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlIHsgfQotCi0gICAgYm9vbCBzY3Jv
bGxCeVBhZ2UoU2Nyb2xsQnlQYWdlRGlyZWN0aW9uKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQotICAgIEludFBvaW50IHNjcm9sbFBvc2l0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gSW50UG9pbnQoKTsgfQotICAgIEludFNpemUgc2Nyb2xsQ29udGVudHNTaXplKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gSW50U2l6ZSgpOyB9Ci0gICAgSW50UmVjdCBzY3JvbGxWaXNp
YmxlQ29udGVudFJlY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBJbnRSZWN0KCk7IH0KLSAg
ICB2b2lkIHNjcm9sbFRvTWFrZVZpc2libGUoY29uc3QgU2Nyb2xsUmVjdFRvVmlzaWJsZU9wdGlv
bnMmKSBjb25zdCBvdmVycmlkZSB7IH0KLQotICAgIGJvb2wgbGFzdEtub3duSXNJZ25vcmVkVmFs
dWUoKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZvaWQgc2V0TGFzdEtub3duSXNJ
Z25vcmVkVmFsdWUoYm9vbCkgb3ZlcnJpZGUgeyB9Ci0KLSAgICB2b2lkIG5vdGlmeUlmSWdub3Jl
ZFZhbHVlQ2hhbmdlZCgpIG92ZXJyaWRlIHsgfQotCi0gICAgYm9vbCBpc01hdGhFbGVtZW50KCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1l
OjpJc01hdGhFbGVtZW50KTsgfQotICAgIGJvb2wgaXNNYXRoRnJhY3Rpb24oKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzTWF0aEZy
YWN0aW9uKTsgfQotICAgIGJvb2wgaXNNYXRoRmVuY2VkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc01hdGhGZW5jZWQpOyB9Ci0g
ICAgYm9vbCBpc01hdGhTdWJzY3JpcHRTdXBlcnNjcmlwdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNNYXRoU3Vic2NyaXB0U3Vw
ZXJzY3JpcHQpOyB9Ci0gICAgYm9vbCBpc01hdGhSb3coKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzTWF0aFJvdyk7IH0KLSAgICBi
b29sIGlzTWF0aFVuZGVyT3ZlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1
dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNNYXRoVW5kZXJPdmVyKTsgfQotICAgIGJvb2wgaXNN
YXRoUm9vdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFBy
b3BlcnR5TmFtZTo6SXNNYXRoUm9vdCk7IH0KLSAgICBib29sIGlzTWF0aFNxdWFyZVJvb3QoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6
OklzTWF0aFNxdWFyZVJvb3QpOyB9Ci0gICAgYm9vbCBpc01hdGhUZXh0KCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc01hdGhUZXh0
KTsgfQotICAgIGJvb2wgaXNNYXRoTnVtYmVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9v
bEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc01hdGhOdW1iZXIpOyB9Ci0gICAgYm9v
bCBpc01hdGhPcGVyYXRvcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVW
YWx1ZShBWFByb3BlcnR5TmFtZTo6SXNNYXRoT3BlcmF0b3IpOyB9Ci0gICAgYm9vbCBpc01hdGhG
ZW5jZU9wZXJhdG9yKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVl
KEFYUHJvcGVydHlOYW1lOjpJc01hdGhGZW5jZU9wZXJhdG9yKTsgfQotICAgIGJvb2wgaXNNYXRo
U2VwYXJhdG9yT3BlcmF0b3IoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRl
VmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzTWF0aFNlcGFyYXRvck9wZXJhdG9yKTsgfQotICAgIGJv
b2wgaXNNYXRoSWRlbnRpZmllcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1
dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNNYXRoSWRlbnRpZmllcik7IH0KLSAgICBib29sIGlz
TWF0aFRhYmxlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFY
UHJvcGVydHlOYW1lOjpJc01hdGhUYWJsZSk7IH0KLSAgICBib29sIGlzTWF0aFRhYmxlUm93KCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1l
OjpJc01hdGhUYWJsZVJvdyk7IH0KLSAgICBib29sIGlzTWF0aFRhYmxlQ2VsbCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNNYXRo
VGFibGVDZWxsKTsgfQotICAgIGJvb2wgaXNNYXRoTXVsdGlzY3JpcHQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzTWF0aE11bHRp
c2NyaXB0KTsgfQotICAgIGJvb2wgaXNNYXRoVG9rZW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzTWF0aFRva2VuKTsgfQotICAg
IGJvb2wgaXNNYXRoU2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlNYXRoU2NyaXB0T2JqZWN0VHlw
ZSkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzTWF0aE11bHRp
c2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlNYXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotCi0gICAgQVhDb3JlT2JqZWN0KiBtYXRoUmFk
aWNhbmRPYmplY3QoKSBvdmVycmlkZSB7IHJldHVybiBvYmplY3RBdHRyaWJ1dGVWYWx1ZShBWFBy
b3BlcnR5TmFtZTo6TWF0aFJhZGljYW5kT2JqZWN0KTsgfQotICAgIEFYQ29yZU9iamVjdCogbWF0
aFJvb3RJbmRleE9iamVjdCgpIG92ZXJyaWRlIHsgcmV0dXJuIG9iamVjdEF0dHJpYnV0ZVZhbHVl
KEFYUHJvcGVydHlOYW1lOjpNYXRoUm9vdEluZGV4T2JqZWN0KTsgfQotCi0gICAgQVhDb3JlT2Jq
ZWN0KiBtYXRoVW5kZXJPYmplY3QoKSBvdmVycmlkZSB7IHJldHVybiBvYmplY3RBdHRyaWJ1dGVW
YWx1ZShBWFByb3BlcnR5TmFtZTo6TWF0aFVuZGVyT2JqZWN0KTsgfQotICAgIEFYQ29yZU9iamVj
dCogbWF0aE92ZXJPYmplY3QoKSBvdmVycmlkZSB7IHJldHVybiBvYmplY3RBdHRyaWJ1dGVWYWx1
ZShBWFByb3BlcnR5TmFtZTo6TWF0aE92ZXJPYmplY3QpOyB9Ci0KLSAgICBBWENvcmVPYmplY3Qq
IG1hdGhOdW1lcmF0b3JPYmplY3QoKSBvdmVycmlkZSB7IHJldHVybiBvYmplY3RBdHRyaWJ1dGVW
YWx1ZShBWFByb3BlcnR5TmFtZTo6TWF0aE51bWVyYXRvck9iamVjdCk7IH0KLSAgICBBWENvcmVP
YmplY3QqIG1hdGhEZW5vbWluYXRvck9iamVjdCgpIG92ZXJyaWRlIHsgcmV0dXJuIG9iamVjdEF0
dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpNYXRoRGVub21pbmF0b3JPYmplY3QpOyB9Ci0K
LSAgICBBWENvcmVPYmplY3QqIG1hdGhCYXNlT2JqZWN0KCkgb3ZlcnJpZGUgeyByZXR1cm4gb2Jq
ZWN0QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6Ok1hdGhCYXNlT2JqZWN0KTsgfQotICAg
IEFYQ29yZU9iamVjdCogbWF0aFN1YnNjcmlwdE9iamVjdCgpIG92ZXJyaWRlIHsgcmV0dXJuIG9i
amVjdEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpNYXRoU3Vic2NyaXB0T2JqZWN0KTsg
fQotICAgIEFYQ29yZU9iamVjdCogbWF0aFN1cGVyc2NyaXB0T2JqZWN0KCkgb3ZlcnJpZGUgeyBy
ZXR1cm4gb2JqZWN0QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6Ok1hdGhTdXBlcnNjcmlw
dE9iamVjdCk7IH0KLQotICAgIFN0cmluZyBtYXRoRmVuY2VkT3BlblN0cmluZygpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHN0cmluZ0F0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpNYXRo
RmVuY2VkT3BlblN0cmluZyk7IH0KLSAgICBTdHJpbmcgbWF0aEZlbmNlZENsb3NlU3RyaW5nKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5h
bWU6Ok1hdGhGZW5jZWRDbG9zZVN0cmluZyk7IH0KLSAgICBpbnQgbWF0aExpbmVUaGlja25lc3Mo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBpbnRBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFt
ZTo6TWF0aExpbmVUaGlja25lc3MpOyB9Ci0gICAgYm9vbCBpc0Fub255bW91c01hdGhPcGVyYXRv
cigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5
TmFtZTo6SXNBbm9ueW1vdXNNYXRoT3BlcmF0b3IpOyB9Ci0KLSAgICB2b2lkIG1hdGhQcmVzY3Jp
cHRzKEFjY2Vzc2liaWxpdHlNYXRoTXVsdGlzY3JpcHRQYWlycyYpIG92ZXJyaWRlIHsgfQotICAg
IHZvaWQgbWF0aFBvc3RzY3JpcHRzKEFjY2Vzc2liaWxpdHlNYXRoTXVsdGlzY3JpcHRQYWlycyYp
IG92ZXJyaWRlIHsgfQotCi0gICAgYm9vbCBpc0FYSGlkZGVuKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzRE9NSGlkZGVuKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzSGlkZGVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KLQotICAgIHZvaWQgc2V0V3JhcHBlcihBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlciogd3JhcHBlcikgb3ZlcnJpZGUgeyBtX3dyYXBwZXIgPSB3cmFwcGVyOyB9Ci0KLSAgICB2
b2lkIG92ZXJyaWRlQXR0YWNobWVudFBhcmVudChBWENvcmVPYmplY3QqKSBvdmVycmlkZSB7IH0K
LQotICAgIGJvb2wgYWNjZXNzaWJpbGl0eUlnbm9yZUF0dGFjaG1lbnQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBmYWxzZTsgfQotICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gYWNj
ZXNzaWJpbGl0eVBsYXRmb3JtSW5jbHVkZXNPYmplY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpEZWZhdWx0QmVoYXZpb3I7IH0KLQotI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgaW50IGFjY2Vzc2liaWxpdHlQYXNzd29yZEZpZWxk
TGVuZ3RoKCkgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQotICAgIGJvb2wgaGFzVG91Y2hFdmVudExp
c3RlbmVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzSW5w
dXRUeXBlUG9wdXBCdXR0b24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotI2Vu
ZGlmCi0KLSAgICB2b2lkIHVwZGF0ZUJhY2tpbmdTdG9yZSgpIG92ZXJyaWRlOwotCi0jaWYgUExB
VEZPUk0oQ09DT0EpCi0gICAgYm9vbCBwcmV2ZW50S2V5Ym9hcmRET01FdmVudERpc3BhdGNoKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2b2lkIHNldFByZXZlbnRLZXli
b2FyZERPTUV2ZW50RGlzcGF0Y2goYm9vbCkgb3ZlcnJpZGUgeyB9Ci0gICAgYm9vbCBmaWxlVXBs
b2FkQnV0dG9uUmV0dXJuc1ZhbHVlSW5UaXRsZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9Ci0gICAgU3RyaW5nIHNwZWVjaEhpbnRBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIHN0cmluZ0F0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpTcGVlY2hI
aW50KTsgfQotICAgIFN0cmluZyBkZXNjcmlwdGlvbkF0dHJpYnV0ZVZhbHVlKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkRlc2Ny
aXB0aW9uKTsgfQotICAgIFN0cmluZyBoZWxwVGV4dEF0dHJpYnV0ZVZhbHVlKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkhlbHBU
ZXh0KTsgfQotICAgIFN0cmluZyB0aXRsZUF0dHJpYnV0ZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OlRpdGxlKTsgfQot
I2VuZGlmCi0KLSNpZiBQTEFURk9STShDT0NPQSkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCi0g
ICAgYm9vbCBjYXJldEJyb3dzaW5nRW5hYmxlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9Ci0gICAgdm9pZCBzZXRDYXJldEJyb3dzaW5nRW5hYmxlZChib29sKSBvdmVycmlkZSB7
IH0KLSNlbmRpZgotCi0gICAgQVhDb3JlT2JqZWN0KiBmb2N1c2FibGVBbmNlc3RvcigpIG92ZXJy
aWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICBBWENvcmVPYmplY3QqIGVkaXRhYmxlQW5jZXN0
b3IoKSBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgQVhDb3JlT2JqZWN0KiBoaWdo
ZXN0RWRpdGFibGVBbmNlc3RvcigpIG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KLQotICAg
IGNvbnN0IEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KiBhbmNlc3RvckFjY2Vzc2liaWxpdHlTY3Jv
bGxWaWV3KGJvb2wpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KLQotICAgIHZv
aWQgc2V0SXNJZ25vcmVkRnJvbVBhcmVudERhdGEoQWNjZXNzaWJpbGl0eUlzSWdub3JlZEZyb21Q
YXJlbnREYXRhJikgb3ZlcnJpZGUgeyB9OwotICAgIHZvaWQgY2xlYXJJc0lnbm9yZWRGcm9tUGFy
ZW50RGF0YSgpIG92ZXJyaWRlIHsgfQotICAgIHZvaWQgc2V0SXNJZ25vcmVkRnJvbVBhcmVudERh
dGFGb3JDaGlsZChBWENvcmVPYmplY3QqKSBvdmVycmlkZSB7IH0KIAorICAgIEFYSUQgcGFyZW50
KCkgY29uc3QgeyByZXR1cm4gbV9wYXJlbnQ7IH0KKyAgICAKKyAgICBBWElzb2xhdGVkVHJlZUlE
IHRyZWVJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV90cmVlSWRlbnRpZmllcjsgfQorICAg
IEFYSXNvbGF0ZWRUcmVlKiB0cmVlKCkgY29uc3Q7CisgICAgCisgICAgQVhJc29sYXRlZE9iamVj
dCgpID0gZGVmYXVsdDsKKyAgICBBWElzb2xhdGVkT2JqZWN0KEFYQ29yZU9iamVjdCYsIGJvb2wg
aXNSb290KTsKKyAgICB2b2lkIGluaXRpYWxpemVBdHRyaWJ1dGVEYXRhKEFYQ29yZU9iamVjdCYs
IGJvb2wgaXNSb290KTsKKyAgICAKICAgICBlbnVtIGNsYXNzIEFYUHJvcGVydHlOYW1lIDogdWlu
dDhfdCB7CiAgICAgICAgIE5vbmUgPSAwLAorICAgICAgICBBY2Nlc3NLZXksCisgICAgICAgIEFj
dGlvblZlcmIsCisgICAgICAgIEFjY2Vzc2liaWxpdHlCdXR0b25TdGF0ZSwKKyAgICAgICAgQWNj
ZXNzaWJpbGl0eVRleHQsCisgICAgICAgIEF1dG9Db21wbGV0ZVZhbHVlLAorICAgICAgICBBUklB
Q29udHJvbHNFbGVtZW50cywKKyAgICAgICAgQVJJQURldGFpbHNFbGVtZW50cywKKyAgICAgICAg
QVJJQURyb3BFZmZlY3RzLAorICAgICAgICBBUklBRXJyb3JNZXNzYWdlRWxlbWVudHMsCisgICAg
ICAgIEFSSUFJc011bHRpbGluZSwKKyAgICAgICAgQVJJQUZsb3dUb0VsZW1lbnRzLAorICAgICAg
ICBBUklBTGFuZG1hcmtSb2xlRGVzY3JpcHRpb24sCisgICAgICAgIEFSSUFUcmVlSXRlbUNvbnRl
bnQsCisgICAgICAgIEFSSUFUcmVlSXRlbURpc2Nsb3NlZFJvd3MsCisgICAgICAgIEFSSUFUcmVl
Um93cywKKyAgICAgICAgQVJJQVJvbGVBdHRyaWJ1dGUsCisgICAgICAgIEFSSUFPd25zRWxlbWVu
dHMsCisgICAgICAgIEJsb2NrcXVvdGVMZXZlbCwKICAgICAgICAgQm91bmRpbmdCb3hSZWN0LAor
ICAgICAgICBDYW5IYXZlU2VsZWN0ZWRDaGlsZHJlbiwKKyAgICAgICAgQ2FuU2V0RXhwYW5kZWRB
dHRyaWJ1dGUsCisgICAgICAgIENhblNldEZvY3VzQXR0cmlidXRlLAorICAgICAgICBDYW5TZXRO
dW1lcmljVmFsdWUsCisgICAgICAgIENhblNldFNlbGVjdGVkQXR0cmlidXRlLAorICAgICAgICBD
YW5TZXRTZWxlY3RlZENoaWxkcmVuQXR0cmlidXRlLAorICAgICAgICBDYW5TZXRUZXh0UmFuZ2VB
dHRyaWJ1dGVzLAorICAgICAgICBDYW5TZXRWYWx1ZUF0dHJpYnV0ZSwKKyAgICAgICAgQ2FudmFz
SGFzRmFsbGJhY2tDb250ZW50LAorICAgICAgICBDYXJldEJyb3dzaW5nRW5hYmxlZCwKKyAgICAg
ICAgQ2xhc3NMaXN0LAorICAgICAgICBDbGlja1BvaW50LAorICAgICAgICBDb2xvclZhbHVlLAor
ICAgICAgICBDb21wdXRlZExhYmVsLAorICAgICAgICBDb21wdXRlZFJvbGVTdHJpbmcsCisgICAg
ICAgIEN1cnJlbnRTdGF0ZSwKKyAgICAgICAgQ3VycmVudFZhbHVlLAorICAgICAgICBEYXRldGlt
ZUF0dHJpYnV0ZVZhbHVlLAogICAgICAgICBEZXNjcmlwdGlvbiwKKyAgICAgICAgRG9jdW1lbnRF
bmNvZGluZywKKyAgICAgICAgRG9jdW1lbnRVUkksCisgICAgICAgIEVkaXRhYmxlQW5jZXN0b3Is
CiAgICAgICAgIEVsZW1lbnRSZWN0LAorICAgICAgICBFc3RpbWF0ZWRMb2FkaW5nUHJvZ3Jlc3Ms
CisgICAgICAgIEV4cGFuZGVkVGV4dFZhbHVlLAorICAgICAgICBFeHBvc2VzVGl0bGVVSUVsZW1l
bnQsCisgICAgICAgIEZpbGVVcGxvYWRCdXR0b25SZXR1cm5zVmFsdWVJblRpdGxlLAorICAgICAg
ICBGb2N1c2FibGVBbmNlc3RvciwKKyAgICAgICAgSGFzQVJJQVZhbHVlTm93LAorICAgICAgICBI
YXNQb3B1cCwKKyAgICAgICAgSGVhZGluZ0xldmVsLAogICAgICAgICBIZWxwVGV4dCwKKyAgICAg
ICAgSGllcmFyY2hpY2FsTGV2ZWwsCisgICAgICAgIEhpZ2hlc3RFZGl0YWJsZUFuY2VzdG9yLAor
ICAgICAgICBIb3Jpem9udGFsU2Nyb2xsQmFyLAorICAgICAgICBJZGVudGlmaWVyQXR0cmlidXRl
LAorICAgICAgICBJbnZhbGlkU3RhdHVzLAogICAgICAgICBJc0FjY2Vzc2liaWxpdHlJZ25vcmVk
LAorICAgICAgICBJc0FjdGl2ZURlc2NlbmRhbnRPZkZvY3VzZWRDb250YWluZXIsCiAgICAgICAg
IElzQW5vbnltb3VzTWF0aE9wZXJhdG9yLAorICAgICAgICBJc0FSSUFHcmFiYmVkLAorICAgICAg
ICBJc0FSSUFUcmVlR3JpZFJvdywKICAgICAgICAgSXNBdHRhY2htZW50LAorICAgICAgICBJc0J1
dHRvbiwKKyAgICAgICAgSXNCdXN5LAogICAgICAgICBJc0NoZWNrZWQsCiAgICAgICAgIElzQ29s
bGFwc2VkLAorICAgICAgICBJc0NvbnRyb2wsCiAgICAgICAgIElzRW5hYmxlZCwKICAgICAgICAg
SXNFeHBhbmRlZCwKKyAgICAgICAgSXNGaWVsZHNldCwKICAgICAgICAgSXNGaWxlVXBsb2FkQnV0
dG9uLAogICAgICAgICBJc0ZvY3VzZWQsCisgICAgICAgIElzR3JvdXAsCiAgICAgICAgIElzSW1h
Z2UsCiAgICAgICAgIElzSW1hZ2VNYXBMaW5rLAogICAgICAgICBJc0luZGV0ZXJtaW5hdGUsCisg
ICAgICAgIElzSW5saW5lVGV4dCwKKyAgICAgICAgSXNJbnB1dEltYWdlLAorICAgICAgICBJc0lu
c2lkZUxpdmVSZWdpb24sCiAgICAgICAgIElzTGluaywKICAgICAgICAgSXNMaW5rZWQsCisgICAg
ICAgIElzTGlzdCwKKyAgICAgICAgSXNMaXN0Qm94LAogICAgICAgICBJc0xvYWRlZCwKKyAgICAg
ICAgSXNIZWFkaW5nLAogICAgICAgICBJc0hvdmVyZWQsCiAgICAgICAgIElzTWF0aEVsZW1lbnQs
CiAgICAgICAgIElzTWF0aEZyYWN0aW9uLApAQCAtNjc4LDIyICsxODIsNTcgQEAgcHJpdmF0ZToK
ICAgICAgICAgSXNNYXRoVG9rZW4sCiAgICAgICAgIElzTWF0aFNjcmlwdE9iamVjdCwKICAgICAg
ICAgSXNNZWRpYUNvbnRyb2xMYWJlbCwKKyAgICAgICAgSXNNZWRpYVRpbWVsaW5lLAorICAgICAg
ICBJc01lbnUsCisgICAgICAgIElzTWVudUJhciwKKyAgICAgICAgSXNNZW51QnV0dG9uLAorICAg
ICAgICBJc01lbnVJdGVtLAorICAgICAgICBJc01lbnVMaXN0LAorICAgICAgICBJc01lbnVMaXN0
T3B0aW9uLAorICAgICAgICBJc01lbnVMaXN0UG9wdXAsCisgICAgICAgIElzTWVudVJlbGF0ZWQs
CisgICAgICAgIElzTWV0ZXIsCiAgICAgICAgIElzTXVsdGlTZWxlY3RhYmxlLAogICAgICAgICBJ
c09mZlNjcmVlbiwKICAgICAgICAgSXNPblNjcmVlbiwKKyAgICAgICAgSXNPdXRwdXQsCisgICAg
ICAgIElzUGFzc3dvcmRGaWVsZCwKICAgICAgICAgSXNQcmVzc2VkLAorICAgICAgICBJc1Byb2dy
ZXNzSW5kaWNhdG9yLAorICAgICAgICBJc1JhbmdlQ29udHJvbCwKICAgICAgICAgSXNSZXF1aXJl
ZCwKICAgICAgICAgSXNTY3JvbGxiYXIsCisgICAgICAgIElzU2VhcmNoRmllbGQsCiAgICAgICAg
IElzU2VsZWN0ZWQsCiAgICAgICAgIElzU2VsZWN0ZWRPcHRpb25BY3RpdmUsCisgICAgICAgIElz
U2hvd2luZ1ZhbGlkYXRpb25NZXNzYWdlLAorICAgICAgICBJc1NsaWRlciwKKyAgICAgICAgSXNT
dHlsZUZvcm1hdEdyb3VwLAorICAgICAgICBJc1RhYmxlLAorICAgICAgICBJc1RhYmxlQ2VsbCwK
KyAgICAgICAgSXNUYWJsZUNvbHVtbiwKKyAgICAgICAgSXNUYWJsZVJvdywKKyAgICAgICAgSXNU
ZXh0Q29udHJvbCwKICAgICAgICAgSXNUcmVlLAogICAgICAgICBJc1RyZWVJdGVtLAogICAgICAg
ICBJc1VudmlzaXRlZCwKKyAgICAgICAgSXNWYWx1ZUF1dG9maWxsZWQsCisgICAgICAgIElzVmFs
dWVBdXRvZmlsbEF2YWlsYWJsZSwKICAgICAgICAgSXNWaXNpYmxlLAogICAgICAgICBJc1Zpc2l0
ZWQsCisgICAgICAgIEtleVNob3J0Y3V0c1ZhbHVlLAorICAgICAgICBMYW5ndWFnZSwKKyAgICAg
ICAgTGF5b3V0Q291bnQsCisgICAgICAgIExpbmtSZWxWYWx1ZSwKKyAgICAgICAgTGlua2VkVUlF
bGVtZW50cywKKyAgICAgICAgTGl2ZVJlZ2lvbkF0b21pYywKKyAgICAgICAgTGl2ZVJlZ2lvblJl
bGV2YW50LAorICAgICAgICBMaXZlUmVnaW9uU3RhdHVzLAogICAgICAgICBNYXRoRmVuY2VkT3Bl
blN0cmluZywKICAgICAgICAgTWF0aEZlbmNlZENsb3NlU3RyaW5nLAogICAgICAgICBNYXRoTGlu
ZVRoaWNrbmVzcywKKyAgICAgICAgTWF0aFByZXNjcmlwdHMsCisgICAgICAgIE1hdGhQb3N0c2Ny
aXB0cywKICAgICAgICAgTWF0aFJhZGljYW5kT2JqZWN0LAogICAgICAgICBNYXRoUm9vdEluZGV4
T2JqZWN0LAogICAgICAgICBNYXRoVW5kZXJPYmplY3QsCkBAIC03MDMsMzcgKzI0Miw1NTggQEAg
cHJpdmF0ZToKICAgICAgICAgTWF0aEJhc2VPYmplY3QsCiAgICAgICAgIE1hdGhTdWJzY3JpcHRP
YmplY3QsCiAgICAgICAgIE1hdGhTdXBlcnNjcmlwdE9iamVjdCwKKyAgICAgICAgTWF4VmFsdWVG
b3JSYW5nZSwKKyAgICAgICAgTWluVmFsdWVGb3JSYW5nZSwKKyAgICAgICAgT3JpZW50YXRpb24s
CisgICAgICAgIFBsYWNlaG9sZGVyVmFsdWUsCisgICAgICAgIFByZXNzZWRJc1ByZXNlbnQsCisg
ICAgICAgIFBvcHVwVmFsdWUsCisgICAgICAgIFBvc0luU2V0LAorICAgICAgICBQcmV2ZW50S2V5
Ym9hcmRET01FdmVudERpc3BhdGNoLAorICAgICAgICBSZWFkT25seVZhbHVlLAogICAgICAgICBS
ZWxhdGl2ZUZyYW1lLAogICAgICAgICBSb2xlVmFsdWUsCiAgICAgICAgIFJvbGVQbGF0Zm9ybVN0
cmluZywKICAgICAgICAgUm9sZURlc2NyaXB0aW9uLAotICAgICAgICBBUklBTGFuZG1hcmtSb2xl
RGVzY3JpcHRpb24sCisgICAgICAgIFNlbGVjdGVkQ2hpbGRyZW4sCisgICAgICAgIFNlbGVjdGVk
UmFkaW9CdXR0b24sCisgICAgICAgIFNlbGVjdGVkVGFiSXRlbSwKKyAgICAgICAgU2Vzc2lvbklE
LAorICAgICAgICBTZXRTaXplLAorICAgICAgICBTb3J0RGlyZWN0aW9uLAorICAgICAgICBTcGVh
a0FzLAogICAgICAgICBTcGVlY2hIaW50LAorICAgICAgICBTdXBwb3J0c0FSSUFEcmFnZ2luZywK
KyAgICAgICAgU3VwcG9ydHNBUklBRHJvcHBpbmcsCisgICAgICAgIFN1cHBvcnRzQVJJQU93bnMs
CisgICAgICAgIFN1cHBvcnRzQ3VycmVudCwKKyAgICAgICAgU3VwcG9ydHNEYXRldGltZUF0dHJp
YnV0ZSwKKyAgICAgICAgU3VwcG9ydHNFeHBhbmRlZCwKKyAgICAgICAgU3VwcG9ydHNFeHBhbmRl
ZFRleHRWYWx1ZSwKKyAgICAgICAgU3VwcG9ydHNMaXZlUmVnaW9uLAorICAgICAgICBTdXBwb3J0
c1JhbmdlVmFsdWUsCisgICAgICAgIFN1cHBvcnRzUG9zSW5TZXQsCisgICAgICAgIFN1cHBvcnRz
UHJlc3NBY3Rpb24sCiAgICAgICAgIFN1cHBvcnRzUmVxdWlyZWRBdHRyaWJ1dGUsCisgICAgICAg
IFN1cHBvcnRzU2V0U2l6ZSwKKyAgICAgICAgVGFiQ2hpbGRyZW4sCisgICAgICAgIFRhYmxlTGV2
ZWwsCisgICAgICAgIFRhZ05hbWUsCisgICAgICAgIFRleHRMZW5ndGgsCiAgICAgICAgIFRpdGxl
LAorICAgICAgICBUaXRsZVVJRWxlbWVudCwKKyAgICAgICAgVVJMLAorICAgICAgICBWYWx1ZUF1
dG9maWxsQnV0dG9uVHlwZSwKKyAgICAgICAgVmFsdWVEZXNjcmlwdGlvbiwKKyAgICAgICAgVmFs
dWVGb3JSYW5nZSwKKyAgICAgICAgVmFsaWRhdGlvbk1lc3NhZ2UsCisgICAgICAgIFZlcnRpY2Fs
U2Nyb2xsQmFyLAorICAgICAgICBWaXNpYmxlQ2hpbGRyZW4sCiAgICAgfTsKLQotICAgIEFYSUQg
cGFyZW50KCkgY29uc3QgeyByZXR1cm4gbV9wYXJlbnQ7IH0KLQotICAgIEFYSXNvbGF0ZWRUcmVl
SUQgdHJlZUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3RyZWVJZGVudGlmaWVyOyB9Ci0g
ICAgQVhJc29sYXRlZFRyZWUqIHRyZWUoKSBjb25zdDsKLQotICAgIEFYSXNvbGF0ZWRPYmplY3Qo
KSA9IGRlZmF1bHQ7Ci0gICAgQVhJc29sYXRlZE9iamVjdChBWENvcmVPYmplY3QmKTsKLSAgICB2
b2lkIGluaXRpYWxpemVBdHRyaWJ1dGVEYXRhKEFYQ29yZU9iamVjdCYpOwotCi0gICAgdXNpbmcg
QXR0cmlidXRlVmFsdWVWYXJpYW50ID0gVmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgU3RyaW5nLCBi
b29sLCBpbnQsIHVuc2lnbmVkLCBkb3VibGUsIExheW91dFJlY3QsIEFYSUQ+OworICAgIAorICAg
IHR5cGVkZWYgc3RkOjpwYWlyPEFYSUQsIEFYSUQ+IEFjY2Vzc2liaWxpdHlJc29sYXRlZFRyZWVN
YXRoTXVsdGlzY3JpcHRQYWlyOworICAgIHN0cnVjdCBBY2Nlc3NpYmlsaXR5SXNvbGF0ZWRUcmVl
VGV4dCB7CisgICAgICAgIFN0cmluZyB0ZXh0OworICAgICAgICBBY2Nlc3NpYmlsaXR5VGV4dFNv
dXJjZSB0ZXh0U291cmNlOworICAgICAgICBWZWN0b3I8QVhJRD4gdGV4dEVsZW1lbnRzOworICAg
IH07CisgICAgCisgICAgdXNpbmcgQXR0cmlidXRlVmFsdWVWYXJpYW50ID0gVmFyaWFudDxzdGQ6
Om51bGxwdHJfdCwgU3RyaW5nLCBib29sLCBpbnQsIHVuc2lnbmVkLCBkb3VibGUsIGZsb2F0LCB1
aW50NjRfdCwgQ29sb3IsIFVSTCwgTGF5b3V0UmVjdCwgQVhJRCwgSW50UG9pbnQsIE9wdGlvblNl
dDxTcGVha0FzPiwgVmVjdG9yPEFjY2Vzc2liaWxpdHlJc29sYXRlZFRyZWVUZXh0PiwgVmVjdG9y
PEFYSUQ+LCBWZWN0b3I8QWNjZXNzaWJpbGl0eUlzb2xhdGVkVHJlZU1hdGhNdWx0aXNjcmlwdFBh
aXI+LCBWZWN0b3I8U3RyaW5nPj47CiAgICAgdm9pZCBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFt
ZSwgQXR0cmlidXRlVmFsdWVWYXJpYW50JiYsIGJvb2wgc2hvdWxkUmVtb3ZlID0gZmFsc2UpOwog
ICAgIHZvaWQgc2V0T2JqZWN0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWUsIEFYQ29yZU9iamVjdCop
OwotICAgIAorICAgIHZvaWQgc2V0T2JqZWN0VmVjdG9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWUs
IEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpOworCiAgICAgYm9vbCBib29sQXR0cmlidXRl
VmFsdWUoQVhQcm9wZXJ0eU5hbWUpIGNvbnN0OwogICAgIGNvbnN0IFN0cmluZyBzdHJpbmdBdHRy
aWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZSkgY29uc3Q7CiAgICAgaW50IGludEF0dHJpYnV0ZVZh
bHVlKEFYUHJvcGVydHlOYW1lKSBjb25zdDsKICAgICB1bnNpZ25lZCB1bnNpZ25lZEF0dHJpYnV0
ZVZhbHVlKEFYUHJvcGVydHlOYW1lKSBjb25zdDsKICAgICBkb3VibGUgZG91YmxlQXR0cmlidXRl
VmFsdWUoQVhQcm9wZXJ0eU5hbWUpIGNvbnN0OwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQg
cmVjdEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lKSBjb25zdDsKKyAgICBmbG9hdCBmbG9h
dEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lKSBjb25zdDsKICAgICBBWENvcmVPYmplY3Qq
IG9iamVjdEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lKSBjb25zdDsKKyAgICBJbnRQb2lu
dCBpbnRQb2ludEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lKSBjb25zdDsKKyAgICBDb2xv
ciBjb2xvckF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lKSBjb25zdDsKKyAgICBVUkwgdXJs
QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWUpIGNvbnN0OworICAgIHVpbnQ2NF90IHVpbnQ2
NEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBUIHJlY3RBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZSkgY29uc3Q7CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4gVmVjdG9yPFQ+IHZlY3RvckF0dHJpYnV0ZVZhbHVlKEFYUHJv
cGVydHlOYW1lKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBPcHRpb25TZXQ8VD4g
b3B0aW9uU2V0QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWUpIGNvbnN0OworCisgICAgdm9p
ZCBmaWxsQ2hpbGRyZW5WZWN0b3JGb3JQcm9wZXJ0eShBWFByb3BlcnR5TmFtZSwgQWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Q7CisgICAgdm9pZCBzZXRNYXRoc2NyaXB0cyhBWFBy
b3BlcnR5TmFtZSwgQVhDb3JlT2JqZWN0Jik7CisgICAgdm9pZCBpbnNlcnRNYXRoUGFpcnMoVmVj
dG9yPEFjY2Vzc2liaWxpdHlJc29sYXRlZFRyZWVNYXRoTXVsdGlzY3JpcHRQYWlyPiYsIEFjY2Vz
c2liaWxpdHlNYXRoTXVsdGlzY3JpcHRQYWlycyYpOworICAgIAorICAgIC8vIEF0dHJpYnV0ZSBy
ZXRyaWV2YWwgb3ZlcnJpZGVzLgorICAgIGJvb2wgaXNIZWFkaW5nKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc0hlYWRpbmcpOyB9
CisgICAgYm9vbCBpc0xpbmsoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRl
VmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzTGluayk7IH0KKyAgICBib29sIGlzSW1hZ2UoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6Oklz
SW1hZ2UpOyB9CisgICAgYm9vbCBpc1Bhc3N3b3JkRmllbGQoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzUGFzc3dvcmRGaWVsZCk7
IH0KKyAgICBib29sIGlzU2VhcmNoRmllbGQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29s
QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzU2VhcmNoRmllbGQpOyB9CisgICAgYm9v
bCBpc0F0dGFjaG1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFs
dWUoQVhQcm9wZXJ0eU5hbWU6OklzQXR0YWNobWVudCk7IH0KKyAgICBib29sIGlzTWVkaWFUaW1l
bGluZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3Bl
cnR5TmFtZTo6SXNNZWRpYVRpbWVsaW5lKTsgfQorICAgIGJvb2wgaXNNZW51UmVsYXRlZCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6
SXNNZW51UmVsYXRlZCk7IH0KKyAgICBib29sIGlzTWVudSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNNZW51KTsgfQorICAgIGJv
b2wgaXNNZW51QmFyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVl
KEFYUHJvcGVydHlOYW1lOjpJc01lbnVCYXIpOyB9CisgICAgYm9vbCBpc01lbnVCdXR0b24oKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6
OklzTWVudUJ1dHRvbik7IH0KKyAgICBib29sIGlzTWVudUl0ZW0oKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzTWVudUl0ZW0pOyB9
CisgICAgYm9vbCBpc0ZpbGVVcGxvYWRCdXR0b24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBi
b29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzRmlsZVVwbG9hZEJ1dHRvbik7IH0K
KyAgICBib29sIGlzSW5wdXRJbWFnZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRy
aWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNJbnB1dEltYWdlKTsgfQorICAgIGJvb2wgaXNQ
cm9ncmVzc0luZGljYXRvcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVW
YWx1ZShBWFByb3BlcnR5TmFtZTo6SXNQcm9ncmVzc0luZGljYXRvcik7IH0KKyAgICBib29sIGlz
U2xpZGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJv
cGVydHlOYW1lOjpJc1NsaWRlcik7IH0KKyAgICBib29sIGlzQ29udHJvbCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNDb250cm9s
KTsgfQorICAgIGJvb2wgaXNMaXN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJp
YnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc0xpc3QpOyB9CisgICAgYm9vbCBpc1RhYmxlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1l
OjpJc1RhYmxlKTsgfQorICAgIGJvb2wgaXNUYWJsZVJvdygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNUYWJsZVJvdyk7IH0KKyAg
ICBib29sIGlzVGFibGVDb2x1bW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmli
dXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzVGFibGVDb2x1bW4pOyB9CisgICAgYm9vbCBpc1Rh
YmxlQ2VsbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFBy
b3BlcnR5TmFtZTo6SXNUYWJsZUNlbGwpOyB9CisgICAgYm9vbCBpc0ZpZWxkc2V0KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc0Zp
ZWxkc2V0KTsgfQorICAgIGJvb2wgaXNHcm91cCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJv
b2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNHcm91cCk7IH0KKyAgICBib29sIGlz
QVJJQVRyZWVHcmlkUm93KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZh
bHVlKEFYUHJvcGVydHlOYW1lOjpJc0FSSUFUcmVlR3JpZFJvdyk7IH0KKyAgICBib29sIGlzTWVu
dUxpc3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9w
ZXJ0eU5hbWU6OklzTWVudUxpc3QpOyB9CisgICAgYm9vbCBpc01lbnVMaXN0UG9wdXAoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6Oklz
TWVudUxpc3RQb3B1cCk7IH0KKyAgICBib29sIGlzTWVudUxpc3RPcHRpb24oKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzTWVudUxp
c3RPcHRpb24pOyB9CisgICAgYm9vbCBpc1RleHRDb250cm9sKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc1RleHRDb250cm9sKTsg
fQorICAgIGJvb2wgaXNCdXR0b24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmli
dXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzQnV0dG9uKTsgfQorICAgIGJvb2wgaXNSYW5nZUNv
bnRyb2woKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9w
ZXJ0eU5hbWU6OklzUmFuZ2VDb250cm9sKTsgfQorICAgIGJvb2wgaXNNZXRlcigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNNZXRl
cik7IH0KKyAgICBib29sIGlzU3R5bGVGb3JtYXRHcm91cCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNTdHlsZUZvcm1hdEdyb3Vw
KTsgfQorICAgIGJvb2wgaXNPdXRwdXQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0
cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzT3V0cHV0KTsgfQorICAgIGJvb2wgaXNDaGVj
a2VkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVy
dHlOYW1lOjpJc0NoZWNrZWQpOyB9CisgICAgYm9vbCBpc0VuYWJsZWQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzRW5hYmxlZCk7
IH0KKyAgICBib29sIGlzU2VsZWN0ZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0
cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzU2VsZWN0ZWQpOyB9CisgICAgYm9vbCBpc0Zv
Y3VzZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9w
ZXJ0eU5hbWU6OklzRm9jdXNlZCk7IH0KKyAgICBib29sIGlzTXVsdGlTZWxlY3RhYmxlKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJ
c011bHRpU2VsZWN0YWJsZSk7IH0KKyAgICBib29sIGlzVmlzaXRlZCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNWaXNpdGVkKTsg
fQorICAgIGJvb2wgaXNSZXF1aXJlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRy
aWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNSZXF1aXJlZCk7IH0KKyAgICBib29sIHN1cHBv
cnRzUmVxdWlyZWRBdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmli
dXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OlN1cHBvcnRzUmVxdWlyZWRBdHRyaWJ1dGUpOyB9Cisg
ICAgYm9vbCBpc0V4cGFuZGVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0
ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc0V4cGFuZGVkKTsgfQorICAgIEZsb2F0UmVjdCByZWxh
dGl2ZUZyYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcmVjdEF0dHJpYnV0ZVZhbHVlPEZs
b2F0UmVjdD4oQVhQcm9wZXJ0eU5hbWU6OlJlbGF0aXZlRnJhbWUpOyB9CisgICAgYm9vbCBzdXBw
b3J0c0RhdGV0aW1lQXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJp
YnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpTdXBwb3J0c0RhdGV0aW1lQXR0cmlidXRlKTsgfQor
ICAgIFN0cmluZyBkYXRldGltZUF0dHJpYnV0ZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkRhdGV0aW1lQXR0cmlidXRl
VmFsdWUpOyB9CisgICAgYm9vbCBjYW5TZXRGb2N1c0F0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6Q2FuU2V0Rm9jdXNB
dHRyaWJ1dGUpOyB9CisgICAgYm9vbCBjYW5TZXRUZXh0UmFuZ2VBdHRyaWJ1dGVzKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpDYW5T
ZXRUZXh0UmFuZ2VBdHRyaWJ1dGVzKTsgfQorICAgIGJvb2wgY2FuU2V0VmFsdWVBdHRyaWJ1dGUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5h
bWU6OkNhblNldFZhbHVlQXR0cmlidXRlKTsgfQorICAgIGJvb2wgY2FuU2V0TnVtZXJpY1ZhbHVl
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlO
YW1lOjpDYW5TZXROdW1lcmljVmFsdWUpOyB9CisgICAgYm9vbCBjYW5TZXRTZWxlY3RlZEF0dHJp
YnV0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3Bl
cnR5TmFtZTo6Q2FuU2V0U2VsZWN0ZWRBdHRyaWJ1dGUpOyB9CisgICAgYm9vbCBjYW5TZXRTZWxl
Y3RlZENoaWxkcmVuQXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJp
YnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpDYW5TZXRTZWxlY3RlZENoaWxkcmVuQXR0cmlidXRl
KTsgfQorICAgIGJvb2wgY2FuU2V0RXhwYW5kZWRBdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkNhblNldEV4cGFuZGVk
QXR0cmlidXRlKTsgfQorICAgIGJvb2wgYWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNBY2Nl
c3NpYmlsaXR5SWdub3JlZCk7IH0KKyAgICBib29sIGlzU2hvd2luZ1ZhbGlkYXRpb25NZXNzYWdl
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlO
YW1lOjpJc1Nob3dpbmdWYWxpZGF0aW9uTWVzc2FnZSk7IH0KKyAgICBTdHJpbmcgdmFsaWRhdGlv
bk1lc3NhZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShB
WFByb3BlcnR5TmFtZTo6VmFsaWRhdGlvbk1lc3NhZ2UpOyB9CisgICAgdW5zaWduZWQgYmxvY2tx
dW90ZUxldmVsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdW5zaWduZWRBdHRyaWJ1dGVWYWx1
ZShBWFByb3BlcnR5TmFtZTo6QmxvY2txdW90ZUxldmVsKTsgfQorICAgIGludCBoZWFkaW5nTGV2
ZWwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBpbnRBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5
TmFtZTo6SGVhZGluZ0xldmVsKTsgfQorICAgIGludCB0YWJsZUxldmVsKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gaW50QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OlRhYmxlTGV2ZWwp
OyB9CisgICAgQWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRlIGNoZWNrYm94T3JSYWRpb1ZhbHVlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eUJ1dHRvblN0
YXRlPihpbnRBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6QWNjZXNzaWJpbGl0eUJ1dHRv
blN0YXRlKSk7IH0KKyAgICBTdHJpbmcgdmFsdWVEZXNjcmlwdGlvbigpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHN0cmluZ0F0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpWYWx1ZURlc2Ny
aXB0aW9uKTsgfQorICAgIGZsb2F0IHZhbHVlRm9yUmFuZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBmbG9hdEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpWYWx1ZUZvclJhbmdlKTsg
fQorICAgIGZsb2F0IG1heFZhbHVlRm9yUmFuZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBm
bG9hdEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpNYXhWYWx1ZUZvclJhbmdlKTsgfQor
ICAgIGZsb2F0IG1pblZhbHVlRm9yUmFuZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmbG9h
dEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpNaW5WYWx1ZUZvclJhbmdlKTsgfQorICAg
IEFYQ29yZU9iamVjdCogc2VsZWN0ZWRSYWRpb0J1dHRvbigpIG92ZXJyaWRlIHsgcmV0dXJuIG9i
amVjdEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpTZWxlY3RlZFJhZGlvQnV0dG9uKTsg
fQorICAgIEFYQ29yZU9iamVjdCogc2VsZWN0ZWRUYWJJdGVtKCkgb3ZlcnJpZGUgeyByZXR1cm4g
b2JqZWN0QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OlNlbGVjdGVkVGFiSXRlbSk7IH0K
KyAgICBpbnQgbGF5b3V0Q291bnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBpbnRBdHRyaWJ1
dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6TGF5b3V0Q291bnQpOyB9CisgICAgZG91YmxlIGVzdGlt
YXRlZExvYWRpbmdQcm9ncmVzcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGRvdWJsZUF0dHJp
YnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpFc3RpbWF0ZWRMb2FkaW5nUHJvZ3Jlc3MpOyB9Cisg
ICAgYm9vbCBzdXBwb3J0c0FSSUFPd25zKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0
dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpTdXBwb3J0c0FSSUFPd25zKTsgfQorICAgIGJv
b2wgaXNBY3RpdmVEZXNjZW5kYW50T2ZGb2N1c2VkQ29udGFpbmVyKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc0FjdGl2ZURlc2Nl
bmRhbnRPZkZvY3VzZWRDb250YWluZXIpOyB9CisgICAgdm9pZCBhcmlhQ29udHJvbHNFbGVtZW50
cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGNoaWxkcmVuKSBjb25zdCBvdmVycmlkZSB7
IGZpbGxDaGlsZHJlblZlY3RvckZvclByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpBUklBQ29udHJv
bHNFbGVtZW50cywgY2hpbGRyZW4pOyB9CisgICAgdm9pZCBhcmlhRGV0YWlsc0VsZW1lbnRzKEFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgY2hpbGRyZW4pIGNvbnN0IG92ZXJyaWRlIHsgZmls
bENoaWxkcmVuVmVjdG9yRm9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkFSSUFEZXRhaWxzRWxl
bWVudHMsIGNoaWxkcmVuKTsgfQorICAgIHZvaWQgYXJpYUVycm9yTWVzc2FnZUVsZW1lbnRzKEFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgY2hpbGRyZW4pIGNvbnN0IG92ZXJyaWRlIHsgZmls
bENoaWxkcmVuVmVjdG9yRm9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkFSSUFFcnJvck1lc3Nh
Z2VFbGVtZW50cywgY2hpbGRyZW4pOyB9CisgICAgdm9pZCBhcmlhRmxvd1RvRWxlbWVudHMoQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBjaGlsZHJlbikgY29uc3Qgb3ZlcnJpZGUgeyBmaWxs
Q2hpbGRyZW5WZWN0b3JGb3JQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6QVJJQUZsb3dUb0VsZW1l
bnRzLCBjaGlsZHJlbik7IH0KKyAgICB2b2lkIGFyaWFPd25zRWxlbWVudHMoQWNjZXNzaWJpbGl0
eUNoaWxkcmVuVmVjdG9yJiBjaGlsZHJlbikgY29uc3Qgb3ZlcnJpZGUgeyBmaWxsQ2hpbGRyZW5W
ZWN0b3JGb3JQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6QVJJQU93bnNFbGVtZW50cywgY2hpbGRy
ZW4pOyB9CisgICAgYm9vbCBoYXNQb3B1cCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xB
dHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SGFzUG9wdXApOyB9CisgICAgU3RyaW5nIHBv
cHVwVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShB
WFByb3BlcnR5TmFtZTo6UG9wdXBWYWx1ZSk7IH0KKyAgICBib29sIHByZXNzZWRJc1ByZXNlbnQo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5h
bWU6OlByZXNzZWRJc1ByZXNlbnQpOyB9CisgICAgYm9vbCBhcmlhSXNNdWx0aWxpbmUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkFS
SUFJc011bHRpbGluZSk7IH0KKyAgICBTdHJpbmcgaW52YWxpZFN0YXR1cygpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIHN0cmluZ0F0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJbnZhbGlk
U3RhdHVzKTsgfQorICAgIGJvb2wgc3VwcG9ydHNFeHBhbmRlZCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6U3VwcG9ydHNFeHBhbmRl
ZCk7IH0KKyAgICBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbiBzb3J0RGlyZWN0aW9uKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eVNvcnREaXJlY3Rp
b24+KGludEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpTb3J0RGlyZWN0aW9uKSk7IH0K
KyAgICBib29sIGNhbnZhc0hhc0ZhbGxiYWNrQ29udGVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6Q2FudmFzSGFzRmFsbGJhY2tD
b250ZW50KTsgfQorICAgIGJvb2wgc3VwcG9ydHNSYW5nZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpTdXBwb3J0c1Jhbmdl
VmFsdWUpOyB9CisgICAgU3RyaW5nIGlkZW50aWZpZXJBdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SWRlbnRpZmll
ckF0dHJpYnV0ZSk7IH0KKyAgICBTdHJpbmcgbGlua1JlbFZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkxpbmtSZWxWYWx1
ZSk7IH0KKyAgICB2b2lkIGNsYXNzTGlzdChWZWN0b3I8U3RyaW5nPiYpIGNvbnN0IG92ZXJyaWRl
OworICAgIEFjY2Vzc2liaWxpdHlDdXJyZW50U3RhdGUgY3VycmVudFN0YXRlKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eUN1cnJlbnRTdGF0ZT4oaW50
QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkN1cnJlbnRTdGF0ZSkpOyB9CisgICAgU3Ry
aW5nIGN1cnJlbnRWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0cmluZ0F0dHJpYnV0
ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpDdXJyZW50VmFsdWUpOyB9CisgICAgYm9vbCBzdXBwb3J0
c0N1cnJlbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQ
cm9wZXJ0eU5hbWU6OlN1cHBvcnRzQ3VycmVudCk7IH0KKyAgICBjb25zdCBTdHJpbmcga2V5U2hv
cnRjdXRzVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdHJpbmdBdHRyaWJ1dGVWYWx1
ZShBWFByb3BlcnR5TmFtZTo6S2V5U2hvcnRjdXRzVmFsdWUpOyB9CisgICAgYm9vbCBzdXBwb3J0
c1NldFNpemUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQ
cm9wZXJ0eU5hbWU6OlN1cHBvcnRzU2V0U2l6ZSk7IH0KKyAgICBib29sIHN1cHBvcnRzUG9zSW5T
ZXQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0
eU5hbWU6OlN1cHBvcnRzUG9zSW5TZXQpOyB9CisgICAgaW50IHNldFNpemUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBpbnRBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6U2V0U2l6ZSk7
IH0KKyAgICBpbnQgcG9zSW5TZXQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBpbnRBdHRyaWJ1
dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6UG9zSW5TZXQpOyB9CisgICAgYm9vbCBzdXBwb3J0c0FS
SUFEcm9wcGluZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShB
WFByb3BlcnR5TmFtZTo6U3VwcG9ydHNBUklBRHJvcHBpbmcpOyB9CisgICAgYm9vbCBzdXBwb3J0
c0FSSUFEcmFnZ2luZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1
ZShBWFByb3BlcnR5TmFtZTo6U3VwcG9ydHNBUklBRHJhZ2dpbmcpOyB9CisgICAgYm9vbCBpc0FS
SUFHcmFiYmVkKCkgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVy
dHlOYW1lOjpJc0FSSUFHcmFiYmVkKTsgfQorICAgIFZlY3RvcjxTdHJpbmc+IGRldGVybWluZUFS
SUFEcm9wRWZmZWN0cygpIG92ZXJyaWRlIHsgcmV0dXJuIHZlY3RvckF0dHJpYnV0ZVZhbHVlPFN0
cmluZz4oQVhQcm9wZXJ0eU5hbWU6OkFSSUFEcm9wRWZmZWN0cyk7IH0KKyAgICBBWENvcmVPYmpl
Y3QqIGFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7
CisgICAgQVhDb3JlT2JqZWN0KiBmb2N1c2VkVUlFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgQVhDb3JlT2JqZWN0KiBwYXJlbnRPYmplY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBw
YXJlbnRPYmplY3RVbmlnbm9yZWQoKTsgfQorICAgIEFYQ29yZU9iamVjdCogcGFyZW50T2JqZWN0
VW5pZ25vcmVkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBsaW5rZWRVSUVsZW1lbnRzKEFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgY2hpbGRyZW4pIGNvbnN0IG92ZXJyaWRlIHsgZmls
bENoaWxkcmVuVmVjdG9yRm9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkxpbmtlZFVJRWxlbWVu
dHMsIGNoaWxkcmVuKTsgfQorICAgIEFYQ29yZU9iamVjdCogdGl0bGVVSUVsZW1lbnQoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBvYmplY3RBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6
VGl0bGVVSUVsZW1lbnQpOyB9CisgICAgYm9vbCBleHBvc2VzVGl0bGVVSUVsZW1lbnQoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkV4
cG9zZXNUaXRsZVVJRWxlbWVudCk7IH0KKyAgICBBWENvcmVPYmplY3QqIHNjcm9sbEJhcihBY2Nl
c3NpYmlsaXR5T3JpZW50YXRpb24pIG92ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlSb2xlIGFy
aWFSb2xlQXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QWNj
ZXNzaWJpbGl0eVJvbGU+KGludEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpBUklBUm9s
ZUF0dHJpYnV0ZSkpOyB9CisgICAgU3RyaW5nIGNvbXB1dGVkTGFiZWwoKSBvdmVycmlkZSB7IHJl
dHVybiBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6Q29tcHV0ZWRMYWJlbCk7
IH0KKyAgICBpbnQgdGV4dExlbmd0aCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGludEF0dHJp
YnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpUZXh0TGVuZ3RoKTsgfQorICAgIGNvbnN0IFN0cmlu
ZyBwbGFjZWhvbGRlclZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RyaW5nQXR0cmli
dXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OlBsYWNlaG9sZGVyVmFsdWUpOyB9CisgICAgU3RyaW5n
IGV4cGFuZGVkVGV4dFZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RyaW5nQXR0cmli
dXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkV4cGFuZGVkVGV4dFZhbHVlKTsgfQorICAgIGJvb2wg
c3VwcG9ydHNFeHBhbmRlZFRleHRWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xB
dHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6U3VwcG9ydHNFeHBhbmRlZFRleHRWYWx1ZSk7
IH0KKyAgICB2b2lkIGNvbG9yVmFsdWUoaW50JiwgaW50JiwgaW50JikgY29uc3Qgb3ZlcnJpZGU7
CisgICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eVJvbGU+KGludEF0dHJpYnV0ZVZhbHVlKEFYUHJv
cGVydHlOYW1lOjpSb2xlVmFsdWUpKTsgfQorICAgIFN0cmluZyByb2xlUGxhdGZvcm1TdHJpbmco
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5
TmFtZTo6Um9sZVBsYXRmb3JtU3RyaW5nKTsgfQorICAgIFN0cmluZyByb2xlRGVzY3JpcHRpb24o
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5
TmFtZTo6Um9sZURlc2NyaXB0aW9uKTsgfQorICAgIFN0cmluZyBhcmlhTGFuZG1hcmtSb2xlRGVz
Y3JpcHRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShB
WFByb3BlcnR5TmFtZTo6QVJJQUxhbmRtYXJrUm9sZURlc2NyaXB0aW9uKTsgfQorICAgIGJvb2wg
c3VwcG9ydHNQcmVzc0FjdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1
dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6U3VwcG9ydHNQcmVzc0FjdGlvbik7IH0KKyAgICBMYXlv
dXRSZWN0IGJvdW5kaW5nQm94UmVjdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJlY3RBdHRy
aWJ1dGVWYWx1ZTxMYXlvdXRSZWN0PihBWFByb3BlcnR5TmFtZTo6Qm91bmRpbmdCb3hSZWN0KTsg
fQorICAgIExheW91dFJlY3QgZWxlbWVudFJlY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBy
ZWN0QXR0cmlidXRlVmFsdWU8TGF5b3V0UmVjdD4oQVhQcm9wZXJ0eU5hbWU6OkVsZW1lbnRSZWN0
KTsgfQorICAgIEludFBvaW50IGNsaWNrUG9pbnQoKSBvdmVycmlkZSB7IHJldHVybiBpbnRQb2lu
dEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpDbGlja1BvaW50KTsgfQorICAgIHZvaWQg
YWNjZXNzaWJpbGl0eVRleHQoVmVjdG9yPEFjY2Vzc2liaWxpdHlUZXh0PiYgdGV4dHMpIGNvbnN0
IG92ZXJyaWRlOworICAgIFN0cmluZyBjb21wdXRlZFJvbGVTdHJpbmcoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6Q29tcHV0ZWRS
b2xlU3RyaW5nKTsgfQorICAgIGJvb2wgaXNWYWx1ZUF1dG9maWxsZWQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzVmFsdWVBdXRv
ZmlsbGVkKTsgfQorICAgIGJvb2wgaXNWYWx1ZUF1dG9maWxsQXZhaWxhYmxlKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc1ZhbHVl
QXV0b2ZpbGxBdmFpbGFibGUpOyB9CisgICAgQXV0b0ZpbGxCdXR0b25UeXBlIHZhbHVlQXV0b2Zp
bGxCdXR0b25UeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QXV0b0Zp
bGxCdXR0b25UeXBlPihpbnRBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6VmFsdWVBdXRv
ZmlsbEJ1dHRvblR5cGUpKTsgfQorICAgIHZvaWQgYXJpYVRyZWVSb3dzKEFjY2Vzc2liaWxpdHlD
aGlsZHJlblZlY3RvciYgY2hpbGRyZW4pIG92ZXJyaWRlIHsgZmlsbENoaWxkcmVuVmVjdG9yRm9y
UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkFSSUFUcmVlUm93cywgY2hpbGRyZW4pOyB9CisgICAg
dm9pZCBhcmlhVHJlZUl0ZW1EaXNjbG9zZWRSb3dzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3Rv
ciYgY2hpbGRyZW4pIG92ZXJyaWRlIHsgZmlsbENoaWxkcmVuVmVjdG9yRm9yUHJvcGVydHkoQVhQ
cm9wZXJ0eU5hbWU6OkFSSUFUcmVlSXRlbURpc2Nsb3NlZFJvd3MsIGNoaWxkcmVuKTsgfQorICAg
IHZvaWQgYXJpYVRyZWVJdGVtQ29udGVudChBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGNo
aWxkcmVuKSBvdmVycmlkZSB7IGZpbGxDaGlsZHJlblZlY3RvckZvclByb3BlcnR5KEFYUHJvcGVy
dHlOYW1lOjpBUklBVHJlZUl0ZW1Db250ZW50LCBjaGlsZHJlbik7IH0KKyAgICBVUkwgdXJsKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdXJsQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6
OlVSTCk7IH0KKyAgICBTdHJpbmcgYWNjZXNzS2V5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
c3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkFjY2Vzc0tleSk7IH0KKyAgICBT
dHJpbmcgYWN0aW9uVmVyYigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0cmluZ0F0dHJpYnV0
ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpBY3Rpb25WZXJiKTsgfQorICAgIFN0cmluZyByZWFkT25s
eVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQ
cm9wZXJ0eU5hbWU6OlJlYWRPbmx5VmFsdWUpOyB9CisgICAgU3RyaW5nIGF1dG9Db21wbGV0ZVZh
bHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9w
ZXJ0eU5hbWU6OkF1dG9Db21wbGV0ZVZhbHVlKTsgfQorICAgIE9wdGlvblNldDxTcGVha0FzPiBz
cGVha0FzUHJvcGVydHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBvcHRpb25TZXRBdHRyaWJ1
dGVWYWx1ZTxTcGVha0FzPihBWFByb3BlcnR5TmFtZTo6U3BlYWtBcyk7IH0KKyAgICBib29sIGlz
TWF0aEVsZW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUo
QVhQcm9wZXJ0eU5hbWU6OklzTWF0aEVsZW1lbnQpOyB9CisgICAgYm9vbCBpc01hdGhGcmFjdGlv
bigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5
TmFtZTo6SXNNYXRoRnJhY3Rpb24pOyB9CisgICAgYm9vbCBpc01hdGhGZW5jZWQoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzTWF0
aEZlbmNlZCk7IH0KKyAgICBib29sIGlzTWF0aFN1YnNjcmlwdFN1cGVyc2NyaXB0KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc01h
dGhTdWJzY3JpcHRTdXBlcnNjcmlwdCk7IH0KKyAgICBib29sIGlzTWF0aFJvdygpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNNYXRo
Um93KTsgfQorICAgIGJvb2wgaXNNYXRoVW5kZXJPdmVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc01hdGhVbmRlck92ZXIpOyB9
CisgICAgYm9vbCBpc01hdGhSb290KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJp
YnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc01hdGhSb290KTsgfQorICAgIGJvb2wgaXNNYXRo
U3F1YXJlUm9vdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShB
WFByb3BlcnR5TmFtZTo6SXNNYXRoU3F1YXJlUm9vdCk7IH0KKyAgICBib29sIGlzTWF0aFRleHQo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5h
bWU6OklzTWF0aFRleHQpOyB9CisgICAgYm9vbCBpc01hdGhOdW1iZXIoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzTWF0aE51bWJl
cik7IH0KKyAgICBib29sIGlzTWF0aE9wZXJhdG9yKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
Ym9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc01hdGhPcGVyYXRvcik7IH0KKyAg
ICBib29sIGlzTWF0aEZlbmNlT3BlcmF0b3IoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29s
QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzTWF0aEZlbmNlT3BlcmF0b3IpOyB9Cisg
ICAgYm9vbCBpc01hdGhTZXBhcmF0b3JPcGVyYXRvcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNNYXRoU2VwYXJhdG9yT3BlcmF0
b3IpOyB9CisgICAgYm9vbCBpc01hdGhJZGVudGlmaWVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc01hdGhJZGVudGlmaWVyKTsg
fQorICAgIGJvb2wgaXNNYXRoVGFibGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0
cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzTWF0aFRhYmxlKTsgfQorICAgIGJvb2wgaXNN
YXRoVGFibGVSb3coKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUo
QVhQcm9wZXJ0eU5hbWU6OklzTWF0aFRhYmxlUm93KTsgfQorICAgIGJvb2wgaXNNYXRoVGFibGVD
ZWxsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVy
dHlOYW1lOjpJc01hdGhUYWJsZUNlbGwpOyB9CisgICAgYm9vbCBpc01hdGhNdWx0aXNjcmlwdCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFt
ZTo6SXNNYXRoTXVsdGlzY3JpcHQpOyB9CisgICAgYm9vbCBpc01hdGhUb2tlbigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNNYXRo
VG9rZW4pOyB9CisgICAgQVhDb3JlT2JqZWN0KiBtYXRoUmFkaWNhbmRPYmplY3QoKSBvdmVycmlk
ZSB7IHJldHVybiBvYmplY3RBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6TWF0aFJhZGlj
YW5kT2JqZWN0KTsgfQorICAgIEFYQ29yZU9iamVjdCogbWF0aFJvb3RJbmRleE9iamVjdCgpIG92
ZXJyaWRlIHsgcmV0dXJuIG9iamVjdEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpNYXRo
Um9vdEluZGV4T2JqZWN0KTsgfQorICAgIEFYQ29yZU9iamVjdCogbWF0aFVuZGVyT2JqZWN0KCkg
b3ZlcnJpZGUgeyByZXR1cm4gb2JqZWN0QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6Ok1h
dGhVbmRlck9iamVjdCk7IH0KKyAgICBBWENvcmVPYmplY3QqIG1hdGhPdmVyT2JqZWN0KCkgb3Zl
cnJpZGUgeyByZXR1cm4gb2JqZWN0QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6Ok1hdGhP
dmVyT2JqZWN0KTsgfQorICAgIEFYQ29yZU9iamVjdCogbWF0aE51bWVyYXRvck9iamVjdCgpIG92
ZXJyaWRlIHsgcmV0dXJuIG9iamVjdEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpNYXRo
TnVtZXJhdG9yT2JqZWN0KTsgfQorICAgIEFYQ29yZU9iamVjdCogbWF0aERlbm9taW5hdG9yT2Jq
ZWN0KCkgb3ZlcnJpZGUgeyByZXR1cm4gb2JqZWN0QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5h
bWU6Ok1hdGhEZW5vbWluYXRvck9iamVjdCk7IH0KKyAgICBBWENvcmVPYmplY3QqIG1hdGhCYXNl
T2JqZWN0KCkgb3ZlcnJpZGUgeyByZXR1cm4gb2JqZWN0QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0
eU5hbWU6Ok1hdGhCYXNlT2JqZWN0KTsgfQorICAgIEFYQ29yZU9iamVjdCogbWF0aFN1YnNjcmlw
dE9iamVjdCgpIG92ZXJyaWRlIHsgcmV0dXJuIG9iamVjdEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVy
dHlOYW1lOjpNYXRoU3Vic2NyaXB0T2JqZWN0KTsgfQorICAgIEFYQ29yZU9iamVjdCogbWF0aFN1
cGVyc2NyaXB0T2JqZWN0KCkgb3ZlcnJpZGUgeyByZXR1cm4gb2JqZWN0QXR0cmlidXRlVmFsdWUo
QVhQcm9wZXJ0eU5hbWU6Ok1hdGhTdXBlcnNjcmlwdE9iamVjdCk7IH0KKyAgICBTdHJpbmcgbWF0
aEZlbmNlZE9wZW5TdHJpbmcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdHJpbmdBdHRyaWJ1
dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6TWF0aEZlbmNlZE9wZW5TdHJpbmcpOyB9CisgICAgU3Ry
aW5nIG1hdGhGZW5jZWRDbG9zZVN0cmluZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0cmlu
Z0F0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpNYXRoRmVuY2VkQ2xvc2VTdHJpbmcpOyB9
CisgICAgaW50IG1hdGhMaW5lVGhpY2tuZXNzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gaW50
QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6Ok1hdGhMaW5lVGhpY2tuZXNzKTsgfQorICAg
IGJvb2wgaXNBbm9ueW1vdXNNYXRoT3BlcmF0b3IoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBi
b29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzQW5vbnltb3VzTWF0aE9wZXJhdG9y
KTsgfQorICAgIHZvaWQgbWF0aFByZXNjcmlwdHMoQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlw
dFBhaXJzJikgb3ZlcnJpZGU7CisgICAgdm9pZCBtYXRoUG9zdHNjcmlwdHMoQWNjZXNzaWJpbGl0
eU1hdGhNdWx0aXNjcmlwdFBhaXJzJikgb3ZlcnJpZGU7CisgICAgYm9vbCBmaWxlVXBsb2FkQnV0
dG9uUmV0dXJuc1ZhbHVlSW5UaXRsZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRy
aWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6RmlsZVVwbG9hZEJ1dHRvblJldHVybnNWYWx1ZUlu
VGl0bGUpOyB9CisgICAgU3RyaW5nIHNwZWVjaEhpbnRBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHN0cmluZ0F0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpTcGVl
Y2hIaW50KTsgfQorICAgIFN0cmluZyBkZXNjcmlwdGlvbkF0dHJpYnV0ZVZhbHVlKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkRl
c2NyaXB0aW9uKTsgfQorICAgIFN0cmluZyBoZWxwVGV4dEF0dHJpYnV0ZVZhbHVlKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6Okhl
bHBUZXh0KTsgfQorICAgIFN0cmluZyB0aXRsZUF0dHJpYnV0ZVZhbHVlKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OlRpdGxlKTsg
fQorICAgIGJvb2wgY2FyZXRCcm93c2luZ0VuYWJsZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkNhcmV0QnJvd3NpbmdFbmFibGVk
KTsgfQorICAgIEFYQ29yZU9iamVjdCogZm9jdXNhYmxlQW5jZXN0b3IoKSBvdmVycmlkZSB7IHJl
dHVybiBvYmplY3RBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6Rm9jdXNhYmxlQW5jZXN0
b3IpOyB9CisgICAgQVhDb3JlT2JqZWN0KiBlZGl0YWJsZUFuY2VzdG9yKCkgb3ZlcnJpZGUgeyBy
ZXR1cm4gb2JqZWN0QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkVkaXRhYmxlQW5jZXN0
b3IpOyB9CisgICAgQVhDb3JlT2JqZWN0KiBoaWdoZXN0RWRpdGFibGVBbmNlc3RvcigpIG92ZXJy
aWRlIHsgcmV0dXJuIG9iamVjdEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpIaWdoZXN0
RWRpdGFibGVBbmNlc3Rvcik7IH0KKyAgICBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb24gb3JpZW50
YXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5
T3JpZW50YXRpb24+KGludEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpPcmllbnRhdGlv
bikpOyB9CisgICAgdW5zaWduZWQgaGllcmFyY2hpY2FsTGV2ZWwoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiB1bnNpZ25lZEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpIaWVyYXJjaGlj
YWxMZXZlbCk7IH0KKyAgICBTdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6TGFuZ3VhZ2UpOyB9CisgICAg
Ym9vbCBjYW5IYXZlU2VsZWN0ZWRDaGlsZHJlbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJv
b2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6Q2FuSGF2ZVNlbGVjdGVkQ2hpbGRyZW4p
OyB9CisgICAgdm9pZCBzZWxlY3RlZENoaWxkcmVuKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3Rv
ciYgY2hpbGRyZW4pIG92ZXJyaWRlIHsgZmlsbENoaWxkcmVuVmVjdG9yRm9yUHJvcGVydHkoQVhQ
cm9wZXJ0eU5hbWU6OlNlbGVjdGVkQ2hpbGRyZW4sIGNoaWxkcmVuKTsgfQorICAgIHZvaWQgdmlz
aWJsZUNoaWxkcmVuKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgY2hpbGRyZW4pIG92ZXJy
aWRlIHsgZmlsbENoaWxkcmVuVmVjdG9yRm9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OlZpc2li
bGVDaGlsZHJlbiwgY2hpbGRyZW4pOyB9CisgICAgdm9pZCB0YWJDaGlsZHJlbihBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3ImIGNoaWxkcmVuKSBvdmVycmlkZSB7IGZpbGxDaGlsZHJlblZlY3Rv
ckZvclByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpUYWJDaGlsZHJlbiwgY2hpbGRyZW4pOyB9Cisg
ICAgYm9vbCBoYXNBUklBVmFsdWVOb3coKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0
cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6Okhhc0FSSUFWYWx1ZU5vdyk7IH0KKyAgICBTdHJp
bmcgdGFnTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0cmluZ0F0dHJpYnV0ZVZhbHVl
KEFYUHJvcGVydHlOYW1lOjpUYWdOYW1lKTsgfQorICAgIGNvbnN0IEFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciYgY2hpbGRyZW4oYm9vbCB1cGRhdGVDaGlsZHJlbklmTmVlZGVkID0gdHJ1ZSkg
b3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVDaGlsZHJlbklmTmVjZXNzYXJ5KCkgb3ZlcnJpZGUg
eyB9CisgICAgYm9vbCBpc0RldGFjaGVkRnJvbVBhcmVudCgpIG92ZXJyaWRlOworICAgIGJvb2wg
c3VwcG9ydHNMaXZlUmVnaW9uKGJvb2wgPSB0cnVlKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBi
b29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OlN1cHBvcnRzTGl2ZVJlZ2lvbik7IH0K
KyAgICBib29sIGlzSW5zaWRlTGl2ZVJlZ2lvbihib29sID0gdHJ1ZSkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc0luc2lkZUxpdmVS
ZWdpb24pOyB9CisgICAgY29uc3QgU3RyaW5nIGxpdmVSZWdpb25TdGF0dXMoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6TGl2ZVJl
Z2lvblN0YXR1cyk7IH0KKyAgICBjb25zdCBTdHJpbmcgbGl2ZVJlZ2lvblJlbGV2YW50KCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6
OkxpdmVSZWdpb25SZWxldmFudCk7IH0KKyAgICBib29sIGxpdmVSZWdpb25BdG9taWMoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6Okxp
dmVSZWdpb25BdG9taWMpOyB9CisgICAgYm9vbCBpc0J1c3koKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzQnVzeSk7IH0KKyAgICBi
b29sIGlzSW5saW5lVGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVW
YWx1ZShBWFByb3BlcnR5TmFtZTo6SXNJbmxpbmVUZXh0KTsgfQorCisgICAgLy8gQXR0cmlidXRl
cyByZXRyaWV2ZWQgZnJvbSB0aGUgcm9vdCBub2RlIG9ubHkgc28gdGhhdCB0aGUgZGF0YSBpc24n
dCBkdXBsaWNhdGVkIG9uIGVhY2ggbm9kZS4KKyAgICB1aW50NjRfdCBzZXNzaW9uSUQoKSBjb25z
dCBvdmVycmlkZTsKKyAgICBTdHJpbmcgZG9jdW1lbnRVUkkoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBTdHJpbmcgZG9jdW1lbnRFbmNvZGluZygpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgcHJl
dmVudEtleWJvYXJkRE9NRXZlbnREaXNwYXRjaCgpIGNvbnN0IG92ZXJyaWRlOworCisgICAgLy8g
VE9ETzogVGV4dCByYW5nZXMgYW5kIHNlbGVjdGlvbi4KKyAgICBQbGFpblRleHRSYW5nZSBzZWxl
Y3RlZFRleHRSYW5nZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFBsYWluVGV4dFJhbmdlKCk7
IH0KKyAgICB1bnNpZ25lZCBzZWxlY3Rpb25TdGFydCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IDA7IH0KKyAgICB1bnNpZ25lZCBzZWxlY3Rpb25FbmQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biAwOyB9CisgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24oKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBWaXNpYmxlU2VsZWN0aW9uKCk7IH0KKyAgICBTdHJpbmcgc2VsZWN0ZWRUZXh0KCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KKyAgICBWaXNpYmxlUG9zaXRpb25S
YW5nZSB2aXNpYmxlUG9zaXRpb25SYW5nZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFZpc2li
bGVQb3NpdGlvblJhbmdlKCk7IH0KKyAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSB2aXNpYmxlUG9z
aXRpb25SYW5nZUZvckxpbmUodW5zaWduZWQpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFZpc2li
bGVQb3NpdGlvblJhbmdlKCk7IH0KKyAgICBSZWZQdHI8UmFuZ2U+IGVsZW1lbnRSYW5nZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBWaXNpYmxlUG9zaXRpb25SYW5n
ZSB2aXNpYmxlUG9zaXRpb25SYW5nZUZvclVub3JkZXJlZFBvc2l0aW9ucyhjb25zdCBWaXNpYmxl
UG9zaXRpb24mLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBWaXNpYmxlUG9zaXRpb25SYW5nZSgpOyB9CisgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgcG9z
aXRpb25PZkxlZnRXb3JkKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIFZpc2libGVQb3NpdGlvblJhbmdlKCk7IH0KKyAgICBWaXNpYmxlUG9zaXRpb25SYW5n
ZSBwb3NpdGlvbk9mUmlnaHRXb3JkKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIFZpc2libGVQb3NpdGlvblJhbmdlKCk7IH0KKyAgICBWaXNpYmxlUG9zaXRp
b25SYW5nZSBsZWZ0TGluZVZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZpc2libGVQb3NpdGlv
biYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFZpc2libGVQb3NpdGlvblJhbmdlKCk7IH0KKyAg
ICBWaXNpYmxlUG9zaXRpb25SYW5nZSByaWdodExpbmVWaXNpYmxlUG9zaXRpb25SYW5nZShjb25z
dCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBWaXNpYmxlUG9zaXRp
b25SYW5nZSgpOyB9CisgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2Ugc2VudGVuY2VGb3JQb3NpdGlv
bihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBWaXNpYmxl
UG9zaXRpb25SYW5nZSgpOyB9CisgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgcGFyYWdyYXBoRm9y
UG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
VmlzaWJsZVBvc2l0aW9uUmFuZ2UoKTsgfQorICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHN0eWxl
UmFuZ2VGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBWaXNpYmxlUG9zaXRpb25SYW5nZSgpOyB9CisgICAgVmlzaWJsZVBvc2l0aW9uUmFu
Z2UgdmlzaWJsZVBvc2l0aW9uUmFuZ2VGb3JSYW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIFZpc2libGVQb3NpdGlvblJhbmdlKCk7IH0KKyAgICBWaXNp
YmxlUG9zaXRpb25SYW5nZSBsaW5lUmFuZ2VGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRp
b24mKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBWaXNpYmxlUG9zaXRpb25SYW5nZSgpOyB9Cisg
ICAgUmVmUHRyPFJhbmdlPiByYW5nZUZvclBsYWluVGV4dFJhbmdlKGNvbnN0IFBsYWluVGV4dFJh
bmdlJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIFN0cmluZyBzdHJp
bmdGb3JSYW5nZShSZWZQdHI8UmFuZ2U+KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJpbmco
KTsgfQorICAgIEludFJlY3QgYm91bmRzRm9yVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlz
aWJsZVBvc2l0aW9uUmFuZ2UmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBJbnRSZWN0KCk7IH0K
KyAgICBJbnRSZWN0IGJvdW5kc0ZvclJhbmdlKGNvbnN0IFJlZlB0cjxSYW5nZT4pIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIEludFJlY3QoKTsgfQorICAgIGludCBsZW5ndGhGb3JWaXNpYmxlUG9z
aXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb25SYW5nZSYpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIDA7IH0KKyAgICB2b2lkIHNldFNlbGVjdGVkVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29u
c3QgVmlzaWJsZVBvc2l0aW9uUmFuZ2UmKSBjb25zdCBvdmVycmlkZSB7IH0KKyAgICBWaXNpYmxl
UG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9yQm91bmRzKGNvbnN0IEludFJlY3QmLCBBY2Nlc3Np
YmlsaXR5VmlzaWJsZVBvc2l0aW9uRm9yQm91bmRzKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBW
aXNpYmxlUG9zaXRpb24oKTsgfQorICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25G
b3JQb2ludChjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFZpc2libGVQ
b3NpdGlvbigpOyB9CisgICAgVmlzaWJsZVBvc2l0aW9uIG5leHRWaXNpYmxlUG9zaXRpb24oY29u
c3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVmlzaWJsZVBvc2l0
aW9uKCk7IH0KKyAgICBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXNWaXNpYmxlUG9zaXRpb24oY29u
c3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVmlzaWJsZVBvc2l0
aW9uKCk7IH0KKyAgICBWaXNpYmxlUG9zaXRpb24gbmV4dFdvcmRFbmQoY29uc3QgVmlzaWJsZVBv
c2l0aW9uJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7IH0KKyAg
ICBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXNXb3JkU3RhcnQoY29uc3QgVmlzaWJsZVBvc2l0aW9u
JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7IH0KKyAgICBWaXNp
YmxlUG9zaXRpb24gbmV4dExpbmVFbmRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsgfQorICAgIFZpc2libGVQ
b3NpdGlvbiBwcmV2aW91c0xpbmVTdGFydFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOyB9CisgICAgVmlzaWJs
ZVBvc2l0aW9uIG5leHRTZW50ZW5jZUVuZFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOyB9CisgICAgVmlzaWJs
ZVBvc2l0aW9uIHByZXZpb3VzU2VudGVuY2VTdGFydFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3Np
dGlvbiYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOyB9CisgICAg
VmlzaWJsZVBvc2l0aW9uIG5leHRQYXJhZ3JhcGhFbmRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9z
aXRpb24mKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsgfQorICAg
IFZpc2libGVQb3NpdGlvbiBwcmV2aW91c1BhcmFncmFwaFN0YXJ0UG9zaXRpb24oY29uc3QgVmlz
aWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7
IH0KKyAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgodW5zaWduZWQs
IGJvb2wgLypsYXN0SW5kZXhPSyAqLykgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVmlzaWJsZVBv
c2l0aW9uKCk7IH0KKyAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgo
aW50KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsgfQorICAgIGlu
dCBpbmRleEZvclZpc2libGVQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiAwOyB9CisgICAgQVhDb3JlT2JqZWN0KiBhY2Nlc3NpYmlsaXR5T2Jq
ZWN0Rm9yUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gbnVsbHB0cjsgfQorICAgIGludCBsaW5lRm9yUG9zaXRpb24oY29uc3QgVmlzaWJsZVBv
c2l0aW9uJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQorICAgIFBsYWluVGV4dFJhbmdl
IHBsYWluVGV4dFJhbmdlRm9yVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0
aW9uUmFuZ2UmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBQbGFpblRleHRSYW5nZSgpOyB9Cisg
ICAgaW50IGluZGV4KGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIDA7IH0KKyAgICB2b2lkIGxpbmVCcmVha3MoVmVjdG9yPGludD4mKSBjb25zdCBvdmVycmlk
ZSB7IH0KKyAgICBQbGFpblRleHRSYW5nZSBkb0FYUmFuZ2VGb3JMaW5lKHVuc2lnbmVkKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBQbGFpblRleHRSYW5nZSgpOyB9CisgICAgUGxhaW5UZXh0UmFu
Z2UgZG9BWFJhbmdlRm9yUG9zaXRpb24oY29uc3QgSW50UG9pbnQmKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBQbGFpblRleHRSYW5nZSgpOyB9CisgICAgUGxhaW5UZXh0UmFuZ2UgZG9BWFJhbmdl
Rm9ySW5kZXgodW5zaWduZWQpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFBsYWluVGV4dFJhbmdl
KCk7IH0KKyAgICBQbGFpblRleHRSYW5nZSBkb0FYU3R5bGVSYW5nZUZvckluZGV4KHVuc2lnbmVk
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBQbGFpblRleHRSYW5nZSgpOyB9CisgICAgU3RyaW5n
IGRvQVhTdHJpbmdGb3JSYW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIFN0cmluZygpOyB9CisgICAgSW50UmVjdCBkb0FYQm91bmRzRm9yUmFuZ2UoY29u
c3QgUGxhaW5UZXh0UmFuZ2UmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBJbnRSZWN0KCk7IH0K
KyAgICBJbnRSZWN0IGRvQVhCb3VuZHNGb3JSYW5nZVVzaW5nQ2hhcmFjdGVyT2Zmc2V0KGNvbnN0
IFBsYWluVGV4dFJhbmdlJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gSW50UmVjdCgpOyB9Cisg
ICAgdW5zaWduZWQgZG9BWExpbmVGb3JJbmRleCh1bnNpZ25lZCkgb3ZlcnJpZGUgeyByZXR1cm4g
MDsgfQogCisgICAgLy8gVE9ETzogQXR0cmlidXRlIHNldHRlcnMuCisgICAgdm9pZCBzZXRBUklB
R3JhYmJlZChib29sKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIHNldElzRXhwYW5kZWQoYm9vbCkg
b3ZlcnJpZGUgeyB9CisgICAgdm9pZCBzZXRWYWx1ZShmbG9hdCkgb3ZlcnJpZGUgeyB9CisgICAg
dm9pZCBzZXRTZWxlY3RlZChib29sKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIHNldFNlbGVjdGVk
Um93cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBvdmVycmlkZSB7IH0KKyAgICB2b2lk
IHNldEZvY3VzZWQoYm9vbCkgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBzZXRTZWxlY3RlZFRleHQo
Y29uc3QgU3RyaW5nJikgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBzZXRTZWxlY3RlZFRleHRSYW5n
ZShjb25zdCBQbGFpblRleHRSYW5nZSYpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgc2V0VmFsdWUo
Y29uc3QgU3RyaW5nJikgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBzZXRDYXJldEJyb3dzaW5nRW5h
YmxlZChib29sKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIHNldFByZXZlbnRLZXlib2FyZERPTUV2
ZW50RGlzcGF0Y2goYm9vbCkgb3ZlcnJpZGUgeyB9CisKKyAgICAvLyBUT0RPOiBGdW5jdGlvbnMK
KyAgICBTdHJpbmcgdGV4dFVuZGVyRWxlbWVudChBY2Nlc3NpYmlsaXR5VGV4dFVuZGVyRWxlbWVu
dE1vZGUgPSBBY2Nlc3NpYmlsaXR5VGV4dFVuZGVyRWxlbWVudE1vZGUoKSkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KKyAgICBSZWZQdHI8UmFuZ2U+IGdldE1pc3NwZWxsaW5n
UmFuZ2UoUmVmUHRyPFJhbmdlPiBjb25zdCYsIEFjY2Vzc2liaWxpdHlTZWFyY2hEaXJlY3Rpb24p
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2b2lkIGZpbmRNYXRjaGlu
Z09iamVjdHMoQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhKiwgQWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yJikgb3ZlcnJpZGUgeyB9CisgICAgVmVjdG9yPFJlZlB0cjxSYW5nZT4+IGZpbmRU
ZXh0UmFuZ2VzKEFjY2Vzc2liaWxpdHlTZWFyY2hUZXh0Q3JpdGVyaWEgY29uc3QmKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBWZWN0b3I8UmVmUHRyPFJhbmdlPj4oKTsgfQorICAgIFZlY3RvcjxT
dHJpbmc+IHBlcmZvcm1UZXh0T3BlcmF0aW9uKEFjY2Vzc2liaWxpdHlUZXh0T3BlcmF0aW9uIGNv
bnN0Jikgb3ZlcnJpZGUgeyByZXR1cm4gVmVjdG9yPFN0cmluZz4oKTsgfQorICAgIEZsb2F0UmVj
dCBjb252ZXJ0RnJhbWVUb1NwYWNlKGNvbnN0IEZsb2F0UmVjdCYsIEFjY2Vzc2liaWxpdHlDb252
ZXJzaW9uU3BhY2UpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEZsb2F0UmVjdCgpOyB9CisgICAg
dm9pZCBpbmNyZW1lbnQoKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIGRlY3JlbWVudCgpIG92ZXJy
aWRlIHsgfQorICAgIHZvaWQgc2Nyb2xsVG9NYWtlVmlzaWJsZSgpIGNvbnN0IG92ZXJyaWRlIHsg
fQorICAgIHZvaWQgc2Nyb2xsVG9NYWtlVmlzaWJsZVdpdGhTdWJGb2N1cyhjb25zdCBJbnRSZWN0
JikgY29uc3Qgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBzY3JvbGxUb0dsb2JhbFBvaW50KGNvbnN0
IEludFBvaW50JikgY29uc3Qgb3ZlcnJpZGUgeyB9CisgICAgYm9vbCByZXBsYWNlVGV4dEluUmFu
Z2UoY29uc3QgU3RyaW5nJiwgY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSBvdmVycmlkZTsKKyAgICBi
b29sIGluc2VydFRleHQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgdm9pZCBtYWtlUmFu
Z2VWaXNpYmxlKGNvbnN0IFBsYWluVGV4dFJhbmdlJikgb3ZlcnJpZGUgeyB9CisgICAgYm9vbCBw
cmVzcygpIG92ZXJyaWRlOworICAgIGJvb2wgcGVyZm9ybURlZmF1bHRBY3Rpb24oKSBvdmVycmlk
ZTsKKworICAgIC8vIEZ1bmN0aW9ucyB0aGF0IHNob3VsZCBuZXZlciBiZSBjYWxsZWQgb24gYW4g
aXNvbGF0ZWQgdHJlZSBvYmplY3QuIEFTU0VSVCB0aGF0IHRoZXNlIGFyZSBub3QgcmVhY2hlZDsK
KyAgICBib29sIGlzQWNjZXNzaWJpbGl0eU9iamVjdCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJv
b2wgaXNBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wg
aXNBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBp
c0FjY2Vzc2liaWxpdHlTY3JvbGxiYXIoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzQWNj
ZXNzaWJpbGl0eVNjcm9sbFZpZXcoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzQWNjZXNz
aWJpbGl0eVNWR1Jvb3QoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzQWNjZXNzaWJpbGl0
eVNWR0VsZW1lbnQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGNvbnRhaW5zVGV4dChTdHJp
bmcqKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzQXR0YWNobWVudEVsZW1lbnQoKSBjb25z
dCBvdmVycmlkZTsKKyAgICBib29sIGlzTmF0aXZlSW1hZ2UoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBib29sIGlzSW1hZ2VCdXR0b24oKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzQ29udGFp
bmVkQnlQYXNzd29yZEZpZWxkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQVhDb3JlT2JqZWN0KiBw
YXNzd29yZEZpZWxkT3JDb250YWluaW5nUGFzc3dvcmRGaWVsZCgpIG92ZXJyaWRlOworICAgIGJv
b2wgaXNOYXRpdmVUZXh0Q29udHJvbCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNOYXRp
dmVMaXN0Qm94KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0xpc3RCb3hPcHRpb24oKSBj
b25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzU2xpZGVyVGh1bWIoKSBjb25zdCBvdmVycmlkZTsK
KyAgICBib29sIGlzSW5wdXRTbGlkZXIoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzTGFi
ZWwoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzRGF0YVRhYmxlKCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgYm9vbCBpc0ltYWdlTWFwTGluaygpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wg
aXNOYXRpdmVTcGluQnV0dG9uKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1NwaW5CdXR0
b25QYXJ0KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc01vY2tPYmplY3QoKSBjb25zdCBv
dmVycmlkZTsKKyAgICBib29sIGlzTWVkaWFDb250cm9sTGFiZWwoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzTWVkaWFDb250cm9s
TGFiZWwpOyB9CisgICAgYm9vbCBpc01lZGlhT2JqZWN0KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
Ym9vbCBpc0FSSUFUZXh0Q29udHJvbCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNOb25O
YXRpdmVUZXh0Q29udHJvbCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNCbG9ja3F1b3Rl
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0xhbmRtYXJrKCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgYm9vbCBpc0ZpZ3VyZUVsZW1lbnQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlz
S2V5Ym9hcmRGb2N1c2FibGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzSG92ZXJlZCgp
IGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNJbmRldGVybWluYXRlKCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgYm9vbCBpc0xvYWRlZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNPblNj
cmVlbigpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNPZmZTY3JlZW4oKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBib29sIGlzUHJlc3NlZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNV
bnZpc2l0ZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzTGlua2VkKCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgYm9vbCBpc1Zpc2libGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlz
Q29sbGFwc2VkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1NlbGVjdGVkT3B0aW9uQWN0
aXZlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBoYXNCb2xkRm9udCgpIGNvbnN0IG92ZXJy
aWRlOworICAgIGJvb2wgaGFzSXRhbGljRm9udCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wg
aGFzTWlzc3BlbGxpbmcoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGhhc1BsYWluVGV4dCgp
IGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaGFzU2FtZUZvbnQoUmVuZGVyT2JqZWN0KikgY29u
c3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBoYXNTYW1lRm9udENvbG9yKFJlbmRlck9iamVjdCopIGNv
bnN0IG92ZXJyaWRlOworICAgIGJvb2wgaGFzU2FtZVN0eWxlKFJlbmRlck9iamVjdCopIGNvbnN0
IG92ZXJyaWRlOworICAgIGJvb2wgaXNTdGF0aWNUZXh0KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
Ym9vbCBoYXNVbmRlcmxpbmUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGhhc0hpZ2hsaWdo
dGluZygpIGNvbnN0IG92ZXJyaWRlOworICAgIEVsZW1lbnQqIGVsZW1lbnQoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBOb2RlKiBub2RlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVuZGVyT2JqZWN0
KiByZW5kZXJlcigpIGNvbnN0IG92ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNs
dXNpb24gZGVmYXVsdE9iamVjdEluY2x1c2lvbigpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wg
YWNjZXNzaWJpbGl0eUlzSWdub3JlZEJ5RGVmYXVsdCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGZs
b2F0IHN0ZXBWYWx1ZUZvclJhbmdlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQVhDb3JlT2JqZWN0
KiBzZWxlY3RlZExpc3RJdGVtKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBhcmlhQWN0aXZlRGVzY2Vu
ZGFudFJlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29u
c3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBhcmlhQ29udHJvbHNSZWZlcmVuY2luZ0VsZW1lbnRzKEFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgYXJp
YURlc2NyaWJlZEJ5RWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qg
b3ZlcnJpZGU7CisgICAgdm9pZCBhcmlhRGVzY3JpYmVkQnlSZWZlcmVuY2luZ0VsZW1lbnRzKEFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgYXJp
YURldGFpbHNSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYp
IGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgYXJpYUVycm9yTWVzc2FnZVJlZmVyZW5jaW5nRWxl
bWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7CisgICAg
dm9pZCBhcmlhRmxvd1RvUmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5W
ZWN0b3ImKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGFyaWFMYWJlbGxlZEJ5RWxlbWVudHMo
QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBh
cmlhTGFiZWxsZWRCeVJlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBhcmlhT3duc1JlZmVyZW5jaW5nRWxlbWVu
dHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9v
bCBoYXNEYXRhbGlzdCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgc3VwcG9ydHNIYXNQb3B1
cCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgc3VwcG9ydHNQcmVzc2VkKCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgYm9vbCBzdXBwb3J0c0NoZWNrZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBi
b29sIGlnbm9yZWRGcm9tTW9kYWxQcmVzZW5jZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wg
aXNNb2RhbERlc2NlbmRhbnQoTm9kZSopIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNNb2Rh
bE5vZGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBBWENvcmVPYmplY3QqIGVsZW1lbnRBY2Nlc3Np
YmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOworICAgIEFYQ29y
ZU9iamVjdCogZmlyc3RDaGlsZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIEFYQ29yZU9iamVjdCog
bGFzdENoaWxkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQVhDb3JlT2JqZWN0KiBwcmV2aW91c1Np
YmxpbmcoKSBjb25zdCBvdmVycmlkZTsKKyAgICBBWENvcmVPYmplY3QqIG5leHRTaWJsaW5nKCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgQVhDb3JlT2JqZWN0KiBuZXh0U2libGluZ1VuaWdub3JlZChp
bnQgbGltaXQpIGNvbnN0IG92ZXJyaWRlOworICAgIEFYQ29yZU9iamVjdCogcHJldmlvdXNTaWJs
aW5nVW5pZ25vcmVkKGludCBsaW1pdCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQVhDb3JlT2JqZWN0
KiBwYXJlbnRPYmplY3RJZkV4aXN0cygpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNEZXNj
ZW5kYW50T2ZCYXJyZW5QYXJlbnQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzRGVzY2Vu
ZGFudE9mUm9sZShBY2Nlc3NpYmlsaXR5Um9sZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQVhDb3Jl
T2JqZWN0KiBvYnNlcnZhYmxlT2JqZWN0KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQVhDb3JlT2Jq
ZWN0KiBjb3JyZXNwb25kaW5nTGFiZWxGb3JDb250cm9sRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRl
OworICAgIEFYQ29yZU9iamVjdCogY29ycmVzcG9uZGluZ0NvbnRyb2xGb3JMYWJlbEVsZW1lbnQo
KSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzUHJlc2VudGF0aW9uYWxDaGlsZE9mQXJpYVJv
bGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGFyaWFSb2xlSGFzUHJlc2VudGF0aW9uYWxD
aGlsZHJlbigpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaW5oZXJpdHNQcmVzZW50YXRpb25h
bFJvbGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHNldEFjY2Vzc2libGVOYW1lKGNvbnN0
IEF0b21TdHJpbmcmKSBvdmVycmlkZTsKKyAgICBib29sIGhhc0F0dHJpYnV0ZXNSZXF1aXJlZEZv
ckluY2x1c2lvbigpIGNvbnN0IG92ZXJyaWRlOworICAgIFN0cmluZyBhY2Nlc3NpYmlsaXR5RGVz
Y3JpcHRpb24oKSBjb25zdCBvdmVycmlkZTsKKyAgICBTdHJpbmcgdGl0bGUoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBTdHJpbmcgaGVscFRleHQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlz
QVJJQVN0YXRpY1RleHQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBTdHJpbmcgc3RyaW5nVmFsdWUo
KSBjb25zdCBvdmVycmlkZTsKKyAgICBTdHJpbmcgdGV4dCgpIGNvbnN0IG92ZXJyaWRlOworICAg
IFN0cmluZyBhcmlhTGFiZWxlZEJ5QXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgU3Ry
aW5nIGFyaWFEZXNjcmliZWRCeUF0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wg
YWNjZXNzaWJsZU5hbWVEZXJpdmVzRnJvbUNvbnRlbnQoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2
b2lkIGVsZW1lbnRzRnJvbUF0dHJpYnV0ZShWZWN0b3I8RWxlbWVudCo+JiwgY29uc3QgUXVhbGlm
aWVkTmFtZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIEFYT2JqZWN0Q2FjaGUqIGF4T2JqZWN0Q2Fj
aGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBFbGVtZW50KiBhbmNob3JFbGVtZW50KCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgRWxlbWVudCogYWN0aW9uRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIFBhdGggZWxlbWVudFBhdGgoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHN1cHBvcnRz
UGF0aCgpIGNvbnN0IG92ZXJyaWRlOworICAgIFRleHRJdGVyYXRvckJlaGF2aW9yIHRleHRJdGVy
YXRvckJlaGF2aW9yRm9yVGV4dFJhbmdlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgV2lkZ2V0KiB3
aWRnZXQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBXaWRnZXQqIHdpZGdldEZvckF0dGFjaG1lbnRW
aWV3KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUGFnZSogcGFnZSgpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0IG92ZXJyaWRlOworICAgIEZyYW1lVmlldyog
ZG9jdW1lbnRGcmFtZVZpZXcoKSBjb25zdCBvdmVycmlkZTsKKyAgICBGcmFtZSogZnJhbWUoKSBj
b25zdCBvdmVycmlkZTsKKyAgICBGcmFtZSogbWFpbkZyYW1lKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgRG9jdW1lbnQqIHRvcERvY3VtZW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgU2Nyb2xsVmll
dyogc2Nyb2xsVmlld0FuY2VzdG9yKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBjaGlsZHJl
bkNoYW5nZWQoKSBvdmVycmlkZTsKKyAgICB2b2lkIHRleHRDaGFuZ2VkKCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCB1cGRhdGVBY2Nlc3NpYmlsaXR5Um9sZSgpIG92ZXJyaWRlOworICAgIHZvaWQgYWRk
Q2hpbGRyZW4oKSBvdmVycmlkZTsKKyAgICB2b2lkIGFkZENoaWxkKEFYQ29yZU9iamVjdCopIG92
ZXJyaWRlOworICAgIHZvaWQgaW5zZXJ0Q2hpbGQoQVhDb3JlT2JqZWN0KiwgdW5zaWduZWQpIG92
ZXJyaWRlOworICAgIGJvb2wgc2hvdWxkSWdub3JlQXR0cmlidXRlUm9sZSgpIGNvbnN0IG92ZXJy
aWRlOworICAgIGJvb2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9v
bCBoYXNDaGlsZHJlbigpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgc2V0TmVlZHNUb1VwZGF0
ZUNoaWxkcmVuKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXROZWVkc1RvVXBkYXRlU3VidHJlZSgp
IG92ZXJyaWRlOworICAgIHZvaWQgY2xlYXJDaGlsZHJlbigpIG92ZXJyaWRlOworICAgIGJvb2wg
bmVlZHNUb1VwZGF0ZUNoaWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBkZXRhY2hG
cm9tUGFyZW50KCkgb3ZlcnJpZGU7CisgICAgYm9vbCBzaG91bGRGb2N1c0FjdGl2ZURlc2NlbmRh
bnQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBBWENvcmVPYmplY3QqIGFjdGl2ZURlc2NlbmRhbnQo
KSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGhhbmRsZUFjdGl2ZURlc2NlbmRhbnRDaGFuZ2Vk
KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBoYW5kbGVBcmlhRXhwYW5kZWRDaGFuZ2VkKCkgb3ZlcnJp
ZGU7CisgICAgYm9vbCBpc0Rlc2NlbmRhbnRPZk9iamVjdChjb25zdCBBWENvcmVPYmplY3QqKSBj
b25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzQW5jZXN0b3JPZk9iamVjdChjb25zdCBBWENvcmVP
YmplY3QqKSBjb25zdCBvdmVycmlkZTsKKyAgICBBWENvcmVPYmplY3QqIGZpcnN0QW5vbnltb3Vz
QmxvY2tDaGlsZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaGFzQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmKSBjb25zdCBvdmVycmlkZTsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiBn
ZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJv
b2wgaGFzVGFnTmFtZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Qgb3ZlcnJpZGU7CisgICAg
U3RyaW5nIHN0cmluZ1ZhbHVlRm9yTVNBQSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFN0cmluZyBz
dHJpbmdSb2xlRm9yTVNBQSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFN0cmluZyBuYW1lRm9yTVNB
QSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFN0cmluZyBkZXNjcmlwdGlvbkZvck1TQUEoKSBjb25z
dCBvdmVycmlkZTsKKyAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWVGb3JNU0FBKCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgU3RyaW5nIHBhc3N3b3JkRmllbGRWYWx1ZSgpIGNvbnN0IG92ZXJy
aWRlOworICAgIEFYQ29yZU9iamVjdCogbGl2ZVJlZ2lvbkFuY2VzdG9yKGJvb2wgZXhjbHVkZUlm
T2ZmID0gdHJ1ZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBoYXNDb250ZW50RWRpdGFibGVB
dHRyaWJ1dGVTZXQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHN1cHBvcnRzUmVhZE9ubHko
KSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHN1cHBvcnRzQXV0b0NvbXBsZXRlKCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgYm9vbCBzdXBwb3J0c0FSSUFBdHRyaWJ1dGVzKCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgYm9vbCBzY3JvbGxCeVBhZ2UoU2Nyb2xsQnlQYWdlRGlyZWN0aW9uKSBjb25zdCBv
dmVycmlkZTsKKyAgICBJbnRQb2ludCBzY3JvbGxQb3NpdGlvbigpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIEludFNpemUgc2Nyb2xsQ29udGVudHNTaXplKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgSW50
UmVjdCBzY3JvbGxWaXNpYmxlQ29udGVudFJlY3QoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lk
IHNjcm9sbFRvTWFrZVZpc2libGUoY29uc3QgU2Nyb2xsUmVjdFRvVmlzaWJsZU9wdGlvbnMmKSBj
b25zdCBvdmVycmlkZTsKKyAgICBib29sIGxhc3RLbm93bklzSWdub3JlZFZhbHVlKCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBzZXRMYXN0S25vd25Jc0lnbm9yZWRWYWx1ZShib29sKSBvdmVycmlkZTsK
KyAgICB2b2lkIG5vdGlmeUlmSWdub3JlZFZhbHVlQ2hhbmdlZCgpIG92ZXJyaWRlOworICAgIGJv
b2wgaXNNYXRoU2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlNYXRoU2NyaXB0T2JqZWN0VHlwZSkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc01hdGhNdWx0aXNjcmlwdE9iamVjdChBY2Nlc3Np
YmlsaXR5TWF0aE11bHRpc2NyaXB0T2JqZWN0VHlwZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9v
bCBpc0FYSGlkZGVuKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0RPTUhpZGRlbigpIGNv
bnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNIaWRkZW4oKSBjb25zdCBvdmVycmlkZTsKKyAgICB2
b2lkIG92ZXJyaWRlQXR0YWNobWVudFBhcmVudChBWENvcmVPYmplY3QqIHBhcmVudCkgb3ZlcnJp
ZGU7CisgICAgYm9vbCBhY2Nlc3NpYmlsaXR5SWdub3JlQXR0YWNobWVudCgpIGNvbnN0IG92ZXJy
aWRlOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gYWNjZXNzaWJpbGl0eVBsYXRm
b3JtSW5jbHVkZXNPYmplY3QoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGhhc0FwcGxlUERG
QW5ub3RhdGlvbkF0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGNvbnN0IEFjY2Vzc2li
aWxpdHlTY3JvbGxWaWV3KiBhbmNlc3RvckFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KGJvb2wgaW5j
bHVkZVNlbGYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgc2V0SXNJZ25vcmVkRnJvbVBhcmVu
dERhdGEoQWNjZXNzaWJpbGl0eUlzSWdub3JlZEZyb21QYXJlbnREYXRhJikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBjbGVhcklzSWdub3JlZEZyb21QYXJlbnREYXRhKCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBzZXRJc0lnbm9yZWRGcm9tUGFyZW50RGF0YUZvckNoaWxkKEFYQ29yZU9iamVjdCopIG92ZXJy
aWRlOworCisgICAgdm9pZCB1cGRhdGVCYWNraW5nU3RvcmUoKSBvdmVycmlkZTsKKyAgICB2b2lk
IHNldFdyYXBwZXIoQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIqIHdyYXBwZXIpIG92ZXJyaWRl
IHsgbV93cmFwcGVyID0gd3JhcHBlcjsgfQorICAgIAogICAgIEFYSUQgbV9wYXJlbnQ7CiAgICAg
QVhJRCBtX2lkOwogICAgIGJvb2wgbV9pbml0aWFsaXplZCB7IGZhbHNlIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCmluZGV4IDgzYjg1NDMwYWUwMzA0ZjcxOTM1ZmE4
MTljYjFiMjNjOWI4YjZiOWQuLjY2OTMyZDQ0OGNhY2UwZDQ3MTMwYTQ4NzBkZThlOTk4ZDNjNmUy
NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCkBAIC01NTUsMTMg
KzU1NSwzOCBAQCBleHRlcm4gIkMiIEFYVUlFbGVtZW50UmVmIE5TQWNjZXNzaWJpbGl0eUNyZWF0
ZUFYVUlFbGVtZW50UmVmKGlkIGVsZW1lbnQpOwogICAgIFtzdXBlciBkZXRhY2hdOwogfQogCit0
ZW1wbGF0ZTx0eXBlbmFtZSBVPiBpbmxpbmUgdm9pZCBwZXJmb3JtQWNjZXNzaWJpbGl0eUZ1bmN0
aW9uT25NYWluVGhyZWFkKFUmJiBsYW1iZGEpCit7CisgICAgaWYgKGlzTWFpblRocmVhZCgpKQor
ICAgICAgICByZXR1cm4gbGFtYmRhKCk7CisKKyAgICBjYWxsT25NYWluVGhyZWFkKFsmbGFtYmRh
XSB7CisgICAgICAgIGxhbWJkYSgpOworICAgIH0pOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCB0eXBlbmFtZSBVPiBpbmxpbmUgVCByZXRyaWV2ZUFjY2Vzc2liaWxpdHlWYWx1ZUZyb21NYWlu
VGhyZWFkKFUmJiBsYW1iZGEpCit7CisgICAgaWYgKGlzTWFpblRocmVhZCgpKQorICAgICAgICBy
ZXR1cm4gbGFtYmRhKCk7CisgICAgCisgICAgVCB2YWx1ZTsKKyAgICBjYWxsT25NYWluVGhyZWFk
QW5kV2FpdChbJnZhbHVlLCAmbGFtYmRhXSB7CisgICAgICAgIHZhbHVlID0gbGFtYmRhKCk7Cisg
ICAgfSk7CisgICAgcmV0dXJuIHZhbHVlOworfQorCiAtIChpZClhdHRhY2htZW50Vmlldwogewog
ICAgIEFTU0VSVChtX29iamVjdC0+aXNBdHRhY2htZW50KCkpOwotICAgIFdpZGdldCogd2lkZ2V0
ID0gbV9vYmplY3QtPndpZGdldEZvckF0dGFjaG1lbnRWaWV3KCk7Ci0gICAgaWYgKCF3aWRnZXQp
Ci0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIE5TQWNjZXNzaWJpbGl0eVVuaWdub3Jl
ZERlc2NlbmRhbnQod2lkZ2V0LT5wbGF0Zm9ybVdpZGdldCgpKTsKKworICAgIHJldHVybiByZXRy
aWV2ZUFjY2Vzc2liaWxpdHlWYWx1ZUZyb21NYWluVGhyZWFkPGlkPihbcHJvdGVjdGVkU2VsZiA9
IFJldGFpblB0cjxXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcj4oc2VsZildICgpIC0+IGlk
IHsKKyAgICAgICAgYXV0byogd2lkZ2V0ID0gcHJvdGVjdGVkU2VsZi0+bV9vYmplY3QtPndpZGdl
dEZvckF0dGFjaG1lbnRWaWV3KCk7CisgICAgICAgIGlmICghd2lkZ2V0KQorICAgICAgICAgICAg
cmV0dXJuIG5pbDsKKyAgICAgICAgcmV0dXJuIE5TQWNjZXNzaWJpbGl0eVVuaWdub3JlZERlc2Nl
bmRhbnQod2lkZ2V0LT5wbGF0Zm9ybVdpZGdldCgpKTsKKyAgICB9KTsKIH0KIAogI3ByYWdtYSBt
YXJrIFN5c3RlbUludGVyZmFjZSB3cmFwcGVycwpAQCAtNjAzLDcgKzYyOCw5IEBAIHN0YXRpYyBp
ZCBBWFRleHRNYXJrZXJSYW5nZUVuZChpZCByYW5nZSkKIAogLSAoSW50UmVjdClzY3JlZW5Ub0Nv
bnRlbnRzOihjb25zdCBJbnRSZWN0JilyZWN0CiB7Ci0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0g
bV9vYmplY3QtPmRvY3VtZW50KCk7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAg
IERvY3VtZW50KiBkb2N1bWVudCA9IF9heEJhY2tpbmdPYmplY3QtPmRvY3VtZW50KCk7CiAgICAg
aWYgKCFkb2N1bWVudCkKICAgICAgICAgcmV0dXJuIEludFJlY3QoKTsKICAgICAKQEAgLTE4OTMs
MjggKzE5MjAsMjggQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAKIC0g
KE5TQXJyYXkqKXJlbmRlcldpZGdldENoaWxkcmVuCiB7Ci0gICAgV2lkZ2V0KiB3aWRnZXQgPSBt
X29iamVjdC0+d2lkZ2V0KCk7Ci0gICAgaWYgKCF3aWRnZXQpCi0gICAgICAgIHJldHVybiBuaWw7
Ci0gICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICByZXR1cm4gWyh3
aWRnZXQtPnBsYXRmb3JtV2lkZ2V0KCkpIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTogTlNB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5BdHRyaWJ1dGVdOwotICAgIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0VORAorICAgIHJldHVybiByZXRyaWV2ZUFjY2Vzc2liaWxpdHlWYWx1ZUZyb21N
YWluVGhyZWFkPE5TQXJyYXkgKj4oW3Byb3RlY3RlZFNlbGYgPSBSZXRhaW5QdHI8V2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXI+KHNlbGYpXSAoKSAtPiBOU0FycmF5ICogeworICAgICAgICBX
aWRnZXQqIHdpZGdldCA9IHByb3RlY3RlZFNlbGYtPm1fb2JqZWN0LT53aWRnZXQoKTsKKyAgICAg
ICAgaWYgKCF3aWRnZXQpCisgICAgICAgICAgICByZXR1cm4gbmlsOworICAgICAgICBBTExPV19E
RVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgorICAgICAgICByZXR1cm4gWyh3aWRnZXQtPnBs
YXRmb3JtV2lkZ2V0KCkpIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxp
dHlDaGlsZHJlbkF0dHJpYnV0ZV07CisgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0VORAorICAgIH0pOwogfQogCiAtIChpZClyZW1vdGVBY2Nlc3NpYmlsaXR5UGFyZW50T2Jq
ZWN0CiB7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBpZiAoIW1fb2JqZWN0KQog
ICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1fb2Jq
ZWN0LT5kb2N1bWVudCgpOwotICAgIGlmICghZG9jdW1lbnQpCi0gICAgICAgIHJldHVybiBuaWw7
Ci0gICAgCi0gICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQtPmZyYW1lKCk7Ci0gICAgaWYgKCFm
cmFtZSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICByZXR1cm4gZnJhbWUtPmxvYWRl
cigpLmNsaWVudCgpLmFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKTsKKworICAgIGlmIChhdXRv
KiBkb2N1bWVudCA9IF9heEJhY2tpbmdPYmplY3QtPmRvY3VtZW50KCkpIHsKKyAgICAgICAgaWYg
KGF1dG8qIGZyYW1lID0gZG9jdW1lbnQtPmZyYW1lKCkpCisgICAgICAgICAgICByZXR1cm4gZnJh
bWUtPmxvYWRlcigpLmNsaWVudCgpLmFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKTsKKyAgICB9
CisKKyAgICByZXR1cm4gbmlsOwogfQogCiBzdGF0aWMgdm9pZCBjb252ZXJ0VG9WZWN0b3IoTlNB
cnJheSogYXJyYXksIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciYgdmVjdG9yKQpAQCAtMTk0NiwxNyArMTk3MywxOSBAQCBzdGF0aWMgTlNNdXRhYmxlQXJy
YXkgKmNvbnZlcnRTdHJpbmdzVG9OU0FycmF5KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB2ZWN0b3Ip
CiAKIC0gKGlkKWFzc29jaWF0ZWRQbHVnaW5QYXJlbnQKIHsKLSAgICBpZiAoIW1fb2JqZWN0IHx8
ICFtX29iamVjdC0+aGFzQXR0cmlidXRlKHhfYXBwbGVfcGRmX2Fubm90YXRpb25BdHRyKSkKLSAg
ICAgICAgcmV0dXJuIG5pbDsKKyAgICByZXR1cm4gcmV0cmlldmVBY2Nlc3NpYmlsaXR5VmFsdWVG
cm9tTWFpblRocmVhZDxpZD4oW3Byb3RlY3RlZFNlbGYgPSBSZXRhaW5QdHI8V2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXI+KHNlbGYpXSAoKSAtPiBpZCB7CisgICAgICAgIGlmICghcHJvdGVj
dGVkU2VsZi0+bV9vYmplY3QgfHwgIXByb3RlY3RlZFNlbGYtPm1fb2JqZWN0LT5oYXNBcHBsZVBE
RkFubm90YXRpb25BdHRyaWJ1dGUoKSkKKyAgICAgICAgICAgIHJldHVybiBuaWw7CiAgICAgCi0g
ICAgaWYgKCFtX29iamVjdC0+ZG9jdW1lbnQoKS0+aXNQbHVnaW5Eb2N1bWVudCgpKQotICAgICAg
ICByZXR1cm4gbmlsOworICAgICAgICBpZiAoIXByb3RlY3RlZFNlbGYtPm1fb2JqZWN0LT5kb2N1
bWVudCgpLT5pc1BsdWdpbkRvY3VtZW50KCkpCisgICAgICAgICAgICByZXR1cm4gbmlsOwogICAg
ICAgICAKLSAgICBXaWRnZXQqIHBsdWdpbldpZGdldCA9IHN0YXRpY19jYXN0PFBsdWdpbkRvY3Vt
ZW50Kj4obV9vYmplY3QtPmRvY3VtZW50KCkpLT5wbHVnaW5XaWRnZXQoKTsKLSAgICBpZiAoIXBs
dWdpbldpZGdldCB8fCAhcGx1Z2luV2lkZ2V0LT5pc1BsdWdpblZpZXdCYXNlKCkpCi0gICAgICAg
IHJldHVybiBuaWw7Ci0KLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UGx1Z2luVmlld0Jhc2UqPihw
bHVnaW5XaWRnZXQpLT5hY2Nlc3NpYmlsaXR5QXNzb2NpYXRlZFBsdWdpblBhcmVudEZvckVsZW1l
bnQobV9vYmplY3QtPmVsZW1lbnQoKSk7CisgICAgICAgIFdpZGdldCogcGx1Z2luV2lkZ2V0ID0g
c3RhdGljX2Nhc3Q8UGx1Z2luRG9jdW1lbnQqPihwcm90ZWN0ZWRTZWxmLT5tX29iamVjdC0+ZG9j
dW1lbnQoKSktPnBsdWdpbldpZGdldCgpOworICAgICAgICBpZiAoIXBsdWdpbldpZGdldCB8fCAh
cGx1Z2luV2lkZ2V0LT5pc1BsdWdpblZpZXdCYXNlKCkpCisgICAgICAgICAgICByZXR1cm4gbmls
OworICAgICAgICAKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFBsdWdpblZpZXdCYXNlKj4o
cGx1Z2luV2lkZ2V0KS0+YWNjZXNzaWJpbGl0eUFzc29jaWF0ZWRQbHVnaW5QYXJlbnRGb3JFbGVt
ZW50KHByb3RlY3RlZFNlbGYtPm1fb2JqZWN0LT5lbGVtZW50KCkpOworICAgIH0pOwogfQogCiBz
dGF0aWMgdm9pZCBXZWJUcmFuc2Zvcm1DR1BhdGhUb05TQmV6aWVyUGF0aCh2b2lkKiBpbmZvLCBj
b25zdCBDR1BhdGhFbGVtZW50ICplbGVtZW50KQpAQCAtMjIyMCwyMCArMjI0OSwyMCBAQCBBTExP
V19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgICAgICByZXR1cm4gQCJBWFN1YnNj
cmlwdFN0eWxlR3JvdXAiOwogCiAgICAgaWYgKG1fb2JqZWN0LT5pc1N0eWxlRm9ybWF0R3JvdXAo
KSkgewotICAgICAgICBpZiAoTm9kZSogbm9kZSA9IG1fb2JqZWN0LT5ub2RlKCkpIHsKLSAgICAg
ICAgICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKGtiZFRhZykpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIEAiQVhLZXlib2FyZElucHV0U3R5bGVHcm91cCI7Ci0gICAgICAgICAgICBpZiAobm9kZS0+
aGFzVGFnTmFtZShjb2RlVGFnKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gQCJBWENvZGVTdHls
ZUdyb3VwIjsKLSAgICAgICAgICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKHByZVRhZykpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIEAiQVhQcmVmb3JtYXR0ZWRTdHlsZUdyb3VwIjsKLSAgICAgICAg
ICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKHNhbXBUYWcpKQotICAgICAgICAgICAgICAgIHJldHVy
biBAIkFYU2FtcGxlU3R5bGVHcm91cCI7Ci0gICAgICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFt
ZSh2YXJUYWcpKQotICAgICAgICAgICAgICAgIHJldHVybiBAIkFYVmFyaWFibGVTdHlsZUdyb3Vw
IjsKLSAgICAgICAgICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKGNpdGVUYWcpKQotICAgICAgICAg
ICAgICAgIHJldHVybiBAIkFYQ2l0ZVN0eWxlR3JvdXAiOwotICAgICAgICB9CisgICAgICAgIGF1
dG8gdGFnTmFtZSA9IG1fb2JqZWN0LT50YWdOYW1lKCk7CisgICAgICAgIGlmICh0YWdOYW1lID09
IGtiZFRhZykKKyAgICAgICAgICAgIHJldHVybiBAIkFYS2V5Ym9hcmRJbnB1dFN0eWxlR3JvdXAi
OworICAgICAgICBpZiAodGFnTmFtZSA9PSBjb2RlVGFnKQorICAgICAgICAgICAgcmV0dXJuIEAi
QVhDb2RlU3R5bGVHcm91cCI7CisgICAgICAgIGlmICh0YWdOYW1lID09IHByZVRhZykKKyAgICAg
ICAgICAgIHJldHVybiBAIkFYUHJlZm9ybWF0dGVkU3R5bGVHcm91cCI7CisgICAgICAgIGlmICh0
YWdOYW1lID09IHNhbXBUYWcpCisgICAgICAgICAgICByZXR1cm4gQCJBWFNhbXBsZVN0eWxlR3Jv
dXAiOworICAgICAgICBpZiAodGFnTmFtZSA9PSB2YXJUYWcpCisgICAgICAgICAgICByZXR1cm4g
QCJBWFZhcmlhYmxlU3R5bGVHcm91cCI7CisgICAgICAgIGlmICh0YWdOYW1lID09IGNpdGVUYWcp
CisgICAgICAgICAgICByZXR1cm4gQCJBWENpdGVTdHlsZUdyb3VwIjsKKyAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgfQogICAgIAogICAgIC8vIFJ1Ynkgc3Vicm9sZXMKQEAgLTIy
OTcsMjIgKzIzMjYsMjQgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKIC0g
KGlkKXNjcm9sbFZpZXdQYXJlbnQKIHsKLSAgICBpZiAoIWlzPEFjY2Vzc2liaWxpdHlTY3JvbGxW
aWV3PihtX29iamVjdCkpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgLy8gSWYgdGhp
cyBzY3JvbGwgdmlldyBwcm92aWRlcyBpdCdzIHBhcmVudCBvYmplY3QgKGJlY2F1c2UgaXQncyBh
IHN1Yi1mcmFtZSksIHRoZW4KLSAgICAvLyB3ZSBzaG91bGQgbm90IGZpbmQgdGhlIHJlbW90ZUFj
Y2Vzc2liaWxpdHlQYXJlbnQuCi0gICAgaWYgKG1fb2JqZWN0LT5wYXJlbnRPYmplY3QoKSkKLSAg
ICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBTY3JvbGxWaWV3KiBzY3JvbGwgPSBkb3duY2Fz
dDxBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldz4oKm1fb2JqZWN0KS5zY3JvbGxWaWV3KCk7Ci0gICAg
aWYgKCFzY3JvbGwpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgaWYgKHNjcm9sbC0+
cGxhdGZvcm1XaWRnZXQoKSkKLSAgICAgICAgcmV0dXJuIE5TQWNjZXNzaWJpbGl0eVVuaWdub3Jl
ZEFuY2VzdG9yKHNjcm9sbC0+cGxhdGZvcm1XaWRnZXQoKSk7Ci0gICAgCi0gICAgcmV0dXJuIFtz
ZWxmIHJlbW90ZUFjY2Vzc2liaWxpdHlQYXJlbnRPYmplY3RdOworICAgIHJldHVybiByZXRyaWV2
ZUFjY2Vzc2liaWxpdHlWYWx1ZUZyb21NYWluVGhyZWFkPGlkPihbcHJvdGVjdGVkU2VsZiA9IFJl
dGFpblB0cjxXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcj4oc2VsZildICgpIC0+IGlkIHsK
KyAgICAgICAgaWYgKCFpczxBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldz4ocHJvdGVjdGVkU2VsZi0+
bV9vYmplY3QpKQorICAgICAgICAgICAgcmV0dXJuIG5pbDsKKworICAgICAgICAvLyBJZiB0aGlz
IHNjcm9sbCB2aWV3IHByb3ZpZGVzIGl0J3MgcGFyZW50IG9iamVjdCAoYmVjYXVzZSBpdCdzIGEg
c3ViLWZyYW1lKSwgdGhlbgorICAgICAgICAvLyB3ZSBzaG91bGQgbm90IGZpbmQgdGhlIHJlbW90
ZUFjY2Vzc2liaWxpdHlQYXJlbnQuCisgICAgICAgIGlmIChwcm90ZWN0ZWRTZWxmLT5tX29iamVj
dC0+cGFyZW50T2JqZWN0KCkpCisgICAgICAgICAgICByZXR1cm4gbmlsOworCisgICAgICAgIFNj
cm9sbFZpZXcqIHNjcm9sbCA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3PigqcHJv
dGVjdGVkU2VsZi0+bV9vYmplY3QpLnNjcm9sbFZpZXcoKTsKKyAgICAgICAgaWYgKCFzY3JvbGwp
CisgICAgICAgICAgICByZXR1cm4gbmlsOworCisgICAgICAgIGlmIChzY3JvbGwtPnBsYXRmb3Jt
V2lkZ2V0KCkpCisgICAgICAgICAgICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5VW5pZ25vcmVkQW5j
ZXN0b3Ioc2Nyb2xsLT5wbGF0Zm9ybVdpZGdldCgpKTsKKworICAgICAgICByZXR1cm4gW3Byb3Rl
Y3RlZFNlbGYgcmVtb3RlQWNjZXNzaWJpbGl0eVBhcmVudE9iamVjdF07CisgICAgfSk7CiB9CiAK
IC0gKE5TU3RyaW5nICopdmFsdWVEZXNjcmlwdGlvbkZvck1ldGVyCkBAIC0yMzM4LDYgKzIzNjks
MjMgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgcmV0dXJuIHZhbHVl
RGVzY3JpcHRpb247CiB9CiAKKy0gKGlkKXdpbmRvd0VsZW1lbnQ6KE5TU3RyaW5nKilhdHRyaWJ1
dGVOYW1lCit7CisgICAgcmV0dXJuIHJldHJpZXZlQWNjZXNzaWJpbGl0eVZhbHVlRnJvbU1haW5U
aHJlYWQ8aWQ+KFthdHRyaWJ1dGVOYW1lLCBwcm90ZWN0ZWRTZWxmID0gUmV0YWluUHRyPFdlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyPihzZWxmKV0gKCkgLT4gaWQgeworICAgICAgICBpZCBy
ZW1vdGVQYXJlbnQgPSBbcHJvdGVjdGVkU2VsZiByZW1vdGVBY2Nlc3NpYmlsaXR5UGFyZW50T2Jq
ZWN0XTsKKyAgICAgICAgaWYgKHJlbW90ZVBhcmVudCkgeworICAgICAgICAgICAgQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KKyAgICAgICAgICAgIHJldHVybiBbcmVtb3RlUGFy
ZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTphdHRyaWJ1dGVOYW1lXTsKKyAgICAgICAg
ICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAorICAgICAgICB9CisKKyAgICAg
ICAgaWYgKGF1dG8qIGZ2ID0gcHJvdGVjdGVkU2VsZi0+bV9vYmplY3QtPmRvY3VtZW50RnJhbWVW
aWV3KCkpCisgICAgICAgICAgICByZXR1cm4gW2Z2LT5wbGF0Zm9ybVdpZGdldCgpIHdpbmRvd107
CisKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICB9KTsKK30KKwogLy8gRklYTUU6IHNwbGl0IHVw
IHRoaXMgZnVuY3Rpb24gaW4gYSBiZXR0ZXIgd2F5LgogLy8gc3VnZ2VzdGlvbnM6IFVzZSBhIGhh
c2ggdGFibGUgdGhhdCBtYXBzIGF0dHJpYnV0ZSBuYW1lcyB0byBmdW5jdGlvbiBjYWxscywKIC8v
IG9yIG1heWJlIHBvaW50ZXJzIHRvIG1lbWJlciBmdW5jdGlvbnMKQEAgLTI0NTMsMTIgKzI1MDEs
OCBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgICAgIHJl
dHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6bV9vYmplY3QtPnByZXZlbnRLZXlib2FyZERP
TUV2ZW50RGlzcGF0Y2goKV07CiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9T
dHJpbmc6TlNBY2Nlc3NpYmlsaXR5Q2FyZXRCcm93c2luZ0VuYWJsZWRBdHRyaWJ1dGVdKQogICAg
ICAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDptX29iamVjdC0+Y2FyZXRC
cm93c2luZ0VuYWJsZWQoKV07Ci0gICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9T
dHJpbmc6TlNBY2Nlc3NpYmlsaXR5V2ViU2Vzc2lvbklEQXR0cmlidXRlXSkgewotICAgICAgICAg
ICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gbV9vYmplY3QtPnRvcERvY3VtZW50KCkpIHsKLSAgICAg
ICAgICAgICAgICBpZiAoYXV0byogcGFnZSA9IGRvY3VtZW50LT5wYWdlKCkpCi0gICAgICAgICAg
ICAgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkTG9uZ0xvbmc6cGFn
ZS0+c2Vzc2lvbklEKCkudG9VSW50NjQoKV07Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KKyAg
ICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlX
ZWJTZXNzaW9uSURBdHRyaWJ1dGVdKQorICAgICAgICAgICAgcmV0dXJuIEAobV9vYmplY3QtPnNl
c3Npb25JRCgpKTsKICAgICB9CiAgICAgCiAgICAgaWYgKG1fb2JqZWN0LT5pc1RleHRDb250cm9s
KCkpIHsKQEAgLTI1OTksMTQgKzI2NDMsMTQgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRB
VElPTlNfRU5ECiAgICAgCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzog
TlNBY2Nlc3NpYmlsaXR5TWluVmFsdWVBdHRyaWJ1dGVdKSB7CiAgICAgICAgIC8vIEluZGV0ZXJt
aW5hdGUgcHJvZ3Jlc3MgaW5kaWNhdG9yIHNob3VsZCByZXR1cm4gMC4KLSAgICAgICAgaWYgKG1f
b2JqZWN0LT5hcmlhUm9sZUF0dHJpYnV0ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpQcm9ncmVz
c0luZGljYXRvciAmJiAhbV9vYmplY3QtPmhhc0F0dHJpYnV0ZShhcmlhX3ZhbHVlbm93QXR0cikp
CisgICAgICAgIGlmIChtX29iamVjdC0+YXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBBY2Nlc3NpYmls
aXR5Um9sZTo6UHJvZ3Jlc3NJbmRpY2F0b3IgJiYgIW1fb2JqZWN0LT5oYXNBUklBVmFsdWVOb3co
KSkKICAgICAgICAgICAgIHJldHVybiBAMDsKICAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1i
ZXJXaXRoRmxvYXQ6bV9vYmplY3QtPm1pblZhbHVlRm9yUmFuZ2UoKV07CiAgICAgfQogICAgIAog
ICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eU1h
eFZhbHVlQXR0cmlidXRlXSkgewogICAgICAgICAvLyBJbmRldGVybWluYXRlIHByb2dyZXNzIGlu
ZGljYXRvciBzaG91bGQgcmV0dXJuIDAuCi0gICAgICAgIGlmIChtX29iamVjdC0+YXJpYVJvbGVB
dHRyaWJ1dGUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6UHJvZ3Jlc3NJbmRpY2F0b3IgJiYgIW1f
b2JqZWN0LT5oYXNBdHRyaWJ1dGUoYXJpYV92YWx1ZW5vd0F0dHIpKQorICAgICAgICBpZiAobV9v
YmplY3QtPmFyaWFSb2xlQXR0cmlidXRlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlByb2dyZXNz
SW5kaWNhdG9yICYmICFtX29iamVjdC0+aGFzQVJJQVZhbHVlTm93KCkpCiAgICAgICAgICAgICBy
ZXR1cm4gQDA7CiAgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0Om1fb2Jq
ZWN0LT5tYXhWYWx1ZUZvclJhbmdlKCldOwogICAgIH0KQEAgLTI2MzEsMjAgKzI2NzUsMTEgQEAg
QUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIHJldHVybiBbc2Vs
ZiBwb3NpdGlvbl07CiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0Fj
Y2Vzc2liaWxpdHlQYXRoQXR0cmlidXRlXSkKICAgICAgICAgcmV0dXJuIFtzZWxmIHBhdGhdOwot
ICAgIAotICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJp
bGl0eVdpbmRvd0F0dHJpYnV0ZV0gfHwKLSAgICAgICAgW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRv
U3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlUb3BMZXZlbFVJRWxlbWVudEF0dHJpYnV0ZV0pIHsKLSAg
ICAgICAgCi0gICAgICAgIGlkIHJlbW90ZVBhcmVudCA9IFtzZWxmIHJlbW90ZUFjY2Vzc2liaWxp
dHlQYXJlbnRPYmplY3RdOwotICAgICAgICBpZiAocmVtb3RlUGFyZW50KQotICAgICAgICAgICAg
cmV0dXJuIFtyZW1vdGVQYXJlbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOmF0dHJpYnV0
ZU5hbWVdOwotICAgICAgICAKLSAgICAgICAgRnJhbWVWaWV3KiBmdiA9IG1fb2JqZWN0LT5kb2N1
bWVudEZyYW1lVmlldygpOwotICAgICAgICBpZiAoZnYpCi0gICAgICAgICAgICByZXR1cm4gW2Z2
LT5wbGF0Zm9ybVdpZGdldCgpIHdpbmRvd107Ci0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgfQot
ICAgIAorCisgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2li
aWxpdHlXaW5kb3dBdHRyaWJ1dGVdCisgICAgICAgIHx8IFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxU
b1N0cmluZzpOU0FjY2Vzc2liaWxpdHlUb3BMZXZlbFVJRWxlbWVudEF0dHJpYnV0ZV0pCisgICAg
ICAgIHJldHVybiBbc2VsZiB3aW5kb3dFbGVtZW50OmF0dHJpYnV0ZU5hbWVdOworCiAgICAgaWYg
KFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlBY2Nlc3NLZXlB
dHRyaWJ1dGVdKSB7CiAgICAgICAgIEF0b21TdHJpbmcgYWNjZXNzS2V5ID0gbV9vYmplY3QtPmFj
Y2Vzc0tleSgpOwogICAgICAgICBpZiAoYWNjZXNzS2V5LmlzTnVsbCgpKQpAQCAtMjg5NywxMiAr
MjkzMiwxMCBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICBpZiAo
W2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBAIkFYU2VsZWN0ZWRUZXh0TWFya2VyUmFu
Z2UiXSkKICAgICAgICAgcmV0dXJuIFtzZWxmIHRleHRNYXJrZXJSYW5nZUZvclNlbGVjdGlvbl07
CiAgICAgCi0gICAgaWYgKG1fb2JqZWN0LT5yZW5kZXJlcigpKSB7Ci0gICAgICAgIGlmIChbYXR0
cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IEAiQVhTdGFydFRleHRNYXJrZXIiXSkKLSAgICAg
ICAgICAgIHJldHVybiBbc2VsZiB0ZXh0TWFya2VyRm9yVmlzaWJsZVBvc2l0aW9uOnN0YXJ0T2ZE
b2N1bWVudCgmbV9vYmplY3QtPnJlbmRlcmVyKCktPmRvY3VtZW50KCkpXTsKLSAgICAgICAgaWYg
KFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzogQCJBWEVuZFRleHRNYXJrZXIiXSkKLSAg
ICAgICAgICAgIHJldHVybiBbc2VsZiB0ZXh0TWFya2VyRm9yVmlzaWJsZVBvc2l0aW9uOmVuZE9m
RG9jdW1lbnQoJm1fb2JqZWN0LT5yZW5kZXJlcigpLT5kb2N1bWVudCgpKV07Ci0gICAgfQorICAg
IGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IEAiQVhTdGFydFRleHRNYXJrZXIi
XSkKKyAgICAgICAgcmV0dXJuIFtzZWxmIHRleHRNYXJrZXJGb3JWaXNpYmxlUG9zaXRpb246c3Rh
cnRPZkRvY3VtZW50KF9heEJhY2tpbmdPYmplY3QtPmRvY3VtZW50KCkpXTsKKyAgICBpZiAoW2F0
dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBAIkFYRW5kVGV4dE1hcmtlciJdKQorICAgICAg
ICByZXR1cm4gW3NlbGYgdGV4dE1hcmtlckZvclZpc2libGVQb3NpdGlvbjplbmRPZkRvY3VtZW50
KF9heEJhY2tpbmdPYmplY3QtPmRvY3VtZW50KCkpXTsKICAgICAKICAgICBpZiAoW2F0dHJpYnV0
ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUJsb2NrUXVvdGVMZXZlbEF0dHJp
YnV0ZV0pCiAgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50Om1f
b2JqZWN0LT5ibG9ja3F1b3RlTGV2ZWwoKV07CkBAIC0zMDQwLDcgKzMwNzMsNyBAQCBBTExPV19E
RVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgcmV0dXJuIG1fb2JqZWN0LT5k
YXRldGltZUF0dHJpYnV0ZVZhbHVlKCk7CiAgICAgCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlz
RXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlJbmxpbmVUZXh0QXR0cmlidXRlXSkKLSAgICAg
ICAgcmV0dXJuIEAobV9vYmplY3QtPnJlbmRlcmVyKCkgJiYgaXM8UmVuZGVySW5saW5lPihtX29i
amVjdC0+cmVuZGVyZXIoKSkpOworICAgICAgICByZXR1cm4gQChfYXhCYWNraW5nT2JqZWN0LT5p
c0lubGluZVRleHQoKSk7CiAgICAgCiAgICAgLy8gQVJJQSBMaXZlIHJlZ2lvbiBhdHRyaWJ1dGVz
LgogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5
QVJJQUxpdmVBdHRyaWJ1dGVdKQpAQCAtMzEwOSw3ICszMTQyLDcgQEAgQUxMT1dfREVQUkVDQVRF
RF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgCiAgICAgLy8gVXNlZCBieSBEUlQgdG8gZmluZCBh
biBhY2Nlc3NpYmxlIG5vZGUgYnkgaXRzIGVsZW1lbnQgaWQuCiAgICAgaWYgKFthdHRyaWJ1dGVO
YW1lIGlzRXF1YWxUb1N0cmluZzpAIkFYRFJURWxlbWVudElkQXR0cmlidXRlIl0pCi0gICAgICAg
IHJldHVybiBtX29iamVjdC0+Z2V0QXR0cmlidXRlKGlkQXR0cik7CisgICAgICAgIHJldHVybiBt
X29iamVjdC0+aWRlbnRpZmllckF0dHJpYnV0ZSgpOwogICAgIAogICAgIGlmIChbYXR0cmlidXRl
TmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJBWEF1dG9jb21wbGV0ZVZhbHVlIl0pCiAgICAgICAgIHJl
dHVybiBtX29iamVjdC0+YXV0b0NvbXBsZXRlVmFsdWUoKTsKQEAgLTMxNTIsMTcgKzMxODUsMTEg
QEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIHJldHVybiBb
TlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6bV9vYmplY3QtPmlzTXVsdGlTZWxlY3RhYmxlKCldOwog
ICAgIAogICAgIC8vIERvY3VtZW50IGF0dHJpYnV0ZXMKLSAgICBpZiAoW2F0dHJpYnV0ZU5hbWUg
aXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eURvY3VtZW50VVJJQXR0cmlidXRlXSkgewot
ICAgICAgICBpZiAoRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9vYmplY3QtPmRvY3VtZW50KCkpCi0g
ICAgICAgICAgICByZXR1cm4gZG9jdW1lbnQtPmRvY3VtZW50VVJJKCk7Ci0gICAgICAgIHJldHVy
biBuaWw7Ci0gICAgfQorICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNB
Y2Nlc3NpYmlsaXR5RG9jdW1lbnRVUklBdHRyaWJ1dGVdKQorICAgICAgICByZXR1cm4gbV9vYmpl
Y3QtPmRvY3VtZW50VVJJKCk7CiAgICAgCi0gICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxU
b1N0cmluZzpOU0FjY2Vzc2liaWxpdHlEb2N1bWVudEVuY29kaW5nQXR0cmlidXRlXSkgewotICAg
ICAgICBpZiAoRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9vYmplY3QtPmRvY3VtZW50KCkpCi0gICAg
ICAgICAgICByZXR1cm4gZG9jdW1lbnQtPmVuY29kaW5nKCk7Ci0gICAgICAgIHJldHVybiBuaWw7
Ci0gICAgfQorICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3Np
YmlsaXR5RG9jdW1lbnRFbmNvZGluZ0F0dHJpYnV0ZV0pCisgICAgICAgIHJldHVybiBtX29iamVj
dC0+ZG9jdW1lbnRFbmNvZGluZygpOwogICAgIAogICAgIC8vIEFyaWEgY29udHJvbHMgZWxlbWVu
dAogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5
QXJpYUNvbnRyb2xzQXR0cmlidXRlXSkgewpAQCAtMzM4Miw5ICszNDA5LDYgQEAgQUxMT1dfREVQ
UkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgaWYgKG1fb2JqZWN0LT5pc1Bhc3N3b3Jk
RmllbGQoKSkKICAgICAgICAgcmV0dXJuIEBbIE5TQWNjZXNzaWJpbGl0eVVJRWxlbWVudHNGb3JT
ZWFyY2hQcmVkaWNhdGVQYXJhbWV0ZXJpemVkQXR0cmlidXRlIF07CiAgICAgCi0gICAgaWYgKCFt
X29iamVjdC0+aXNBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBw
YXJhbUF0dHJzOwotICAgIAogICAgIGlmIChtX29iamVjdC0+aXNUZXh0Q29udHJvbCgpKQogICAg
ICAgICByZXR1cm4gdGV4dFBhcmFtQXR0cnM7CiAgICAgCkBAIC0zNDczLDIxICszNDk3LDMwIEBA
IEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCiAtICh2b2lkKWFjY2Vzc2liaWxp
dHlTaG93Q29udGV4dE1lbnUKIHsKLSAgICBpZiAoIW1fb2JqZWN0KQorICAgIHBlcmZvcm1BY2Nl
c3NpYmlsaXR5RnVuY3Rpb25Pbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSBSZXRhaW5QdHI8
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI+KHNlbGYpXSB7CisgICAgICAgIFtwcm90ZWN0
ZWRTZWxmIF9hY2Nlc3NpYmlsaXR5U2hvd0NvbnRleHRNZW51XTsKKyAgICB9KTsKK30KKworLSAo
dm9pZClfYWNjZXNzaWJpbGl0eVNob3dDb250ZXh0TWVudQoreworICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisgICAgCisgICAgaWYgKCFfYXhCYWNraW5nT2JqZWN0KQogICAgICAgICByZXR1
cm47CiAgICAgCi0gICAgUGFnZSogcGFnZSA9IG1fb2JqZWN0LT5wYWdlKCk7CisgICAgUGFnZSog
cGFnZSA9IF9heEJhY2tpbmdPYmplY3QtPnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCiAgICAgICAg
IHJldHVybjsKICAgICAKLSAgICBJbnRSZWN0IHJlY3QgPSBzbmFwcGVkSW50UmVjdChtX29iamVj
dC0+ZWxlbWVudFJlY3QoKSk7Ci0gICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtX29iamVjdC0+
ZG9jdW1lbnRGcmFtZVZpZXcoKTsKKyAgICBJbnRSZWN0IHJlY3QgPSBzbmFwcGVkSW50UmVjdChf
YXhCYWNraW5nT2JqZWN0LT5lbGVtZW50UmVjdCgpKTsKKyAgICBGcmFtZVZpZXcqIGZyYW1lVmll
dyA9IF9heEJhY2tpbmdPYmplY3QtPmRvY3VtZW50RnJhbWVWaWV3KCk7CiAgICAgCiAgICAgLy8g
T24gV0syLCB3ZSBuZWVkIHRvIGFjY291bnQgZm9yIHRoZSBzY3JvbGwgcG9zaXRpb24gd2l0aCBy
ZWdhcmRzIHRvIHJvb3Qgdmlldy4KICAgICAvLyBPbiBXSzEsIHdlIG5lZWQgdG8gY29udmVydCBy
ZWN0IHRvIHdpbmRvdyBzcGFjZSB0byBtYXRjaCBtb3VzZSBjbGlja2luZy4KICAgICBpZiAoZnJh
bWVWaWV3KSB7CiAgICAgICAgIC8vIEZpbmQgdGhlIGFwcHJvcHJpYXRlIHNjcm9sbCB2aWV3IHRv
IHVzZSB0byBjb252ZXJ0IHRoZSBjb250ZW50cyB0byB0aGUgd2luZG93LgotICAgICAgICBmb3Ig
KGF1dG8qIHBhcmVudCA9IG1fb2JqZWN0LT5wYXJlbnRPYmplY3QoKTsgcGFyZW50OyBwYXJlbnQg
PSBwYXJlbnQtPnBhcmVudE9iamVjdCgpKSB7CisgICAgICAgIGZvciAoYXV0byogcGFyZW50ID0g
X2F4QmFja2luZ09iamVjdC0+cGFyZW50T2JqZWN0KCk7IHBhcmVudDsgcGFyZW50ID0gcGFyZW50
LT5wYXJlbnRPYmplY3QoKSkgewogICAgICAgICAgICAgaWYgKGlzPEFjY2Vzc2liaWxpdHlTY3Jv
bGxWaWV3PigqcGFyZW50KSkgewogICAgICAgICAgICAgICAgIGlmIChhdXRvIHNjcm9sbFZpZXcg
PSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldz4oKnBhcmVudCkuc2Nyb2xsVmlldygp
KSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICghZnJhbWVWaWV3LT5wbGF0Zm9ybVdpZGdldCgp
KQpAQCAtMzcxMSwxMSArMzc0NCwxMyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9O
U19FTkQKIAogLSAoTlNSYW5nZSlfY29udmVydFRvTlNSYW5nZTooUmFuZ2UqKXJhbmdlCiB7Cisg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICAKICAgICBOU1JhbmdlIHJlc3VsdCA9IE5T
TWFrZVJhbmdlKE5TTm90Rm91bmQsIDApOwogICAgIGlmICghcmFuZ2UpCiAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9vYmplY3QtPmRvY3Vt
ZW50KCk7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gX2F4QmFja2luZ09iamVjdC0+ZG9jdW1l
bnQoKTsKICAgICBpZiAoIWRvY3VtZW50KQogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIApA
QCAtMzc0NCw3ICszNzc5LDkgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5E
CiAKIC0gKGlkKV90ZXh0TWFya2VyRm9ySW5kZXg6KE5TSW50ZWdlcil0ZXh0SW5kZXgKIHsKLSAg
ICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX29iamVjdC0+ZG9jdW1lbnQoKTsKKyAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOworCisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gX2F4QmFja2luZ09i
amVjdC0+ZG9jdW1lbnQoKTsKICAgICBpZiAoIWRvY3VtZW50KQogICAgICAgICByZXR1cm4gbmls
OwogICAgIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IDFhZDZlNWM1ODYwYTNjYmNkYTYwN2E1YzBiZTMzOTIzMTg1MTg4ZjIu
LmZkNDYwNTc4OGFmZjA1MzUxNzQxYzBlNGY1MjgyYTU2Y2NmZWE0YWEgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyMSBAQAorMjAxOS0xMi0wNSAgQW5kcmVzIEdvbnphbGV6ICA8YW5kcmVzZ18yMkBhcHBsZS5j
b20+CisKKyAgICAgICAgSW1wbGVtZW50YXRpb24gb2YgYWRkaXRpb25hbCBhdHRyaWJ1dGUgY2Fj
aGluZyBpbiB0aGUgSXNvbGF0ZWRUcmVlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjA0OTE4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhlIEFYU3RhcnQvRW5kVGV4dE1hcmtlciBhdHRyaWJ1dGVzIHdl
cmUgYmVpbmcgY29tcHV0ZWQgZm9yCisgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3RzIHRoYXQg
aGFkIGEgcmVuZGVyZXIgb2JqZWN0LiBXaXRoIHRoaXMgY2hhbmdlLAorICAgICAgICBBWFN0YXJ0
L0VuZFRleHRNYXJrZXIgYXJlIGNvbXB1dGVkIGZvciBhbGwgQWNjZXNzaWJpbGl0eU9iamVjdHMu
IFRodXMKKyAgICAgICAgdGhlIGV4cGVjdGVkIG91dHB1dCBmb3IgdGhlIGZvbGxvd2luZyB0ZXN0
cyBjaGFuZ2VkIGZyb20gbnVsbCB2YWx1ZSBmb3IKKyAgICAgICAgdGhlc2UgYXR0cmlidXRlcyB0
byB2YWxpZCBvYmplY3QgdmFsdWVzLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pbWFnZS1t
YXAyLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9kb2N1bWVudC1s
aW5rcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS90YWJsZS1hdHRyaWJ1
dGVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L3RhYmxlLXNlY3Rpb25z
LWV4cGVjdGVkLnR4dDoKKwogMjAxOS0xMi0wNCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBs
ZS5jb20+CiAKICAgICAgICAgQWRkIHN1cHBvcnQgZm9yIFdlYklETCBzZXRsaWtlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2ltYWdlLW1hcDItZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pbWFnZS1tYXAyLWV4cGVjdGVkLnR4dAppbmRleCAw
NjA3YmJkNzk4YWZmYmUzZWE5ZDRlODgwNTVkNWQ3ZDRlMGIzY2ZkLi40Y2U0NjkwMTY4MDk4ODEz
MDc5MDQyMjIxMjQyNWJkMDhmYWM2ZTJkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L2ltYWdlLW1hcDItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2li
aWxpdHkvaW1hZ2UtbWFwMi1leHBlY3RlZC50eHQKQEAgLTQ0LDggKzQ0LDggQEAgQVhGb2N1c2Vk
OiAwCiBBWEVuYWJsZWQ6IDEKIEFYV2luZG93OiA8QVhMaW5rPgogQVhTZWxlY3RlZFRleHRNYXJr
ZXJSYW5nZTogKG51bGwpCi1BWFN0YXJ0VGV4dE1hcmtlcjogKG51bGwpCi1BWEVuZFRleHRNYXJr
ZXI6IChudWxsKQorQVhTdGFydFRleHRNYXJrZXI6IDxBWExpbms+CitBWEVuZFRleHRNYXJrZXI6
IDxBWExpbms+CiBBWFZpc2l0ZWQ6IDAKIEFYTGlua2VkVUlFbGVtZW50czogPGFycmF5IG9mIHNp
emUgMD4KIEFYU2VsZWN0ZWQ6IDAKQEAgLTc4LDggKzc4LDggQEAgQVhGb2N1c2VkOiAwCiBBWEVu
YWJsZWQ6IDEKIEFYV2luZG93OiA8QVhMaW5rPgogQVhTZWxlY3RlZFRleHRNYXJrZXJSYW5nZTog
KG51bGwpCi1BWFN0YXJ0VGV4dE1hcmtlcjogKG51bGwpCi1BWEVuZFRleHRNYXJrZXI6IChudWxs
KQorQVhTdGFydFRleHRNYXJrZXI6IDxBWExpbms+CitBWEVuZFRleHRNYXJrZXI6IDxBWExpbms+
CiBBWFZpc2l0ZWQ6IDAKIEFYTGlua2VkVUlFbGVtZW50czogPGFycmF5IG9mIHNpemUgMD4KIEFY
U2VsZWN0ZWQ6IDAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rv
Y3VtZW50LWxpbmtzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFj
L2RvY3VtZW50LWxpbmtzLWV4cGVjdGVkLnR4dAppbmRleCBiYzliNWQ2ZGFkNDEzNDFkZGQ4OGMz
OWMyZDdiNjEwYTkwZWZhMDQyLi5iZGJlNjBiYmYyYjM1ZTkzYWE3N2IyZjIzNWU5NzRjNTMzMzMz
YjRkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kb2N1bWVudC1s
aW5rcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZG9j
dW1lbnQtbGlua3MtZXhwZWN0ZWQudHh0CkBAIC0xNCw4ICsxNCw4IEBAIEFYRm9jdXNlZDogMAog
QVhFbmFibGVkOiAxCiBBWFdpbmRvdzogPEFYTGluaz4KIEFYU2VsZWN0ZWRUZXh0TWFya2VyUmFu
Z2U6IChudWxsKQotQVhTdGFydFRleHRNYXJrZXI6IChudWxsKQotQVhFbmRUZXh0TWFya2VyOiAo
bnVsbCkKK0FYU3RhcnRUZXh0TWFya2VyOiA8QVhMaW5rPgorQVhFbmRUZXh0TWFya2VyOiA8QVhM
aW5rPgogQVhWaXNpdGVkOiAwCiBBWExpbmtlZFVJRWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDA+
CiBBWFNlbGVjdGVkOiAwCkBAIC00OCw4ICs0OCw4IEBAIEFYRm9jdXNlZDogMAogQVhFbmFibGVk
OiAxCiBBWFdpbmRvdzogPEFYTGluaz4KIEFYU2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2U6IChudWxs
KQotQVhTdGFydFRleHRNYXJrZXI6IChudWxsKQotQVhFbmRUZXh0TWFya2VyOiAobnVsbCkKK0FY
U3RhcnRUZXh0TWFya2VyOiA8QVhMaW5rPgorQVhFbmRUZXh0TWFya2VyOiA8QVhMaW5rPgogQVhW
aXNpdGVkOiAwCiBBWExpbmtlZFVJRWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDA+CiBBWFNlbGVj
dGVkOiAwCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RhYmxlLWF0dHJp
YnV0ZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90YWJsZS1hdHRy
aWJ1dGVzLWV4cGVjdGVkLnR4dAppbmRleCBiMTg2ODVjODNhNWNkYzlhODgwMDMwMDY5NjVkODgx
YTM0Y2UyN2IxLi5kMTUzOGVlMjNhNDliOTljNzBhZDJlYTA5NTE1YTUyODFkY2Q0NTNlIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RhYmxlLWF0dHJpYnV0ZXMtZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGFibGUtYXR0cmlidXRlcy1l
eHBlY3RlZC50eHQKQEAgLTI4OSw4ICsyODksOCBAQCBBWEZvY3VzZWQ6IDAKIEFYRW5hYmxlZDog
MQogQVhXaW5kb3c6IDxBWENvbHVtbj4KIEFYU2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2U6IChudWxs
KQotQVhTdGFydFRleHRNYXJrZXI6IChudWxsKQotQVhFbmRUZXh0TWFya2VyOiAobnVsbCkKK0FY
U3RhcnRUZXh0TWFya2VyOiA8QVhDb2x1bW4+CitBWEVuZFRleHRNYXJrZXI6IDxBWENvbHVtbj4K
IEFYVmlzaXRlZDogMAogQVhMaW5rZWRVSUVsZW1lbnRzOiA8YXJyYXkgb2Ygc2l6ZSAwPgogQVhT
ZWxlY3RlZDogMApAQCAtMzIzLDggKzMyMyw4IEBAIEFYRm9jdXNlZDogMAogQVhFbmFibGVkOiAx
CiBBWFdpbmRvdzogPEFYQ29sdW1uPgogQVhTZWxlY3RlZFRleHRNYXJrZXJSYW5nZTogKG51bGwp
Ci1BWFN0YXJ0VGV4dE1hcmtlcjogKG51bGwpCi1BWEVuZFRleHRNYXJrZXI6IChudWxsKQorQVhT
dGFydFRleHRNYXJrZXI6IDxBWENvbHVtbj4KK0FYRW5kVGV4dE1hcmtlcjogPEFYQ29sdW1uPgog
QVhWaXNpdGVkOiAwCiBBWExpbmtlZFVJRWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDA+CiBBWFNl
bGVjdGVkOiAwCkBAIC0zNTcsOCArMzU3LDggQEAgQVhGb2N1c2VkOiAwCiBBWEVuYWJsZWQ6IDEK
IEFYV2luZG93OiA8QVhDb2x1bW4+CiBBWFNlbGVjdGVkVGV4dE1hcmtlclJhbmdlOiAobnVsbCkK
LUFYU3RhcnRUZXh0TWFya2VyOiAobnVsbCkKLUFYRW5kVGV4dE1hcmtlcjogKG51bGwpCitBWFN0
YXJ0VGV4dE1hcmtlcjogPEFYQ29sdW1uPgorQVhFbmRUZXh0TWFya2VyOiA8QVhDb2x1bW4+CiBB
WFZpc2l0ZWQ6IDAKIEFYTGlua2VkVUlFbGVtZW50czogPGFycmF5IG9mIHNpemUgMD4KIEFYU2Vs
ZWN0ZWQ6IDAKQEAgLTM5MSw4ICszOTEsOCBAQCBBWEZvY3VzZWQ6IDAKIEFYRW5hYmxlZDogMQog
QVhXaW5kb3c6IDxBWENvbHVtbj4KIEFYU2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2U6IChudWxsKQot
QVhTdGFydFRleHRNYXJrZXI6IChudWxsKQotQVhFbmRUZXh0TWFya2VyOiAobnVsbCkKK0FYU3Rh
cnRUZXh0TWFya2VyOiA8QVhDb2x1bW4+CitBWEVuZFRleHRNYXJrZXI6IDxBWENvbHVtbj4KIEFY
VmlzaXRlZDogMAogQVhMaW5rZWRVSUVsZW1lbnRzOiA8YXJyYXkgb2Ygc2l6ZSAwPgogQVhTZWxl
Y3RlZDogMApAQCAtNDI1LDggKzQyNSw4IEBAIEFYRm9jdXNlZDogMAogQVhFbmFibGVkOiAxCiBB
WFdpbmRvdzogPEFYQ29sdW1uPgogQVhTZWxlY3RlZFRleHRNYXJrZXJSYW5nZTogKG51bGwpCi1B
WFN0YXJ0VGV4dE1hcmtlcjogKG51bGwpCi1BWEVuZFRleHRNYXJrZXI6IChudWxsKQorQVhTdGFy
dFRleHRNYXJrZXI6IDxBWENvbHVtbj4KK0FYRW5kVGV4dE1hcmtlcjogPEFYQ29sdW1uPgogQVhW
aXNpdGVkOiAwCiBBWExpbmtlZFVJRWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDA+CiBBWFNlbGVj
dGVkOiAwCkBAIC0xMTEzLDggKzExMTMsOCBAQCBBWEZvY3VzZWQ6IDAKIEFYRW5hYmxlZDogMQog
QVhXaW5kb3c6IDxBWEdyb3VwPgogQVhTZWxlY3RlZFRleHRNYXJrZXJSYW5nZTogKG51bGwpCi1B
WFN0YXJ0VGV4dE1hcmtlcjogKG51bGwpCi1BWEVuZFRleHRNYXJrZXI6IChudWxsKQorQVhTdGFy
dFRleHRNYXJrZXI6IDxBWEdyb3VwPgorQVhFbmRUZXh0TWFya2VyOiA8QVhHcm91cD4KIEFYVmlz
aXRlZDogMAogQVhMaW5rZWRVSUVsZW1lbnRzOiA8YXJyYXkgb2Ygc2l6ZSAwPgogQVhTZWxlY3Rl
ZDogMApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90YWJsZS1zZWN0aW9u
cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RhYmxlLXNlY3Rpb25z
LWV4cGVjdGVkLnR4dAppbmRleCA0YzU1ZGIwZjU1YmMxODM5ZjM3YTUwZDYxYzg4ZjkzYWI4ZmQ1
MGFlLi5jMzFlNGZkZjYzN2MwZmYzNmQwMWI0MzU5NTMzNDQ0YThlOGU0YjdhIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RhYmxlLXNlY3Rpb25zLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RhYmxlLXNlY3Rpb25zLWV4cGVjdGVkLnR4
dApAQCAtMjYxLDggKzI2MSw4IEBAIEFYRm9jdXNlZDogMAogQVhFbmFibGVkOiAxCiBBWFdpbmRv
dzogPEFYQ29sdW1uPgogQVhTZWxlY3RlZFRleHRNYXJrZXJSYW5nZTogKG51bGwpCi1BWFN0YXJ0
VGV4dE1hcmtlcjogKG51bGwpCi1BWEVuZFRleHRNYXJrZXI6IChudWxsKQorQVhTdGFydFRleHRN
YXJrZXI6IDxBWENvbHVtbj4KK0FYRW5kVGV4dE1hcmtlcjogPEFYQ29sdW1uPgogQVhWaXNpdGVk
OiAwCiBBWExpbmtlZFVJRWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDA+CiBBWFNlbGVjdGVkOiAw
CkBAIC0yOTUsOCArMjk1LDggQEAgQVhGb2N1c2VkOiAwCiBBWEVuYWJsZWQ6IDEKIEFYV2luZG93
OiA8QVhDb2x1bW4+CiBBWFNlbGVjdGVkVGV4dE1hcmtlclJhbmdlOiAobnVsbCkKLUFYU3RhcnRU
ZXh0TWFya2VyOiAobnVsbCkKLUFYRW5kVGV4dE1hcmtlcjogKG51bGwpCitBWFN0YXJ0VGV4dE1h
cmtlcjogPEFYQ29sdW1uPgorQVhFbmRUZXh0TWFya2VyOiA8QVhDb2x1bW4+CiBBWFZpc2l0ZWQ6
IDAKIEFYTGlua2VkVUlFbGVtZW50czogPGFycmF5IG9mIHNpemUgMD4KIEFYU2VsZWN0ZWQ6IDAK
QEAgLTMyOSw4ICszMjksOCBAQCBBWEZvY3VzZWQ6IDAKIEFYRW5hYmxlZDogMQogQVhXaW5kb3c6
IDxBWENvbHVtbj4KIEFYU2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2U6IChudWxsKQotQVhTdGFydFRl
eHRNYXJrZXI6IChudWxsKQotQVhFbmRUZXh0TWFya2VyOiAobnVsbCkKK0FYU3RhcnRUZXh0TWFy
a2VyOiA8QVhDb2x1bW4+CitBWEVuZFRleHRNYXJrZXI6IDxBWENvbHVtbj4KIEFYVmlzaXRlZDog
MAogQVhMaW5rZWRVSUVsZW1lbnRzOiA8YXJyYXkgb2Ygc2l6ZSAwPgogQVhTZWxlY3RlZDogMApA
QCAtOTQzLDggKzk0Myw4IEBAIEFYRm9jdXNlZDogMAogQVhFbmFibGVkOiAxCiBBWFdpbmRvdzog
PEFYR3JvdXA+CiBBWFNlbGVjdGVkVGV4dE1hcmtlclJhbmdlOiAobnVsbCkKLUFYU3RhcnRUZXh0
TWFya2VyOiAobnVsbCkKLUFYRW5kVGV4dE1hcmtlcjogKG51bGwpCitBWFN0YXJ0VGV4dE1hcmtl
cjogPEFYR3JvdXA+CitBWEVuZFRleHRNYXJrZXI6IDxBWEdyb3VwPgogQVhWaXNpdGVkOiAwCiBB
WExpbmtlZFVJRWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDA+CiBBWFNlbGVjdGVkOiAwCkBAIC0x
MjExLDggKzEyMTEsOCBAQCBBWEZvY3VzZWQ6IDAKIEFYRW5hYmxlZDogMQogQVhXaW5kb3c6IDxB
WENvbHVtbj4KIEFYU2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2U6IChudWxsKQotQVhTdGFydFRleHRN
YXJrZXI6IChudWxsKQotQVhFbmRUZXh0TWFya2VyOiAobnVsbCkKK0FYU3RhcnRUZXh0TWFya2Vy
OiA8QVhDb2x1bW4+CitBWEVuZFRleHRNYXJrZXI6IDxBWENvbHVtbj4KIEFYVmlzaXRlZDogMAog
QVhMaW5rZWRVSUVsZW1lbnRzOiA8YXJyYXkgb2Ygc2l6ZSAwPgogQVhTZWxlY3RlZDogMApAQCAt
MTI0NSw4ICsxMjQ1LDggQEAgQVhGb2N1c2VkOiAwCiBBWEVuYWJsZWQ6IDEKIEFYV2luZG93OiA8
QVhDb2x1bW4+CiBBWFNlbGVjdGVkVGV4dE1hcmtlclJhbmdlOiAobnVsbCkKLUFYU3RhcnRUZXh0
TWFya2VyOiAobnVsbCkKLUFYRW5kVGV4dE1hcmtlcjogKG51bGwpCitBWFN0YXJ0VGV4dE1hcmtl
cjogPEFYQ29sdW1uPgorQVhFbmRUZXh0TWFya2VyOiA8QVhDb2x1bW4+CiBBWFZpc2l0ZWQ6IDAK
IEFYTGlua2VkVUlFbGVtZW50czogPGFycmF5IG9mIHNpemUgMD4KIEFYU2VsZWN0ZWQ6IDAKQEAg
LTEyNzksOCArMTI3OSw4IEBAIEFYRm9jdXNlZDogMAogQVhFbmFibGVkOiAxCiBBWFdpbmRvdzog
PEFYQ29sdW1uPgogQVhTZWxlY3RlZFRleHRNYXJrZXJSYW5nZTogKG51bGwpCi1BWFN0YXJ0VGV4
dE1hcmtlcjogKG51bGwpCi1BWEVuZFRleHRNYXJrZXI6IChudWxsKQorQVhTdGFydFRleHRNYXJr
ZXI6IDxBWENvbHVtbj4KK0FYRW5kVGV4dE1hcmtlcjogPEFYQ29sdW1uPgogQVhWaXNpdGVkOiAw
CiBBWExpbmtlZFVJRWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDA+CiBBWFNlbGVjdGVkOiAwCkBA
IC0xODkzLDggKzE4OTMsOCBAQCBBWEZvY3VzZWQ6IDAKIEFYRW5hYmxlZDogMQogQVhXaW5kb3c6
IDxBWEdyb3VwPgogQVhTZWxlY3RlZFRleHRNYXJrZXJSYW5nZTogKG51bGwpCi1BWFN0YXJ0VGV4
dE1hcmtlcjogKG51bGwpCi1BWEVuZFRleHRNYXJrZXI6IChudWxsKQorQVhTdGFydFRleHRNYXJr
ZXI6IDxBWEdyb3VwPgorQVhFbmRUZXh0TWFya2VyOiA8QVhHcm91cD4KIEFYVmlzaXRlZDogMAog
QVhMaW5rZWRVSUVsZW1lbnRzOiA8YXJyYXkgb2Ygc2l6ZSAwPgogQVhTZWxlY3RlZDogMAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384985</attachid>
            <date>2019-12-05 18:29:20 -0800</date>
            <delta_ts>2019-12-06 06:42:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204918-20191205212918.patch</filename>
            <type>text/plain</type>
            <size>205412</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzMTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjM4MDA4YTZkMGI4YjFi
MjY1MWUxOGQ0OWJiOGM3ZTBhYjhjYWZjZS4uNDI4NTZlYjIyNTBlOGU4MmM0MGQ5ODA4ZWEyNTA0
YzNlZmVhNjNmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwMyBAQAorMjAxOS0xMi0wNSAgQW5k
cmVzIEdvbnphbGV6ICA8YW5kcmVzZ18yMkBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50
YXRpb24gb2YgYWRkaXRpb25hbCBhdHRyaWJ1dGUgY2FjaGluZyBpbiB0aGUgSXNvbGF0ZWRUcmVl
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0OTE4
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzLCBubyBuZXcgZnVuY3Rpb25hbGl0eS4gVXBkYXRlZCBzZXZlcmFsIHRlc3RzIHRvIGZp
eGVkCisgICAgICAgIGV4cGVjdGVkIG91dHB1dC4KKworICAgICAgICAtIEltcGxlbWVudGF0aW9u
IG9mIGFyb3VuZCAyMDAgbWV0aG9kcyBpbiB0aGUgQVhJc29sYXRlZE9iamVjdCBjbGFzcy4KKyAg
ICAgICAgLSBUaGUgcGVuZGluZyBtZXRob2QgaW1wbGVtZW50YXRpb25zIGhhdmUgYW4gQVNTRVJU
X05PVF9SRUFDSEVELgorICAgICAgICAtIFN1cHBvcnQgZm9yIGRpc3BhdGNoaW5nIHRvIHRoZSBt
YWluIHRocmVhZCBzb21lCisgICAgICAgIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIG1l
dGhvZHMgdGhhdCBjYW5ub3QgYmUgcnVuIGluIHRoZQorICAgICAgICBzZWNvbmRhcnkgdGhyZWFk
LgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmNyZWF0ZUlzb2xhdGVkVHJlZUhpZXJhcmNoeSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpnZW5lcmF0ZUlzb2xhdGVkVHJlZSk6Cisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmg6CisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6YXJpYUxhYmVsZWRCeVRleHQgY29uc3QpOgorICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphY3Rpb25WZXJiIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmRhdGV0aW1lQXR0cmlidXRlVmFsdWUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bGlua1JlbFZhbHVlIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzSW5saW5lVGV4
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjppZGVudGlm
aWVyQXR0cmlidXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OmRvY3VtZW50VVJJIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmRvY3VtZW50RW5jb2RpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6c2Vzc2lvbklEIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlPYmplY3Q6OnRhZ05hbWUgY29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRl
eHQ6OkFjY2Vzc2liaWxpdHlUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmFjdGlvblZlcmIgY29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdEludGVyZmFjZS5oOiBCYXNlIGltcGxlbWVudGF0aW9uIGZvcgorICAgICAg
ICBzZXZlcmFsIGlzWFhYIG1ldGhvZHMgdGhhdCByZWx5IG9uIHRoZSBvYmplY3Qgcm9sZVZhbHVl
LgorICAgICAgICAoV2ViQ29yZTo6QVhDb3JlT2JqZWN0Ojppc0ltYWdlTWFwIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFYQ29yZU9iamVjdDo6aXNXZWJBcmVhIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkFYQ29yZU9iamVjdDo6aXNDaGVja2JveCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpBWENvcmVPYmplY3Q6OmlzUmFkaW9CdXR0b24gY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6QVhDb3JlT2JqZWN0Ojppc0xpc3RCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhD
b3JlT2JqZWN0Ojppc1NwaW5CdXR0b24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhDb3Jl
T2JqZWN0Ojppc1N3aXRjaCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWENvcmVPYmplY3Q6
OmlzVG9nZ2xlQnV0dG9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYQ29yZU9iamVjdDo6
aXNUYWJMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYQ29yZU9iamVjdDo6aXNUYWJJ
dGVtIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYQ29yZU9iamVjdDo6aXNSYWRpb0dyb3Vw
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYQ29yZU9iamVjdDo6aXNDb21ib0JveCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpBWENvcmVPYmplY3Q6OmlzVHJlZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpBWENvcmVPYmplY3Q6OmlzVHJlZUdyaWQgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6QVhDb3JlT2JqZWN0Ojppc1RyZWVJdGVtIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkFYQ29yZU9iamVjdDo6aXNTY3JvbGxiYXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
QVhDb3JlT2JqZWN0Ojppc0xpc3RJdGVtIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYQ29y
ZU9iamVjdDo6aXNDaGVja2JveE9yUmFkaW8gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhD
b3JlT2JqZWN0Ojppc1Njcm9sbFZpZXcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhDb3Jl
T2JqZWN0Ojppc0NhbnZhcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWENvcmVPYmplY3Q6
OmlzUG9wVXBCdXR0b24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhDb3JlT2JqZWN0Ojpp
c0NvbG9yV2VsbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWENvcmVPYmplY3Q6OmlzU3Bs
aXR0ZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhDb3JlT2JqZWN0Ojppc1Rvb2xiYXIg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhDb3JlT2JqZWN0Ojppc1N1bW1hcnkgY29uc3Qp
OgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphY2Nlc3NLZXkg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWN0
aW9uVmVyYiBjb25zdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0Lmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U3BpbkJ1
dHRvbi5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRU
cmVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjpzZXRSb290Tm9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6c2V0Um9vdCk6IFJlbmFtZWQgc2V0
Um9vdE5vZGUuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRl
ZFRyZWUuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVk
VHJlZU5vZGUuY3BwOiBJbXBsZW1lbnRhdGlvbiBvZgorICAgICAgICBhcm91bmQgMjAwIG1ldGhv
ZHMgaW4gdGhlIEFYSXNvbGF0ZWRPYmplY3QgY2xhc3MuIFRoZSBtZXRob2RzIHRoYXQgYXJlCisg
ICAgICAgIHBlbmRpbmcsIGhhdmUgYSBzdHViIGltcGxlbWV0YXRpb24gd2l0aCBhbiBBU1NFUlRf
Tk9UX1JFQUNIRUQuCisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpBWElzb2xh
dGVkT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojppbml0aWFsaXplQXR0cmlidXRl
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpzZXRNYXRoc2NyaXB0
cyk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpzZXRPYmplY3RWZWN0b3JQ
cm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojppc0RldGFjaGVk
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmlzRGV0YWNoZWRG
cm9tUGFyZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmFjY2Vzc2li
aWxpdHlUZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmNs
YXNzTGlzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpzZXNz
aW9uSUQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6ZG9jdW1l
bnRVUkkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6cHJldmVu
dEtleWJvYXJkRE9NRXZlbnREaXNwYXRjaCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElz
b2xhdGVkT2JqZWN0Ojpkb2N1bWVudEVuY29kaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkFYSXNvbGF0ZWRPYmplY3Q6Omluc2VydE1hdGhQYWlycyk6CisgICAgICAgIChXZWJDb3JlOjpB
WElzb2xhdGVkT2JqZWN0OjptYXRoUHJlc2NyaXB0cyk6CisgICAgICAgIChXZWJDb3JlOjpBWElz
b2xhdGVkT2JqZWN0OjptYXRoUG9zdHNjcmlwdHMpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29s
YXRlZE9iamVjdDo6c2Nyb2xsQmFyKToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmpl
Y3Q6OmNvbG9yVmFsdWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVj
dDo6aW50UG9pbnRBdHRyaWJ1dGVWYWx1ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElz
b2xhdGVkT2JqZWN0Ojp2ZWN0b3JBdHRyaWJ1dGVWYWx1ZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpBWElzb2xhdGVkT2JqZWN0OjpvcHRpb25TZXRBdHRyaWJ1dGVWYWx1ZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojp1aW50NjRBdHRyaWJ1dGVWYWx1ZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojp1cmxBdHRyaWJ1dGVW
YWx1ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojpjb2xvckF0
dHJpYnV0ZVZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6
OmZsb2F0QXR0cmlidXRlVmFsdWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRl
ZE9iamVjdDo6ZmlsbENoaWxkcmVuVmVjdG9yRm9yUHJvcGVydHkgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6cmVwbGFjZVRleHRJblJhbmdlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6Omluc2VydFRleHQpOgorICAgICAgICAoV2ViQ29y
ZTo6QVhJc29sYXRlZE9iamVjdDo6cHJlc3MpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRl
ZE9iamVjdDo6cGVyZm9ybURlZmF1bHRBY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29s
YXRlZE9iamVjdDo6aXNBY2Nlc3NpYmlsaXR5T2JqZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmlzQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6aXNBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmlzQWNj
ZXNzaWJpbGl0eVNjcm9sbGJhciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVk
T2JqZWN0Ojppc0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmlzQWNjZXNzaWJpbGl0eVNWR1Jvb3QgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6aXNBY2Nlc3NpYmlsaXR5U1ZHRWxlbWVu
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojpjb250YWluc1Rl
eHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6aXNBdHRhY2ht
ZW50RWxlbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojpp
c05hdGl2ZUltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6
OmlzSW1hZ2VCdXR0b24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVj
dDo6aXNDb250YWluZWRCeVBhc3N3b3JkRmllbGQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
QVhJc29sYXRlZE9iamVjdDo6cGFzc3dvcmRGaWVsZE9yQ29udGFpbmluZ1Bhc3N3b3JkRmllbGQp
OgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6aXNOYXRpdmVUZXh0Q29udHJv
bCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojppc05hdGl2ZUxp
c3RCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6aXNMaXN0
Qm94T3B0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6Omlz
U2xpZGVyVGh1bWIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6
aXNJbnB1dFNsaWRlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0
Ojppc0xhYmVsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6Omlz
RGF0YVRhYmxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6Omlz
SW1hZ2VNYXBMaW5rIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6
OmlzTmF0aXZlU3BpbkJ1dHRvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVk
T2JqZWN0Ojppc1NwaW5CdXR0b25QYXJ0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNv
bGF0ZWRPYmplY3Q6OmlzTW9ja09iamVjdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElz
b2xhdGVkT2JqZWN0Ojppc01lZGlhT2JqZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFY
SXNvbGF0ZWRPYmplY3Q6OmlzQVJJQVRleHRDb250cm9sIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmlzTm9uTmF0aXZlVGV4dENvbnRyb2wgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6aXNCbG9ja3F1b3RlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmlzTGFuZG1hcmsgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6aXNGaWd1cmVFbGVtZW50IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmlzS2V5Ym9hcmRGb2N1c2FibGUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6aXNIb3ZlcmVkIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmlzSW5kZXRlcm1pbmF0
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojppc0xvYWRlZCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojppc09uU2NyZWVuIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmlzT2ZmU2NyZWVuIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmlzUHJlc3NlZCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojppc1VudmlzaXRlZCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojppc0xpbmtlZCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojppc1Zpc2libGUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6aXNDb2xsYXBzZWQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6aXNTZWxlY3RlZE9wdGlvbkFjdGl2
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpoYXNCb2xkRm9u
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpoYXNJdGFsaWNG
b250IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6Omhhc01pc3Nw
ZWxsaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6Omhhc1Bs
YWluVGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpoYXNT
YW1lRm9udCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpoYXNT
YW1lRm9udENvbG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6
Omhhc1NhbWVTdHlsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0
Ojppc1N0YXRpY1RleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVj
dDo6aGFzVW5kZXJsaW5lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmpl
Y3Q6Omhhc0hpZ2hsaWdodGluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVk
T2JqZWN0OjplbGVtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmpl
Y3Q6Om5vZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6cmVu
ZGVyZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6ZGVmYXVs
dE9iamVjdEluY2x1c2lvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2Jq
ZWN0OjphY2Nlc3NpYmlsaXR5SXNJZ25vcmVkQnlEZWZhdWx0IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OnN0ZXBWYWx1ZUZvclJhbmdlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OnNlbGVjdGVkTGlzdEl0ZW0pOgorICAgICAg
ICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6YXJpYUFjdGl2ZURlc2NlbmRhbnRSZWZlcmVu
Y2luZ0VsZW1lbnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6
OmFyaWFDb250cm9sc1JlZmVyZW5jaW5nRWxlbWVudHMgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6QVhJc29sYXRlZE9iamVjdDo6YXJpYURlc2NyaWJlZEJ5RWxlbWVudHMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6YXJpYURlc2NyaWJlZEJ5UmVmZXJlbmNp
bmdFbGVtZW50cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojph
cmlhRGV0YWlsc1JlZmVyZW5jaW5nRWxlbWVudHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
QVhJc29sYXRlZE9iamVjdDo6YXJpYUVycm9yTWVzc2FnZVJlZmVyZW5jaW5nRWxlbWVudHMgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6YXJpYUZsb3dUb1JlZmVy
ZW5jaW5nRWxlbWVudHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVj
dDo6YXJpYUxhYmVsbGVkQnlFbGVtZW50cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElz
b2xhdGVkT2JqZWN0OjphcmlhTGFiZWxsZWRCeVJlZmVyZW5jaW5nRWxlbWVudHMgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6YXJpYU93bnNSZWZlcmVuY2luZ0Vs
ZW1lbnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6Omhhc0Rh
dGFsaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OnN1cHBv
cnRzSGFzUG9wdXAgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6
c3VwcG9ydHNQcmVzc2VkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmpl
Y3Q6OnN1cHBvcnRzQ2hlY2tlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVk
T2JqZWN0OjppZ25vcmVkRnJvbU1vZGFsUHJlc2VuY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6QVhJc29sYXRlZE9iamVjdDo6aXNNb2RhbERlc2NlbmRhbnQgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6aXNNb2RhbE5vZGUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6ZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmZpcnN0Q2hpbGQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6bGFzdENoaWxkIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OnByZXZpb3VzU2libGluZyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpuZXh0U2libGluZyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpuZXh0U2libGluZ1Vu
aWdub3JlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpwcmV2
aW91c1NpYmxpbmdVbmlnbm9yZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRl
ZE9iamVjdDo6cGFyZW50T2JqZWN0SWZFeGlzdHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
QVhJc29sYXRlZE9iamVjdDo6aXNEZXNjZW5kYW50T2ZCYXJyZW5QYXJlbnQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6aXNEZXNjZW5kYW50T2ZSb2xlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6Om9ic2VydmFibGVPYmplY3Qg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6Y29ycmVzcG9uZGlu
Z0xhYmVsRm9yQ29udHJvbEVsZW1lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29s
YXRlZE9iamVjdDo6Y29ycmVzcG9uZGluZ0NvbnRyb2xGb3JMYWJlbEVsZW1lbnQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6aXNQcmVzZW50YXRpb25hbENoaWxk
T2ZBcmlhUm9sZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojph
cmlhUm9sZUhhc1ByZXNlbnRhdGlvbmFsQ2hpbGRyZW4gY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6QVhJc29sYXRlZE9iamVjdDo6aW5oZXJpdHNQcmVzZW50YXRpb25hbFJvbGUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6c2V0QWNjZXNzaWJsZU5hbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6aGFzQXR0cmlidXRlc1JlcXVpcmVk
Rm9ySW5jbHVzaW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6
OmFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElz
b2xhdGVkT2JqZWN0Ojp0aXRsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVk
T2JqZWN0OjpoZWxwVGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2Jq
ZWN0Ojppc0FSSUFTdGF0aWNUZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0
ZWRPYmplY3Q6OnN0cmluZ1ZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0
ZWRPYmplY3Q6OnRleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVj
dDo6YXJpYUxhYmVsZWRCeUF0dHJpYnV0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElz
b2xhdGVkT2JqZWN0OjphcmlhRGVzY3JpYmVkQnlBdHRyaWJ1dGUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6YWNjZXNzaWJsZU5hbWVEZXJpdmVzRnJvbUNvbnRl
bnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6ZWxlbWVudHNG
cm9tQXR0cmlidXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6
OmF4T2JqZWN0Q2FjaGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVj
dDo6YW5jaG9yRWxlbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2Jq
ZWN0OjphY3Rpb25FbGVtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRP
YmplY3Q6OmVsZW1lbnRQYXRoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRP
YmplY3Q6OnN1cHBvcnRzUGF0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVk
T2JqZWN0Ojp0ZXh0SXRlcmF0b3JCZWhhdmlvckZvclRleHRSYW5nZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojp3aWRnZXQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6QVhJc29sYXRlZE9iamVjdDo6d2lkZ2V0Rm9yQXR0YWNobWVudFZpZXcgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6cGFnZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojpkb2N1bWVudCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojpkb2N1bWVudEZyYW1lVmlldyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpmcmFtZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjptYWluRnJhbWUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6QVhJc29sYXRlZE9iamVjdDo6dG9wRG9jdW1lbnQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6QVhJc29sYXRlZE9iamVjdDo6c2Nyb2xsVmlld0FuY2VzdG9yIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAg
IChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojp0ZXh0Q2hhbmdlZCk6CisgICAgICAgIChXZWJD
b3JlOjpBWElzb2xhdGVkT2JqZWN0Ojp1cGRhdGVBY2Nlc3NpYmlsaXR5Um9sZSk6CisgICAgICAg
IChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjphZGRDaGlsZHJlbik6CisgICAgICAgIChXZWJD
b3JlOjpBWElzb2xhdGVkT2JqZWN0OjphZGRDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpBWElz
b2xhdGVkT2JqZWN0OjppbnNlcnRDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVk
T2JqZWN0OjpzaG91bGRJZ25vcmVBdHRyaWJ1dGVSb2xlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmNhbkhhdmVDaGlsZHJlbiBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpoYXNDaGlsZHJlbiBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpzZXROZWVkc1RvVXBkYXRlQ2hpbGRyZW4pOgorICAg
ICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6c2V0TmVlZHNUb1VwZGF0ZVN1YnRyZWUp
OgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6Y2xlYXJDaGlsZHJlbik6Cisg
ICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpuZWVkc1RvVXBkYXRlQ2hpbGRyZW4g
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6ZGV0YWNoRnJvbVBh
cmVudCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpzaG91bGRGb2N1c0Fj
dGl2ZURlc2NlbmRhbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVj
dDo6YWN0aXZlRGVzY2VuZGFudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVk
T2JqZWN0OjpoYW5kbGVBY3RpdmVEZXNjZW5kYW50Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpBWElzb2xhdGVkT2JqZWN0OjpoYW5kbGVBcmlhRXhwYW5kZWRDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmlzRGVzY2VuZGFudE9mT2JqZWN0IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmlzQW5jZXN0b3JPZk9iamVjdCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpmaXJzdEFub255bW91
c0Jsb2NrQ2hpbGQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6
aGFzQXR0cmlidXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6
OmdldEF0dHJpYnV0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0
OjpoYXNUYWdOYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6
OnN0cmluZ1ZhbHVlRm9yTVNBQSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVk
T2JqZWN0OjpzdHJpbmdSb2xlRm9yTVNBQSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElz
b2xhdGVkT2JqZWN0OjpuYW1lRm9yTVNBQSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElz
b2xhdGVkT2JqZWN0OjpkZXNjcmlwdGlvbkZvck1TQUEgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6QVhJc29sYXRlZE9iamVjdDo6cm9sZVZhbHVlRm9yTVNBQSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpwYXNzd29yZEZpZWxkVmFsdWUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6bGl2ZVJlZ2lvbkFuY2VzdG9yIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6Omhhc0NvbnRlbnRFZGl0YWJs
ZUF0dHJpYnV0ZVNldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0
OjpzdXBwb3J0c1JlYWRPbmx5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRP
YmplY3Q6OnN1cHBvcnRzQXV0b0NvbXBsZXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFY
SXNvbGF0ZWRPYmplY3Q6OnN1cHBvcnRzQVJJQUF0dHJpYnV0ZXMgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6c2Nyb2xsQnlQYWdlIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OnNjcm9sbFBvc2l0aW9uIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OnNjcm9sbENvbnRlbnRzU2l6ZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpzY3JvbGxWaXNpYmxlQ29udGVu
dFJlY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6c2Nyb2xs
VG9NYWtlVmlzaWJsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0
OjpsYXN0S25vd25Jc0lnbm9yZWRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVk
T2JqZWN0OjpzZXRMYXN0S25vd25Jc0lnbm9yZWRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpB
WElzb2xhdGVkT2JqZWN0Ojpub3RpZnlJZklnbm9yZWRWYWx1ZUNoYW5nZWQpOgorICAgICAgICAo
V2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6aXNNYXRoU2NyaXB0T2JqZWN0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmlzQVhIaWRkZW4g
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6aXNET01IaWRkZW4g
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6aXNIaWRkZW4gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6b3ZlcnJpZGVBdHRhY2ht
ZW50UGFyZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmFjY2Vzc2li
aWxpdHlJZ25vcmVBdHRhY2htZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0
ZWRPYmplY3Q6OmFjY2Vzc2liaWxpdHlQbGF0Zm9ybUluY2x1ZGVzT2JqZWN0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6Omhhc0FwcGxlUERGQW5ub3RhdGlvbkF0
dHJpYnV0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjphbmNl
c3RvckFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFY
SXNvbGF0ZWRPYmplY3Q6OnNldElzSWdub3JlZEZyb21QYXJlbnREYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmNsZWFySXNJZ25vcmVkRnJvbVBhcmVudERhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6c2V0SXNJZ25vcmVkRnJvbVBhcmVu
dERhdGFGb3JDaGlsZCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJ
c29sYXRlZFRyZWVOb2RlLmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW06IEFkZGVkCisgICAgICAgIGRpc3BhdGNoaW5nIHRv
IHRoZSBtYWluIHRocmVhZCBzb21lIG9mIHRoZSBtZXRob2RzIHRoYXQgY2Fubm90IGJlIHJ1bgor
ICAgICAgICBpbiB0aGUgc2Vjb25kYXJ5IHRocmVhZC4KKyAgICAgICAgKHBlcmZvcm1BY2Nlc3Np
YmlsaXR5RnVuY3Rpb25Pbk1haW5UaHJlYWQpOgorICAgICAgICAocmV0cmlldmVBY2Nlc3NpYmls
aXR5VmFsdWVGcm9tTWFpblRocmVhZCk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyIGF0dGFjaG1lbnRWaWV3XSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyIHNjcmVlblRvQ29udGVudHM6XSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyIHJlbmRlcldpZGdldENoaWxkcmVuXSk6CisgICAgICAgICgtW1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHJlbW90ZUFjY2Vzc2liaWxpdHlQYXJlbnRPYmpl
Y3RdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYXNzb2NpYXRl
ZFBsdWdpblBhcmVudF0pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ciBzdWJyb2xlXSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHNj
cm9sbFZpZXdQYXJlbnRdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXIgd2luZG93RWxlbWVudDpdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOl0pOgorICAgICAgICAoLVtXZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlciBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19F
TkRdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJp
bGl0eVNob3dDb250ZXh0TWVudV0pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlciBfYWNjZXNzaWJpbGl0eVNob3dDb250ZXh0TWVudV0pOgorICAgICAgICAoLVtXZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBfY29udmVydFRvTlNSYW5nZTpdKToKKyAgICAgICAg
KC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgX3RleHRNYXJrZXJGb3JJbmRleDpdKToK
KwogMjAxOS0xMi0wNCAgeW91ZW5uIGZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAg
ICAgTW92ZSBzb2Z0IHVwZGF0ZSBoYW5kbGluZyB0byBuZXR3b3JrIHByb2Nlc3MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCmluZGV4IDAzZTYwMDRl
MjUzZjM1OWQwNjIzYjg5OGFkN2Q4Y2QwY2FjZTI3NWQuLjVhMjAyNDQ3NjZhMGY2OGM5MGNiNGE3
NDI1NzQ1MzRlMDA4MWFiYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQVhPYmplY3RDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WE9iamVjdENhY2hlLmNwcApAQCAtMzA2NCw5ICszMDY0LDkgQEAgdm9pZCBBWE9iamVjdENhY2hl
OjpwZXJmb3JtRGVmZXJyZWRDYWNoZVVwZGF0ZSgpCiB9CiAgICAgCiAjaWYgRU5BQkxFKEFDQ0VT
U0lCSUxJVFlfSVNPTEFURURfVFJFRSkKLVJlZjxBWElzb2xhdGVkT2JqZWN0PiBBWE9iamVjdENh
Y2hlOjpjcmVhdGVJc29sYXRlZFRyZWVIaWVyYXJjaHkoQVhDb3JlT2JqZWN0JiBvYmplY3QsIEFY
SUQgcGFyZW50SUQsIEFYT2JqZWN0Q2FjaGUqIGF4T2JqZWN0Q2FjaGUsIEFYSXNvbGF0ZWRUcmVl
JiB0cmVlLCBWZWN0b3I8UmVmPEFYSXNvbGF0ZWRPYmplY3Q+PiYgbm9kZUNoYW5nZXMpCitSZWY8
QVhJc29sYXRlZE9iamVjdD4gQVhPYmplY3RDYWNoZTo6Y3JlYXRlSXNvbGF0ZWRUcmVlSGllcmFy
Y2h5KEFYQ29yZU9iamVjdCYgb2JqZWN0LCBBWElEIHBhcmVudElELCBBWE9iamVjdENhY2hlKiBh
eE9iamVjdENhY2hlLCBBWElzb2xhdGVkVHJlZSYgdHJlZSwgVmVjdG9yPFJlZjxBWElzb2xhdGVk
T2JqZWN0Pj4mIG5vZGVDaGFuZ2VzLCBib29sIGlzUm9vdCkKIHsKLSAgICBhdXRvIGlzb2xhdGVk
VHJlZU5vZGUgPSBBWElzb2xhdGVkT2JqZWN0OjpjcmVhdGUob2JqZWN0KTsKKyAgICBhdXRvIGlz
b2xhdGVkVHJlZU5vZGUgPSBBWElzb2xhdGVkT2JqZWN0OjpjcmVhdGUob2JqZWN0LCBpc1Jvb3Qp
OwogICAgIG5vZGVDaGFuZ2VzLmFwcGVuZChpc29sYXRlZFRyZWVOb2RlLmNvcHlSZWYoKSk7CiAK
ICAgICBpc29sYXRlZFRyZWVOb2RlLT5zZXRUcmVlSWRlbnRpZmllcih0cmVlLnRyZWVJZGVudGlm
aWVyKCkpOwpAQCAtMzA3NCw3ICszMDc0LDcgQEAgUmVmPEFYSXNvbGF0ZWRPYmplY3Q+IEFYT2Jq
ZWN0Q2FjaGU6OmNyZWF0ZUlzb2xhdGVkVHJlZUhpZXJhcmNoeShBWENvcmVPYmplY3QmIG8KICAg
ICBheE9iamVjdENhY2hlLT5hdHRhY2hXcmFwcGVyKCZpc29sYXRlZFRyZWVOb2RlLmdldCgpKTsK
IAogICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGQgOiBvYmplY3QuY2hpbGRyZW4oKSkgewotICAg
ICAgICBhdXRvIHN0YXRpY0NoaWxkID0gY3JlYXRlSXNvbGF0ZWRUcmVlSGllcmFyY2h5KCpjaGls
ZCwgaXNvbGF0ZWRUcmVlTm9kZS0+b2JqZWN0SUQoKSwgYXhPYmplY3RDYWNoZSwgdHJlZSwgbm9k
ZUNoYW5nZXMpOworICAgICAgICBhdXRvIHN0YXRpY0NoaWxkID0gY3JlYXRlSXNvbGF0ZWRUcmVl
SGllcmFyY2h5KCpjaGlsZCwgaXNvbGF0ZWRUcmVlTm9kZS0+b2JqZWN0SUQoKSwgYXhPYmplY3RD
YWNoZSwgdHJlZSwgbm9kZUNoYW5nZXMsIGZhbHNlKTsKICAgICAgICAgaXNvbGF0ZWRUcmVlTm9k
ZS0+YXBwZW5kQ2hpbGQoc3RhdGljQ2hpbGQtPm9iamVjdElEKCkpOwogICAgIH0KIApAQCAtMzA5
OCw4ICszMDk4LDggQEAgUmVmPEFYSXNvbGF0ZWRUcmVlPiBBWE9iamVjdENhY2hlOjpnZW5lcmF0
ZUlzb2xhdGVkVHJlZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIEQKICAgICBhdXRvKiBheFJvb3Qg
PSBheE9iamVjdENhY2hlLT5nZXRPckNyZWF0ZShkb2N1bWVudC52aWV3KCkpOwogICAgIGlmIChh
eFJvb3QpIHsKICAgICAgICAgVmVjdG9yPFJlZjxBWElzb2xhdGVkT2JqZWN0Pj4gbm9kZUNoYW5n
ZXM7Ci0gICAgICAgIGF1dG8gaXNvbGF0ZWRSb290ID0gY3JlYXRlSXNvbGF0ZWRUcmVlSGllcmFy
Y2h5KCpheFJvb3QsIEludmFsaWRBWElELCBheE9iamVjdENhY2hlLCAqdHJlZSwgbm9kZUNoYW5n
ZXMpOwotICAgICAgICB0cmVlLT5zZXRSb290KGlzb2xhdGVkUm9vdCk7CisgICAgICAgIGF1dG8g
aXNvbGF0ZWRSb290ID0gY3JlYXRlSXNvbGF0ZWRUcmVlSGllcmFyY2h5KCpheFJvb3QsIEludmFs
aWRBWElELCBheE9iamVjdENhY2hlLCAqdHJlZSwgbm9kZUNoYW5nZXMsIHRydWUpOworICAgICAg
ICB0cmVlLT5zZXRSb290Tm9kZShpc29sYXRlZFJvb3QpOwogICAgICAgICB0cmVlLT5hcHBlbmRO
b2RlQ2hhbmdlcyhub2RlQ2hhbmdlcyk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCmluZGV4IGU1OWUyMjA5OTg2NDBlNTU4NTg1ZjIzZTg5
MzhiODVjMWIxMDQyZmEuLjgwMmE3NTU0ZTZiOTI2NTJhYTkxNWRjZTNiNmRkMWViMDliYzdiNWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCkBAIC0x
OTgsNyArMTk4LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgQVhDb3JlT2JqZWN0KiBpc29sYXRl
ZFRyZWVGb2N1c2VkT2JqZWN0KERvY3VtZW50Jik7CiAgICAgdm9pZCBzZXRJc29sYXRlZFRyZWVG
b2N1c2VkT2JqZWN0KE5vZGUqKTsKICAgICBzdGF0aWMgUmVmPEFYSXNvbGF0ZWRUcmVlPiBnZW5l
cmF0ZUlzb2xhdGVkVHJlZShQYWdlSWRlbnRpZmllciwgRG9jdW1lbnQmKTsKLSAgICBzdGF0aWMg
UmVmPEFYSXNvbGF0ZWRPYmplY3Q+IGNyZWF0ZUlzb2xhdGVkVHJlZUhpZXJhcmNoeShBWENvcmVP
YmplY3QmLCBBWElELCBBWE9iamVjdENhY2hlKiwgQVhJc29sYXRlZFRyZWUmLCBWZWN0b3I8UmVm
PEFYSXNvbGF0ZWRPYmplY3Q+PiYpOworICAgIHN0YXRpYyBSZWY8QVhJc29sYXRlZE9iamVjdD4g
Y3JlYXRlSXNvbGF0ZWRUcmVlSGllcmFyY2h5KEFYQ29yZU9iamVjdCYsIEFYSUQsIEFYT2JqZWN0
Q2FjaGUqLCBBWElzb2xhdGVkVHJlZSYsIFZlY3RvcjxSZWY8QVhJc29sYXRlZE9iamVjdD4+Jiwg
Ym9vbCBpc1Jvb3QpOwogI2VuZGlmCiAKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKaW5kZXggNjFi
N2E0ZWM4M2M2M2Y2OTc4YTliNmQ0OWRmMWNkNTNlYzVmZDkwZC4uMTZiNjI0MDU1YTI3NDZjNzYw
NWUzOWQ0MmM0NjIwNWZkMzc4ZDIwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKQEAgLTE1MTMsMTEgKzE1
MTMsMTEgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6YXJpYUxhYmVsZWRCeVRleHQo
VmVjdG9yPEFjY2Vzc2liaWxpdHlUZXh0PiYgdGV4dE8KICAgICAgICAgVmVjdG9yPEVsZW1lbnQq
PiBlbGVtZW50czsKICAgICAgICAgYXJpYUxhYmVsZWRCeUVsZW1lbnRzKGVsZW1lbnRzKTsKIAot
ICAgICAgICBWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+PiBheEVsZW1lbnRzOwor
ICAgICAgICBWZWN0b3I8QVhDb3JlT2JqZWN0Kj4gYXhFbGVtZW50czsKICAgICAgICAgZm9yIChj
b25zdCBhdXRvJiBlbGVtZW50IDogZWxlbWVudHMpCiAgICAgICAgICAgICBheEVsZW1lbnRzLmFw
cGVuZChvYmplY3RDYWNoZS0+Z2V0T3JDcmVhdGUoZWxlbWVudCkpOwogICAgICAgICAKLSAgICAg
ICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4dChhcmlhTGFiZWxlZEJ5LCBBY2Nl
c3NpYmlsaXR5VGV4dFNvdXJjZTo6QWx0ZXJuYXRpdmUsIFdURk1vdmUoYXhFbGVtZW50cykpKTsK
KyAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4dChhcmlhTGFiZWxlZEJ5
LCBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6QWx0ZXJuYXRpdmUsIGF4RWxlbWVudHMpKTsKICAg
ICB9CiB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5T2JqZWN0LmNwcAppbmRleCA4MGFjMWVlMDI0YTdhZmFmMzViYTc2ZGExNTUwYjAw
YTRjMjQwNzUzLi44MWY0M2I0NWFiZDVhZWJiNDRlZDllZWNkYjY3ZjU2ZjZjN2ZiZTJhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVj
dC5jcHAKQEAgLTIwOTQsNyArMjA5NCw3IEBAIGNvbnN0IFN0cmluZyBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpkZWZhdWx0TGl2ZVJlZ2lvblN0YXR1c0ZvclJvbGUoQWNjZXNzaWJpbGl0eVJvCiB9CiAg
ICAgCiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFkpCi1jb25zdCBTdHJpbmcmIEFjY2Vzc2liaWxp
dHlPYmplY3Q6OmFjdGlvblZlcmIoKSBjb25zdAorU3RyaW5nIEFjY2Vzc2liaWxpdHlPYmplY3Q6
OmFjdGlvblZlcmIoKSBjb25zdAogewogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8v
IEZJWE1FOiBOZWVkIHRvIGFkZCB2ZXJicyBmb3Igc2VsZWN0IGVsZW1lbnRzLgpAQCAtMjcyMywx
NiArMjcyMywyMSBAQCBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnN1cHBvcnRzRGF0ZXRpbWVB
dHRyaWJ1dGUoKSBjb25zdAogICAgIHJldHVybiBoYXNUYWdOYW1lKGluc1RhZykgfHwgaGFzVGFn
TmFtZShkZWxUYWcpIHx8IGhhc1RhZ05hbWUodGltZVRhZyk7CiB9CiAKLWNvbnN0IEF0b21TdHJp
bmcmIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmRhdGV0aW1lQXR0cmlidXRlVmFsdWUoKSBjb25zdAor
U3RyaW5nIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmRhdGV0aW1lQXR0cmlidXRlVmFsdWUoKSBjb25z
dAogewogICAgIHJldHVybiBnZXRBdHRyaWJ1dGUoZGF0ZXRpbWVBdHRyKTsKIH0KICAgICAKLWNv
bnN0IEF0b21TdHJpbmcmIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmxpbmtSZWxWYWx1ZSgpIGNvbnN0
CitTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdDo6bGlua1JlbFZhbHVlKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gZ2V0QXR0cmlidXRlKHJlbEF0dHIpOwogfQogICAgIAorYm9vbCBBY2Nlc3NpYmls
aXR5T2JqZWN0Ojppc0lubGluZVRleHQoKSBjb25zdAoreworICAgIHJldHVybiBpczxSZW5kZXJJ
bmxpbmU+KHJlbmRlcmVyKCkpOworfQorCiBjb25zdCBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVj
dDo6a2V5U2hvcnRjdXRzVmFsdWUoKSBjb25zdAogewogICAgIHJldHVybiBnZXRBdHRyaWJ1dGUo
YXJpYV9rZXlzaG9ydGN1dHNBdHRyKTsKQEAgLTI5NjgsNyArMjk3Myw3IEBAIGludCBBY2Nlc3Np
YmlsaXR5T2JqZWN0Ojpwb3NJblNldCgpIGNvbnN0CiAgICAgcmV0dXJuIGdldEF0dHJpYnV0ZShh
cmlhX3Bvc2luc2V0QXR0cikudG9JbnQoKTsKIH0KICAgICAKLWNvbnN0IEF0b21TdHJpbmcmIEFj
Y2Vzc2liaWxpdHlPYmplY3Q6OmlkZW50aWZpZXJBdHRyaWJ1dGUoKSBjb25zdAorU3RyaW5nIEFj
Y2Vzc2liaWxpdHlPYmplY3Q6OmlkZW50aWZpZXJBdHRyaWJ1dGUoKSBjb25zdAogewogICAgIHJl
dHVybiBnZXRBdHRyaWJ1dGUoaWRBdHRyKTsKIH0KQEAgLTM2MzUsNiArMzY0MCwzNyBAQCBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpyYWRpb0dyb3VwQW5jZXN0b3Io
KSBjb25zdAogICAgIH0pOwogfQogCitTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdDo6ZG9jdW1l
bnRVUkkoKSBjb25zdAoreworICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50
KCkpCisgICAgICAgIHJldHVybiBkb2N1bWVudC0+ZG9jdW1lbnRVUkkoKTsKKyAgICByZXR1cm4g
U3RyaW5nKCk7Cit9CisKK1N0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpkb2N1bWVudEVuY29k
aW5nKCkgY29uc3QKK3sKKyAgICBpZiAoYXV0byogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgp
KQorICAgICAgICByZXR1cm4gZG9jdW1lbnQtPmVuY29kaW5nKCk7CisgICAgcmV0dXJuIFN0cmlu
ZygpOworfQorCit1aW50NjRfdCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXNzaW9uSUQoKSBjb25z
dAoreworICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IHRvcERvY3VtZW50KCkpIHsKKyAgICAgICAg
aWYgKGF1dG8qIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgpKQorICAgICAgICAgICAgcmV0dXJuIHBh
Z2UtPnNlc3Npb25JRCgpLnRvVUludDY0KCk7CisgICAgfQorICAgIHJldHVybiAwOworfQorCitT
dHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdDo6dGFnTmFtZSgpIGNvbnN0Cit7CisgICAgaWYgKEVs
ZW1lbnQqIGVsZW1lbnQgPSB0aGlzLT5lbGVtZW50KCkpCisgICAgICAgIHJldHVybiBlbGVtZW50
LT5sb2NhbE5hbWUoKTsKKworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKwogYm9vbCBBY2Nlc3Np
YmlsaXR5T2JqZWN0Ojppc1N0eWxlRm9ybWF0R3JvdXAoKSBjb25zdAogewogICAgIE5vZGUqIG5v
ZGUgPSB0aGlzLT5ub2RlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU9iamVjdC5oCmluZGV4IDRjYmRmN2YxYWMzMzM5MWVmYzI0MDQ1NzMyNzAw
M2I0NzMwNjMxY2YuLjVlZjljMmY3NDc3NzNjZTMxYTFiNmVlNjdkMzEzZWNlYTYzNzgxNzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVj
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVj
dC5oCkBAIC02Niw0MSArNjYsMzAgQEAgY2xhc3MgSW50UG9pbnQ7CiBjbGFzcyBJbnRTaXplOwog
Y2xhc3MgU2Nyb2xsYWJsZUFyZWE7CiAKLWVudW0gY2xhc3MgQWNjZXNzaWJpbGl0eVRleHRTb3Vy
Y2UgewotICAgIEFsdGVybmF0aXZlLAotICAgIENoaWxkcmVuLAotICAgIFN1bW1hcnksCi0gICAg
SGVscCwKLSAgICBWaXNpYmxlLAotICAgIFRpdGxlVGFnLAotICAgIFBsYWNlaG9sZGVyLAotICAg
IExhYmVsQnlFbGVtZW50LAotICAgIFRpdGxlLAotICAgIFN1YnRpdGxlLAotICAgIEFjdGlvbiwK
LX07Ci0gICAgCiBzdHJ1Y3QgQWNjZXNzaWJpbGl0eVRleHQgewogICAgIFN0cmluZyB0ZXh0Owog
ICAgIEFjY2Vzc2liaWxpdHlUZXh0U291cmNlIHRleHRTb3VyY2U7Ci0gICAgVmVjdG9yPFJlZlB0
cjxBY2Nlc3NpYmlsaXR5T2JqZWN0Pj4gdGV4dEVsZW1lbnRzOworICAgIFZlY3RvcjxSZWZQdHI8
QVhDb3JlT2JqZWN0Pj4gdGV4dEVsZW1lbnRzOwogICAgIAogICAgIEFjY2Vzc2liaWxpdHlUZXh0
KGNvbnN0IFN0cmluZyYgdCwgY29uc3QgQWNjZXNzaWJpbGl0eVRleHRTb3VyY2UmIHMpCiAgICAg
ICAgIDogdGV4dCh0KQogICAgICAgICAsIHRleHRTb3VyY2UocykKICAgICB7IH0KIAotICAgIEFj
Y2Vzc2liaWxpdHlUZXh0KGNvbnN0IFN0cmluZyYgdCwgY29uc3QgQWNjZXNzaWJpbGl0eVRleHRT
b3VyY2UmIHMsIFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4+IGVsZW1lbnRzKQor
ICAgIEFjY2Vzc2liaWxpdHlUZXh0KGNvbnN0IFN0cmluZyYgdCwgY29uc3QgQWNjZXNzaWJpbGl0
eVRleHRTb3VyY2UmIHMsIFZlY3RvcjxBWENvcmVPYmplY3QqPiBlbGVtZW50cykKICAgICAgICAg
OiB0ZXh0KHQpCiAgICAgICAgICwgdGV4dFNvdXJjZShzKQotICAgICAgICAsIHRleHRFbGVtZW50
cyhXVEZNb3ZlKGVsZW1lbnRzKSkKLSAgICB7IH0KKyAgICB7CisgICAgICAgIHRleHRFbGVtZW50
cy5yZXNlcnZlQ2FwYWNpdHkoZWxlbWVudHMuc2l6ZSgpKTsKKyAgICAgICAgZm9yIChhdXRvIGVs
ZW1lbnQgOiBlbGVtZW50cykKKyAgICAgICAgICAgIHRleHRFbGVtZW50cy51bmNoZWNrZWRBcHBl
bmQoZWxlbWVudCk7CisgICAgfQogCi0gICAgQWNjZXNzaWJpbGl0eVRleHQoY29uc3QgU3RyaW5n
JiB0LCBjb25zdCBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZSYgcywgUmVmUHRyPEFjY2Vzc2liaWxp
dHlPYmplY3Q+JiYgZWxlbWVudCkKKyAgICBBY2Nlc3NpYmlsaXR5VGV4dChjb25zdCBTdHJpbmcm
IHQsIGNvbnN0IEFjY2Vzc2liaWxpdHlUZXh0U291cmNlJiBzLCBBWENvcmVPYmplY3QqIGVsZW1l
bnQpCiAgICAgICAgIDogdGV4dCh0KQogICAgICAgICAsIHRleHRTb3VyY2UocykKICAgICB7Ci0g
ICAgICAgIHRleHRFbGVtZW50cy5hcHBlbmQoV1RGTW92ZShlbGVtZW50KSk7CisgICAgICAgIHRl
eHRFbGVtZW50cy5hcHBlbmQoZWxlbWVudCk7CiAgICAgfQogfTsKIApAQCAtMTM3LDcgKzEyNiw2
IEBAIHB1YmxpYzoKICAgICBib29sIGlzSGVhZGluZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9CiAgICAgYm9vbCBpc0xpbmsoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxz
ZTsgfQogICAgIGJvb2wgaXNJbWFnZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
Ci0gICAgYm9vbCBpc0ltYWdlTWFwKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcm9sZVZhbHVl
KCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkltYWdlTWFwOyB9CiAgICAgYm9vbCBpc05hdGl2ZUlt
YWdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGlzSW1hZ2VC
dXR0b24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgaXNQYXNz
d29yZEZpZWxkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTE0NSwxMSAr
MTMzLDcgQEAgcHVibGljOgogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhc3N3b3JkRmllbGRP
ckNvbnRhaW5pbmdQYXNzd29yZEZpZWxkKCkgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQog
ICAgIGJvb2wgaXNOYXRpdmVUZXh0Q29udHJvbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgYm9vbCBpc1NlYXJjaEZpZWxkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
ZmFsc2U7IH0KLSAgICBib29sIGlzV2ViQXJlYSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJv
bGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpXZWJBcmVhOyB9Ci0gICAgYm9vbCBpc0No
ZWNrYm94KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJp
bGl0eVJvbGU6OkNoZWNrQm94OyB9Ci0gICAgYm9vbCBpc1JhZGlvQnV0dG9uKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlJhZGlvQnV0
dG9uOyB9CiAgICAgYm9vbCBpc05hdGl2ZUxpc3RCb3goKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQotICAgIGJvb2wgaXNMaXN0Qm94KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RCb3g7IH0KICAgICBib29sIGlz
TGlzdEJveE9wdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9v
bCBpc0F0dGFjaG1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJv
b2wgaXNNZWRpYVRpbWVsaW5lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KQEAg
LTE3OSw0MiArMTYzLDIyIEBAIHB1YmxpYzoKICAgICBib29sIGlzTWVudUxpc3QoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgaXNNZW51TGlzdFBvcHVwKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGlzTWVudUxpc3RPcHRpb24o
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNTcGluQnV0dG9u
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJv
bGU6OlNwaW5CdXR0b247IH0KICAgICBib29sIGlzTmF0aXZlU3BpbkJ1dHRvbigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc1NwaW5CdXR0b25QYXJ0KCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGlzTW9ja09iamVjdCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc01lZGlhQ29udHJvbExh
YmVsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGlzTWVkaWFP
YmplY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNTd2l0
Y2goKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5
Um9sZTo6U3dpdGNoOyB9Ci0gICAgYm9vbCBpc1RvZ2dsZUJ1dHRvbigpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUb2dnbGVCdXR0b247
IH0KICAgICBib29sIGlzVGV4dENvbnRyb2woKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGlz
QVJJQVRleHRDb250cm9sKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc05vbk5hdGl2ZVRl
eHRDb250cm9sKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc1RhYkxpc3QoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFiTGlz
dDsgfQotICAgIGJvb2wgaXNUYWJJdGVtKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcm9sZVZh
bHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRhYjsgfQotICAgIGJvb2wgaXNSYWRpb0dyb3Vw
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJv
bGU6OlJhZGlvR3JvdXA7IH0KLSAgICBib29sIGlzQ29tYm9Cb3goKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q29tYm9Cb3g7IH0KLSAg
ICBib29sIGlzVHJlZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFj
Y2Vzc2liaWxpdHlSb2xlOjpUcmVlOyB9Ci0gICAgYm9vbCBpc1RyZWVHcmlkKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWVHcmlk
OyB9Ci0gICAgYm9vbCBpc1RyZWVJdGVtKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcm9sZVZh
bHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWVJdGVtOyB9Ci0gICAgYm9vbCBpc1Njcm9s
bGJhcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxp
dHlSb2xlOjpTY3JvbGxCYXI7IH0KICAgICBib29sIGlzQnV0dG9uKCkgY29uc3Qgb3ZlcnJpZGU7
Ci0gICAgYm9vbCBpc0xpc3RJdGVtKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcm9sZVZhbHVl
KCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RJdGVtOyB9Ci0gICAgYm9vbCBpc0NoZWNrYm94
T3JSYWRpbygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGlzQ2hlY2tib3goKSB8fCBpc1JhZGlv
QnV0dG9uKCk7IH0KLSAgICBib29sIGlzU2Nyb2xsVmlldygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpTY3JvbGxBcmVhOyB9Ci0gICAg
Ym9vbCBpc0NhbnZhcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFj
Y2Vzc2liaWxpdHlSb2xlOjpDYW52YXM7IH0KLSAgICBib29sIGlzUG9wVXBCdXR0b24oKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6UG9w
VXBCdXR0b247IH0KICAgICBib29sIGlzQmxvY2txdW90ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAg
IGJvb2wgaXNMYW5kbWFyaygpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgaXNDb2xvcldlbGwo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6Q29sb3JXZWxsOyB9CiAgICAgYm9vbCBpc1JhbmdlQ29udHJvbCgpIGNvbnN0IG92ZXJyaWRl
OwogICAgIGJvb2wgaXNNZXRlcigpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgaXNTcGxpdHRl
cigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlS
b2xlOjpTcGxpdHRlcjsgfQotICAgIGJvb2wgaXNUb29sYmFyKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRvb2xiYXI7IH0KICAgICBi
b29sIGlzU3R5bGVGb3JtYXRHcm91cCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgaXNGaWd1
cmVFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc0tleWJvYXJkRm9jdXNhYmxl
KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc1N1bW1hcnkoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3VtbWFyeTsgfQogICAg
IGJvb2wgaXNPdXRwdXQoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIGJvb2wgaXNDaGVja2VkKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTI1NSw3ICsyMTksNyBAQCBwdWJs
aWM6CiAgICAgYm9vbCBoYXNIaWdobGlnaHRpbmcoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIGJv
b2wgc3VwcG9ydHNEYXRldGltZUF0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIGNvbnN0
IEF0b21TdHJpbmcmIGRhdGV0aW1lQXR0cmlidXRlVmFsdWUoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBTdHJpbmcgZGF0ZXRpbWVBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAg
Ym9vbCBjYW5TZXRGb2N1c0F0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgYm9vbCBjYW5TZXRUZXh0UmFuZ2VBdHRyaWJ1dGVzKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KQEAgLTMyMyw4ICsyODcsOCBAQCBwdWJsaWM6CiAgICAgQWNjZXNz
aWJpbGl0eVNvcnREaXJlY3Rpb24gc29ydERpcmVjdGlvbigpIGNvbnN0IG92ZXJyaWRlOwogICAg
IGJvb2wgY2FudmFzSGFzRmFsbGJhY2tDb250ZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
ZmFsc2U7IH0KICAgICBib29sIHN1cHBvcnRzUmFuZ2VWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlOwot
ICAgIGNvbnN0IEF0b21TdHJpbmcmIGlkZW50aWZpZXJBdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlk
ZTsKLSAgICBjb25zdCBBdG9tU3RyaW5nJiBsaW5rUmVsVmFsdWUoKSBjb25zdCBvdmVycmlkZTsK
KyAgICBTdHJpbmcgaWRlbnRpZmllckF0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFN0
cmluZyBsaW5rUmVsVmFsdWUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGNsYXNzTGlzdChW
ZWN0b3I8U3RyaW5nPiYpIGNvbnN0IG92ZXJyaWRlOwogICAgIEFjY2Vzc2liaWxpdHlDdXJyZW50
U3RhdGUgY3VycmVudFN0YXRlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIGN1cnJlbnRW
YWx1ZSgpIGNvbnN0IG92ZXJyaWRlOwpAQCAtNDU0LDggKzQxOCw4IEBAIHB1YmxpYzoKICAgICBV
UkwgdXJsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVVJMKCk7IH0KICAgICBWaXNpYmxlU2Vs
ZWN0aW9uIHNlbGVjdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFZpc2libGVTZWxlY3Rp
b24oKTsgfQogICAgIFN0cmluZyBzZWxlY3RlZFRleHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBTdHJpbmcoKTsgfQotICAgIGNvbnN0IEF0b21TdHJpbmcmIGFjY2Vzc0tleSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG51bGxBdG9tKCk7IH0KLSAgICBjb25zdCBTdHJpbmcmIGFjdGlvblZl
cmIoKSBjb25zdCBvdmVycmlkZTsKKyAgICBTdHJpbmcgYWNjZXNzS2V5KCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gbnVsbEF0b20oKTsgfQorICAgIFN0cmluZyBhY3Rpb25WZXJiKCkgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgV2lkZ2V0KiB3aWRnZXQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBu
dWxscHRyOyB9CiAgICAgV2lkZ2V0KiB3aWRnZXRGb3JBdHRhY2htZW50VmlldygpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICBQYWdlKiBwYWdlKCkgY29uc3Qgb3ZlcnJp
ZGU7CkBAIC00NjgsNiArNDMyLDcgQEAgcHVibGljOgogICAgIFN0cmluZyBsYW5ndWFnZSgpIGNv
bnN0IG92ZXJyaWRlOwogICAgIC8vIDEtYmFzZWQsIHRvIG1hdGNoIHRoZSBhcmlhLWxldmVsIHNw
ZWMuCiAgICAgdW5zaWduZWQgaGllcmFyY2hpY2FsTGV2ZWwoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiAwOyB9CisgICAgYm9vbCBpc0lubGluZVRleHQoKSBjb25zdCBvdmVycmlkZTsKIAogICAg
IHZvaWQgc2V0Rm9jdXNlZChib29sKSBvdmVycmlkZSB7IH0KICAgICB2b2lkIHNldFNlbGVjdGVk
VGV4dChjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IH0KQEAgLTUyOCw2ICs0OTMsNyBAQCBwdWJs
aWM6CiAgICAgYm9vbCBoYXNBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IG92
ZXJyaWRlOwogICAgIGNvbnN0IEF0b21TdHJpbmcmIGdldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBoYXNUYWdOYW1lKGNvbnN0IFF1YWxp
ZmllZE5hbWUmKSBjb25zdCBvdmVycmlkZTsKKyAgICBTdHJpbmcgdGFnTmFtZSgpIGNvbnN0IG92
ZXJyaWRlOwogCiAgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgdmlzaWJsZVBvc2l0aW9uUmFuZ2Uo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBWaXNpYmxlUG9zaXRpb25SYW5nZSgpOyB9CiAgICAg
VmlzaWJsZVBvc2l0aW9uUmFuZ2UgdmlzaWJsZVBvc2l0aW9uUmFuZ2VGb3JMaW5lKHVuc2lnbmVk
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBWaXNpYmxlUG9zaXRpb25SYW5nZSgpOyB9CkBAIC02
MjksNiArNTk1LDcgQEAgcHVibGljOgogICAgIGJvb2wgc3VwcG9ydHNBdXRvQ29tcGxldGUoKSBj
b25zdCBvdmVycmlkZTsKICAgICBTdHJpbmcgYXV0b0NvbXBsZXRlVmFsdWUoKSBjb25zdCBvdmVy
cmlkZTsKIAorICAgIGJvb2wgaGFzQVJJQVZhbHVlTm93KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gaGFzQXR0cmlidXRlKEhUTUxOYW1lczo6YXJpYV92YWx1ZW5vd0F0dHIpOyB9CiAgICAgYm9v
bCBzdXBwb3J0c0FSSUFBdHRyaWJ1dGVzKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICAvLyBDU1Mz
IFNwZWVjaCBwcm9wZXJ0aWVzLgpAQCAtNzUwLDYgKzcxNyw3IEBAIHB1YmxpYzoKICAgICBTdHJp
bmcgZGVzY3JpcHRpb25BdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFN0cmlu
ZyBoZWxwVGV4dEF0dHJpYnV0ZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHRp
dGxlQXR0cmlidXRlVmFsdWUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGhhc0FwcGxlUERG
QW5ub3RhdGlvbkF0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGhhc0F0dHJpYnV0
ZShIVE1MTmFtZXM6OnhfYXBwbGVfcGRmX2Fubm90YXRpb25BdHRyKTsgfQogI2VuZGlmCiAKICNp
ZiBQTEFURk9STShDT0NPQSkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC03NjYsNiArNzM0
LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFySXNJZ25vcmVkRnJvbVBhcmVudERhdGEoKSBv
dmVycmlkZSB7IG1faXNJZ25vcmVkRnJvbVBhcmVudERhdGEgPSBBY2Nlc3NpYmlsaXR5SXNJZ25v
cmVkRnJvbVBhcmVudERhdGEoKTsgfQogICAgIHZvaWQgc2V0SXNJZ25vcmVkRnJvbVBhcmVudERh
dGFGb3JDaGlsZChBWENvcmVPYmplY3QqKSBvdmVycmlkZTsKIAorICAgIHVpbnQ2NF90IHNlc3Np
b25JRCgpIGNvbnN0IG92ZXJyaWRlOworICAgIFN0cmluZyBkb2N1bWVudFVSSSgpIGNvbnN0IG92
ZXJyaWRlOworICAgIFN0cmluZyBkb2N1bWVudEVuY29kaW5nKCkgY29uc3Qgb3ZlcnJpZGU7CisK
IHByb3RlY3RlZDoKICAgICBBWElEIG1faWQgeyAwIH07CiAgICAgQWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yIG1fY2hpbGRyZW47CkBAIC04MjMsNyArNzk1LDcgQEAgcHJvdGVjdGVkOgogCiAj
aWYgIUVOQUJMRShBQ0NFU1NJQklMSVRZKQogaW5saW5lIGNvbnN0IEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgQWNjZXNzaWJpbGl0eU9iamVjdDo6Y2hp
bGRyZW4oYm9vbCkgeyByZXR1cm4gbV9jaGlsZHJlbjsgfQotaW5saW5lIGNvbnN0IFN0cmluZyYg
QWNjZXNzaWJpbGl0eU9iamVjdDo6YWN0aW9uVmVyYigpIGNvbnN0IHsgcmV0dXJuIGVtcHR5U3Ry
aW5nKCk7IH0KK2lubGluZSBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdDo6YWN0aW9uVmVyYigp
IGNvbnN0IHsgcmV0dXJuIGVtcHR5U3RyaW5nKCk7IH0KIGlubGluZSBpbnQgQWNjZXNzaWJpbGl0
eU9iamVjdDo6bGluZUZvclBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IHsg
cmV0dXJuIC0xOyB9CiBpbmxpbmUgdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp1cGRhdGVCYWNr
aW5nU3RvcmUoKSB7IH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaAppbmRleCBhMmQ1ZTg4
NmYzMDM2MDFkNjU3YTdhMTMzNWFiZWZkNWE0OWNkNWRmLi5jZjMyYzgxYzgxZWY4NTlmYjc2N2Zj
ZWVmNDI4ZTU1YjE5NzYzNDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaApAQCAtMjM0LDYgKzIz
NCwyMCBAQCBlbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlTZWFyY2hEaXJlY3Rpb24gewogICAgIFBy
ZXZpb3VzLAogfTsKIAorZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZSB7CisgICAg
QWx0ZXJuYXRpdmUsCisgICAgQ2hpbGRyZW4sCisgICAgU3VtbWFyeSwKKyAgICBIZWxwLAorICAg
IFZpc2libGUsCisgICAgVGl0bGVUYWcsCisgICAgUGxhY2Vob2xkZXIsCisgICAgTGFiZWxCeUVs
ZW1lbnQsCisgICAgVGl0bGUsCisgICAgU3VidGl0bGUsCisgICAgQWN0aW9uLAorfTsKKwogZW51
bSBjbGFzcyBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5IHsKICAgICBBbnlUeXBlID0gMSwKICAgICBB
cnRpY2xlLApAQCAtNDc5LDcgKzQ5Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNI
ZWFkaW5nKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc0xpbmsoKSBjb25zdCA9IDA7
CiAgICAgdmlydHVhbCBib29sIGlzSW1hZ2UoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBib29s
IGlzSW1hZ2VNYXAoKSBjb25zdCA9IDA7CisgICAgYm9vbCBpc0ltYWdlTWFwKCkgY29uc3QgeyBy
ZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkltYWdlTWFwOyB9CiAgICAg
dmlydHVhbCBib29sIGlzTmF0aXZlSW1hZ2UoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29s
IGlzSW1hZ2VCdXR0b24oKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzUGFzc3dvcmRG
aWVsZCgpIGNvbnN0ID0gMDsKQEAgLTQ4NywxMSArNTAxLDExIEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIEFYQ29yZU9iamVjdCogcGFzc3dvcmRGaWVsZE9yQ29udGFpbmluZ1Bhc3N3b3JkRmllbGQo
KSA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzTmF0aXZlVGV4dENvbnRyb2woKSBjb25zdCA9IDA7
CiAgICAgdmlydHVhbCBib29sIGlzU2VhcmNoRmllbGQoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVh
bCBib29sIGlzV2ViQXJlYSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNDaGVja2Jv
eCgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNSYWRpb0J1dHRvbigpIGNvbnN0ID0g
MDsKKyAgICBib29sIGlzV2ViQXJlYSgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFj
Y2Vzc2liaWxpdHlSb2xlOjpXZWJBcmVhOyB9CisgICAgYm9vbCBpc0NoZWNrYm94KCkgY29uc3Qg
eyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkNoZWNrQm94OyB9Cisg
ICAgYm9vbCBpc1JhZGlvQnV0dG9uKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNj
ZXNzaWJpbGl0eVJvbGU6OlJhZGlvQnV0dG9uOyB9CisgICAgYm9vbCBpc0xpc3RCb3goKSBjb25z
dCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEJveDsgfQog
ICAgIHZpcnR1YWwgYm9vbCBpc05hdGl2ZUxpc3RCb3goKSBjb25zdCA9IDA7Ci0gICAgdmlydHVh
bCBib29sIGlzTGlzdEJveCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNMaXN0Qm94
T3B0aW9uKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc0F0dGFjaG1lbnQoKSBjb25z
dCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzTWVkaWFUaW1lbGluZSgpIGNvbnN0ID0gMDsKQEAg
LTUyMSw0MiArNTM1LDQ0IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNNZW51TGlzdCgp
IGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNNZW51TGlzdFBvcHVwKCkgY29uc3QgPSAw
OwogICAgIHZpcnR1YWwgYm9vbCBpc01lbnVMaXN0T3B0aW9uKCkgY29uc3QgPSAwOwotICAgIHZp
cnR1YWwgYm9vbCBpc1NwaW5CdXR0b24oKSBjb25zdCA9IDA7CisgICAgYm9vbCBpc1NwaW5CdXR0
b24oKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3Bp
bkJ1dHRvbjsgfQogICAgIHZpcnR1YWwgYm9vbCBpc05hdGl2ZVNwaW5CdXR0b24oKSBjb25zdCA9
IDA7CiAgICAgdmlydHVhbCBib29sIGlzU3BpbkJ1dHRvblBhcnQoKSBjb25zdCA9IDA7CiAgICAg
dmlydHVhbCBib29sIGlzTW9ja09iamVjdCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wg
aXNNZWRpYUNvbnRyb2xMYWJlbCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNNZWRp
YU9iamVjdCgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNTd2l0Y2goKSBjb25zdCA9
IDA7Ci0gICAgdmlydHVhbCBib29sIGlzVG9nZ2xlQnV0dG9uKCkgY29uc3QgPSAwOworICAgIGJv
b2wgaXNTd2l0Y2goKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5
Um9sZTo6U3dpdGNoOyB9CisgICAgYm9vbCBpc1RvZ2dsZUJ1dHRvbigpIGNvbnN0IHsgcmV0dXJu
IHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUb2dnbGVCdXR0b247IH0KICAgICB2
aXJ0dWFsIGJvb2wgaXNUZXh0Q29udHJvbCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wg
aXNBUklBVGV4dENvbnRyb2woKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzTm9uTmF0
aXZlVGV4dENvbnRyb2woKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBib29sIGlzVGFiTGlzdCgp
IGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNUYWJJdGVtKCkgY29uc3QgPSAwOwotICAg
IHZpcnR1YWwgYm9vbCBpc1JhZGlvR3JvdXAoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBib29s
IGlzQ29tYm9Cb3goKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBib29sIGlzVHJlZSgpIGNvbnN0
ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNUcmVlR3JpZCgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0
dWFsIGJvb2wgaXNUcmVlSXRlbSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNTY3Jv
bGxiYXIoKSBjb25zdCA9IDA7CisgICAgYm9vbCBpc1RhYkxpc3QoKSBjb25zdCB7IHJldHVybiBy
b2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFiTGlzdDsgfQorICAgIGJvb2wgaXNU
YWJJdGVtKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6
OlRhYjsgfQorICAgIGJvb2wgaXNSYWRpb0dyb3VwKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVl
KCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlJhZGlvR3JvdXA7IH0KKyAgICBib29sIGlzQ29tYm9C
b3goKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q29t
Ym9Cb3g7IH0KKyAgICBib29sIGlzVHJlZSgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09
IEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlOyB9CisgICAgYm9vbCBpc1RyZWVHcmlkKCkgY29uc3Qg
eyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWVHcmlkOyB9Cisg
ICAgYm9vbCBpc1RyZWVJdGVtKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNz
aWJpbGl0eVJvbGU6OlRyZWVJdGVtOyB9CisgICAgYm9vbCBpc1Njcm9sbGJhcigpIGNvbnN0IHsg
cmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpTY3JvbGxCYXI7IH0KICAg
ICB2aXJ0dWFsIGJvb2wgaXNCdXR0b24oKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBib29sIGlz
TGlzdEl0ZW0oKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBib29sIGlzQ2hlY2tib3hPclJhZGlv
KCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBpc1Njcm9sbFZpZXcoKSBjb25zdCA9IDA7
Ci0gICAgdmlydHVhbCBib29sIGlzQ2FudmFzKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9v
bCBpc1BvcFVwQnV0dG9uKCkgY29uc3QgPSAwOworCisgICAgYm9vbCBpc0xpc3RJdGVtKCkgY29u
c3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RJdGVtOyB9
CisgICAgYm9vbCBpc0NoZWNrYm94T3JSYWRpbygpIGNvbnN0IHsgcmV0dXJuIGlzQ2hlY2tib3go
KSB8fCBpc1JhZGlvQnV0dG9uKCk7IH0KKyAgICBib29sIGlzU2Nyb2xsVmlldygpIGNvbnN0IHsg
cmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpTY3JvbGxBcmVhOyB9Cisg
ICAgYm9vbCBpc0NhbnZhcygpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2li
aWxpdHlSb2xlOjpDYW52YXM7IH0KKyAgICBib29sIGlzUG9wVXBCdXR0b24oKSBjb25zdCB7IHJl
dHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6UG9wVXBCdXR0b247IH0KKyAg
ICBib29sIGlzQ29sb3JXZWxsKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNz
aWJpbGl0eVJvbGU6OkNvbG9yV2VsbDsgfQorICAgIGJvb2wgaXNTcGxpdHRlcigpIGNvbnN0IHsg
cmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpTcGxpdHRlcjsgfQorICAg
IGJvb2wgaXNUb29sYmFyKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJp
bGl0eVJvbGU6OlRvb2xiYXI7IH0KKyAgICBib29sIGlzU3VtbWFyeSgpIGNvbnN0IHsgcmV0dXJu
IHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpTdW1tYXJ5OyB9CisKICAgICB2aXJ0
dWFsIGJvb2wgaXNCbG9ja3F1b3RlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc0xh
bmRtYXJrKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBpc0NvbG9yV2VsbCgpIGNvbnN0
ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNSYW5nZUNvbnRyb2woKSBjb25zdCA9IDA7CiAgICAg
dmlydHVhbCBib29sIGlzTWV0ZXIoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBib29sIGlzU3Bs
aXR0ZXIoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBib29sIGlzVG9vbGJhcigpIGNvbnN0ID0g
MDsKICAgICB2aXJ0dWFsIGJvb2wgaXNTdHlsZUZvcm1hdEdyb3VwKCkgY29uc3QgPSAwOwogICAg
IHZpcnR1YWwgYm9vbCBpc0ZpZ3VyZUVsZW1lbnQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBi
b29sIGlzS2V5Ym9hcmRGb2N1c2FibGUoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBib29sIGlz
U3VtbWFyeSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNPdXRwdXQoKSBjb25zdCA9
IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNDaGVja2VkKCkgY29uc3QgPSAwOwpAQCAtNTk5LDcg
KzYxNSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaGFzSGlnaGxpZ2h0aW5nKCkgY29u
c3QgPSAwOwogCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRGF0ZXRpbWVBdHRyaWJ1dGUoKSBj
b25zdCA9IDA7Ci0gICAgdmlydHVhbCBjb25zdCBBdG9tU3RyaW5nJiBkYXRldGltZUF0dHJpYnV0
ZVZhbHVlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIGRhdGV0aW1lQXR0cmlidXRl
VmFsdWUoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0Rm9jdXNBdHRyaWJ1
dGUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGNhblNldFRleHRSYW5nZUF0dHJpYnV0
ZXMoKSBjb25zdCA9IDA7CkBAIC02NjYsOCArNjgyLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwg
QWNjZXNzaWJpbGl0eVNvcnREaXJlY3Rpb24gc29ydERpcmVjdGlvbigpIGNvbnN0ID0gMDsKICAg
ICB2aXJ0dWFsIGJvb2wgY2FudmFzSGFzRmFsbGJhY2tDb250ZW50KCkgY29uc3QgPSAwOwogICAg
IHZpcnR1YWwgYm9vbCBzdXBwb3J0c1JhbmdlVmFsdWUoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVh
bCBjb25zdCBBdG9tU3RyaW5nJiBpZGVudGlmaWVyQXR0cmlidXRlKCkgY29uc3QgPSAwOwotICAg
IHZpcnR1YWwgY29uc3QgQXRvbVN0cmluZyYgbGlua1JlbFZhbHVlKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgU3RyaW5nIGlkZW50aWZpZXJBdHRyaWJ1dGUoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBTdHJpbmcgbGlua1JlbFZhbHVlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBj
bGFzc0xpc3QoVmVjdG9yPFN0cmluZz4mKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBBY2Nlc3Np
YmlsaXR5Q3VycmVudFN0YXRlIGN1cnJlbnRTdGF0ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFs
IFN0cmluZyBjdXJyZW50VmFsdWUoKSBjb25zdCA9IDA7CkBAIC03OTEsOCArODA3LDggQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgVVJMIHVybCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFZpc2li
bGVTZWxlY3Rpb24gc2VsZWN0aW9uKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIHNl
bGVjdGVkVGV4dCgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGNvbnN0IEF0b21TdHJpbmcmIGFj
Y2Vzc0tleSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGNvbnN0IFN0cmluZyYgYWN0aW9uVmVy
YigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBhY2Nlc3NLZXkoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBTdHJpbmcgYWN0aW9uVmVyYigpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFs
IFdpZGdldCogd2lkZ2V0KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgV2lkZ2V0KiB3aWRnZXRG
b3JBdHRhY2htZW50VmlldygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFBhZ2UqIHBhZ2UoKSBj
b25zdCA9IDA7CkBAIC04MDUsNyArODIxLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5n
IGxhbmd1YWdlKCkgY29uc3QgPSAwOwogICAgIC8vIDEtYmFzZWQsIHRvIG1hdGNoIHRoZSBhcmlh
LWxldmVsIHNwZWMuCiAgICAgdmlydHVhbCB1bnNpZ25lZCBoaWVyYXJjaGljYWxMZXZlbCgpIGNv
bnN0ID0gMDsKLQorICAgIHZpcnR1YWwgYm9vbCBpc0lubGluZVRleHQoKSBjb25zdCA9IDA7Cisg
ICAgCiAgICAgdmlydHVhbCB2b2lkIHNldEZvY3VzZWQoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBzZXRTZWxlY3RlZFRleHQoY29uc3QgU3RyaW5nJikgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBzZXRTZWxlY3RlZFRleHRSYW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYpID0gMDsKQEAgLTg2
MCw2ICs4NzcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGhhc0F0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgY29uc3QgQXRvbVN0cmlu
ZyYgZ2V0QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdCA9IDA7CiAgICAgdmly
dHVhbCBib29sIGhhc1RhZ05hbWUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIFN0cmluZyB0YWdOYW1lKCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCBWaXNp
YmxlUG9zaXRpb25SYW5nZSB2aXNpYmxlUG9zaXRpb25SYW5nZSgpIGNvbnN0ID0gMDsKICAgICB2
aXJ0dWFsIFZpc2libGVQb3NpdGlvblJhbmdlIHZpc2libGVQb3NpdGlvblJhbmdlRm9yTGluZSh1
bnNpZ25lZCkgY29uc3QgPSAwOwpAQCAtOTMwLDYgKzk0OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIGJvb2wgaXNWYWx1ZUF1dG9maWxsZWQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29s
IGlzVmFsdWVBdXRvZmlsbEF2YWlsYWJsZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIEF1dG9G
aWxsQnV0dG9uVHlwZSB2YWx1ZUF1dG9maWxsQnV0dG9uVHlwZSgpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIGJvb2wgaGFzQVJJQVZhbHVlTm93KCkgY29uc3QgPSAwOwogCiAgICAgLy8gVXNlZCBi
eSBhbiBBUklBIHRyZWUgdG8gZ2V0IGFsbCBpdHMgcm93cy4KICAgICB2aXJ0dWFsIHZvaWQgYXJp
YVRyZWVSb3dzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpID0gMDsKQEAgLTEwMjcsNyAr
MTA0Niw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNBbm9ueW1vdXNNYXRoT3BlcmF0
b3IoKSBjb25zdCA9IDA7CiAKICAgICAvLyBNdWx0aXNjcmlwdHMgY29tcG9uZW50cy4KLSAgICB0
eXBlZGVmIFZlY3RvcjxzdGQ6OnBhaXI8QVhDb3JlT2JqZWN0KiwgQVhDb3JlT2JqZWN0Kj4+IEFj
Y2Vzc2liaWxpdHlNYXRoTXVsdGlzY3JpcHRQYWlyczsKKyAgICB0eXBlZGVmIHN0ZDo6cGFpcjxB
WENvcmVPYmplY3QqLCBBWENvcmVPYmplY3QqPiBBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0
UGFpcjsKKyAgICB0eXBlZGVmIFZlY3RvcjxBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0UGFp
cj4gQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdFBhaXJzOwogICAgIHZpcnR1YWwgdm9pZCBt
YXRoUHJlc2NyaXB0cyhBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0UGFpcnMmKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIG1hdGhQb3N0c2NyaXB0cyhBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2Ny
aXB0UGFpcnMmKSA9IDA7CiAKQEAgLTEwNjQsNiArMTA4NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIFN0cmluZyBkZXNjcmlwdGlvbkF0dHJpYnV0ZVZhbHVlKCkgY29uc3QgPSAwOwogICAgIHZp
cnR1YWwgU3RyaW5nIGhlbHBUZXh0QXR0cmlidXRlVmFsdWUoKSBjb25zdCA9IDA7CiAgICAgdmly
dHVhbCBTdHJpbmcgdGl0bGVBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IGJvb2wgaGFzQXBwbGVQREZBbm5vdGF0aW9uQXR0cmlidXRlKCkgY29uc3QgPSAwOwogI2VuZGlm
CiAKICNpZiBQTEFURk9STShDT0NPQSkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC0xMDgw
LDYgKzExMDEsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRJc0lnbm9yZWRGcm9t
UGFyZW50RGF0YShBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkRnJvbVBhcmVudERhdGEmKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGNsZWFySXNJZ25vcmVkRnJvbVBhcmVudERhdGEoKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHNldElzSWdub3JlZEZyb21QYXJlbnREYXRhRm9yQ2hpbGQoQVhDb3JlT2Jq
ZWN0KikgPSAwOworICAgIAorICAgIHZpcnR1YWwgdWludDY0X3Qgc2Vzc2lvbklEKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgU3RyaW5nIGRvY3VtZW50VVJJKCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgU3RyaW5nIGRvY3VtZW50RW5jb2RpbmcoKSBjb25zdCA9IDA7CiB9OwogCiBuYW1lc3Bh
Y2UgQWNjZXNzaWJpbGl0eSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAppbmRleCA4OTQ5NmJkNjQ3ZTAy
MWYzODBmMGU1OGFlZmI3MGE5MjU1NTE0NzRhLi5iN2RhNmFhY2QzZDYyYTY2NTI0ZTVjMWFlMmYz
OGZiNjFjNjZhMWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKQEAgLTE1NzAsNyArMTU3MCw3IEBA
IFN0cmluZyBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzZWxlY3RlZFRleHQoKSBjb25zdAog
ICAgIHJldHVybiBkb0FYU3RyaW5nRm9yUmFuZ2UoZG9jdW1lbnRCYXNlZFNlbGVjdGVkVGV4dFJh
bmdlKCkpOwogfQogCi1jb25zdCBBdG9tU3RyaW5nJiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjphY2Nlc3NLZXkoKSBjb25zdAorU3RyaW5nIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFj
Y2Vzc0tleSgpIGNvbnN0CiB7CiAgICAgTm9kZSogbm9kZSA9IG1fcmVuZGVyZXItPm5vZGUoKTsK
ICAgICBpZiAoIWlzPEVsZW1lbnQ+KG5vZGUpKQpAQCAtMzU4Miw3ICszNTgyLDcgQEAgdm9pZCBB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp0YWJDaGlsZHJlbihBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5WZWN0b3ImIHJlc3VsdCkKICAgICB9CiB9CiAgICAgCi1jb25zdCBTdHJpbmcmIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OmFjdGlvblZlcmIoKSBjb25zdAorU3RyaW5nIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OmFjdGlvblZlcmIoKSBjb25zdAogewogI2lmICFQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIC8vIEZJWE1FOiBOZWVkIHRvIGFkZCB2ZXJicyBmb3Igc2VsZWN0IGVsZW1l
bnRzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QuaAppbmRleCAzOTYxNzMwNGNlYTM3MGY0OTdiZjM0YzVmNTE0NzIx
MDE3ZGJiNzAyLi4zZjM0Njc4M2U0OGE5NWQ4M2I5ZDMzZTEwZGNmM2I5ZDUwYjg5Y2IwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3QuaApAQCAtMTM0LDggKzEzNCw4IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgdGV4
dCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGludCB0ZXh0TGVuZ3RoKCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgU3RyaW5nIHNlbGVjdGVkVGV4dCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIGNvbnN0IEF0
b21TdHJpbmcmIGFjY2Vzc0tleSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIGNvbnN0IFN0cmluZyYg
YWN0aW9uVmVyYigpIGNvbnN0IG92ZXJyaWRlOworICAgIFN0cmluZyBhY2Nlc3NLZXkoKSBjb25z
dCBvdmVycmlkZTsKKyAgICBTdHJpbmcgYWN0aW9uVmVyYigpIGNvbnN0IG92ZXJyaWRlOwogICAg
IFdpZGdldCogd2lkZ2V0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgV2lkZ2V0KiB3aWRnZXRGb3JB
dHRhY2htZW50VmlldygpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBnZXREb2N1
bWVudExpbmtzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbi5oIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbi5oCmluZGV4
IDAwZTkwYTI5M2Y0NzllMDg5NTc2ZDljYThhNDE2MzEyMWU0MWI0MTkuLjFhMmRjOTY4NzUzY2Uz
NGJjNGExZmQ1ZTMyYTI0MzY2Mzc4NWJiNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTcGluQnV0dG9uLmgKQEAgLTQ2LDcgKzQ2LDYg
QEAgcHJpdmF0ZToKICAgICBBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbigpOwogCiAgICAgQWNjZXNz
aWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQWNjZXNzaWJp
bGl0eVJvbGU6OlNwaW5CdXR0b247IH0KLSAgICBib29sIGlzU3BpbkJ1dHRvbigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICBib29sIGlzTmF0aXZlU3BpbkJ1dHRvbigpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB2b2lkIGFkZENoaWxkcmVuKCkgb3Zl
cnJpZGU7CiAgICAgTGF5b3V0UmVjdCBlbGVtZW50UmVjdCgpIGNvbnN0IG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJs
ZUh5cGVybGluay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRB
Y2Nlc3NpYmxlSHlwZXJsaW5rLmNwcAppbmRleCBiMGY3M2U2YTRmYWEwY2ZjZWM4MTQ3M2I2ODU1
NTMwOTdlNDAxZTY4Li5hNDYxYzFmYWRhZjhjNzI1ZGNkYjRmZTllNWY4MDBmYjhiNjgyOWVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3Np
YmxlSHlwZXJsaW5rLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9X
ZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5rLmNwcApAQCAtOTgsNyArOTgsNyBAQCBzdGF0aWMgY29u
c3QgZ2NoYXIqIHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtBY3Rpb25HZXRLZXliaW5kaW5nKEF0
a0FjdGlvbiogYWN0aQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGF1dG8mIGNvcmVP
YmplY3QgPSB3ZWJraXRBY2Nlc3NpYmxlR2V0QWNjZXNzaWJpbGl0eU9iamVjdChhY2Nlc3NpYmxl
SHlwZXJsaW5rLT5wcml2LT5oeXBlcmxpbmtJbXBsKTsKLSAgICBhY2Nlc3NpYmxlSHlwZXJsaW5r
LT5wcml2LT5hY3Rpb25LZXlCaW5kaW5nID0gY29yZU9iamVjdC5hY2Nlc3NLZXkoKS5zdHJpbmco
KS51dGY4KCk7CisgICAgYWNjZXNzaWJsZUh5cGVybGluay0+cHJpdi0+YWN0aW9uS2V5QmluZGlu
ZyA9IGNvcmVPYmplY3QuYWNjZXNzS2V5KCkudXRmOCgpOwogICAgIHJldHVybiBhY2Nlc3NpYmxl
SHlwZXJsaW5rLT5wcml2LT5hY3Rpb25LZXlCaW5kaW5nLmRhdGEoKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVy
ZmFjZUFjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRB
Y2Nlc3NpYmxlSW50ZXJmYWNlQWN0aW9uLmNwcAppbmRleCA1ODE3NTliMmYzNTUzNzFhN2FkN2E2
MmQ2NWI3NGExYjRjMmJmYWMzLi5jYTIzYWRmZDcxYTcyNmVmNTgwYzJhMjJiYWViZjllZmEzZTM1
Y2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRB
Y2Nlc3NpYmxlSW50ZXJmYWNlQWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlQWN0aW9uLmNwcApAQCAtODMsNyAr
ODMsNyBAQCBzdGF0aWMgY29uc3QgZ2NoYXIqIHdlYmtpdEFjY2Vzc2libGVBY3Rpb25HZXRLZXli
aW5kaW5nKEF0a0FjdGlvbiogYWN0aW9uLCBnaW50KQogICAgIHJldHVyblZhbElmV2ViS2l0QWNj
ZXNzaWJsZUlzSW52YWxpZChhY2Nlc3NpYmxlLCBudWxscHRyKTsKIAogICAgIC8vIEZJWE1FOiBD
b25zdHJ1Y3QgYSBwcm9wZXIga2V5YmluZGluZyBzdHJpbmcuCi0gICAgcmV0dXJuIHdlYmtpdEFj
Y2Vzc2libGVDYWNoZUFuZFJldHVybkF0a1Byb3BlcnR5KGFjY2Vzc2libGUsIEF0a0NhY2hlZEFj
dGlvbktleUJpbmRpbmcsIGNvcmUoYWN0aW9uKS0+YWNjZXNzS2V5KCkuc3RyaW5nKCkudXRmOCgp
KTsKKyAgICByZXR1cm4gd2Via2l0QWNjZXNzaWJsZUNhY2hlQW5kUmV0dXJuQXRrUHJvcGVydHko
YWNjZXNzaWJsZSwgQXRrQ2FjaGVkQWN0aW9uS2V5QmluZGluZywgY29yZShhY3Rpb24pLT5hY2Nl
c3NLZXkoKS51dGY4KCkpOwogfQogCiBzdGF0aWMgY29uc3QgZ2NoYXIqIHdlYmtpdEFjY2Vzc2li
bGVBY3Rpb25HZXROYW1lKEF0a0FjdGlvbiogYWN0aW9uLCBnaW50KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRy
ZWUuY3BwCmluZGV4IDVkM2ZjYmExZjg4Mzc2YWExZTQyMmZmN2U0NTNkMmYzZmIyYTc3YzAuLjNj
MzkxOGE3MGE3OTJlZGNiODI0MWIwMmFiNWE0Mjk5NTQ3YWQ4NTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVk
VHJlZS5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCBSZWZQdHI8QVhJc29sYXRlZE9iamVjdD4gQVhJ
c29sYXRlZFRyZWU6OnJvb3ROb2RlKCkKICAgICByZXR1cm4gbm9kZUZvcklEKG1fcm9vdE5vZGVJ
RCk7CiB9CiAKLXZvaWQgQVhJc29sYXRlZFRyZWU6OnNldFJvb3QoUmVmPEFYSXNvbGF0ZWRPYmpl
Y3Q+JiByb290KQordm9pZCBBWElzb2xhdGVkVHJlZTo6c2V0Um9vdE5vZGUoUmVmPEFYSXNvbGF0
ZWRPYmplY3Q+JiByb290KQogewogICAgIExvY2tIb2xkZXIgbG9ja2VyIHsgbV9jaGFuZ2VMb2dM
b2NrIH07CiAgICAgbV9yb290Tm9kZUlEID0gcm9vdC0+b2JqZWN0SUQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVl
LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVk
VHJlZS5oCmluZGV4IDMwN2NkOTFhMDdkMmM1ZjMwYjM3Y2Y3MWY4YzMxMjgyMTE5NDk1YmMuLjll
ZmIyMmJlZjE3Yjg0YzkxMjBlMDEzMTgyMjZiZjlhMDRhNmEzODggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRy
ZWUuaApAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmROb2RlQ2hhbmdl
cyhWZWN0b3I8UmVmPEFYSXNvbGF0ZWRPYmplY3Q+PiYpOwogICAgIHZvaWQgcmVtb3ZlTm9kZShB
WElEKTsKIAotICAgIHZvaWQgc2V0Um9vdChSZWY8QVhJc29sYXRlZE9iamVjdD4mKTsKKyAgICB2
b2lkIHNldFJvb3ROb2RlKFJlZjxBWElzb2xhdGVkT2JqZWN0PiYpOwogICAgIHZvaWQgc2V0Rm9j
dXNlZE5vZGVJRChBWElEKTsKICAgICAKICAgICAvLyBDYWxsIG9uIEFYIHRocmVhZApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRl
ZFRyZWVOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVl
L0FYSXNvbGF0ZWRUcmVlTm9kZS5jcHAKaW5kZXggODcwNGY5NDE3ODAxODEzYzM0YTE1YTIwOGQ0
NzA1OTdhNDQwZGNlMi4uNzAyYzY3YmQ5ZGZmMzBkNjY1N2IyNGRlNDQ2NGRlODY1MThmODQyMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJ
c29sYXRlZFRyZWVOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lz
b2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZU5vZGUuY3BwCkBAIC0zMiwyNCArMzIsMjQgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1BWElzb2xhdGVkT2JqZWN0OjpBWElzb2xhdGVkT2JqZWN0
KEFYQ29yZU9iamVjdCYgb2JqZWN0KQorQVhJc29sYXRlZE9iamVjdDo6QVhJc29sYXRlZE9iamVj
dChBWENvcmVPYmplY3QmIG9iamVjdCwgYm9vbCBpc1Jvb3QpCiAgICAgOiBtX2lkKG9iamVjdC5v
YmplY3RJRCgpKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgaW5pdGlhbGl6
ZUF0dHJpYnV0ZURhdGEob2JqZWN0KTsKKyAgICBpbml0aWFsaXplQXR0cmlidXRlRGF0YShvYmpl
Y3QsIGlzUm9vdCk7CiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIG1faW5pdGlhbGl6ZWQgPSB0
cnVlOwogI2VuZGlmCiB9CiAKLVJlZjxBWElzb2xhdGVkT2JqZWN0PiBBWElzb2xhdGVkT2JqZWN0
OjpjcmVhdGUoQVhDb3JlT2JqZWN0JiBvYmplY3QpCitSZWY8QVhJc29sYXRlZE9iamVjdD4gQVhJ
c29sYXRlZE9iamVjdDo6Y3JlYXRlKEFYQ29yZU9iamVjdCYgb2JqZWN0LCBib29sIGlzUm9vdCkK
IHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBWElzb2xhdGVkT2JqZWN0KG9iamVjdCkpOwor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFYSXNvbGF0ZWRPYmplY3Qob2JqZWN0LCBpc1Jvb3Qp
KTsKIH0KIAogQVhJc29sYXRlZE9iamVjdDo6fkFYSXNvbGF0ZWRPYmplY3QoKSA9IGRlZmF1bHQ7
CiAKLXZvaWQgQVhJc29sYXRlZE9iamVjdDo6aW5pdGlhbGl6ZUF0dHJpYnV0ZURhdGEoQVhDb3Jl
T2JqZWN0JiBvYmplY3QpCit2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OmluaXRpYWxpemVBdHRyaWJ1
dGVEYXRhKEFYQ29yZU9iamVjdCYgb2JqZWN0LCBib29sIGlzUm9vdCkKIHsKICAgICBzZXRQcm9w
ZXJ0eShBWFByb3BlcnR5TmFtZTo6Qm91bmRpbmdCb3hSZWN0LCBvYmplY3QuYm91bmRpbmdCb3hS
ZWN0KCkpOwogICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpFbGVtZW50UmVjdCwgb2Jq
ZWN0LmVsZW1lbnRSZWN0KCkpOwpAQCAtNzEsNyArNzEsNDEgQEAgdm9pZCBBWElzb2xhdGVkT2Jq
ZWN0Ojppbml0aWFsaXplQXR0cmlidXRlRGF0YShBWENvcmVPYmplY3QmIG9iamVjdCkKICAgICBz
ZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6VGl0bGUsIG9iamVjdC50aXRsZUF0dHJpYnV0ZVZh
bHVlKCkuaXNvbGF0ZWRDb3B5KCkpOwogICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpE
ZXNjcmlwdGlvbiwgb2JqZWN0LmRlc2NyaXB0aW9uQXR0cmlidXRlVmFsdWUoKS5pc29sYXRlZENv
cHkoKSk7CiAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkhlbHBUZXh0LCBvYmplY3Qu
aGVscFRleHRBdHRyaWJ1dGVWYWx1ZSgpLmlzb2xhdGVkQ29weSgpKTsKLQorICAgIHNldFByb3Bl
cnR5KEFYUHJvcGVydHlOYW1lOjpJc1NlYXJjaEZpZWxkLCBvYmplY3QuaXNTZWFyY2hGaWVsZCgp
KTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNNZWRpYVRpbWVsaW5lLCBvYmpl
Y3QuaXNNZWRpYVRpbWVsaW5lKCkpOworICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJ
c01lbnVSZWxhdGVkLCBvYmplY3QuaXNNZW51UmVsYXRlZCgpKTsKKyAgICBzZXRQcm9wZXJ0eShB
WFByb3BlcnR5TmFtZTo6SXNNZW51LCBvYmplY3QuaXNNZW51KCkpOworICAgIHNldFByb3BlcnR5
KEFYUHJvcGVydHlOYW1lOjpJc01lbnVCYXIsIG9iamVjdC5pc01lbnVCYXIoKSk7CisgICAgc2V0
UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OklzTWVudUJ1dHRvbiwgb2JqZWN0LmlzTWVudUJ1dHRv
bigpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNNZW51SXRlbSwgb2JqZWN0
LmlzTWVudUl0ZW0oKSk7CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OklzSW5wdXRJ
bWFnZSwgb2JqZWN0LmlzSW5wdXRJbWFnZSgpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5
TmFtZTo6SXNQcm9ncmVzc0luZGljYXRvciwgb2JqZWN0LmlzUHJvZ3Jlc3NJbmRpY2F0b3IoKSk7
CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OklzU2xpZGVyLCBvYmplY3QuaXNTbGlk
ZXIoKSk7CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OklzQ29udHJvbCwgb2JqZWN0
LmlzQ29udHJvbCgpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNMaXN0LCBv
YmplY3QuaXNMaXN0KCkpOworICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc1RhYmxl
LCBvYmplY3QuaXNUYWJsZSgpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNU
YWJsZVJvdywgb2JqZWN0LmlzVGFibGVSb3coKSk7CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0
eU5hbWU6OklzVGFibGVDb2x1bW4sIG9iamVjdC5pc1RhYmxlQ29sdW1uKCkpOworICAgIHNldFBy
b3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc1RhYmxlQ2VsbCwgb2JqZWN0LmlzVGFibGVDZWxsKCkp
OworICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc0ZpZWxkc2V0LCBvYmplY3QuaXNG
aWVsZHNldCgpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNHcm91cCwgb2Jq
ZWN0LmlzR3JvdXAoKSk7CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OklzQVJJQVRy
ZWVHcmlkUm93LCBvYmplY3QuaXNBUklBVHJlZUdyaWRSb3coKSk7CisgICAgc2V0UHJvcGVydHko
QVhQcm9wZXJ0eU5hbWU6OklzTWVudUxpc3QsIG9iamVjdC5pc01lbnVMaXN0KCkpOworICAgIHNl
dFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc01lbnVMaXN0UG9wdXAsIG9iamVjdC5pc01lbnVM
aXN0UG9wdXAoKSk7CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OklzTWVudUxpc3RP
cHRpb24sIG9iamVjdC5pc01lbnVMaXN0T3B0aW9uKCkpOworICAgIHNldFByb3BlcnR5KEFYUHJv
cGVydHlOYW1lOjpJc1RleHRDb250cm9sLCBvYmplY3QuaXNUZXh0Q29udHJvbCgpKTsKKyAgICBz
ZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNCdXR0b24sIG9iamVjdC5pc0J1dHRvbigpKTsK
KyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNSYW5nZUNvbnRyb2wsIG9iamVjdC5p
c1JhbmdlQ29udHJvbCgpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNTdHls
ZUZvcm1hdEdyb3VwLCBvYmplY3QuaXNTdHlsZUZvcm1hdEdyb3VwKCkpOworICAgIHNldFByb3Bl
cnR5KEFYUHJvcGVydHlOYW1lOjpJc091dHB1dCwgb2JqZWN0LmlzT3V0cHV0KCkpOworICAgIHNl
dFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpTdXBwb3J0c0RhdGV0aW1lQXR0cmlidXRlLCBvYmpl
Y3Quc3VwcG9ydHNEYXRldGltZUF0dHJpYnV0ZSgpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3Bl
cnR5TmFtZTo6RGF0ZXRpbWVBdHRyaWJ1dGVWYWx1ZSwgb2JqZWN0LmRhdGV0aW1lQXR0cmlidXRl
VmFsdWUoKSk7CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkNhblNldEZvY3VzQXR0
cmlidXRlLCBvYmplY3QuY2FuU2V0Rm9jdXNBdHRyaWJ1dGUoKSk7CisgICAgc2V0UHJvcGVydHko
QVhQcm9wZXJ0eU5hbWU6OkNhblNldFRleHRSYW5nZUF0dHJpYnV0ZXMsIG9iamVjdC5jYW5TZXRU
ZXh0UmFuZ2VBdHRyaWJ1dGVzKCkpOworICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpD
YW5TZXRWYWx1ZUF0dHJpYnV0ZSwgb2JqZWN0LmNhblNldFZhbHVlQXR0cmlidXRlKCkpOworICAg
IHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpDYW5TZXROdW1lcmljVmFsdWUsIG9iamVjdC5j
YW5TZXROdW1lcmljVmFsdWUoKSk7CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6Oklz
UGFzc3dvcmRGaWVsZCwgb2JqZWN0LmlzUGFzc3dvcmRGaWVsZCgpKTsKKyAgICBzZXRQcm9wZXJ0
eShBWFByb3BlcnR5TmFtZTo6SXNIZWFkaW5nLCBvYmplY3QuaXNIZWFkaW5nKCkpOwogICAgIHNl
dFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc0NoZWNrZWQsIG9iamVjdC5pc0NoZWNrZWQoKSk7
CiAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OklzRW5hYmxlZCwgb2JqZWN0LmlzRW5h
YmxlZCgpKTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNTZWxlY3RlZCwgb2Jq
ZWN0LmlzU2VsZWN0ZWQoKSk7CkBAIC05Miw3ICsxMjYsMTY0IEBAIHZvaWQgQVhJc29sYXRlZE9i
amVjdDo6aW5pdGlhbGl6ZUF0dHJpYnV0ZURhdGEoQVhDb3JlT2JqZWN0JiBvYmplY3QpCiAgICAg
c2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OklzVmlzaWJsZSwgb2JqZWN0LmlzVmlzaWJsZSgp
KTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNDb2xsYXBzZWQsIG9iamVjdC5p
c0NvbGxhcHNlZCgpKTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNTZWxlY3Rl
ZE9wdGlvbkFjdGl2ZSwgb2JqZWN0LmlzU2VsZWN0ZWRPcHRpb25BY3RpdmUoKSk7CisgICAgc2V0
UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkNhblNldFNlbGVjdGVkQXR0cmlidXRlLCBvYmplY3Qu
Y2FuU2V0U2VsZWN0ZWRBdHRyaWJ1dGUoKSk7CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5h
bWU6OkNhblNldFNlbGVjdGVkQ2hpbGRyZW5BdHRyaWJ1dGUsIG9iamVjdC5jYW5TZXRTZWxlY3Rl
ZENoaWxkcmVuQXR0cmlidXRlKCkpOworICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpD
YW5TZXRFeHBhbmRlZEF0dHJpYnV0ZSwgb2JqZWN0LmNhblNldEV4cGFuZGVkQXR0cmlidXRlKCkp
OworICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc1Nob3dpbmdWYWxpZGF0aW9uTWVz
c2FnZSwgb2JqZWN0LmlzU2hvd2luZ1ZhbGlkYXRpb25NZXNzYWdlKCkpOworICAgIHNldFByb3Bl
cnR5KEFYUHJvcGVydHlOYW1lOjpWYWxpZGF0aW9uTWVzc2FnZSwgb2JqZWN0LnZhbGlkYXRpb25N
ZXNzYWdlKCkpOworICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpCbG9ja3F1b3RlTGV2
ZWwsIG9iamVjdC5ibG9ja3F1b3RlTGV2ZWwoKSk7CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0
eU5hbWU6OkhlYWRpbmdMZXZlbCwgb2JqZWN0LmhlYWRpbmdMZXZlbCgpKTsKKyAgICBzZXRQcm9w
ZXJ0eShBWFByb3BlcnR5TmFtZTo6VGFibGVMZXZlbCwgb2JqZWN0LnRhYmxlTGV2ZWwoKSk7Cisg
ICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkFjY2Vzc2liaWxpdHlCdXR0b25TdGF0ZSwg
c3RhdGljX2Nhc3Q8aW50PihvYmplY3QuY2hlY2tib3hPclJhZGlvVmFsdWUoKSkpOworICAgIHNl
dFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpWYWx1ZURlc2NyaXB0aW9uLCBvYmplY3QudmFsdWVE
ZXNjcmlwdGlvbigpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6VmFsdWVGb3JS
YW5nZSwgb2JqZWN0LnZhbHVlRm9yUmFuZ2UoKSk7CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0
eU5hbWU6Ok1heFZhbHVlRm9yUmFuZ2UsIG9iamVjdC5tYXhWYWx1ZUZvclJhbmdlKCkpOworICAg
IHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpNaW5WYWx1ZUZvclJhbmdlLCBvYmplY3QubWlu
VmFsdWVGb3JSYW5nZSgpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6U2VsZWN0
ZWRSYWRpb0J1dHRvbiwgb2JqZWN0LnNlbGVjdGVkUmFkaW9CdXR0b24oKSk7CisgICAgc2V0UHJv
cGVydHkoQVhQcm9wZXJ0eU5hbWU6OlNlbGVjdGVkVGFiSXRlbSwgb2JqZWN0LnNlbGVjdGVkVGFi
SXRlbSgpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6TGF5b3V0Q291bnQsIG9i
amVjdC5sYXlvdXRDb3VudCgpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6RXN0
aW1hdGVkTG9hZGluZ1Byb2dyZXNzLCBvYmplY3QuZXN0aW1hdGVkTG9hZGluZ1Byb2dyZXNzKCkp
OworICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpTdXBwb3J0c0FSSUFPd25zLCBvYmpl
Y3Quc3VwcG9ydHNBUklBT3ducygpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6
SXNBY3RpdmVEZXNjZW5kYW50T2ZGb2N1c2VkQ29udGFpbmVyLCBvYmplY3QuaXNBY3RpdmVEZXNj
ZW5kYW50T2ZGb2N1c2VkQ29udGFpbmVyKCkpOworICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlO
YW1lOjpIYXNQb3B1cCwgb2JqZWN0Lmhhc1BvcHVwKCkpOworICAgIHNldFByb3BlcnR5KEFYUHJv
cGVydHlOYW1lOjpQb3B1cFZhbHVlLCBvYmplY3QucG9wdXBWYWx1ZSgpKTsKKyAgICBzZXRQcm9w
ZXJ0eShBWFByb3BlcnR5TmFtZTo6UHJlc3NlZElzUHJlc2VudCwgb2JqZWN0LnByZXNzZWRJc1By
ZXNlbnQoKSk7CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkFSSUFJc011bHRpbGlu
ZSwgb2JqZWN0LmFyaWFJc011bHRpbGluZSgpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5
TmFtZTo6SW52YWxpZFN0YXR1cywgb2JqZWN0LmludmFsaWRTdGF0dXMoKSk7CisgICAgc2V0UHJv
cGVydHkoQVhQcm9wZXJ0eU5hbWU6OlN1cHBvcnRzRXhwYW5kZWQsIG9iamVjdC5zdXBwb3J0c0V4
cGFuZGVkKCkpOworICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpTb3J0RGlyZWN0aW9u
LCBzdGF0aWNfY2FzdDxpbnQ+KG9iamVjdC5zb3J0RGlyZWN0aW9uKCkpKTsKKyAgICBzZXRQcm9w
ZXJ0eShBWFByb3BlcnR5TmFtZTo6Q2FudmFzSGFzRmFsbGJhY2tDb250ZW50LCBvYmplY3QuY2Fu
dmFzSGFzRmFsbGJhY2tDb250ZW50KCkpOworICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1l
OjpTdXBwb3J0c1JhbmdlVmFsdWUsIG9iamVjdC5zdXBwb3J0c1JhbmdlVmFsdWUoKSk7CisgICAg
c2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OklkZW50aWZpZXJBdHRyaWJ1dGUsIG9iamVjdC5p
ZGVudGlmaWVyQXR0cmlidXRlKCkpOworICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpM
aW5rUmVsVmFsdWUsIG9iamVjdC5saW5rUmVsVmFsdWUoKSk7CisgICAgc2V0UHJvcGVydHkoQVhQ
cm9wZXJ0eU5hbWU6OkN1cnJlbnRTdGF0ZSwgc3RhdGljX2Nhc3Q8aW50PihvYmplY3QuY3VycmVu
dFN0YXRlKCkpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6Q3VycmVudFZhbHVl
LCBvYmplY3QuY3VycmVudFZhbHVlKCkpOworICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1l
OjpTdXBwb3J0c0N1cnJlbnQsIG9iamVjdC5zdXBwb3J0c0N1cnJlbnQoKSk7CisgICAgc2V0UHJv
cGVydHkoQVhQcm9wZXJ0eU5hbWU6OktleVNob3J0Y3V0c1ZhbHVlLCBvYmplY3Qua2V5U2hvcnRj
dXRzVmFsdWUoKSk7CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OlN1cHBvcnRzU2V0
U2l6ZSwgb2JqZWN0LnN1cHBvcnRzU2V0U2l6ZSgpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3Bl
cnR5TmFtZTo6U3VwcG9ydHNQb3NJblNldCwgb2JqZWN0LnN1cHBvcnRzUG9zSW5TZXQoKSk7Cisg
ICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OlNldFNpemUsIG9iamVjdC5zZXRTaXplKCkp
OworICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpQb3NJblNldCwgb2JqZWN0LnBvc0lu
U2V0KCkpOworICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpTdXBwb3J0c0FSSUFEcm9w
cGluZywgb2JqZWN0LnN1cHBvcnRzQVJJQURyb3BwaW5nKCkpOworICAgIHNldFByb3BlcnR5KEFY
UHJvcGVydHlOYW1lOjpTdXBwb3J0c0FSSUFEcmFnZ2luZywgb2JqZWN0LnN1cHBvcnRzQVJJQURy
YWdnaW5nKCkpOworICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc0FSSUFHcmFiYmVk
LCBvYmplY3QuaXNBUklBR3JhYmJlZCgpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFt
ZTo6QVJJQURyb3BFZmZlY3RzLCBvYmplY3QuZGV0ZXJtaW5lQVJJQURyb3BFZmZlY3RzKCkpOwor
ICAgIHNldE9iamVjdFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpUaXRsZVVJRWxlbWVudCwgb2Jq
ZWN0LnRpdGxlVUlFbGVtZW50KCkpOworICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpF
eHBvc2VzVGl0bGVVSUVsZW1lbnQsIG9iamVjdC5leHBvc2VzVGl0bGVVSUVsZW1lbnQoKSk7Cisg
ICAgc2V0T2JqZWN0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OlZlcnRpY2FsU2Nyb2xsQmFyLCBv
YmplY3Quc2Nyb2xsQmFyKEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbjo6VmVydGljYWwpKTsKKyAg
ICBzZXRPYmplY3RQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SG9yaXpvbnRhbFNjcm9sbEJhciwg
b2JqZWN0LnNjcm9sbEJhcihBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb246Okhvcml6b250YWwpKTsK
KyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6QVJJQVJvbGVBdHRyaWJ1dGUsIHN0YXRp
Y19jYXN0PGludD4ob2JqZWN0LmFyaWFSb2xlQXR0cmlidXRlKCkpKTsKKyAgICBzZXRQcm9wZXJ0
eShBWFByb3BlcnR5TmFtZTo6Q29tcHV0ZWRMYWJlbCwgb2JqZWN0LmNvbXB1dGVkTGFiZWwoKSk7
CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OlBsYWNlaG9sZGVyVmFsdWUsIG9iamVj
dC5wbGFjZWhvbGRlclZhbHVlKCkpOworICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpF
eHBhbmRlZFRleHRWYWx1ZSwgb2JqZWN0LmV4cGFuZGVkVGV4dFZhbHVlKCkpOworICAgIHNldFBy
b3BlcnR5KEFYUHJvcGVydHlOYW1lOjpTdXBwb3J0c0V4cGFuZGVkVGV4dFZhbHVlLCBvYmplY3Qu
c3VwcG9ydHNFeHBhbmRlZFRleHRWYWx1ZSgpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5
TmFtZTo6U3VwcG9ydHNQcmVzc0FjdGlvbiwgb2JqZWN0LnN1cHBvcnRzUHJlc3NBY3Rpb24oKSk7
CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkNsaWNrUG9pbnQsIG9iamVjdC5jbGlj
a1BvaW50KCkpOworICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpDb21wdXRlZFJvbGVT
dHJpbmcsIG9iamVjdC5jb21wdXRlZFJvbGVTdHJpbmcoKSk7CisgICAgc2V0UHJvcGVydHkoQVhQ
cm9wZXJ0eU5hbWU6OklzVmFsdWVBdXRvZmlsbGVkLCBvYmplY3QuaXNWYWx1ZUF1dG9maWxsZWQo
KSk7CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OklzVmFsdWVBdXRvZmlsbEF2YWls
YWJsZSwgb2JqZWN0LmlzVmFsdWVBdXRvZmlsbEF2YWlsYWJsZSgpKTsKKyAgICBzZXRQcm9wZXJ0
eShBWFByb3BlcnR5TmFtZTo6VmFsdWVBdXRvZmlsbEJ1dHRvblR5cGUsIHN0YXRpY19jYXN0PGlu
dD4ob2JqZWN0LnZhbHVlQXV0b2ZpbGxCdXR0b25UeXBlKCkpKTsKKyAgICBzZXRQcm9wZXJ0eShB
WFByb3BlcnR5TmFtZTo6VVJMLCBvYmplY3QudXJsKCkpOworICAgIHNldFByb3BlcnR5KEFYUHJv
cGVydHlOYW1lOjpBY2Nlc3NLZXksIG9iamVjdC5hY2Nlc3NLZXkoKSk7CisgICAgc2V0UHJvcGVy
dHkoQVhQcm9wZXJ0eU5hbWU6OkFjdGlvblZlcmIsIG9iamVjdC5hY3Rpb25WZXJiKCkpOworICAg
IHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpSZWFkT25seVZhbHVlLCBvYmplY3QucmVhZE9u
bHlWYWx1ZSgpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6QXV0b0NvbXBsZXRl
VmFsdWUsIG9iamVjdC5hdXRvQ29tcGxldGVWYWx1ZSgpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFBy
b3BlcnR5TmFtZTo6U3BlYWtBcywgb2JqZWN0LnNwZWFrQXNQcm9wZXJ0eSgpKTsKKyAgICBzZXRQ
cm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6Q2FyZXRCcm93c2luZ0VuYWJsZWQsIG9iamVjdC5jYXJl
dEJyb3dzaW5nRW5hYmxlZCgpKTsKKyAgICBzZXRPYmplY3RQcm9wZXJ0eShBWFByb3BlcnR5TmFt
ZTo6Rm9jdXNhYmxlQW5jZXN0b3IsIG9iamVjdC5mb2N1c2FibGVBbmNlc3RvcigpKTsKKyAgICBz
ZXRPYmplY3RQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6RWRpdGFibGVBbmNlc3Rvciwgb2JqZWN0
LmVkaXRhYmxlQW5jZXN0b3IoKSk7CisgICAgc2V0T2JqZWN0UHJvcGVydHkoQVhQcm9wZXJ0eU5h
bWU6OkhpZ2hlc3RFZGl0YWJsZUFuY2VzdG9yLCBvYmplY3QuaGlnaGVzdEVkaXRhYmxlQW5jZXN0
b3IoKSk7CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6Ok9yaWVudGF0aW9uLCBzdGF0
aWNfY2FzdDxpbnQ+KG9iamVjdC5vcmllbnRhdGlvbigpKSk7CisgICAgc2V0UHJvcGVydHkoQVhQ
cm9wZXJ0eU5hbWU6OkhpZXJhcmNoaWNhbExldmVsLCBvYmplY3QuaGllcmFyY2hpY2FsTGV2ZWwo
KSk7CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6Okxhbmd1YWdlLCBvYmplY3QubGFu
Z3VhZ2UoKSk7CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkNhbkhhdmVTZWxlY3Rl
ZENoaWxkcmVuLCBvYmplY3QuY2FuSGF2ZVNlbGVjdGVkQ2hpbGRyZW4oKSk7CisgICAgc2V0UHJv
cGVydHkoQVhQcm9wZXJ0eU5hbWU6Okhhc0FSSUFWYWx1ZU5vdywgb2JqZWN0Lmhhc0FSSUFWYWx1
ZU5vdygpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6VGFnTmFtZSwgb2JqZWN0
LnRhZ05hbWUoKSk7CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OlN1cHBvcnRzTGl2
ZVJlZ2lvbiwgb2JqZWN0LnN1cHBvcnRzTGl2ZVJlZ2lvbigpKTsKKyAgICBzZXRQcm9wZXJ0eShB
WFByb3BlcnR5TmFtZTo6SXNJbnNpZGVMaXZlUmVnaW9uLCBvYmplY3QuaXNJbnNpZGVMaXZlUmVn
aW9uKCkpOworICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpMaXZlUmVnaW9uU3RhdHVz
LCBvYmplY3QubGl2ZVJlZ2lvblN0YXR1cygpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5
TmFtZTo6TGl2ZVJlZ2lvblJlbGV2YW50LCBvYmplY3QubGl2ZVJlZ2lvblJlbGV2YW50KCkpOwor
ICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpMaXZlUmVnaW9uQXRvbWljLCBvYmplY3Qu
bGl2ZVJlZ2lvbkF0b21pYygpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNC
dXN5LCBvYmplY3QuaXNCdXN5KCkpOworICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJ
c0lubGluZVRleHQsIG9iamVjdC5pc0lubGluZVRleHQoKSk7CisgICAgaWYgKG9iamVjdC5pc1Rl
eHRDb250cm9sKCkpCisgICAgICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpUZXh0TGVu
Z3RoLCBvYmplY3QudGV4dExlbmd0aCgpKTsKKworICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciBzZWxlY3RlZENoaWxkcmVuOworICAgIG9iamVjdC5zZWxlY3RlZENoaWxkcmVuKHNlbGVj
dGVkQ2hpbGRyZW4pOworICAgIHNldE9iamVjdFZlY3RvclByb3BlcnR5KEFYUHJvcGVydHlOYW1l
OjpTZWxlY3RlZENoaWxkcmVuLCBzZWxlY3RlZENoaWxkcmVuKTsKKworICAgIEFjY2Vzc2liaWxp
dHlDaGlsZHJlblZlY3RvciB2aXNpYmxlQ2hpbGRyZW47CisgICAgb2JqZWN0LnZpc2libGVDaGls
ZHJlbih2aXNpYmxlQ2hpbGRyZW4pOworICAgIHNldE9iamVjdFZlY3RvclByb3BlcnR5KEFYUHJv
cGVydHlOYW1lOjpWaXNpYmxlQ2hpbGRyZW4sIHZpc2libGVDaGlsZHJlbik7CisKKyAgICBBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgdGFiQ2hpbGRyZW47CisgICAgb2JqZWN0LnRhYkNoaWxk
cmVuKHRhYkNoaWxkcmVuKTsKKyAgICBzZXRPYmplY3RWZWN0b3JQcm9wZXJ0eShBWFByb3BlcnR5
TmFtZTo6VGFiQ2hpbGRyZW4sIHRhYkNoaWxkcmVuKTsKKworICAgIEFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciBhcmlhVHJlZVJvd3M7CisgICAgb2JqZWN0LmFyaWFUcmVlUm93cyhhcmlhVHJl
ZVJvd3MpOworICAgIHNldE9iamVjdFZlY3RvclByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpBUklB
VHJlZVJvd3MsIGFyaWFUcmVlUm93cyk7CisKKyAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3IgYXJpYVRyZWVJdGVtRGlzY2xvc2VkUm93czsKKyAgICBvYmplY3QuYXJpYVRyZWVJdGVtRGlz
Y2xvc2VkUm93cyhhcmlhVHJlZUl0ZW1EaXNjbG9zZWRSb3dzKTsKKyAgICBzZXRPYmplY3RWZWN0
b3JQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6QVJJQVRyZWVJdGVtRGlzY2xvc2VkUm93cywgYXJp
YVRyZWVJdGVtRGlzY2xvc2VkUm93cyk7CisKKyAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3IgYXJpYVRyZWVJdGVtQ29udGVudDsKKyAgICBvYmplY3QuYXJpYVRyZWVJdGVtQ29udGVudChh
cmlhVHJlZUl0ZW1Db250ZW50KTsKKyAgICBzZXRPYmplY3RWZWN0b3JQcm9wZXJ0eShBWFByb3Bl
cnR5TmFtZTo6QVJJQVRyZWVJdGVtQ29udGVudCwgYXJpYVRyZWVJdGVtQ29udGVudCk7CisKKyAg
ICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgbGlua2VkVUlFbGVtZW50czsKKyAgICBvYmpl
Y3QubGlua2VkVUlFbGVtZW50cyhsaW5rZWRVSUVsZW1lbnRzKTsKKyAgICBzZXRPYmplY3RWZWN0
b3JQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6TGlua2VkVUlFbGVtZW50cywgbGlua2VkVUlFbGVt
ZW50cyk7CiAKKyAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgYXJpYUNvbnRyb2xzRWxl
bWVudHM7CisgICAgb2JqZWN0LmFyaWFDb250cm9sc0VsZW1lbnRzKGFyaWFDb250cm9sc0VsZW1l
bnRzKTsKKyAgICBzZXRPYmplY3RWZWN0b3JQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6QVJJQUNv
bnRyb2xzRWxlbWVudHMsIGFyaWFDb250cm9sc0VsZW1lbnRzKTsKKworICAgIEFjY2Vzc2liaWxp
dHlDaGlsZHJlblZlY3RvciBhcmlhRGV0YWlsc0VsZW1lbnRzOworICAgIG9iamVjdC5hcmlhRGV0
YWlsc0VsZW1lbnRzKGFyaWFEZXRhaWxzRWxlbWVudHMpOworICAgIHNldE9iamVjdFZlY3RvclBy
b3BlcnR5KEFYUHJvcGVydHlOYW1lOjpBUklBRGV0YWlsc0VsZW1lbnRzLCBhcmlhRGV0YWlsc0Vs
ZW1lbnRzKTsKKworICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBhcmlhRXJyb3JNZXNz
YWdlRWxlbWVudHM7CisgICAgb2JqZWN0LmFyaWFFcnJvck1lc3NhZ2VFbGVtZW50cyhhcmlhRXJy
b3JNZXNzYWdlRWxlbWVudHMpOworICAgIHNldE9iamVjdFZlY3RvclByb3BlcnR5KEFYUHJvcGVy
dHlOYW1lOjpBUklBRXJyb3JNZXNzYWdlRWxlbWVudHMsIGFyaWFFcnJvck1lc3NhZ2VFbGVtZW50
cyk7CisKKyAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgYXJpYUZsb3dUb0VsZW1lbnRz
OworICAgIG9iamVjdC5hcmlhRmxvd1RvRWxlbWVudHMoYXJpYUZsb3dUb0VsZW1lbnRzKTsKKyAg
ICBzZXRPYmplY3RWZWN0b3JQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6QVJJQUZsb3dUb0VsZW1l
bnRzLCBhcmlhRmxvd1RvRWxlbWVudHMpOworCisgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yIGFyaWFPd25zRWxlbWVudHM7CisgICAgb2JqZWN0LmFyaWFPd25zRWxlbWVudHMoYXJpYU93
bnNFbGVtZW50cyk7CisgICAgc2V0T2JqZWN0VmVjdG9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6
OkFSSUFPd25zRWxlbWVudHMsIGFyaWFPd25zRWxlbWVudHMpOworCisgICAgVmVjdG9yPEFjY2Vz
c2liaWxpdHlUZXh0PiB0ZXh0czsKKyAgICBvYmplY3QuYWNjZXNzaWJpbGl0eVRleHQodGV4dHMp
OworICAgIFZlY3RvcjxBY2Nlc3NpYmlsaXR5SXNvbGF0ZWRUcmVlVGV4dD4gaXNvbGF0ZWRUZXh0
czsKKyAgICBpc29sYXRlZFRleHRzLnJlc2VydmVDYXBhY2l0eSh0ZXh0cy5zaXplKCkpOworICAg
IGZvciAoYXV0byB0ZXh0IDogdGV4dHMpIHsKKyAgICAgICAgQWNjZXNzaWJpbGl0eUlzb2xhdGVk
VHJlZVRleHQgaXNvbGF0ZWRUZXh0OworICAgICAgICBpc29sYXRlZFRleHQudGV4dCA9IHRleHQu
dGV4dDsKKyAgICAgICAgaXNvbGF0ZWRUZXh0LnRleHRTb3VyY2UgPSB0ZXh0LnRleHRTb3VyY2U7
CisgICAgICAgIGZvciAoYXV0byBvYmplY3QgOiB0ZXh0LnRleHRFbGVtZW50cykKKyAgICAgICAg
ICAgIGlzb2xhdGVkVGV4dC50ZXh0RWxlbWVudHMuYXBwZW5kKG9iamVjdC0+b2JqZWN0SUQoKSk7
CisgICAgICAgIGlzb2xhdGVkVGV4dHMudW5jaGVja2VkQXBwZW5kKGlzb2xhdGVkVGV4dCk7Cisg
ICAgfQorICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpBY2Nlc3NpYmlsaXR5VGV4dCwg
aXNvbGF0ZWRUZXh0cyk7CisKKyAgICBWZWN0b3I8U3RyaW5nPiBjbGFzc0xpc3Q7CisgICAgb2Jq
ZWN0LmNsYXNzTGlzdChjbGFzc0xpc3QpOworICAgIFN0cmluZyBjb21iaW5lZENsYXNzTGlzdDsK
KyAgICBmb3IgKGF1dG8gaXQgPSBjbGFzc0xpc3QuYmVnaW4oKSwgZW5kID0gY2xhc3NMaXN0LmVu
ZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgY29tYmluZWRDbGFzc0xpc3QuYXBwZW5k
KCppdCk7CisgICAgICAgIGNvbWJpbmVkQ2xhc3NMaXN0LmFwcGVuZCgiICIpOworICAgIH0KKyAg
ICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6Q2xhc3NMaXN0LCBjb21iaW5lZENsYXNzTGlz
dCk7CisgICAgCisgICAgaW50IHIsIGcsIGI7CisgICAgb2JqZWN0LmNvbG9yVmFsdWUociwgZywg
Yik7CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkNvbG9yVmFsdWUsIENvbG9yKHIs
IGcsIGIpKTsKKyAgICAKICAgICBpZiAoYm9vbCBpc01hdGhFbGVtZW50ID0gb2JqZWN0LmlzTWF0
aEVsZW1lbnQoKSkgewogICAgICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNNYXRo
RWxlbWVudCwgaXNNYXRoRWxlbWVudCk7CiAgICAgICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlO
YW1lOjpJc0Fub255bW91c01hdGhPcGVyYXRvciwgb2JqZWN0LmlzQW5vbnltb3VzTWF0aE9wZXJh
dG9yKCkpOwpAQCAtMTI2LDcgKzMxNyw0MSBAQCB2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OmluaXRp
YWxpemVBdHRyaWJ1dGVEYXRhKEFYQ29yZU9iamVjdCYgb2JqZWN0KQogICAgICAgICBzZXRPYmpl
Y3RQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6TWF0aEJhc2VPYmplY3QsIG9iamVjdC5tYXRoQmFz
ZU9iamVjdCgpKTsKICAgICAgICAgc2V0T2JqZWN0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6Ok1h
dGhTdWJzY3JpcHRPYmplY3QsIG9iamVjdC5tYXRoU3Vic2NyaXB0T2JqZWN0KCkpOwogICAgICAg
ICBzZXRPYmplY3RQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6TWF0aFN1cGVyc2NyaXB0T2JqZWN0
LCBvYmplY3QubWF0aFN1cGVyc2NyaXB0T2JqZWN0KCkpOworICAgICAgICBzZXRNYXRoc2NyaXB0
cyhBWFByb3BlcnR5TmFtZTo6TWF0aFByZXNjcmlwdHMsIG9iamVjdCk7CisgICAgICAgIHNldE1h
dGhzY3JpcHRzKEFYUHJvcGVydHlOYW1lOjpNYXRoUG9zdHNjcmlwdHMsIG9iamVjdCk7CisgICAg
fQorICAgIAorICAgIGlmIChpc1Jvb3QpIHsKKyAgICAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0
eU5hbWU6OlByZXZlbnRLZXlib2FyZERPTUV2ZW50RGlzcGF0Y2gsIG9iamVjdC5wcmV2ZW50S2V5
Ym9hcmRET01FdmVudERpc3BhdGNoKCkpOworICAgICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5
TmFtZTo6U2Vzc2lvbklELCBvYmplY3Quc2Vzc2lvbklEKCkpOworICAgICAgICBzZXRQcm9wZXJ0
eShBWFByb3BlcnR5TmFtZTo6RG9jdW1lbnRVUkksIG9iamVjdC5kb2N1bWVudFVSSSgpKTsKKyAg
ICAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkRvY3VtZW50RW5jb2RpbmcsIG9iamVj
dC5kb2N1bWVudEVuY29kaW5nKCkpOworICAgIH0KK30KKwordm9pZCBBWElzb2xhdGVkT2JqZWN0
OjpzZXRNYXRoc2NyaXB0cyhBWFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEFYQ29yZU9iamVj
dCYgb2JqZWN0KQoreworICAgIEFjY2Vzc2liaWxpdHlNYXRoTXVsdGlzY3JpcHRQYWlycyBwYWly
czsKKyAgICBpZiAocHJvcGVydHlOYW1lID09IEFYUHJvcGVydHlOYW1lOjpNYXRoUHJlc2NyaXB0
cykKKyAgICAgICAgb2JqZWN0Lm1hdGhQcmVzY3JpcHRzKHBhaXJzKTsKKyAgICBlbHNlIGlmIChw
cm9wZXJ0eU5hbWUgPT0gQVhQcm9wZXJ0eU5hbWU6Ok1hdGhQb3N0c2NyaXB0cykKKyAgICAgICAg
b2JqZWN0Lm1hdGhQb3N0c2NyaXB0cyhwYWlycyk7CisgICAgCisgICAgc2l6ZV90IG1hdGhTaXpl
ID0gcGFpcnMuc2l6ZSgpOworICAgIGlmICghbWF0aFNpemUpCisgICAgICAgIHJldHVybjsKKyAg
ICAKKyAgICBWZWN0b3I8QWNjZXNzaWJpbGl0eUlzb2xhdGVkVHJlZU1hdGhNdWx0aXNjcmlwdFBh
aXI+IGlkUGFpcnM7CisgICAgaWRQYWlycy5yZXNlcnZlQ2FwYWNpdHkobWF0aFNpemUpOworICAg
IGZvciAoYXV0byBtYXRoUGFpciA6IHBhaXJzKSB7CisgICAgICAgIEFjY2Vzc2liaWxpdHlJc29s
YXRlZFRyZWVNYXRoTXVsdGlzY3JpcHRQYWlyIGlkUGFpcjsKKyAgICAgICAgaWYgKG1hdGhQYWly
LmZpcnN0KQorICAgICAgICAgICAgaWRQYWlyLmZpcnN0ID0gbWF0aFBhaXIuZmlyc3QtPm9iamVj
dElEKCk7CisgICAgICAgIGlmIChtYXRoUGFpci5zZWNvbmQpCisgICAgICAgICAgICBpZFBhaXIu
c2Vjb25kID0gbWF0aFBhaXIuc2Vjb25kLT5vYmplY3RJRCgpOworICAgICAgICBpZFBhaXJzLnVu
Y2hlY2tlZEFwcGVuZChpZFBhaXIpOwogICAgIH0KKyAgICBzZXRQcm9wZXJ0eShwcm9wZXJ0eU5h
bWUsIGlkUGFpcnMpOwogfQogCiB2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OnNldE9iamVjdFByb3Bl
cnR5KEFYUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgQVhDb3JlT2JqZWN0KiBvYmplY3QpCkBA
IC0xMzcsNiArMzYyLDE5IEBAIHZvaWQgQVhJc29sYXRlZE9iamVjdDo6c2V0T2JqZWN0UHJvcGVy
dHkoQVhQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBBWENvcmVPYmplCiAgICAgICAgIHNldFBy
b3BlcnR5KHByb3BlcnR5TmFtZSwgbnVsbHB0ciwgdHJ1ZSk7CiB9CiAKK3ZvaWQgQVhJc29sYXRl
ZE9iamVjdDo6c2V0T2JqZWN0VmVjdG9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGNoaWxkcmVuKQoreworICAgIHNpemVf
dCBjaGlsZHJlblNpemUgPSBjaGlsZHJlbi5zaXplKCk7CisgICAgaWYgKCFjaGlsZHJlblNpemUp
CisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBWZWN0b3I8QVhJRD4gY2hpbGRyZW5WZWN0b3I7
CisgICAgY2hpbGRyZW5WZWN0b3IucmVzZXJ2ZUNhcGFjaXR5KGNoaWxkcmVuU2l6ZSk7CisgICAg
Zm9yIChhdXRvIGNoaWxkT2JqZWN0IDogY2hpbGRyZW4pCisgICAgICAgIGNoaWxkcmVuVmVjdG9y
LnVuY2hlY2tlZEFwcGVuZChjaGlsZE9iamVjdC0+b2JqZWN0SUQoKSk7CisgICAgc2V0UHJvcGVy
dHkocHJvcGVydHlOYW1lLCBjaGlsZHJlblZlY3Rvcik7Cit9CisKIHZvaWQgQVhJc29sYXRlZE9i
amVjdDo6c2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBBdHRyaWJ1dGVW
YWx1ZVZhcmlhbnQmJiB2YWx1ZSwgYm9vbCBzaG91bGRSZW1vdmUpCiB7CiAgICAgQVNTRVJUKCFt
X2luaXRpYWxpemVkKTsKQEAgLTE2MCw2ICszOTgsMTIgQEAgdm9pZCBBWElzb2xhdGVkT2JqZWN0
OjpzZXRQYXJlbnQoQVhJRCBwYXJlbnQpCiAgICAgbV9wYXJlbnQgPSBwYXJlbnQ7CiB9CiAKK2Jv
b2wgQVhJc29sYXRlZE9iamVjdDo6aXNEZXRhY2hlZCgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiB2b2lkIEFYSXNvbGF0ZWRPYmpl
Y3Q6OnNldFRyZWVJZGVudGlmaWVyKEFYSXNvbGF0ZWRUcmVlSUQgdHJlZUlkZW50aWZpZXIpCiB7
CiAgICAgbV90cmVlSWRlbnRpZmllciA9IHRyZWVJZGVudGlmaWVyOwpAQCAtMTgwLDYgKzQyNCw4
MyBAQCBjb25zdCBBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgQVhJ
c29sYXRlZE9iamVjdDo6Y2hpbGRyZW4oYm9vbAogICAgIHJldHVybiBtX2NoaWxkcmVuOwogfQog
Citib29sIEFYSXNvbGF0ZWRPYmplY3Q6OmlzRGV0YWNoZWRGcm9tUGFyZW50KCkKK3sKKyAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgQVhJc29s
YXRlZE9iamVjdDo6YWNjZXNzaWJpbGl0eVRleHQoVmVjdG9yPEFjY2Vzc2liaWxpdHlUZXh0PiYg
dGV4dHMpIGNvbnN0Cit7CisgICAgYXV0byBpc29sYXRlZFRleHRzID0gdmVjdG9yQXR0cmlidXRl
VmFsdWU8QWNjZXNzaWJpbGl0eUlzb2xhdGVkVHJlZVRleHQ+KEFYUHJvcGVydHlOYW1lOjpBY2Nl
c3NpYmlsaXR5VGV4dCk7CisgICAgZm9yIChhdXRvIGlzb2xhdGVkVGV4dCA6IGlzb2xhdGVkVGV4
dHMpIHsKKyAgICAgICAgQWNjZXNzaWJpbGl0eVRleHQgdGV4dChpc29sYXRlZFRleHQudGV4dCwg
aXNvbGF0ZWRUZXh0LnRleHRTb3VyY2UpOworICAgICAgICBmb3IgKGF1dG8gYXhJRCA6IGlzb2xh
dGVkVGV4dC50ZXh0RWxlbWVudHMpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIG9iamVjdCA9IHRy
ZWUoKS0+bm9kZUZvcklEKGF4SUQpKQorICAgICAgICAgICAgICAgIHRleHQudGV4dEVsZW1lbnRz
LmFwcGVuZChvYmplY3QpOworICAgICAgICB9CisgICAgICAgIHRleHRzLmFwcGVuZCh0ZXh0KTsK
KyAgICB9Cit9CisKK3ZvaWQgQVhJc29sYXRlZE9iamVjdDo6Y2xhc3NMaXN0KFZlY3RvcjxTdHJp
bmc+JiBsaXN0KSBjb25zdAoreworICAgIFN0cmluZyBjbGFzc0xpc3QgPSBzdHJpbmdBdHRyaWJ1
dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6Q2xhc3NMaXN0KTsKKyAgICBsaXN0LmFwcGVuZFZlY3Rv
cihjbGFzc0xpc3Quc3BsaXQoIiAiKSk7Cit9CisKK3VpbnQ2NF90IEFYSXNvbGF0ZWRPYmplY3Q6
OnNlc3Npb25JRCgpIGNvbnN0Cit7CisgICAgaWYgKGF1dG8gcm9vdCA9IHRyZWUoKS0+cm9vdE5v
ZGUoKSkKKyAgICAgICAgcmV0dXJuIHJvb3QtPnVpbnQ2NEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVy
dHlOYW1lOjpTZXNzaW9uSUQpOworICAgIHJldHVybiAwOworfQorCitTdHJpbmcgQVhJc29sYXRl
ZE9iamVjdDo6ZG9jdW1lbnRVUkkoKSBjb25zdAoreworICAgIGlmIChhdXRvIHJvb3QgPSB0cmVl
KCktPnJvb3ROb2RlKCkpCisgICAgICAgIHJldHVybiByb290LT5zdHJpbmdBdHRyaWJ1dGVWYWx1
ZShBWFByb3BlcnR5TmFtZTo6RG9jdW1lbnRVUkkpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30K
KworYm9vbCBBWElzb2xhdGVkT2JqZWN0OjpwcmV2ZW50S2V5Ym9hcmRET01FdmVudERpc3BhdGNo
KCkgY29uc3QKK3sKKyAgICBpZiAoYXV0byByb290ID0gdHJlZSgpLT5yb290Tm9kZSgpKQorICAg
ICAgICByZXR1cm4gcm9vdC0+Ym9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpQcmV2
ZW50S2V5Ym9hcmRET01FdmVudERpc3BhdGNoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1N0
cmluZyBBWElzb2xhdGVkT2JqZWN0Ojpkb2N1bWVudEVuY29kaW5nKCkgY29uc3QKK3sKKyAgICBp
ZiAoYXV0byByb290ID0gdHJlZSgpLT5yb290Tm9kZSgpKQorICAgICAgICByZXR1cm4gcm9vdC0+
c3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkRvY3VtZW50RW5jb2RpbmcpOwor
ICAgIHJldHVybiBTdHJpbmcoKTsKK30KKwordm9pZCBBWElzb2xhdGVkT2JqZWN0OjppbnNlcnRN
YXRoUGFpcnMoVmVjdG9yPEFjY2Vzc2liaWxpdHlJc29sYXRlZFRyZWVNYXRoTXVsdGlzY3JpcHRQ
YWlyPiYgaXNvbGF0ZWRQYWlycywgQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdFBhaXJzJiBw
YWlycykKK3sKKyAgICBmb3IgKGF1dG8gcGFpciA6IGlzb2xhdGVkUGFpcnMpIHsKKyAgICAgICAg
QWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdFBhaXIgcHJlc2NyaXB0UGFpcjsKKyAgICAgICAg
aWYgKGF1dG8qIGNvcmVPYmplY3QgPSB0cmVlKCktPm5vZGVGb3JJRChwYWlyLmZpcnN0KS5nZXQo
KSkKKyAgICAgICAgICAgIHByZXNjcmlwdFBhaXIuZmlyc3QgPSBjb3JlT2JqZWN0OworICAgICAg
ICBpZiAoYXV0byogY29yZU9iamVjdCA9IHRyZWUoKS0+bm9kZUZvcklEKHBhaXIuc2Vjb25kKS5n
ZXQoKSkKKyAgICAgICAgICAgIHByZXNjcmlwdFBhaXIuc2Vjb25kID0gY29yZU9iamVjdDsKKyAg
ICAgICAgcGFpcnMuYXBwZW5kKHByZXNjcmlwdFBhaXIpOworICAgIH0KK30KKwordm9pZCBBWElz
b2xhdGVkT2JqZWN0OjptYXRoUHJlc2NyaXB0cyhBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0
UGFpcnMmIHBhaXJzKQoreworICAgIGF1dG8gaXNvbGF0ZWRQYWlycyA9IHZlY3RvckF0dHJpYnV0
ZVZhbHVlPEFjY2Vzc2liaWxpdHlJc29sYXRlZFRyZWVNYXRoTXVsdGlzY3JpcHRQYWlyPihBWFBy
b3BlcnR5TmFtZTo6TWF0aFByZXNjcmlwdHMpOworICAgIGluc2VydE1hdGhQYWlycyhpc29sYXRl
ZFBhaXJzLCBwYWlycyk7Cit9CisKK3ZvaWQgQVhJc29sYXRlZE9iamVjdDo6bWF0aFBvc3RzY3Jp
cHRzKEFjY2Vzc2liaWxpdHlNYXRoTXVsdGlzY3JpcHRQYWlycyYgcGFpcnMpCit7CisgICAgYXV0
byBpc29sYXRlZFBhaXJzID0gdmVjdG9yQXR0cmlidXRlVmFsdWU8QWNjZXNzaWJpbGl0eUlzb2xh
dGVkVHJlZU1hdGhNdWx0aXNjcmlwdFBhaXI+KEFYUHJvcGVydHlOYW1lOjpNYXRoUG9zdHNjcmlw
dHMpOworICAgIGluc2VydE1hdGhQYWlycyhpc29sYXRlZFBhaXJzLCBwYWlycyk7Cit9CisKIEFY
Q29yZU9iamVjdCogQVhJc29sYXRlZE9iamVjdDo6Zm9jdXNlZFVJRWxlbWVudCgpIGNvbnN0CiB7
CiAgICAgaWYgKGF1dG8gZm9jdXNlZEVsZW1lbnQgPSB0cmVlKCktPmZvY3VzZWRVSUVsZW1lbnQo
KSkKQEAgLTE5Miw2ICs1MTMsMTkgQEAgQVhDb3JlT2JqZWN0KiBBWElzb2xhdGVkT2JqZWN0Ojpw
YXJlbnRPYmplY3RVbmlnbm9yZWQoKSBjb25zdAogICAgIHJldHVybiB0cmVlKCktPm5vZGVGb3JJ
RChwYXJlbnQoKSkuZ2V0KCk7CiB9CiAKK0FYQ29yZU9iamVjdCogQVhJc29sYXRlZE9iamVjdDo6
c2Nyb2xsQmFyKEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKK3sKKyAgICBy
ZXR1cm4gb2JqZWN0QXR0cmlidXRlVmFsdWUob3JpZW50YXRpb24gPT0gQWNjZXNzaWJpbGl0eU9y
aWVudGF0aW9uOjpWZXJ0aWNhbCA/IEFYUHJvcGVydHlOYW1lOjpWZXJ0aWNhbFNjcm9sbEJhciA6
IEFYUHJvcGVydHlOYW1lOjpIb3Jpem9udGFsU2Nyb2xsQmFyKTsKK30KKwordm9pZCBBWElzb2xh
dGVkT2JqZWN0Ojpjb2xvclZhbHVlKGludCYgciwgaW50JiBnLCBpbnQmIGIpIGNvbnN0Cit7Cisg
ICAgYXV0byBjb2xvciA9IGNvbG9yQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkNvbG9y
VmFsdWUpOworICAgIHIgPSBjb2xvci5yZWQoKTsKKyAgICBnID0gY29sb3IuZ3JlZW4oKTsKKyAg
ICBiID0gY29sb3IuYmx1ZSgpOworfQorCiBBWENvcmVPYmplY3QqIEFYSXNvbGF0ZWRPYmplY3Q6
OmFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKIHsKICAg
ICBpZiAoIXJlbGF0aXZlRnJhbWUoKS5jb250YWlucyhwb2ludCkpCkBAIC0yMTAsNiArNTQ0LDE1
IEBAIEFYSXNvbGF0ZWRUcmVlKiBBWElzb2xhdGVkT2JqZWN0Ojp0cmVlKCkgY29uc3QKICAgICBy
ZXR1cm4gbV9jYWNoZWRUcmVlLmdldCgpOwogfQogCitJbnRQb2ludCBBWElzb2xhdGVkT2JqZWN0
OjppbnRQb2ludEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgY29u
c3QKK3sKKyAgICBhdXRvIHZhbHVlID0gbV9hdHRyaWJ1dGVNYXAuZ2V0KHByb3BlcnR5TmFtZSk7
CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24odmFsdWUsCisgICAgICAgIFtdIChJbnRQb2ludCYg
dHlwZWRWYWx1ZSkgeyByZXR1cm4gdHlwZWRWYWx1ZTsgfSwKKyAgICAgICAgW10gKGF1dG8mKSB7
IHJldHVybiBJbnRQb2ludCgpOyB9CisgICAgKTsKK30KKwogQVhDb3JlT2JqZWN0KiBBWElzb2xh
dGVkT2JqZWN0OjpvYmplY3RBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUpIGNvbnN0CiB7CiAgICAgYXV0byB2YWx1ZSA9IG1fYXR0cmlidXRlTWFwLmdldChwcm9wZXJ0
eU5hbWUpOwpAQCAtMjMxLDYgKzU3NCw2MiBAQCBUIEFYSXNvbGF0ZWRPYmplY3Q6OnJlY3RBdHRy
aWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIGNvbnN0CiAgICAgKTsKIH0K
IAordGVtcGxhdGU8dHlwZW5hbWUgVD4KK1ZlY3RvcjxUPiBBWElzb2xhdGVkT2JqZWN0Ojp2ZWN0
b3JBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIGNvbnN0Cit7Cisg
ICAgYXV0byB2YWx1ZSA9IG1fYXR0cmlidXRlTWFwLmdldChwcm9wZXJ0eU5hbWUpOworICAgIHJl
dHVybiBXVEY6OnN3aXRjaE9uKHZhbHVlLAorICAgICAgICBbXSAoVmVjdG9yPFQ+JiB0eXBlZFZh
bHVlKSB7IHJldHVybiB0eXBlZFZhbHVlOyB9LAorICAgICAgICBbXSAoYXV0byYpIHsgcmV0dXJu
IFZlY3RvcjxUPigpOyB9CisgICAgKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK09wdGlv
blNldDxUPiBBWElzb2xhdGVkT2JqZWN0OjpvcHRpb25TZXRBdHRyaWJ1dGVWYWx1ZShBWFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUpIGNvbnN0Cit7CisgICAgYXV0byB2YWx1ZSA9IG1fYXR0cmli
dXRlTWFwLmdldChwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKHZhbHVl
LAorICAgICAgICBbXSAoVCYgdHlwZWRWYWx1ZSkgeyByZXR1cm4gdHlwZWRWYWx1ZTsgfSwKKyAg
ICAgICAgW10gKGF1dG8mKSB7IHJldHVybiBPcHRpb25TZXQ8VD4oKTsgfQorICAgICk7Cit9CisK
K3VpbnQ2NF90IEFYSXNvbGF0ZWRPYmplY3Q6OnVpbnQ2NEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSkgY29uc3QKK3sKKyAgICBhdXRvIHZhbHVlID0gbV9hdHRyaWJ1
dGVNYXAuZ2V0KHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24odmFsdWUs
CisgICAgICAgIFtdICh1aW50NjRfdCYgdHlwZWRWYWx1ZSkgeyByZXR1cm4gdHlwZWRWYWx1ZTsg
fSwKKyAgICAgICAgW10gKGF1dG8mKSB7IHJldHVybiAwOyB9CisgICAgKTsKK30KKworVVJMIEFY
SXNvbGF0ZWRPYmplY3Q6OnVybEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSkgY29uc3QKK3sKKyAgICBhdXRvIHZhbHVlID0gbV9hdHRyaWJ1dGVNYXAuZ2V0KHByb3Bl
cnR5TmFtZSk7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24odmFsdWUsCisgICAgICAgIFtdIChV
UkwmIHR5cGVkVmFsdWUpIHsgcmV0dXJuIHR5cGVkVmFsdWU7IH0sCisgICAgICAgIFtdIChhdXRv
JikgeyByZXR1cm4gVVJMKCk7IH0KKyAgICApOworfQorCitDb2xvciBBWElzb2xhdGVkT2JqZWN0
Ojpjb2xvckF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgY29uc3QK
K3sKKyAgICBhdXRvIHZhbHVlID0gbV9hdHRyaWJ1dGVNYXAuZ2V0KHByb3BlcnR5TmFtZSk7Cisg
ICAgcmV0dXJuIFdURjo6c3dpdGNoT24odmFsdWUsCisgICAgICAgIFtdIChDb2xvciYgdHlwZWRW
YWx1ZSkgeyByZXR1cm4gdHlwZWRWYWx1ZTsgfSwKKyAgICAgICAgW10gKGF1dG8mKSB7IHJldHVy
biBDb2xvcigpOyB9CisgICAgKTsKK30KKworZmxvYXQgQVhJc29sYXRlZE9iamVjdDo6ZmxvYXRB
dHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIGNvbnN0Cit7CisgICAg
YXV0byB2YWx1ZSA9IG1fYXR0cmlidXRlTWFwLmdldChwcm9wZXJ0eU5hbWUpOworICAgIHJldHVy
biBXVEY6OnN3aXRjaE9uKHZhbHVlLAorICAgICAgICBbXSAoZmxvYXQmIHR5cGVkVmFsdWUpIHsg
cmV0dXJuIHR5cGVkVmFsdWU7IH0sCisgICAgICAgIFtdIChhdXRvJikgeyByZXR1cm4gMDsgfQor
ICAgICk7Cit9CisKIGRvdWJsZSBBWElzb2xhdGVkT2JqZWN0Ojpkb3VibGVBdHRyaWJ1dGVWYWx1
ZShBWFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIGNvbnN0CiB7CiAgICAgYXV0byB2YWx1ZSA9
IG1fYXR0cmlidXRlTWFwLmdldChwcm9wZXJ0eU5hbWUpOwpAQCAtMjc2LDYgKzY3NSwxNiBAQCBp
bnQgQVhJc29sYXRlZE9iamVjdDo6aW50QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lKSBjb25zdAogICAgICk7CiB9CiAKK3ZvaWQgQVhJc29sYXRlZE9iamVjdDo6Zmls
bENoaWxkcmVuVmVjdG9yRm9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGNoaWxkcmVuKSBjb25zdAoreworICAgIFZlY3Rv
cjxBWElEPiBjaGlsZElEcyA9IHZlY3RvckF0dHJpYnV0ZVZhbHVlPEFYSUQ+KHByb3BlcnR5TmFt
ZSk7CisgICAgY2hpbGRyZW4ucmVzZXJ2ZUNhcGFjaXR5KGNoaWxkSURzLnNpemUoKSk7CisgICAg
Zm9yIChhdXRvIGNoaWxkSUQgOiBjaGlsZElEcykgeworICAgICAgICBpZiAoYXV0byBvYmplY3Qg
PSB0cmVlKCktPm5vZGVGb3JJRChjaGlsZElEKSkKKyAgICAgICAgICAgIGNoaWxkcmVuLnVuY2hl
Y2tlZEFwcGVuZChvYmplY3QpOworICAgIH0KK30KKwogdm9pZCBBWElzb2xhdGVkT2JqZWN0Ojp1
cGRhdGVCYWNraW5nU3RvcmUoKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwpAQCAt
Mjg1LDYgKzY5NCwxMDQ5IEBAIHZvaWQgQVhJc29sYXRlZE9iamVjdDo6dXBkYXRlQmFja2luZ1N0
b3JlKCkKICAgICB9CiB9CiAKK2Jvb2wgQVhJc29sYXRlZE9iamVjdDo6cmVwbGFjZVRleHRJblJh
bmdlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFBsYWluVGV4dFJhbmdlJikKK3sKKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQVhJc29sYXRlZE9i
amVjdDo6aW5zZXJ0VGV4dChjb25zdCBTdHJpbmcmKQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBWElzb2xhdGVkT2JqZWN0OjpwcmVz
cygpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQor
Citib29sIEFYSXNvbGF0ZWRPYmplY3Q6OnBlcmZvcm1EZWZhdWx0QWN0aW9uKCkKK3sKKyAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQVhJc29s
YXRlZE9iamVjdDo6aXNBY2Nlc3NpYmlsaXR5T2JqZWN0KCkgY29uc3QKK3sKKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQVhJc29sYXRlZE9i
amVjdDo6aXNBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdCgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFYSXNvbGF0ZWRPYmpl
Y3Q6OmlzQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFYSXNvbGF0ZWRPYmpl
Y3Q6OmlzQWNjZXNzaWJpbGl0eVNjcm9sbGJhcigpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFYSXNvbGF0ZWRPYmplY3Q6
OmlzQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcoKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBWElzb2xhdGVkT2JqZWN0Ojpp
c0FjY2Vzc2liaWxpdHlTVkdSb290KCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQVhJc29sYXRlZE9iamVjdDo6aXNBY2Nl
c3NpYmlsaXR5U1ZHRWxlbWVudCgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFYSXNvbGF0ZWRPYmplY3Q6OmNvbnRhaW5z
VGV4dChTdHJpbmcqKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJl
dHVybiBmYWxzZTsKK30KKworYm9vbCBBWElzb2xhdGVkT2JqZWN0Ojppc0F0dGFjaG1lbnRFbGVt
ZW50KCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK2Jvb2wgQVhJc29sYXRlZE9iamVjdDo6aXNOYXRpdmVJbWFnZSgpIGNvbnN0Cit7
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29s
IEFYSXNvbGF0ZWRPYmplY3Q6OmlzSW1hZ2VCdXR0b24oKSBjb25zdAoreworICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBWElzb2xhdGVkT2Jq
ZWN0Ojppc0NvbnRhaW5lZEJ5UGFzc3dvcmRGaWVsZCgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitBWENvcmVPYmplY3QqIEFYSXNv
bGF0ZWRPYmplY3Q6OnBhc3N3b3JkRmllbGRPckNvbnRhaW5pbmdQYXNzd29yZEZpZWxkKCkKK3sK
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworYm9v
bCBBWElzb2xhdGVkT2JqZWN0Ojppc05hdGl2ZVRleHRDb250cm9sKCkgY29uc3QKK3sKKyAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQVhJc29s
YXRlZE9iamVjdDo6aXNOYXRpdmVMaXN0Qm94KCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQVhJc29sYXRlZE9iamVjdDo6
aXNMaXN0Qm94T3B0aW9uKCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQVhJc29sYXRlZE9iamVjdDo6aXNTbGlkZXJUaHVt
YigpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCitib29sIEFYSXNvbGF0ZWRPYmplY3Q6OmlzSW5wdXRTbGlkZXIoKSBjb25zdAorewor
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBB
WElzb2xhdGVkT2JqZWN0Ojppc0xhYmVsKCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQVhJc29sYXRlZE9iamVjdDo6aXNE
YXRhVGFibGUoKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVy
biBmYWxzZTsKK30KKworYm9vbCBBWElzb2xhdGVkT2JqZWN0Ojppc0ltYWdlTWFwTGluaygpIGNv
bnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQor
Citib29sIEFYSXNvbGF0ZWRPYmplY3Q6OmlzTmF0aXZlU3BpbkJ1dHRvbigpIGNvbnN0Cit7Cisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFY
SXNvbGF0ZWRPYmplY3Q6OmlzU3BpbkJ1dHRvblBhcnQoKSBjb25zdAoreworICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBWElzb2xhdGVkT2Jq
ZWN0Ojppc01vY2tPYmplY3QoKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBWElzb2xhdGVkT2JqZWN0Ojppc01lZGlhT2Jq
ZWN0KCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK2Jvb2wgQVhJc29sYXRlZE9iamVjdDo6aXNBUklBVGV4dENvbnRyb2woKSBjb25z
dAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwor
Ym9vbCBBWElzb2xhdGVkT2JqZWN0Ojppc05vbk5hdGl2ZVRleHRDb250cm9sKCkgY29uc3QKK3sK
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wg
QVhJc29sYXRlZE9iamVjdDo6aXNCbG9ja3F1b3RlKCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQVhJc29sYXRlZE9iamVj
dDo6aXNMYW5kbWFyaygpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
cmV0dXJuIGZhbHNlOworfQorCitib29sIEFYSXNvbGF0ZWRPYmplY3Q6OmlzRmlndXJlRWxlbWVu
dCgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCitib29sIEFYSXNvbGF0ZWRPYmplY3Q6OmlzS2V5Ym9hcmRGb2N1c2FibGUoKSBjb25z
dAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwor
Ym9vbCBBWElzb2xhdGVkT2JqZWN0Ojppc0hvdmVyZWQoKSBjb25zdAoreworICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBWElzb2xhdGVkT2Jq
ZWN0Ojppc0luZGV0ZXJtaW5hdGUoKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBWElzb2xhdGVkT2JqZWN0Ojppc0xvYWRl
ZCgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCitib29sIEFYSXNvbGF0ZWRPYmplY3Q6OmlzT25TY3JlZW4oKSBjb25zdAoreworICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBWElz
b2xhdGVkT2JqZWN0Ojppc09mZlNjcmVlbigpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFYSXNvbGF0ZWRPYmplY3Q6Omlz
UHJlc3NlZCgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJu
IGZhbHNlOworfQorCitib29sIEFYSXNvbGF0ZWRPYmplY3Q6OmlzVW52aXNpdGVkKCkgY29uc3QK
K3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jv
b2wgQVhJc29sYXRlZE9iamVjdDo6aXNMaW5rZWQoKSBjb25zdAoreworICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBWElzb2xhdGVkT2JqZWN0
Ojppc1Zpc2libGUoKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJl
dHVybiBmYWxzZTsKK30KKworYm9vbCBBWElzb2xhdGVkT2JqZWN0Ojppc0NvbGxhcHNlZCgpIGNv
bnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQor
Citib29sIEFYSXNvbGF0ZWRPYmplY3Q6OmlzU2VsZWN0ZWRPcHRpb25BY3RpdmUoKSBjb25zdAor
eworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9v
bCBBWElzb2xhdGVkT2JqZWN0OjpoYXNCb2xkRm9udCgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFYSXNvbGF0ZWRPYmpl
Y3Q6Omhhc0l0YWxpY0ZvbnQoKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBWElzb2xhdGVkT2JqZWN0OjpoYXNNaXNzcGVs
bGluZygpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZh
bHNlOworfQorCitib29sIEFYSXNvbGF0ZWRPYmplY3Q6Omhhc1BsYWluVGV4dCgpIGNvbnN0Cit7
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29s
IEFYSXNvbGF0ZWRPYmplY3Q6Omhhc1NhbWVGb250KFJlbmRlck9iamVjdCopIGNvbnN0Cit7Cisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFY
SXNvbGF0ZWRPYmplY3Q6Omhhc1NhbWVGb250Q29sb3IoUmVuZGVyT2JqZWN0KikgY29uc3QKK3sK
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wg
QVhJc29sYXRlZE9iamVjdDo6aGFzU2FtZVN0eWxlKFJlbmRlck9iamVjdCopIGNvbnN0Cit7Cisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFY
SXNvbGF0ZWRPYmplY3Q6OmlzU3RhdGljVGV4dCgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFYSXNvbGF0ZWRPYmplY3Q6
Omhhc1VuZGVybGluZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
cmV0dXJuIGZhbHNlOworfQorCitib29sIEFYSXNvbGF0ZWRPYmplY3Q6Omhhc0hpZ2hsaWdodGlu
ZygpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCitFbGVtZW50KiBBWElzb2xhdGVkT2JqZWN0OjplbGVtZW50KCkgY29uc3QKK3sKKyAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworTm9kZSog
QVhJc29sYXRlZE9iamVjdDo6bm9kZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK1JlbmRlck9iamVjdCogQVhJc29sYXRlZE9i
amVjdDo6cmVuZGVyZXIoKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IHJldHVybiBudWxscHRyOworfQorCitBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIEFYSXNv
bGF0ZWRPYmplY3Q6OmRlZmF1bHRPYmplY3RJbmNsdXNpb24oKSBjb25zdAoreworICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9u
OjpEZWZhdWx0QmVoYXZpb3I7Cit9CisKK2Jvb2wgQVhJc29sYXRlZE9iamVjdDo6YWNjZXNzaWJp
bGl0eUlzSWdub3JlZEJ5RGVmYXVsdCgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitmbG9hdCBBWElzb2xhdGVkT2JqZWN0OjpzdGVw
VmFsdWVGb3JSYW5nZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
cmV0dXJuIDA7Cit9CisKK0FYQ29yZU9iamVjdCogQVhJc29sYXRlZE9iamVjdDo6c2VsZWN0ZWRM
aXN0SXRlbSgpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIG51bGxw
dHI7Cit9CisKK3ZvaWQgQVhJc29sYXRlZE9iamVjdDo6YXJpYUFjdGl2ZURlc2NlbmRhbnRSZWZl
cmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0Cit7Cisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgQVhJc29sYXRlZE9iamVjdDo6YXJp
YUNvbnRyb2xzUmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Im
KSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit2b2lkIEFYSXNvbGF0
ZWRPYmplY3Q6OmFyaWFEZXNjcmliZWRCeUVsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgQVhJ
c29sYXRlZE9iamVjdDo6YXJpYURlc2NyaWJlZEJ5UmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworfQorCit2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OmFyaWFEZXRhaWxzUmVmZXJlbmNpbmdFbGVt
ZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdAoreworICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworfQorCit2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OmFyaWFFcnJvck1lc3Nh
Z2VSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0
Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgQVhJc29sYXRlZE9iamVj
dDo6YXJpYUZsb3dUb1JlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yJikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBBWElz
b2xhdGVkT2JqZWN0OjphcmlhTGFiZWxsZWRCeUVsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJl
blZlY3RvciYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQg
QVhJc29sYXRlZE9iamVjdDo6YXJpYUxhYmVsbGVkQnlSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Cit9CisKK3ZvaWQgQVhJc29sYXRlZE9iamVjdDo6YXJpYU93bnNSZWZlcmVuY2luZ0VsZW1l
bnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Cit9CisKK2Jvb2wgQVhJc29sYXRlZE9iamVjdDo6aGFzRGF0YWxpc3QoKSBj
b25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30K
KworYm9vbCBBWElzb2xhdGVkT2JqZWN0OjpzdXBwb3J0c0hhc1BvcHVwKCkgY29uc3QKK3sKKyAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQVhJ
c29sYXRlZE9iamVjdDo6c3VwcG9ydHNQcmVzc2VkKCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQVhJc29sYXRlZE9iamVj
dDo6c3VwcG9ydHNDaGVja2VkKCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQVhJc29sYXRlZE9iamVjdDo6aWdub3JlZEZy
b21Nb2RhbFByZXNlbmNlKCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQVhJc29sYXRlZE9iamVjdDo6aXNNb2RhbERlc2Nl
bmRhbnQoTm9kZSopIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0
dXJuIGZhbHNlOworfQorCitib29sIEFYSXNvbGF0ZWRPYmplY3Q6OmlzTW9kYWxOb2RlKCkgY29u
c3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K0FYQ29yZU9iamVjdCogQVhJc29sYXRlZE9iamVjdDo6ZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRU
ZXN0KGNvbnN0IEludFBvaW50JikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworQVhDb3JlT2JqZWN0KiBBWElzb2xhdGVkT2JqZWN0
OjpmaXJzdENoaWxkKCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBy
ZXR1cm4gbnVsbHB0cjsKK30KKworQVhDb3JlT2JqZWN0KiBBWElzb2xhdGVkT2JqZWN0OjpsYXN0
Q2hpbGQoKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBu
dWxscHRyOworfQorCitBWENvcmVPYmplY3QqIEFYSXNvbGF0ZWRPYmplY3Q6OnByZXZpb3VzU2li
bGluZygpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIG51
bGxwdHI7Cit9CisKK0FYQ29yZU9iamVjdCogQVhJc29sYXRlZE9iamVjdDo6bmV4dFNpYmxpbmco
KSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBudWxscHRy
OworfQorCitBWENvcmVPYmplY3QqIEFYSXNvbGF0ZWRPYmplY3Q6Om5leHRTaWJsaW5nVW5pZ25v
cmVkKGludCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4g
bnVsbHB0cjsKK30KKworQVhDb3JlT2JqZWN0KiBBWElzb2xhdGVkT2JqZWN0OjpwcmV2aW91c1Np
YmxpbmdVbmlnbm9yZWQoaW50KSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIHJldHVybiBudWxscHRyOworfQorCitBWENvcmVPYmplY3QqIEFYSXNvbGF0ZWRPYmplY3Q6
OnBhcmVudE9iamVjdElmRXhpc3RzKCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworYm9vbCBBWElzb2xhdGVkT2JqZWN0Ojppc0Rl
c2NlbmRhbnRPZkJhcnJlblBhcmVudCgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFYSXNvbGF0ZWRPYmplY3Q6OmlzRGVz
Y2VuZGFudE9mUm9sZShBY2Nlc3NpYmlsaXR5Um9sZSkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK0FYQ29yZU9iamVjdCogQVhJc29s
YXRlZE9iamVjdDo6b2JzZXJ2YWJsZU9iamVjdCgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0FYQ29yZU9iamVjdCogQVhJc29s
YXRlZE9iamVjdDo6Y29ycmVzcG9uZGluZ0xhYmVsRm9yQ29udHJvbEVsZW1lbnQoKSBjb25zdAor
eworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitB
WENvcmVPYmplY3QqIEFYSXNvbGF0ZWRPYmplY3Q6OmNvcnJlc3BvbmRpbmdDb250cm9sRm9yTGFi
ZWxFbGVtZW50KCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1
cm4gbnVsbHB0cjsKK30KKworYm9vbCBBWElzb2xhdGVkT2JqZWN0Ojppc1ByZXNlbnRhdGlvbmFs
Q2hpbGRPZkFyaWFSb2xlKCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQVhJc29sYXRlZE9iamVjdDo6YXJpYVJvbGVIYXNQ
cmVzZW50YXRpb25hbENoaWxkcmVuKCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQVhJc29sYXRlZE9iamVjdDo6aW5oZXJp
dHNQcmVzZW50YXRpb25hbFJvbGUoKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBBWElzb2xhdGVkT2JqZWN0OjpzZXRBY2Nl
c3NpYmxlTmFtZShjb25zdCBBdG9tU3RyaW5nJikKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKK30KKworYm9vbCBBWElzb2xhdGVkT2JqZWN0OjpoYXNBdHRyaWJ1dGVzUmVxdWlyZWRGb3JJ
bmNsdXNpb24oKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVy
biBmYWxzZTsKK30KKworU3RyaW5nIEFYSXNvbGF0ZWRPYmplY3Q6OmFjY2Vzc2liaWxpdHlEZXNj
cmlwdGlvbigpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJu
IFN0cmluZygpOworfQorCitTdHJpbmcgQVhJc29sYXRlZE9iamVjdDo6dGl0bGUoKSBjb25zdAor
eworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKwor
U3RyaW5nIEFYSXNvbGF0ZWRPYmplY3Q6OmhlbHBUZXh0KCkgY29uc3QKK3sKKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK2Jvb2wgQVhJc29sYXRl
ZE9iamVjdDo6aXNBUklBU3RhdGljVGV4dCgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitTdHJpbmcgQVhJc29sYXRlZE9iamVjdDo6
c3RyaW5nVmFsdWUoKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJl
dHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIEFYSXNvbGF0ZWRPYmplY3Q6OnRleHQoKSBjb25z
dAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30K
KworU3RyaW5nIEFYSXNvbGF0ZWRPYmplY3Q6OmFyaWFMYWJlbGVkQnlBdHRyaWJ1dGUoKSBjb25z
dAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30K
KworU3RyaW5nIEFYSXNvbGF0ZWRPYmplY3Q6OmFyaWFEZXNjcmliZWRCeUF0dHJpYnV0ZSgpIGNv
bnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFN0cmluZygpOwor
fQorCitib29sIEFYSXNvbGF0ZWRPYmplY3Q6OmFjY2Vzc2libGVOYW1lRGVyaXZlc0Zyb21Db250
ZW50KCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK3ZvaWQgQVhJc29sYXRlZE9iamVjdDo6ZWxlbWVudHNGcm9tQXR0cmlidXRlKFZl
Y3RvcjxFbGVtZW50Kj4mLCBjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3QKK3sKKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKK30KKworQVhPYmplY3RDYWNoZSogQVhJc29sYXRlZE9iamVjdDo6
YXhPYmplY3RDYWNoZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
cmV0dXJuIG51bGxwdHI7Cit9CisKK0VsZW1lbnQqIEFYSXNvbGF0ZWRPYmplY3Q6OmFuY2hvckVs
ZW1lbnQoKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBu
dWxscHRyOworfQorCitFbGVtZW50KiBBWElzb2xhdGVkT2JqZWN0OjphY3Rpb25FbGVtZW50KCkg
Y29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsK
K30KKworUGF0aCBBWElzb2xhdGVkT2JqZWN0OjplbGVtZW50UGF0aCgpIGNvbnN0Cit7CisgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFBhdGgoKTsKK30KKworYm9vbCBBWElz
b2xhdGVkT2JqZWN0OjpzdXBwb3J0c1BhdGgoKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworVGV4dEl0ZXJhdG9yQmVoYXZpb3IgQVhJ
c29sYXRlZE9iamVjdDo6dGV4dEl0ZXJhdG9yQmVoYXZpb3JGb3JUZXh0UmFuZ2UoKSBjb25zdAor
eworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworV2lk
Z2V0KiBBWElzb2xhdGVkT2JqZWN0Ojp3aWRnZXQoKSBjb25zdAoreworICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitXaWRnZXQqIEFYSXNvbGF0ZWRP
YmplY3Q6OndpZGdldEZvckF0dGFjaG1lbnRWaWV3KCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworUGFnZSogQVhJc29sYXRlZE9i
amVjdDo6cGFnZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0
dXJuIG51bGxwdHI7Cit9CisKK0RvY3VtZW50KiBBWElzb2xhdGVkT2JqZWN0Ojpkb2N1bWVudCgp
IGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIG51bGxwdHI7
Cit9CisKK0ZyYW1lVmlldyogQVhJc29sYXRlZE9iamVjdDo6ZG9jdW1lbnRGcmFtZVZpZXcoKSBj
b25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBudWxscHRyOwor
fQorCitGcmFtZSogQVhJc29sYXRlZE9iamVjdDo6ZnJhbWUoKSBjb25zdAoreworICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitGcmFtZSogQVhJc29s
YXRlZE9iamVjdDo6bWFpbkZyYW1lKCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworRG9jdW1lbnQqIEFYSXNvbGF0ZWRPYmplY3Q6
OnRvcERvY3VtZW50KCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBy
ZXR1cm4gbnVsbHB0cjsKK30KKworU2Nyb2xsVmlldyogQVhJc29sYXRlZE9iamVjdDo6c2Nyb2xs
Vmlld0FuY2VzdG9yKCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBy
ZXR1cm4gbnVsbHB0cjsKK30KKwordm9pZCBBWElzb2xhdGVkT2JqZWN0OjpjaGlsZHJlbkNoYW5n
ZWQoKQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit2b2lkIEFYSXNvbGF0ZWRP
YmplY3Q6OnRleHRDaGFuZ2VkKCkKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwor
dm9pZCBBWElzb2xhdGVkT2JqZWN0Ojp1cGRhdGVBY2Nlc3NpYmlsaXR5Um9sZSgpCit7CisgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgQVhJc29sYXRlZE9iamVjdDo6YWRkQ2hp
bGRyZW4oKQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit2b2lkIEFYSXNvbGF0
ZWRPYmplY3Q6OmFkZENoaWxkKEFYQ29yZU9iamVjdCopCit7CisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Cit9CisKK3ZvaWQgQVhJc29sYXRlZE9iamVjdDo6aW5zZXJ0Q2hpbGQoQVhDb3JlT2Jq
ZWN0KiwgdW5zaWduZWQpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK2Jvb2wg
QVhJc29sYXRlZE9iamVjdDo6c2hvdWxkSWdub3JlQXR0cmlidXRlUm9sZSgpIGNvbnN0Cit7Cisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFY
SXNvbGF0ZWRPYmplY3Q6OmNhbkhhdmVDaGlsZHJlbigpIGNvbnN0Cit7CisgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFYSXNvbGF0ZWRPYmpl
Y3Q6Omhhc0NoaWxkcmVuKCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgQVhJc29sYXRlZE9iamVjdDo6c2V0TmVlZHNUb1Vw
ZGF0ZUNoaWxkcmVuKCkKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBB
WElzb2xhdGVkT2JqZWN0OjpzZXROZWVkc1RvVXBkYXRlU3VidHJlZSgpCit7CisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgQVhJc29sYXRlZE9iamVjdDo6Y2xlYXJDaGlsZHJl
bigpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK2Jvb2wgQVhJc29sYXRlZE9i
amVjdDo6bmVlZHNUb1VwZGF0ZUNoaWxkcmVuKCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgQVhJc29sYXRlZE9iamVjdDo6
ZGV0YWNoRnJvbVBhcmVudCgpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK2Jv
b2wgQVhJc29sYXRlZE9iamVjdDo6c2hvdWxkRm9jdXNBY3RpdmVEZXNjZW5kYW50KCkgY29uc3QK
K3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK0FY
Q29yZU9iamVjdCogQVhJc29sYXRlZE9iamVjdDo6YWN0aXZlRGVzY2VuZGFudCgpIGNvbnN0Cit7
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3Zv
aWQgQVhJc29sYXRlZE9iamVjdDo6aGFuZGxlQWN0aXZlRGVzY2VuZGFudENoYW5nZWQoKQorewor
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6Omhh
bmRsZUFyaWFFeHBhbmRlZENoYW5nZWQoKQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
fQorCitib29sIEFYSXNvbGF0ZWRPYmplY3Q6OmlzRGVzY2VuZGFudE9mT2JqZWN0KGNvbnN0IEFY
Q29yZU9iamVjdCopIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0
dXJuIGZhbHNlOworfQorCitib29sIEFYSXNvbGF0ZWRPYmplY3Q6OmlzQW5jZXN0b3JPZk9iamVj
dChjb25zdCBBWENvcmVPYmplY3QqKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIHJldHVybiBmYWxzZTsKK30KKworQVhDb3JlT2JqZWN0KiBBWElzb2xhdGVkT2JqZWN0
OjpmaXJzdEFub255bW91c0Jsb2NrQ2hpbGQoKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitib29sIEFYSXNvbGF0ZWRPYmplY3Q6
Omhhc0F0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3QKK3sKKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2NvbnN0IEF0b21TdHJpbmcm
IEFYSXNvbGF0ZWRPYmplY3Q6OmdldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29u
c3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gbnVsbEF0b20oKTsK
K30KKworYm9vbCBBWElzb2xhdGVkT2JqZWN0OjpoYXNUYWdOYW1lKGNvbnN0IFF1YWxpZmllZE5h
bWUmKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxz
ZTsKK30KKworU3RyaW5nIEFYSXNvbGF0ZWRPYmplY3Q6OnN0cmluZ1ZhbHVlRm9yTVNBQSgpIGNv
bnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFN0cmluZygpOwor
fQorCitTdHJpbmcgQVhJc29sYXRlZE9iamVjdDo6c3RyaW5nUm9sZUZvck1TQUEoKSBjb25zdAor
eworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKwor
U3RyaW5nIEFYSXNvbGF0ZWRPYmplY3Q6Om5hbWVGb3JNU0FBKCkgY29uc3QKK3sKKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBBWElz
b2xhdGVkT2JqZWN0OjpkZXNjcmlwdGlvbkZvck1TQUEoKSBjb25zdAoreworICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworQWNjZXNzaWJpbGl0eVJv
bGUgQVhJc29sYXRlZE9iamVjdDo6cm9sZVZhbHVlRm9yTVNBQSgpIGNvbnN0Cit7CisgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3du
OworfQorCitTdHJpbmcgQVhJc29sYXRlZE9iamVjdDo6cGFzc3dvcmRGaWVsZFZhbHVlKCkgY29u
c3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9
CisKK0FYQ29yZU9iamVjdCogQVhJc29sYXRlZE9iamVjdDo6bGl2ZVJlZ2lvbkFuY2VzdG9yKGJv
b2wpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIG51bGxw
dHI7Cit9CisKK2Jvb2wgQVhJc29sYXRlZE9iamVjdDo6aGFzQ29udGVudEVkaXRhYmxlQXR0cmli
dXRlU2V0KCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK2Jvb2wgQVhJc29sYXRlZE9iamVjdDo6c3VwcG9ydHNSZWFkT25seSgpIGNv
bnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQor
Citib29sIEFYSXNvbGF0ZWRPYmplY3Q6OnN1cHBvcnRzQXV0b0NvbXBsZXRlKCkgY29uc3QKK3sK
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wg
QVhJc29sYXRlZE9iamVjdDo6c3VwcG9ydHNBUklBQXR0cmlidXRlcygpIGNvbnN0Cit7CisgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFYSXNv
bGF0ZWRPYmplY3Q6OnNjcm9sbEJ5UGFnZShTY3JvbGxCeVBhZ2VEaXJlY3Rpb24pIGNvbnN0Cit7
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitJbnRQ
b2ludCBBWElzb2xhdGVkT2JqZWN0OjpzY3JvbGxQb3NpdGlvbigpIGNvbnN0Cit7CisgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIEludFBvaW50KCk7Cit9CisKK0ludFNpemUg
QVhJc29sYXRlZE9iamVjdDo6c2Nyb2xsQ29udGVudHNTaXplKCkgY29uc3QKK3sKKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gSW50U2l6ZSgpOworfQorCitJbnRSZWN0IEFY
SXNvbGF0ZWRPYmplY3Q6OnNjcm9sbFZpc2libGVDb250ZW50UmVjdCgpIGNvbnN0Cit7CisgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIEludFJlY3QoKTsKK30KKwordm9pZCBB
WElzb2xhdGVkT2JqZWN0OjpzY3JvbGxUb01ha2VWaXNpYmxlKGNvbnN0IFNjcm9sbFJlY3RUb1Zp
c2libGVPcHRpb25zJikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwor
Ym9vbCBBWElzb2xhdGVkT2JqZWN0OjpsYXN0S25vd25Jc0lnbm9yZWRWYWx1ZSgpCit7CisgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEFYSXNv
bGF0ZWRPYmplY3Q6OnNldExhc3RLbm93bklzSWdub3JlZFZhbHVlKGJvb2wpCit7CisgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgQVhJc29sYXRlZE9iamVjdDo6bm90aWZ5SWZJ
Z25vcmVkVmFsdWVDaGFuZ2VkKCkKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwor
Ym9vbCBBWElzb2xhdGVkT2JqZWN0Ojppc01hdGhTY3JpcHRPYmplY3QoQWNjZXNzaWJpbGl0eU1h
dGhTY3JpcHRPYmplY3RUeXBlKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBWElzb2xhdGVkT2JqZWN0Ojppc01hdGhNdWx0
aXNjcmlwdE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0T2JqZWN0VHlwZSkgY29u
c3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K2Jvb2wgQVhJc29sYXRlZE9iamVjdDo6aXNBWEhpZGRlbigpIGNvbnN0Cit7CisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFYSXNvbGF0ZWRP
YmplY3Q6OmlzRE9NSGlkZGVuKCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQVhJc29sYXRlZE9iamVjdDo6aXNIaWRkZW4o
KSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsK
K30KKwordm9pZCBBWElzb2xhdGVkT2JqZWN0OjpvdmVycmlkZUF0dGFjaG1lbnRQYXJlbnQoQVhD
b3JlT2JqZWN0KikKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworYm9vbCBBWElz
b2xhdGVkT2JqZWN0OjphY2Nlc3NpYmlsaXR5SWdub3JlQXR0YWNobWVudCgpIGNvbnN0Cit7Cisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitBY2Nlc3Np
YmlsaXR5T2JqZWN0SW5jbHVzaW9uIEFYSXNvbGF0ZWRPYmplY3Q6OmFjY2Vzc2liaWxpdHlQbGF0
Zm9ybUluY2x1ZGVzT2JqZWN0KCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6RGVmYXVsdEJlaGF2aW9y
OworfQorCitib29sIEFYSXNvbGF0ZWRPYmplY3Q6Omhhc0FwcGxlUERGQW5ub3RhdGlvbkF0dHJp
YnV0ZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZh
bHNlOworfQorCitjb25zdCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldyogQVhJc29sYXRlZE9iamVj
dDo6YW5jZXN0b3JBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldyhib29sKSBjb25zdAoreworICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCit2b2lkIEFYSXNv
bGF0ZWRPYmplY3Q6OnNldElzSWdub3JlZEZyb21QYXJlbnREYXRhKEFjY2Vzc2liaWxpdHlJc0ln
bm9yZWRGcm9tUGFyZW50RGF0YSYpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisK
K3ZvaWQgQVhJc29sYXRlZE9iamVjdDo6Y2xlYXJJc0lnbm9yZWRGcm9tUGFyZW50RGF0YSgpCit7
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgQVhJc29sYXRlZE9iamVjdDo6
c2V0SXNJZ25vcmVkRnJvbVBhcmVudERhdGFGb3JDaGlsZChBWENvcmVPYmplY3QqKQoreworICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNl
bmRpZiAvLyBFTkFCTEUoKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVl
Tm9kZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29s
YXRlZFRyZWVOb2RlLmgKaW5kZXggYmQ3NTc5OGU0M2NjYjlmMzNmN2E5ZjJjNDZiZDIzOWI3NzY5
ZGViMS4uYzgzY2FkMjhlMzIzZTZmMTIxZTk0MTYzNDI5ZDA4MTQyZDc0YTQ1OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRy
ZWVOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUv
QVhJc29sYXRlZFRyZWVOb2RlLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3MgQVhJc29sYXRlZFRy
ZWU7CiAKIGNsYXNzIEFYSXNvbGF0ZWRPYmplY3QgZmluYWwgOiBwdWJsaWMgQVhDb3JlT2JqZWN0
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEFYSXNvbGF0ZWRPYmplY3Q+IGNyZWF0ZShBWENv
cmVPYmplY3QmKTsKKyAgICBzdGF0aWMgUmVmPEFYSXNvbGF0ZWRPYmplY3Q+IGNyZWF0ZShBWENv
cmVPYmplY3QmLCBib29sIGlzUm9vdCk7CiAgICAgfkFYSXNvbGF0ZWRPYmplY3QoKTsKIAogICAg
IHZvaWQgc2V0T2JqZWN0SUQoQVhJRCBpZCkgb3ZlcnJpZGUgeyBtX2lkID0gaWQ7IH0KQEAgLTU2
LDYwNiArNTYsMTEwIEBAIHB1YmxpYzoKIAogICAgIEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
KiB3cmFwcGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV93cmFwcGVyLmdldCgpOyB9CiAg
ICAgdm9pZCBkZXRhY2goQWNjZXNzaWJpbGl0eURldGFjaG1lbnRUeXBlLCBBWE9iamVjdENhY2hl
KiA9IG51bGxwdHIpIG92ZXJyaWRlIHsgfQotICAgIGJvb2wgaXNEZXRhY2hlZCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0RldGFjaGVkKCkgY29uc3Qgb3Zl
cnJpZGU7CiAKICAgICB2b2lkIHNldFRyZWVJZGVudGlmaWVyKEFYSXNvbGF0ZWRUcmVlSUQpOwog
ICAgIHZvaWQgc2V0UGFyZW50KEFYSUQpOwogICAgIHZvaWQgYXBwZW5kQ2hpbGQoQVhJRCk7CiAK
IHByaXZhdGU6Ci0gICAgYm9vbCBpc0FjY2Vzc2liaWxpdHlPYmplY3QoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc0FjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJv
b2wgaXNBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFs
c2U7IH0KLSAgICBib29sIGlzQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5U1ZHUm9vdCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc0FjY2Vzc2liaWxpdHlT
VkdFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLQotICAgIGJvb2wg
Y29udGFpbnNUZXh0KFN0cmluZyAqKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQot
ICAgIGJvb2wgaXNBdHRhY2htZW50RWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9Ci0gICAgYm9vbCBpc0hlYWRpbmcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxz
ZTsgfQotICAgIGJvb2wgaXNMaW5rKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJp
YnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc0xpbmspOyB9Ci0gICAgYm9vbCBpc0ltYWdlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1l
OjpJc0ltYWdlKTsgfQotICAgIGJvb2wgaXNJbWFnZU1hcCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc05hdGl2ZUltYWdlKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzSW1hZ2VCdXR0b24oKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNQYXNzd29yZEZpZWxkKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzQ29udGFpbmVkQnlQYXNzd29yZEZpZWxk
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBBWENvcmVPYmplY3QqIHBh
c3N3b3JkRmllbGRPckNvbnRhaW5pbmdQYXNzd29yZEZpZWxkKCkgb3ZlcnJpZGUgeyByZXR1cm4g
bnVsbHB0cjsgfQotICAgIGJvb2wgaXNOYXRpdmVUZXh0Q29udHJvbCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc1NlYXJjaEZpZWxkKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzV2ViQXJlYSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc0NoZWNrYm94KCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzUmFkaW9CdXR0b24oKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNOYXRpdmVMaXN0Qm94KCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzTGlzdEJveCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc0xpc3RCb3hPcHRpb24oKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNBdHRhY2htZW50KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc0F0
dGFjaG1lbnQpOyB9Ci0gICAgYm9vbCBpc01lZGlhVGltZWxpbmUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNNZW51UmVsYXRlZCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc01lbnUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNNZW51QmFyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KLSAgICBib29sIGlzTWVudUJ1dHRvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc01lbnVJdGVtKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KLSAgICBib29sIGlzRmlsZVVwbG9hZEJ1dHRvbigpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNGaWxlVXBsb2Fk
QnV0dG9uKTsgfQotICAgIGJvb2wgaXNJbnB1dEltYWdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KLSAgICBib29sIGlzUHJvZ3Jlc3NJbmRpY2F0b3IoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNTbGlkZXIoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNTbGlkZXJUaHVtYigpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc0lucHV0U2xpZGVyKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzQ29udHJvbCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc0xhYmVsKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzTGlzdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9Ci0gICAgYm9vbCBpc1RhYmxlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFs
c2U7IH0KLSAgICBib29sIGlzRGF0YVRhYmxlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFs
c2U7IH0KLSAgICBib29sIGlzVGFibGVSb3coKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxz
ZTsgfQotICAgIGJvb2wgaXNUYWJsZUNvbHVtbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9Ci0gICAgYm9vbCBpc1RhYmxlQ2VsbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9Ci0gICAgYm9vbCBpc0ZpZWxkc2V0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFs
c2U7IH0KLSAgICBib29sIGlzR3JvdXAoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQotICAgIGJvb2wgaXNBUklBVHJlZUdyaWRSb3coKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQotICAgIGJvb2wgaXNJbWFnZU1hcExpbmsoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzSW1hZ2VNYXBMaW5rKTsgfQot
ICAgIGJvb2wgaXNNZW51TGlzdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0g
ICAgYm9vbCBpc01lbnVMaXN0UG9wdXAoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQotICAgIGJvb2wgaXNNZW51TGlzdE9wdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9Ci0gICAgYm9vbCBpc1NwaW5CdXR0b24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQotICAgIGJvb2wgaXNOYXRpdmVTcGluQnV0dG9uKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzU3BpbkJ1dHRvblBhcnQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNNb2NrT2JqZWN0KCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzTWVkaWFDb250cm9sTGFiZWwoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6Oklz
TWVkaWFDb250cm9sTGFiZWwpOyB9Ci0gICAgYm9vbCBpc01lZGlhT2JqZWN0KCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzU3dpdGNoKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzVG9nZ2xlQnV0dG9uKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzVGV4dENvbnRyb2woKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNBUklBVGV4dENvbnRyb2woKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNOb25OYXRpdmVUZXh0
Q29udHJvbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc1Rh
Ykxpc3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNUYWJJ
dGVtKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzUmFkaW9H
cm91cCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc0NvbWJv
Qm94KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzVHJlZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFt
ZTo6SXNUcmVlKTsgfQotICAgIGJvb2wgaXNUcmVlR3JpZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc1RyZWVJdGVtKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc1RyZWVJdGVtKTsgfQotICAg
IGJvb2wgaXNTY3JvbGxiYXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRl
VmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzU2Nyb2xsYmFyKTsgfQotICAgIGJvb2wgaXNCdXR0b24o
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNMaXN0SXRlbSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc0NoZWNrYm94T3JS
YWRpbygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc1Njcm9s
bFZpZXcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNDYW52
YXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNQb3BVcEJ1
dHRvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc0Jsb2Nr
cXVvdGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNMYW5k
bWFyaygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc0NvbG9y
V2VsbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc1Jhbmdl
Q29udHJvbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc01l
dGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzU3BsaXR0
ZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNUb29sYmFy
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzU3R5bGVGb3Jt
YXRHcm91cCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc0Zp
Z3VyZUVsZW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wg
aXNLZXlib2FyZEZvY3VzYWJsZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0g
ICAgYm9vbCBpc1N1bW1hcnkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAg
IGJvb2wgaXNPdXRwdXQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotCi0gICAg
Ym9vbCBpc0NoZWNrZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFs
dWUoQVhQcm9wZXJ0eU5hbWU6OklzQ2hlY2tlZCk7IH0KLSAgICBib29sIGlzRW5hYmxlZCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6
SXNFbmFibGVkKTsgfQotICAgIGJvb2wgaXNTZWxlY3RlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNTZWxlY3RlZCk7IH0KLSAg
ICBib29sIGlzRm9jdXNlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVW
YWx1ZShBWFByb3BlcnR5TmFtZTo6SXNGb2N1c2VkKTsgfQotICAgIGJvb2wgaXNIb3ZlcmVkKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1l
OjpJc0hvdmVyZWQpOyB9Ci0gICAgYm9vbCBpc0luZGV0ZXJtaW5hdGUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzSW5kZXRlcm1p
bmF0ZSk7IH0KLSAgICBib29sIGlzTG9hZGVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9v
bEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc0xvYWRlZCk7IH0KLSAgICBib29sIGlz
TXVsdGlTZWxlY3RhYmxlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZh
bHVlKEFYUHJvcGVydHlOYW1lOjpJc011bHRpU2VsZWN0YWJsZSk7IH0KLSAgICBib29sIGlzT25T
Y3JlZW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9w
ZXJ0eU5hbWU6OklzT25TY3JlZW4pOyB9Ci0gICAgYm9vbCBpc09mZlNjcmVlbigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNPZmZT
Y3JlZW4pOyB9Ci0gICAgYm9vbCBpc1ByZXNzZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBi
b29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzUHJlc3NlZCk7IH0KLSAgICBib29s
IGlzVW52aXNpdGVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVl
KEFYUHJvcGVydHlOYW1lOjpJc1VudmlzaXRlZCk7IH0KLSAgICBib29sIGlzVmlzaXRlZCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6
SXNWaXNpdGVkKTsgfQotICAgIGJvb2wgaXNSZXF1aXJlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNSZXF1aXJlZCk7IH0KLSAg
ICBib29sIHN1cHBvcnRzUmVxdWlyZWRBdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OlN1cHBvcnRzUmVxdWlyZWRBdHRy
aWJ1dGUpOyB9Ci0gICAgYm9vbCBpc0xpbmtlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJv
b2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNMaW5rZWQpOyB9Ci0gICAgYm9vbCBp
c0V4cGFuZGVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFY
UHJvcGVydHlOYW1lOjpJc0V4cGFuZGVkKTsgfQotICAgIGJvb2wgaXNWaXNpYmxlKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc1Zp
c2libGUpOyB9Ci0gICAgYm9vbCBpc0NvbGxhcHNlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNDb2xsYXBzZWQpOyB9Ci0gICAg
RmxvYXRSZWN0IHJlbGF0aXZlRnJhbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiByZWN0QXR0
cmlidXRlVmFsdWU8RmxvYXRSZWN0PihBWFByb3BlcnR5TmFtZTo6UmVsYXRpdmVGcmFtZSk7IH0K
LSAgICBGbG9hdFJlY3QgY29udmVydEZyYW1lVG9TcGFjZShjb25zdCBGbG9hdFJlY3QmLCBBY2Nl
c3NpYmlsaXR5Q29udmVyc2lvblNwYWNlKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBGbG9hdFJl
Y3QoKTsgfQotCi0gICAgYm9vbCBpc1NlbGVjdGVkT3B0aW9uQWN0aXZlKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc1NlbGVjdGVk
T3B0aW9uQWN0aXZlKTsgfQotCi0gICAgdm9pZCBzZXRJc0V4cGFuZGVkKGJvb2wpIG92ZXJyaWRl
IHsgfQotICAgIGJvb2wgaGFzQm9sZEZvbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxz
ZTsgfQotICAgIGJvb2wgaGFzSXRhbGljRm9udCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9Ci0gICAgYm9vbCBoYXNNaXNzcGVsbGluZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9Ci0gICAgUmVmUHRyPFJhbmdlPiBnZXRNaXNzcGVsbGluZ1JhbmdlKFJlZlB0cjxS
YW5nZT4gY29uc3QmLCBBY2Nlc3NpYmlsaXR5U2VhcmNoRGlyZWN0aW9uKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgYm9vbCBoYXNQbGFpblRleHQoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaGFzU2FtZUZvbnQoUmVuZGVyT2JqZWN0
KikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGhhc1NhbWVGb250
Q29sb3IoUmVuZGVyT2JqZWN0KikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAg
ICBib29sIGhhc1NhbWVTdHlsZShSZW5kZXJPYmplY3QqKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQotICAgIGJvb2wgaXNTdGF0aWNUZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KLSAgICBib29sIGhhc1VuZGVybGluZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBoYXNIaWdobGlnaHRpbmcoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQotCi0gICAgYm9vbCBzdXBwb3J0c0RhdGV0aW1lQXR0cmlidXRlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBjb25zdCBBdG9tU3RyaW5nJiBk
YXRldGltZUF0dHJpYnV0ZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbEF0b20o
KTsgfQotCi0gICAgYm9vbCBjYW5TZXRGb2N1c0F0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBjYW5TZXRUZXh0UmFuZ2VBdHRyaWJ1dGVzKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGNhblNldFZhbHVlQXR0cmli
dXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGNhblNldE51
bWVyaWNWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBj
YW5TZXRTZWxlY3RlZEF0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
Ci0gICAgYm9vbCBjYW5TZXRTZWxlY3RlZENoaWxkcmVuQXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGNhblNldEV4cGFuZGVkQXR0cmlidXRlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLQotICAgIEVsZW1lbnQqIGVsZW1lbnQo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgTm9kZSogbm9kZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICBSZW5kZXJPYmplY3QqIHJlbmRl
cmVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQotCi0gICAgYm9vbCBhY2Nl
c3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0
ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc0FjY2Vzc2liaWxpdHlJZ25vcmVkKTsgfQotICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gZGVmYXVsdE9iamVjdEluY2x1c2lvbigpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246OkRlZmF1bHRC
ZWhhdmlvcjsgfQotICAgIGJvb2wgYWNjZXNzaWJpbGl0eUlzSWdub3JlZEJ5RGVmYXVsdCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0KLSAgICBib29sIGlzU2hvd2luZ1ZhbGlk
YXRpb25NZXNzYWdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBTdHJp
bmcgdmFsaWRhdGlvbk1lc3NhZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJpbmcoKTsg
fQotCi0gICAgdW5zaWduZWQgYmxvY2txdW90ZUxldmVsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gMDsgfQotICAgIGludCBoZWFkaW5nTGV2ZWwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAw
OyB9Ci0gICAgaW50IHRhYmxlTGV2ZWwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9Ci0g
ICAgQWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRlIGNoZWNrYm94T3JSYWRpb1ZhbHVlKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gQWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRlOjpPZmY7IH0KLSAgICBT
dHJpbmcgdmFsdWVEZXNjcmlwdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygp
OyB9Ci0gICAgZmxvYXQgdmFsdWVGb3JSYW5nZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7
IH0KLSAgICBmbG9hdCBtYXhWYWx1ZUZvclJhbmdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
MDsgfQotICAgIGZsb2F0IG1pblZhbHVlRm9yUmFuZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biAwOyB9Ci0gICAgZmxvYXQgc3RlcFZhbHVlRm9yUmFuZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiAwOyB9Ci0gICAgQVhDb3JlT2JqZWN0KiBzZWxlY3RlZFJhZGlvQnV0dG9uKCkgb3ZlcnJp
ZGUgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIEFYQ29yZU9iamVjdCogc2VsZWN0ZWRUYWJJdGVt
KCkgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIEFYQ29yZU9iamVjdCogc2VsZWN0
ZWRMaXN0SXRlbSgpIG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICBpbnQgbGF5b3V0
Q291bnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9Ci0gICAgZG91YmxlIGVzdGltYXRl
ZExvYWRpbmdQcm9ncmVzcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KLQotICAgIGJv
b2wgc3VwcG9ydHNBUklBT3ducygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0g
ICAgYm9vbCBpc0FjdGl2ZURlc2NlbmRhbnRPZkZvY3VzZWRDb250YWluZXIoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZvaWQgYXJpYUFjdGl2ZURlc2NlbmRhbnRSZWZl
cmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJy
aWRlIHsgfQotICAgIHZvaWQgYXJpYUNvbnRyb2xzRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGUgeyB9Ci0gICAgdm9pZCBhcmlhQ29udHJvbHNSZWZl
cmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJy
aWRlIHsgfQotICAgIHZvaWQgYXJpYURlc2NyaWJlZEJ5RWxlbWVudHMoQWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGUgeyB9Ci0gICAgdm9pZCBhcmlhRGVzY3JpYmVk
QnlSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0
IG92ZXJyaWRlIHsgfQotICAgIHZvaWQgYXJpYURldGFpbHNFbGVtZW50cyhBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZSB7IH0KLSAgICB2b2lkIGFyaWFEZXRhaWxz
UmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBv
dmVycmlkZSB7IH0KLSAgICB2b2lkIGFyaWFFcnJvck1lc3NhZ2VFbGVtZW50cyhBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZSB7IH0KLSAgICB2b2lkIGFyaWFFcnJv
ck1lc3NhZ2VSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYp
IGNvbnN0IG92ZXJyaWRlIHsgfQotICAgIHZvaWQgYXJpYUZsb3dUb0VsZW1lbnRzKEFjY2Vzc2li
aWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRlIHsgfQotICAgIHZvaWQgYXJpYUZs
b3dUb1JlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29u
c3Qgb3ZlcnJpZGUgeyB9Ci0gICAgdm9pZCBhcmlhTGFiZWxsZWRCeUVsZW1lbnRzKEFjY2Vzc2li
aWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRlIHsgfQotICAgIHZvaWQgYXJpYUxh
YmVsbGVkQnlSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYp
IGNvbnN0IG92ZXJyaWRlIHsgfQotICAgIHZvaWQgYXJpYU93bnNFbGVtZW50cyhBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZSB7IH0KLSAgICB2b2lkIGFyaWFPd25z
UmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBv
dmVycmlkZSB7IH0KLQotICAgIGJvb2wgaGFzUG9wdXAoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQotICAgIFN0cmluZyBwb3B1cFZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gU3RyaW5nKCk7IH0KLSAgICBib29sIGhhc0RhdGFsaXN0KCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIHN1cHBvcnRzSGFzUG9wdXAoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgcHJlc3NlZElzUHJlc2VudCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBhcmlhSXNNdWx0aWxpbmUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIFN0cmluZyBpbnZhbGlkU3RhdHVzKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICBib29sIHN1cHBvcnRzUHJl
c3NlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBzdXBwb3J0
c0V4cGFuZGVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIHN1
cHBvcnRzQ2hlY2tlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgQWNj
ZXNzaWJpbGl0eVNvcnREaXJlY3Rpb24gc29ydERpcmVjdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIEFjY2Vzc2liaWxpdHlTb3J0RGlyZWN0aW9uOjpOb25lOyB9Ci0gICAgYm9vbCBjYW52
YXNIYXNGYWxsYmFja0NvbnRlbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQot
ICAgIGJvb2wgc3VwcG9ydHNSYW5nZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFs
c2U7IH0KLSAgICBjb25zdCBBdG9tU3RyaW5nJiBpZGVudGlmaWVyQXR0cmlidXRlKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gbnVsbEF0b20oKTsgfQotICAgIGNvbnN0IEF0b21TdHJpbmcmIGxp
bmtSZWxWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxBdG9tKCk7IH0KLSAgICB2
b2lkIGNsYXNzTGlzdChWZWN0b3I8U3RyaW5nPiYpIGNvbnN0IG92ZXJyaWRlIHsgfQotICAgIEFj
Y2Vzc2liaWxpdHlDdXJyZW50U3RhdGUgY3VycmVudFN0YXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gQWNjZXNzaWJpbGl0eUN1cnJlbnRTdGF0ZTo6RmFsc2U7IH0KLSAgICBTdHJpbmcgY3Vy
cmVudFZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICBib29s
IHN1cHBvcnRzQ3VycmVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
Y29uc3QgU3RyaW5nIGtleVNob3J0Y3V0c1ZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
U3RyaW5nKCk7IH0KLQotICAgIC8vIFRoaXMgZnVuY3Rpb24gY2hlY2tzIGlmIHRoZSBvYmplY3Qg
c2hvdWxkIGJlIGlnbm9yZWQgd2hlbiB0aGVyZSdzIGEgbW9kYWwgZGlhbG9nIGRpc3BsYXllZC4K
LSAgICBib29sIGlnbm9yZWRGcm9tTW9kYWxQcmVzZW5jZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc01vZGFsRGVzY2VuZGFudChOb2RlKikgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzTW9kYWxOb2RlKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLQotICAgIGJvb2wgc3VwcG9ydHNTZXRTaXplKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIHN1cHBvcnRzUG9zSW5TZXQo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGludCBzZXRTaXplKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQotICAgIGludCBwb3NJblNldCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIDA7IH0KLQotICAgIGJvb2wgc3VwcG9ydHNBUklBRHJvcHBpbmcoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgc3VwcG9ydHNBUklBRHJhZ2dp
bmcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNBUklBR3Jh
YmJlZCgpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdm9pZCBzZXRBUklBR3JhYmJl
ZChib29sKSBvdmVycmlkZSB7IH0KLSAgICBWZWN0b3I8U3RyaW5nPiBkZXRlcm1pbmVBUklBRHJv
cEVmZmVjdHMoKSBvdmVycmlkZSB7IHJldHVybiBWZWN0b3I8U3RyaW5nPigpOyB9Ci0KLSAgICBB
WENvcmVPYmplY3QqIGFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JikgY29uc3Qg
b3ZlcnJpZGU7Ci0gICAgQVhDb3JlT2JqZWN0KiBlbGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3Qo
Y29uc3QgSW50UG9pbnQmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9Ci0KLSAg
ICBBWENvcmVPYmplY3QqIGZvY3VzZWRVSUVsZW1lbnQoKSBjb25zdCBvdmVycmlkZTsKLQotICAg
IEFYQ29yZU9iamVjdCogZmlyc3RDaGlsZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxw
dHI7IH0KLSAgICBBWENvcmVPYmplY3QqIGxhc3RDaGlsZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG51bGxwdHI7IH0KLSAgICBBWENvcmVPYmplY3QqIHByZXZpb3VzU2libGluZygpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICBBWENvcmVPYmplY3QqIG5leHRTaWJs
aW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIEFYQ29yZU9iamVj
dCogbmV4dFNpYmxpbmdVbmlnbm9yZWQoaW50KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxs
cHRyOyB9Ci0gICAgQVhDb3JlT2JqZWN0KiBwcmV2aW91c1NpYmxpbmdVbmlnbm9yZWQoaW50KSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgQVhDb3JlT2JqZWN0KiBwYXJl
bnRPYmplY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgQVhDb3Jl
T2JqZWN0KiBwYXJlbnRPYmplY3RVbmlnbm9yZWQoKSBjb25zdCBvdmVycmlkZTsKLSAgICBBWENv
cmVPYmplY3QqIHBhcmVudE9iamVjdElmRXhpc3RzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bnVsbHB0cjsgfQotICAgIHZvaWQgZmluZE1hdGNoaW5nT2JqZWN0cyhBY2Nlc3NpYmlsaXR5U2Vh
cmNoQ3JpdGVyaWEqLCBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBvdmVycmlkZSB7IH0K
LSAgICBib29sIGlzRGVzY2VuZGFudE9mQmFycmVuUGFyZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzRGVzY2VuZGFudE9mUm9sZShBY2Nlc3NpYmlsaXR5
Um9sZSkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLQotICAgIFZlY3RvcjxSZWZQ
dHI8UmFuZ2U+PiBmaW5kVGV4dFJhbmdlcyhBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dENyaXRlcmlh
IGNvbnN0JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVmVjdG9yPFJlZlB0cjxSYW5nZT4+KCk7
IH0KLSAgICBWZWN0b3I8U3RyaW5nPiBwZXJmb3JtVGV4dE9wZXJhdGlvbihBY2Nlc3NpYmlsaXR5
VGV4dE9wZXJhdGlvbiBjb25zdCYpIG92ZXJyaWRlIHsgcmV0dXJuIFZlY3RvcjxTdHJpbmc+KCk7
IH0KLQotICAgIEFYQ29yZU9iamVjdCogb2JzZXJ2YWJsZU9iamVjdCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2b2lkIGxpbmtlZFVJRWxlbWVudHMoQWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGUgeyB9Ci0gICAgQVhDb3JlT2JqZWN0
KiB0aXRsZVVJRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAg
ICBib29sIGV4cG9zZXNUaXRsZVVJRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9Ci0gICAgQVhDb3JlT2JqZWN0KiBjb3JyZXNwb25kaW5nTGFiZWxGb3JDb250cm9sRWxl
bWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICBBWENvcmVPYmpl
Y3QqIGNvcnJlc3BvbmRpbmdDb250cm9sRm9yTGFiZWxFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbnVsbHB0cjsgfQotICAgIEFYQ29yZU9iamVjdCogc2Nyb2xsQmFyKEFjY2Vzc2li
aWxpdHlPcmllbnRhdGlvbikgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQotCi0gICAgQWNj
ZXNzaWJpbGl0eVJvbGUgYXJpYVJvbGVBdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93bjsgfQotICAgIGJvb2wgaXNQcmVzZW50YXRpb25h
bENoaWxkT2ZBcmlhUm9sZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
Ym9vbCBhcmlhUm9sZUhhc1ByZXNlbnRhdGlvbmFsQ2hpbGRyZW4oKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaW5oZXJpdHNQcmVzZW50YXRpb25hbFJvbGUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotCi0gICAgdm9pZCBhY2Nlc3NpYmlsaXR5
VGV4dChWZWN0b3I8QWNjZXNzaWJpbGl0eVRleHQ+JikgY29uc3Qgb3ZlcnJpZGUgeyB9Ci0gICAg
U3RyaW5nIGNvbXB1dGVkTGFiZWwoKSBvdmVycmlkZSB7IHJldHVybiBTdHJpbmcoKTsgfQotCi0g
ICAgdm9pZCBzZXRBY2Nlc3NpYmxlTmFtZShjb25zdCBBdG9tU3RyaW5nJikgb3ZlcnJpZGUgeyB9
Ci0gICAgYm9vbCBoYXNBdHRyaWJ1dGVzUmVxdWlyZWRGb3JJbmNsdXNpb24oKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQotCi0gICAgU3RyaW5nIGFjY2Vzc2liaWxpdHlEZXNjcmlw
dGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9Ci0gICAgU3RyaW5nIHRp
dGxlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICBTdHJpbmcgaGVs
cFRleHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJpbmcoKTsgfQotCi0gICAgYm9vbCBp
c0FSSUFTdGF0aWNUZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBT
dHJpbmcgc3RyaW5nVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJpbmcoKTsgfQot
ICAgIFN0cmluZyB0ZXh0VW5kZXJFbGVtZW50KEFjY2Vzc2liaWxpdHlUZXh0VW5kZXJFbGVtZW50
TW9kZSA9IEFjY2Vzc2liaWxpdHlUZXh0VW5kZXJFbGVtZW50TW9kZSgpKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBTdHJpbmcoKTsgfQotICAgIFN0cmluZyB0ZXh0KCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICBpbnQgdGV4dExlbmd0aCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIDA7IH0KLSAgICBTdHJpbmcgYXJpYUxhYmVsZWRCeUF0dHJpYnV0ZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9Ci0gICAgU3RyaW5nIGFyaWFEZXNjcmliZWRC
eUF0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9Ci0gICAgY29u
c3QgU3RyaW5nIHBsYWNlaG9sZGVyVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJp
bmcoKTsgfQotICAgIGJvb2wgYWNjZXNzaWJsZU5hbWVEZXJpdmVzRnJvbUNvbnRlbnQoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotCi0gICAgU3RyaW5nIGV4cGFuZGVkVGV4dFZh
bHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICBib29sIHN1cHBv
cnRzRXhwYW5kZWRUZXh0VmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQot
Ci0gICAgdm9pZCBlbGVtZW50c0Zyb21BdHRyaWJ1dGUoVmVjdG9yPEVsZW1lbnQqPiYsIGNvbnN0
IFF1YWxpZmllZE5hbWUmKSBjb25zdCBvdmVycmlkZSB7IH0KLQotICAgIHZvaWQgY29sb3JWYWx1
ZShpbnQmLCBpbnQmLCBpbnQmKSBjb25zdCBvdmVycmlkZSB7IH0KLQotICAgIEFjY2Vzc2liaWxp
dHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0YXRpY19jYXN0PEFj
Y2Vzc2liaWxpdHlSb2xlPihpbnRBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6Um9sZVZh
bHVlKSk7IH0KLSAgICBTdHJpbmcgcm9sZVBsYXRmb3JtU3RyaW5nKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OlJvbGVQbGF0Zm9y
bVN0cmluZyk7IH0KLSAgICBTdHJpbmcgcm9sZURlc2NyaXB0aW9uKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OlJvbGVEZXNjcmlw
dGlvbik7IH0KLSAgICBTdHJpbmcgYXJpYUxhbmRtYXJrUm9sZURlc2NyaXB0aW9uKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkFS
SUFMYW5kbWFya1JvbGVEZXNjcmlwdGlvbik7IH0KLQotICAgIEFYT2JqZWN0Q2FjaGUqIGF4T2Jq
ZWN0Q2FjaGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9Ci0KLSAgICBFbGVt
ZW50KiBhbmNob3JFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQot
ICAgIGJvb2wgc3VwcG9ydHNQcmVzc0FjdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9Ci0gICAgRWxlbWVudCogYWN0aW9uRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG51bGxwdHI7IH0KLSAgICBMYXlvdXRSZWN0IGJvdW5kaW5nQm94UmVjdCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHJlY3RBdHRyaWJ1dGVWYWx1ZTxMYXlvdXRSZWN0PihBWFByb3BlcnR5
TmFtZTo6Qm91bmRpbmdCb3hSZWN0KTsgfQotICAgIExheW91dFJlY3QgZWxlbWVudFJlY3QoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiByZWN0QXR0cmlidXRlVmFsdWU8TGF5b3V0UmVjdD4oQVhQ
cm9wZXJ0eU5hbWU6OkVsZW1lbnRSZWN0KTsgfQotICAgIEludFBvaW50IGNsaWNrUG9pbnQoKSBv
dmVycmlkZSB7IHJldHVybiBJbnRQb2ludCgpOyB9Ci0gICAgUGF0aCBlbGVtZW50UGF0aCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIFBhdGgoKTsgfQotICAgIGJvb2wgc3VwcG9ydHNQYXRoKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLQotICAgIFRleHRJdGVyYXRvckJlaGF2
aW9yIHRleHRJdGVyYXRvckJlaGF2aW9yRm9yVGV4dFJhbmdlKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yOyB9Ci0gICAgUGxhaW5UZXh0UmFuZ2Ug
c2VsZWN0ZWRUZXh0UmFuZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBQbGFpblRleHRSYW5n
ZSgpOyB9Ci0gICAgdW5zaWduZWQgc2VsZWN0aW9uU3RhcnQoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiAwOyB9Ci0gICAgdW5zaWduZWQgc2VsZWN0aW9uRW5kKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gMDsgfQotCi0gICAgVVJMIHVybCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFVSTCgp
OyB9Ci0gICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24oKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBWaXNpYmxlU2VsZWN0aW9uKCk7IH0KLSAgICBTdHJpbmcgc2VsZWN0ZWRUZXh0KCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICBjb25zdCBBdG9tU3RyaW5nJiBh
Y2Nlc3NLZXkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxsQXRvbSgpOyB9Ci0gICAgY29u
c3QgU3RyaW5nJiBhY3Rpb25WZXJiKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbEF0b20o
KTsgfQotICAgIFdpZGdldCogd2lkZ2V0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0
cjsgfQotICAgIFdpZGdldCogd2lkZ2V0Rm9yQXR0YWNobWVudFZpZXcoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgUGFnZSogcGFnZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG51bGxwdHI7IH0KLSAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgRnJhbWVWaWV3KiBkb2N1bWVudEZyYW1lVmlldygp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICBGcmFtZSogZnJhbWUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgRnJhbWUqIG1haW5GcmFtZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICBEb2N1bWVudCogdG9wRG9j
dW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgU2Nyb2xsVmll
dyogc2Nyb2xsVmlld0FuY2VzdG9yKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsg
fQotICAgIFN0cmluZyBsYW5ndWFnZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygp
OyB9Ci0gICAgdW5zaWduZWQgaGllcmFyY2hpY2FsTGV2ZWwoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiAwOyB9Ci0KLSAgICB2b2lkIHNldEZvY3VzZWQoYm9vbCkgb3ZlcnJpZGUgeyB9Ci0gICAg
dm9pZCBzZXRTZWxlY3RlZFRleHQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGUgeyB9Ci0gICAgdm9p
ZCBzZXRTZWxlY3RlZFRleHRSYW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYpIG92ZXJyaWRlIHsg
fQotICAgIHZvaWQgc2V0VmFsdWUoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGUgeyB9Ci0gICAgYm9v
bCByZXBsYWNlVGV4dEluUmFuZ2UoY29uc3QgU3RyaW5nJiwgY29uc3QgUGxhaW5UZXh0UmFuZ2Um
KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaW5zZXJ0VGV4dChjb25zdCBT
dHJpbmcmKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotCi0gICAgdm9pZCBzZXRWYWx1ZShm
bG9hdCkgb3ZlcnJpZGUgeyB9Ci0gICAgdm9pZCBzZXRTZWxlY3RlZChib29sKSBvdmVycmlkZSB7
IH0KLSAgICB2b2lkIHNldFNlbGVjdGVkUm93cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Im
KSBvdmVycmlkZSB7IH0KLQotICAgIHZvaWQgbWFrZVJhbmdlVmlzaWJsZShjb25zdCBQbGFpblRl
eHRSYW5nZSYpIG92ZXJyaWRlIHsgfQotICAgIGJvb2wgcHJlc3MoKSBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQotICAgIGJvb2wgcGVyZm9ybURlZmF1bHRBY3Rpb24oKSBvdmVycmlkZSB7IHJl
dHVybiBmYWxzZTsgfQotCi0gICAgQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uIG9yaWVudGF0aW9u
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uOjpVbmRl
ZmluZWQ7IH0KLSAgICB2b2lkIGluY3JlbWVudCgpIG92ZXJyaWRlIHsgfQotICAgIHZvaWQgZGVj
cmVtZW50KCkgb3ZlcnJpZGUgeyB9Ci0KLSAgICB2b2lkIGNoaWxkcmVuQ2hhbmdlZCgpIG92ZXJy
aWRlIHsgfQotICAgIHZvaWQgdGV4dENoYW5nZWQoKSBvdmVycmlkZSB7IH0KLSAgICB2b2lkIHVw
ZGF0ZUFjY2Vzc2liaWxpdHlSb2xlKCkgb3ZlcnJpZGUgeyB9Ci0gICAgY29uc3QgQWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yJiBjaGlsZHJlbihib29sIHVwZGF0ZUNoaWxkcmVuSWZOZWVkZWQg
PSB0cnVlKSBvdmVycmlkZTsKLSAgICB2b2lkIGFkZENoaWxkcmVuKCkgb3ZlcnJpZGUgeyB9Ci0g
ICAgdm9pZCBhZGRDaGlsZChBWENvcmVPYmplY3QqKSBvdmVycmlkZSB7IH0KLSAgICB2b2lkIGlu
c2VydENoaWxkKEFYQ29yZU9iamVjdCosIHVuc2lnbmVkKSBvdmVycmlkZSB7IH0KLQotICAgIGJv
b2wgc2hvdWxkSWdub3JlQXR0cmlidXRlUm9sZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9Ci0KLSAgICBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBoYXNDaGlsZHJlbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgdm9pZCB1cGRhdGVDaGlsZHJlbklmTmVjZXNzYXJ5KCkgb3ZlcnJp
ZGUgeyB9Ci0gICAgdm9pZCBzZXROZWVkc1RvVXBkYXRlQ2hpbGRyZW4oKSBvdmVycmlkZSB7IH0K
LSAgICB2b2lkIHNldE5lZWRzVG9VcGRhdGVTdWJ0cmVlKCkgb3ZlcnJpZGUgeyB9OwotICAgIHZv
aWQgY2xlYXJDaGlsZHJlbigpIG92ZXJyaWRlIHsgfQotICAgIGJvb2wgbmVlZHNUb1VwZGF0ZUNo
aWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2b2lkIGRldGFj
aEZyb21QYXJlbnQoKSBvdmVycmlkZSB7IH0KLSAgICBib29sIGlzRGV0YWNoZWRGcm9tUGFyZW50
KCkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLQotICAgIGJvb2wgY2FuSGF2ZVNlbGVjdGVk
Q2hpbGRyZW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZvaWQgc2Vs
ZWN0ZWRDaGlsZHJlbihBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBvdmVycmlkZSB7IH0K
LSAgICB2b2lkIHZpc2libGVDaGlsZHJlbihBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBv
dmVycmlkZSB7IH0KLSAgICB2b2lkIHRhYkNoaWxkcmVuKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciYpIG92ZXJyaWRlIHsgfQotICAgIGJvb2wgc2hvdWxkRm9jdXNBY3RpdmVEZXNjZW5kYW50
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBBWENvcmVPYmplY3QqIGFj
dGl2ZURlc2NlbmRhbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAg
dm9pZCBoYW5kbGVBY3RpdmVEZXNjZW5kYW50Q2hhbmdlZCgpIG92ZXJyaWRlIHsgfQotICAgIHZv
aWQgaGFuZGxlQXJpYUV4cGFuZGVkQ2hhbmdlZCgpIG92ZXJyaWRlIHsgfQotICAgIGJvb2wgaXNE
ZXNjZW5kYW50T2ZPYmplY3QoY29uc3QgQVhDb3JlT2JqZWN0KikgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzQW5jZXN0b3JPZk9iamVjdChjb25zdCBBWENvcmVP
YmplY3QqKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIEFYQ29yZU9iamVj
dCogZmlyc3RBbm9ueW1vdXNCbG9ja0NoaWxkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVs
bHB0cjsgfQotCi0gICAgYm9vbCBoYXNBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgY29uc3QgQXRvbVN0cmluZyYgZ2V0
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBu
dWxsQXRvbSgpOyB9Ci0gICAgYm9vbCBoYXNUYWdOYW1lKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotCi0gICAgVmlzaWJsZVBvc2l0aW9uUmFu
Z2UgdmlzaWJsZVBvc2l0aW9uUmFuZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBWaXNpYmxl
UG9zaXRpb25SYW5nZSgpOyB9Ci0gICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgdmlzaWJsZVBvc2l0
aW9uUmFuZ2VGb3JMaW5lKHVuc2lnbmVkKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBWaXNpYmxl
UG9zaXRpb25SYW5nZSgpOyB9Ci0gICAgUmVmUHRyPFJhbmdlPiBlbGVtZW50UmFuZ2UoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2Ug
dmlzaWJsZVBvc2l0aW9uUmFuZ2VGb3JVbm9yZGVyZWRQb3NpdGlvbnMoY29uc3QgVmlzaWJsZVBv
c2l0aW9uJiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
VmlzaWJsZVBvc2l0aW9uUmFuZ2UoKTsgfQotICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHBvc2l0
aW9uT2ZMZWZ0V29yZChjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBWaXNpYmxlUG9zaXRpb25SYW5nZSgpOyB9Ci0gICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2Ug
cG9zaXRpb25PZlJpZ2h0V29yZChjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBWaXNpYmxlUG9zaXRpb25SYW5nZSgpOyB9Ci0gICAgVmlzaWJsZVBvc2l0aW9u
UmFuZ2UgbGVmdExpbmVWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb24m
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBWaXNpYmxlUG9zaXRpb25SYW5nZSgpOyB9Ci0gICAg
VmlzaWJsZVBvc2l0aW9uUmFuZ2UgcmlnaHRMaW5lVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3Qg
VmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVmlzaWJsZVBvc2l0aW9u
UmFuZ2UoKTsgfQotICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHNlbnRlbmNlRm9yUG9zaXRpb24o
Y29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVmlzaWJsZVBv
c2l0aW9uUmFuZ2UoKTsgfQotICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHBhcmFncmFwaEZvclBv
c2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFZp
c2libGVQb3NpdGlvblJhbmdlKCk7IH0KLSAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSBzdHlsZVJh
bmdlRm9yUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gVmlzaWJsZVBvc2l0aW9uUmFuZ2UoKTsgfQotICAgIFZpc2libGVQb3NpdGlvblJhbmdl
IHZpc2libGVQb3NpdGlvblJhbmdlRm9yUmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBWaXNpYmxlUG9zaXRpb25SYW5nZSgpOyB9Ci0gICAgVmlzaWJs
ZVBvc2l0aW9uUmFuZ2UgbGluZVJhbmdlRm9yUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9u
JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVmlzaWJsZVBvc2l0aW9uUmFuZ2UoKTsgfQotCi0g
ICAgUmVmUHRyPFJhbmdlPiByYW5nZUZvclBsYWluVGV4dFJhbmdlKGNvbnN0IFBsYWluVGV4dFJh
bmdlJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQotCi0gICAgU3RyaW5nIHN0
cmluZ0ZvclJhbmdlKFJlZlB0cjxSYW5nZT4pIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmlu
ZygpOyB9Ci0gICAgSW50UmVjdCBib3VuZHNGb3JWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBW
aXNpYmxlUG9zaXRpb25SYW5nZSYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEludFJlY3QoKTsg
fQotICAgIEludFJlY3QgYm91bmRzRm9yUmFuZ2UoY29uc3QgUmVmUHRyPFJhbmdlPikgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gSW50UmVjdCgpOyB9Ci0gICAgaW50IGxlbmd0aEZvclZpc2libGVQ
b3NpdGlvblJhbmdlKGNvbnN0IFZpc2libGVQb3NpdGlvblJhbmdlJikgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gMDsgfQotICAgIHZvaWQgc2V0U2VsZWN0ZWRWaXNpYmxlUG9zaXRpb25SYW5nZShj
b25zdCBWaXNpYmxlUG9zaXRpb25SYW5nZSYpIGNvbnN0IG92ZXJyaWRlIHsgfQotCi0gICAgVmlz
aWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkZvckJvdW5kcyhjb25zdCBJbnRSZWN0JiwgQWNj
ZXNzaWJpbGl0eVZpc2libGVQb3NpdGlvbkZvckJvdW5kcykgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gVmlzaWJsZVBvc2l0aW9uKCk7IH0KLSAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0
aW9uRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBWaXNp
YmxlUG9zaXRpb24oKTsgfQotICAgIFZpc2libGVQb3NpdGlvbiBuZXh0VmlzaWJsZVBvc2l0aW9u
KGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFZpc2libGVQ
b3NpdGlvbigpOyB9Ci0gICAgVmlzaWJsZVBvc2l0aW9uIHByZXZpb3VzVmlzaWJsZVBvc2l0aW9u
KGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFZpc2libGVQ
b3NpdGlvbigpOyB9Ci0gICAgVmlzaWJsZVBvc2l0aW9uIG5leHRXb3JkRW5kKGNvbnN0IFZpc2li
bGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOyB9
Ci0gICAgVmlzaWJsZVBvc2l0aW9uIHByZXZpb3VzV29yZFN0YXJ0KGNvbnN0IFZpc2libGVQb3Np
dGlvbiYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOyB9Ci0gICAg
VmlzaWJsZVBvc2l0aW9uIG5leHRMaW5lRW5kUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9u
JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7IH0KLSAgICBWaXNp
YmxlUG9zaXRpb24gcHJldmlvdXNMaW5lU3RhcnRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRp
b24mKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsgfQotICAgIFZp
c2libGVQb3NpdGlvbiBuZXh0U2VudGVuY2VFbmRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRp
b24mKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsgfQotICAgIFZp
c2libGVQb3NpdGlvbiBwcmV2aW91c1NlbnRlbmNlU3RhcnRQb3NpdGlvbihjb25zdCBWaXNpYmxl
UG9zaXRpb24mKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsgfQot
ICAgIFZpc2libGVQb3NpdGlvbiBuZXh0UGFyYWdyYXBoRW5kUG9zaXRpb24oY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7IH0K
LSAgICBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXNQYXJhZ3JhcGhTdGFydFBvc2l0aW9uKGNvbnN0
IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFZpc2libGVQb3NpdGlv
bigpOyB9Ci0gICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkZvckluZGV4KHVuc2ln
bmVkLCBib29sIC8qbGFzdEluZGV4T0sgKi8pIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFZpc2li
bGVQb3NpdGlvbigpOyB9Ci0KLSAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9y
SW5kZXgoaW50KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsgfQot
ICAgIGludCBpbmRleEZvclZpc2libGVQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9Ci0KLSAgICBBWENvcmVPYmplY3QqIGFjY2Vzc2li
aWxpdHlPYmplY3RGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgaW50IGxpbmVGb3JQb3NpdGlvbihjb25zdCBW
aXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9Ci0gICAgUGxhaW5U
ZXh0UmFuZ2UgcGxhaW5UZXh0UmFuZ2VGb3JWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNp
YmxlUG9zaXRpb25SYW5nZSYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFBsYWluVGV4dFJhbmdl
KCk7IH0KLSAgICBpbnQgaW5kZXgoY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gMDsgfQotCi0gICAgdm9pZCBsaW5lQnJlYWtzKFZlY3RvcjxpbnQ+JikgY29u
c3Qgb3ZlcnJpZGUgeyB9Ci0gICAgUGxhaW5UZXh0UmFuZ2UgZG9BWFJhbmdlRm9yTGluZSh1bnNp
Z25lZCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gUGxhaW5UZXh0UmFuZ2UoKTsgfQotICAgIFBs
YWluVGV4dFJhbmdlIGRvQVhSYW5nZUZvclBvc2l0aW9uKGNvbnN0IEludFBvaW50JikgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gUGxhaW5UZXh0UmFuZ2UoKTsgfQotICAgIFBsYWluVGV4dFJhbmdl
IGRvQVhSYW5nZUZvckluZGV4KHVuc2lnbmVkKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBQbGFp
blRleHRSYW5nZSgpOyB9Ci0gICAgUGxhaW5UZXh0UmFuZ2UgZG9BWFN0eWxlUmFuZ2VGb3JJbmRl
eCh1bnNpZ25lZCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gUGxhaW5UZXh0UmFuZ2UoKTsgfQot
Ci0gICAgU3RyaW5nIGRvQVhTdHJpbmdGb3JSYW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9Ci0gICAgSW50UmVjdCBkb0FYQm91bmRz
Rm9yUmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBJ
bnRSZWN0KCk7IH0KLSAgICBJbnRSZWN0IGRvQVhCb3VuZHNGb3JSYW5nZVVzaW5nQ2hhcmFjdGVy
T2Zmc2V0KGNvbnN0IFBsYWluVGV4dFJhbmdlJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gSW50
UmVjdCgpOyB9Ci0KLSAgICB1bnNpZ25lZCBkb0FYTGluZUZvckluZGV4KHVuc2lnbmVkKSBvdmVy
cmlkZSB7IHJldHVybiAwOyB9Ci0KLSAgICBTdHJpbmcgY29tcHV0ZWRSb2xlU3RyaW5nKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KLQotICAgIC8vIE1TQUEKLSAgICBTdHJp
bmcgc3RyaW5nVmFsdWVGb3JNU0FBKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7
IH0KLSAgICBTdHJpbmcgc3RyaW5nUm9sZUZvck1TQUEoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBTdHJpbmcoKTsgfQotICAgIFN0cmluZyBuYW1lRm9yTVNBQSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIFN0cmluZygpOyB9Ci0gICAgU3RyaW5nIGRlc2NyaXB0aW9uRm9yTVNBQSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9Ci0gICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9s
ZVZhbHVlRm9yTVNBQSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xl
OjpVbmtub3duOyB9Ci0KLSAgICBTdHJpbmcgcGFzc3dvcmRGaWVsZFZhbHVlKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICBib29sIGlzVmFsdWVBdXRvZmlsbGVkKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzVmFsdWVBdXRvZmls
bEF2YWlsYWJsZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgQXV0b0Zp
bGxCdXR0b25UeXBlIHZhbHVlQXV0b2ZpbGxCdXR0b25UeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gQXV0b0ZpbGxCdXR0b25UeXBlOjpOb25lOyB9Ci0KLSAgICB2b2lkIGFyaWFUcmVlUm93
cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBvdmVycmlkZSB7IH0KLSAgICB2b2lkIGFy
aWFUcmVlSXRlbURpc2Nsb3NlZFJvd3MoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgb3Zl
cnJpZGUgeyB9Ci0gICAgdm9pZCBhcmlhVHJlZUl0ZW1Db250ZW50KEFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciYpIG92ZXJyaWRlIHsgfQotCi0gICAgYm9vbCBzdXBwb3J0c0xpdmVSZWdpb24o
Ym9vbCA9IHRydWUpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBp
c0luc2lkZUxpdmVSZWdpb24oYm9vbCA9IHRydWUpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9Ci0gICAgQVhDb3JlT2JqZWN0KiBsaXZlUmVnaW9uQW5jZXN0b3IoYm9vbCA9IHRydWUp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICBjb25zdCBTdHJpbmcgbGl2
ZVJlZ2lvblN0YXR1cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9Ci0gICAg
Y29uc3QgU3RyaW5nIGxpdmVSZWdpb25SZWxldmFudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IFN0cmluZygpOyB9Ci0gICAgYm9vbCBsaXZlUmVnaW9uQXRvbWljKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzQnVzeSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9Ci0KLSAgICBib29sIGhhc0NvbnRlbnRFZGl0YWJsZUF0dHJpYnV0ZVNldCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0KLSAgICBib29sIHN1cHBvcnRzUmVh
ZE9ubHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIFN0cmluZyByZWFk
T25seVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KLQotICAgIGJv
b2wgc3VwcG9ydHNBdXRvQ29tcGxldGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQotICAgIFN0cmluZyBhdXRvQ29tcGxldGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IFN0cmluZygpOyB9Ci0KLSAgICBib29sIHN1cHBvcnRzQVJJQUF0dHJpYnV0ZXMoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotCi0gICAgT3B0aW9uU2V0PFNwZWFrQXM+IHNwZWFr
QXNQcm9wZXJ0eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIE9wdGlvblNldDxTcGVha0FzPigp
OyB9Ci0KLSAgICB2b2lkIHNjcm9sbFRvTWFrZVZpc2libGUoKSBjb25zdCBvdmVycmlkZSB7IH0K
LSAgICB2b2lkIHNjcm9sbFRvTWFrZVZpc2libGVXaXRoU3ViRm9jdXMoY29uc3QgSW50UmVjdCYp
IGNvbnN0IG92ZXJyaWRlIHsgfQotICAgIHZvaWQgc2Nyb2xsVG9HbG9iYWxQb2ludChjb25zdCBJ
bnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlIHsgfQotCi0gICAgYm9vbCBzY3JvbGxCeVBhZ2UoU2Ny
b2xsQnlQYWdlRGlyZWN0aW9uKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAg
IEludFBvaW50IHNjcm9sbFBvc2l0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gSW50UG9p
bnQoKTsgfQotICAgIEludFNpemUgc2Nyb2xsQ29udGVudHNTaXplKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gSW50U2l6ZSgpOyB9Ci0gICAgSW50UmVjdCBzY3JvbGxWaXNpYmxlQ29udGVudFJl
Y3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBJbnRSZWN0KCk7IH0KLSAgICB2b2lkIHNjcm9s
bFRvTWFrZVZpc2libGUoY29uc3QgU2Nyb2xsUmVjdFRvVmlzaWJsZU9wdGlvbnMmKSBjb25zdCBv
dmVycmlkZSB7IH0KLQotICAgIGJvb2wgbGFzdEtub3duSXNJZ25vcmVkVmFsdWUoKSBvdmVycmlk
ZSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZvaWQgc2V0TGFzdEtub3duSXNJZ25vcmVkVmFsdWUo
Ym9vbCkgb3ZlcnJpZGUgeyB9Ci0KLSAgICB2b2lkIG5vdGlmeUlmSWdub3JlZFZhbHVlQ2hhbmdl
ZCgpIG92ZXJyaWRlIHsgfQotCi0gICAgYm9vbCBpc01hdGhFbGVtZW50KCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc01hdGhFbGVt
ZW50KTsgfQotICAgIGJvb2wgaXNNYXRoRnJhY3Rpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzTWF0aEZyYWN0aW9uKTsgfQot
ICAgIGJvb2wgaXNNYXRoRmVuY2VkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJp
YnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc01hdGhGZW5jZWQpOyB9Ci0gICAgYm9vbCBpc01h
dGhTdWJzY3JpcHRTdXBlcnNjcmlwdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRy
aWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNNYXRoU3Vic2NyaXB0U3VwZXJzY3JpcHQpOyB9
Ci0gICAgYm9vbCBpc01hdGhSb3coKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmli
dXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzTWF0aFJvdyk7IH0KLSAgICBib29sIGlzTWF0aFVu
ZGVyT3ZlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFBy
b3BlcnR5TmFtZTo6SXNNYXRoVW5kZXJPdmVyKTsgfQotICAgIGJvb2wgaXNNYXRoUm9vdCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6
SXNNYXRoUm9vdCk7IH0KLSAgICBib29sIGlzTWF0aFNxdWFyZVJvb3QoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzTWF0aFNxdWFy
ZVJvb3QpOyB9Ci0gICAgYm9vbCBpc01hdGhUZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
Ym9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc01hdGhUZXh0KTsgfQotICAgIGJv
b2wgaXNNYXRoTnVtYmVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZh
bHVlKEFYUHJvcGVydHlOYW1lOjpJc01hdGhOdW1iZXIpOyB9Ci0gICAgYm9vbCBpc01hdGhPcGVy
YXRvcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3Bl
cnR5TmFtZTo6SXNNYXRoT3BlcmF0b3IpOyB9Ci0gICAgYm9vbCBpc01hdGhGZW5jZU9wZXJhdG9y
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlO
YW1lOjpJc01hdGhGZW5jZU9wZXJhdG9yKTsgfQotICAgIGJvb2wgaXNNYXRoU2VwYXJhdG9yT3Bl
cmF0b3IoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9w
ZXJ0eU5hbWU6OklzTWF0aFNlcGFyYXRvck9wZXJhdG9yKTsgfQotICAgIGJvb2wgaXNNYXRoSWRl
bnRpZmllcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFBy
b3BlcnR5TmFtZTo6SXNNYXRoSWRlbnRpZmllcik7IH0KLSAgICBib29sIGlzTWF0aFRhYmxlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1l
OjpJc01hdGhUYWJsZSk7IH0KLSAgICBib29sIGlzTWF0aFRhYmxlUm93KCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc01hdGhUYWJs
ZVJvdyk7IH0KLSAgICBib29sIGlzTWF0aFRhYmxlQ2VsbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNNYXRoVGFibGVDZWxsKTsg
fQotICAgIGJvb2wgaXNNYXRoTXVsdGlzY3JpcHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBi
b29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzTWF0aE11bHRpc2NyaXB0KTsgfQot
ICAgIGJvb2wgaXNNYXRoVG9rZW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmli
dXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzTWF0aFRva2VuKTsgfQotICAgIGJvb2wgaXNNYXRo
U2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlNYXRoU2NyaXB0T2JqZWN0VHlwZSkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzTWF0aE11bHRpc2NyaXB0T2JqZWN0
KEFjY2Vzc2liaWxpdHlNYXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQotCi0gICAgQVhDb3JlT2JqZWN0KiBtYXRoUmFkaWNhbmRPYmplY3Qo
KSBvdmVycmlkZSB7IHJldHVybiBvYmplY3RBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6
TWF0aFJhZGljYW5kT2JqZWN0KTsgfQotICAgIEFYQ29yZU9iamVjdCogbWF0aFJvb3RJbmRleE9i
amVjdCgpIG92ZXJyaWRlIHsgcmV0dXJuIG9iamVjdEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlO
YW1lOjpNYXRoUm9vdEluZGV4T2JqZWN0KTsgfQotCi0gICAgQVhDb3JlT2JqZWN0KiBtYXRoVW5k
ZXJPYmplY3QoKSBvdmVycmlkZSB7IHJldHVybiBvYmplY3RBdHRyaWJ1dGVWYWx1ZShBWFByb3Bl
cnR5TmFtZTo6TWF0aFVuZGVyT2JqZWN0KTsgfQotICAgIEFYQ29yZU9iamVjdCogbWF0aE92ZXJP
YmplY3QoKSBvdmVycmlkZSB7IHJldHVybiBvYmplY3RBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5
TmFtZTo6TWF0aE92ZXJPYmplY3QpOyB9Ci0KLSAgICBBWENvcmVPYmplY3QqIG1hdGhOdW1lcmF0
b3JPYmplY3QoKSBvdmVycmlkZSB7IHJldHVybiBvYmplY3RBdHRyaWJ1dGVWYWx1ZShBWFByb3Bl
cnR5TmFtZTo6TWF0aE51bWVyYXRvck9iamVjdCk7IH0KLSAgICBBWENvcmVPYmplY3QqIG1hdGhE
ZW5vbWluYXRvck9iamVjdCgpIG92ZXJyaWRlIHsgcmV0dXJuIG9iamVjdEF0dHJpYnV0ZVZhbHVl
KEFYUHJvcGVydHlOYW1lOjpNYXRoRGVub21pbmF0b3JPYmplY3QpOyB9Ci0KLSAgICBBWENvcmVP
YmplY3QqIG1hdGhCYXNlT2JqZWN0KCkgb3ZlcnJpZGUgeyByZXR1cm4gb2JqZWN0QXR0cmlidXRl
VmFsdWUoQVhQcm9wZXJ0eU5hbWU6Ok1hdGhCYXNlT2JqZWN0KTsgfQotICAgIEFYQ29yZU9iamVj
dCogbWF0aFN1YnNjcmlwdE9iamVjdCgpIG92ZXJyaWRlIHsgcmV0dXJuIG9iamVjdEF0dHJpYnV0
ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpNYXRoU3Vic2NyaXB0T2JqZWN0KTsgfQotICAgIEFYQ29y
ZU9iamVjdCogbWF0aFN1cGVyc2NyaXB0T2JqZWN0KCkgb3ZlcnJpZGUgeyByZXR1cm4gb2JqZWN0
QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6Ok1hdGhTdXBlcnNjcmlwdE9iamVjdCk7IH0K
LQotICAgIFN0cmluZyBtYXRoRmVuY2VkT3BlblN0cmluZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHN0cmluZ0F0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpNYXRoRmVuY2VkT3BlblN0
cmluZyk7IH0KLSAgICBTdHJpbmcgbWF0aEZlbmNlZENsb3NlU3RyaW5nKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6Ok1hdGhGZW5j
ZWRDbG9zZVN0cmluZyk7IH0KLSAgICBpbnQgbWF0aExpbmVUaGlja25lc3MoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBpbnRBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6TWF0aExpbmVU
aGlja25lc3MpOyB9Ci0gICAgYm9vbCBpc0Fub255bW91c01hdGhPcGVyYXRvcigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNBbm9u
eW1vdXNNYXRoT3BlcmF0b3IpOyB9Ci0KLSAgICB2b2lkIG1hdGhQcmVzY3JpcHRzKEFjY2Vzc2li
aWxpdHlNYXRoTXVsdGlzY3JpcHRQYWlycyYpIG92ZXJyaWRlIHsgfQotICAgIHZvaWQgbWF0aFBv
c3RzY3JpcHRzKEFjY2Vzc2liaWxpdHlNYXRoTXVsdGlzY3JpcHRQYWlycyYpIG92ZXJyaWRlIHsg
fQotCi0gICAgYm9vbCBpc0FYSGlkZGVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7
IH0KLSAgICBib29sIGlzRE9NSGlkZGVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7
IH0KLSAgICBib29sIGlzSGlkZGVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0K
LQotICAgIHZvaWQgc2V0V3JhcHBlcihBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciogd3JhcHBl
cikgb3ZlcnJpZGUgeyBtX3dyYXBwZXIgPSB3cmFwcGVyOyB9Ci0KLSAgICB2b2lkIG92ZXJyaWRl
QXR0YWNobWVudFBhcmVudChBWENvcmVPYmplY3QqKSBvdmVycmlkZSB7IH0KLQotICAgIGJvb2wg
YWNjZXNzaWJpbGl0eUlnbm9yZUF0dGFjaG1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQotICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gYWNjZXNzaWJpbGl0eVBs
YXRmb3JtSW5jbHVkZXNPYmplY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBBY2Nlc3NpYmls
aXR5T2JqZWN0SW5jbHVzaW9uOjpEZWZhdWx0QmVoYXZpb3I7IH0KLQotI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCi0gICAgaW50IGFjY2Vzc2liaWxpdHlQYXNzd29yZEZpZWxkTGVuZ3RoKCkgb3Zl
cnJpZGUgeyByZXR1cm4gMDsgfQotICAgIGJvb2wgaGFzVG91Y2hFdmVudExpc3RlbmVyKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzSW5wdXRUeXBlUG9wdXBC
dXR0b24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotI2VuZGlmCi0KLSAgICB2
b2lkIHVwZGF0ZUJhY2tpbmdTdG9yZSgpIG92ZXJyaWRlOwotCi0jaWYgUExBVEZPUk0oQ09DT0Ep
Ci0gICAgYm9vbCBwcmV2ZW50S2V5Ym9hcmRET01FdmVudERpc3BhdGNoKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2b2lkIHNldFByZXZlbnRLZXlib2FyZERPTUV2ZW50
RGlzcGF0Y2goYm9vbCkgb3ZlcnJpZGUgeyB9Ci0gICAgYm9vbCBmaWxlVXBsb2FkQnV0dG9uUmV0
dXJuc1ZhbHVlSW5UaXRsZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
U3RyaW5nIHNwZWVjaEhpbnRBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHN0cmluZ0F0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpTcGVlY2hIaW50KTsgfQotICAg
IFN0cmluZyBkZXNjcmlwdGlvbkF0dHJpYnV0ZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkRlc2NyaXB0aW9uKTsgfQot
ICAgIFN0cmluZyBoZWxwVGV4dEF0dHJpYnV0ZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkhlbHBUZXh0KTsgfQotICAg
IFN0cmluZyB0aXRsZUF0dHJpYnV0ZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3Ry
aW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OlRpdGxlKTsgfQotI2VuZGlmCi0KLSNp
ZiBQTEFURk9STShDT0NPQSkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgYm9vbCBjYXJl
dEJyb3dzaW5nRW5hYmxlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
dm9pZCBzZXRDYXJldEJyb3dzaW5nRW5hYmxlZChib29sKSBvdmVycmlkZSB7IH0KLSNlbmRpZgot
Ci0gICAgQVhDb3JlT2JqZWN0KiBmb2N1c2FibGVBbmNlc3RvcigpIG92ZXJyaWRlIHsgcmV0dXJu
IG51bGxwdHI7IH0KLSAgICBBWENvcmVPYmplY3QqIGVkaXRhYmxlQW5jZXN0b3IoKSBvdmVycmlk
ZSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgQVhDb3JlT2JqZWN0KiBoaWdoZXN0RWRpdGFibGVB
bmNlc3RvcigpIG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KLQotICAgIGNvbnN0IEFjY2Vz
c2liaWxpdHlTY3JvbGxWaWV3KiBhbmNlc3RvckFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KGJvb2wp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KLQotICAgIHZvaWQgc2V0SXNJZ25v
cmVkRnJvbVBhcmVudERhdGEoQWNjZXNzaWJpbGl0eUlzSWdub3JlZEZyb21QYXJlbnREYXRhJikg
b3ZlcnJpZGUgeyB9OwotICAgIHZvaWQgY2xlYXJJc0lnbm9yZWRGcm9tUGFyZW50RGF0YSgpIG92
ZXJyaWRlIHsgfQotICAgIHZvaWQgc2V0SXNJZ25vcmVkRnJvbVBhcmVudERhdGFGb3JDaGlsZChB
WENvcmVPYmplY3QqKSBvdmVycmlkZSB7IH0KIAorICAgIEFYSUQgcGFyZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9wYXJlbnQ7IH0KKyAgICAKKyAgICBBWElzb2xhdGVkVHJlZUlEIHRyZWVJZGVudGlm
aWVyKCkgY29uc3QgeyByZXR1cm4gbV90cmVlSWRlbnRpZmllcjsgfQorICAgIEFYSXNvbGF0ZWRU
cmVlKiB0cmVlKCkgY29uc3Q7CisgICAgCisgICAgQVhJc29sYXRlZE9iamVjdCgpID0gZGVmYXVs
dDsKKyAgICBBWElzb2xhdGVkT2JqZWN0KEFYQ29yZU9iamVjdCYsIGJvb2wgaXNSb290KTsKKyAg
ICB2b2lkIGluaXRpYWxpemVBdHRyaWJ1dGVEYXRhKEFYQ29yZU9iamVjdCYsIGJvb2wgaXNSb290
KTsKKyAgICAKICAgICBlbnVtIGNsYXNzIEFYUHJvcGVydHlOYW1lIDogdWludDhfdCB7CiAgICAg
ICAgIE5vbmUgPSAwLAorICAgICAgICBBY2Nlc3NLZXksCisgICAgICAgIEFjdGlvblZlcmIsCisg
ICAgICAgIEFjY2Vzc2liaWxpdHlCdXR0b25TdGF0ZSwKKyAgICAgICAgQWNjZXNzaWJpbGl0eVRl
eHQsCisgICAgICAgIEF1dG9Db21wbGV0ZVZhbHVlLAorICAgICAgICBBUklBQ29udHJvbHNFbGVt
ZW50cywKKyAgICAgICAgQVJJQURldGFpbHNFbGVtZW50cywKKyAgICAgICAgQVJJQURyb3BFZmZl
Y3RzLAorICAgICAgICBBUklBRXJyb3JNZXNzYWdlRWxlbWVudHMsCisgICAgICAgIEFSSUFJc011
bHRpbGluZSwKKyAgICAgICAgQVJJQUZsb3dUb0VsZW1lbnRzLAorICAgICAgICBBUklBTGFuZG1h
cmtSb2xlRGVzY3JpcHRpb24sCisgICAgICAgIEFSSUFUcmVlSXRlbUNvbnRlbnQsCisgICAgICAg
IEFSSUFUcmVlSXRlbURpc2Nsb3NlZFJvd3MsCisgICAgICAgIEFSSUFUcmVlUm93cywKKyAgICAg
ICAgQVJJQVJvbGVBdHRyaWJ1dGUsCisgICAgICAgIEFSSUFPd25zRWxlbWVudHMsCisgICAgICAg
IEJsb2NrcXVvdGVMZXZlbCwKICAgICAgICAgQm91bmRpbmdCb3hSZWN0LAorICAgICAgICBDYW5I
YXZlU2VsZWN0ZWRDaGlsZHJlbiwKKyAgICAgICAgQ2FuU2V0RXhwYW5kZWRBdHRyaWJ1dGUsCisg
ICAgICAgIENhblNldEZvY3VzQXR0cmlidXRlLAorICAgICAgICBDYW5TZXROdW1lcmljVmFsdWUs
CisgICAgICAgIENhblNldFNlbGVjdGVkQXR0cmlidXRlLAorICAgICAgICBDYW5TZXRTZWxlY3Rl
ZENoaWxkcmVuQXR0cmlidXRlLAorICAgICAgICBDYW5TZXRUZXh0UmFuZ2VBdHRyaWJ1dGVzLAor
ICAgICAgICBDYW5TZXRWYWx1ZUF0dHJpYnV0ZSwKKyAgICAgICAgQ2FudmFzSGFzRmFsbGJhY2tD
b250ZW50LAorICAgICAgICBDYXJldEJyb3dzaW5nRW5hYmxlZCwKKyAgICAgICAgQ2xhc3NMaXN0
LAorICAgICAgICBDbGlja1BvaW50LAorICAgICAgICBDb2xvclZhbHVlLAorICAgICAgICBDb21w
dXRlZExhYmVsLAorICAgICAgICBDb21wdXRlZFJvbGVTdHJpbmcsCisgICAgICAgIEN1cnJlbnRT
dGF0ZSwKKyAgICAgICAgQ3VycmVudFZhbHVlLAorICAgICAgICBEYXRldGltZUF0dHJpYnV0ZVZh
bHVlLAogICAgICAgICBEZXNjcmlwdGlvbiwKKyAgICAgICAgRG9jdW1lbnRFbmNvZGluZywKKyAg
ICAgICAgRG9jdW1lbnRVUkksCisgICAgICAgIEVkaXRhYmxlQW5jZXN0b3IsCiAgICAgICAgIEVs
ZW1lbnRSZWN0LAorICAgICAgICBFc3RpbWF0ZWRMb2FkaW5nUHJvZ3Jlc3MsCisgICAgICAgIEV4
cGFuZGVkVGV4dFZhbHVlLAorICAgICAgICBFeHBvc2VzVGl0bGVVSUVsZW1lbnQsCisgICAgICAg
IEZpbGVVcGxvYWRCdXR0b25SZXR1cm5zVmFsdWVJblRpdGxlLAorICAgICAgICBGb2N1c2FibGVB
bmNlc3RvciwKKyAgICAgICAgSGFzQVJJQVZhbHVlTm93LAorICAgICAgICBIYXNQb3B1cCwKKyAg
ICAgICAgSGVhZGluZ0xldmVsLAogICAgICAgICBIZWxwVGV4dCwKKyAgICAgICAgSGllcmFyY2hp
Y2FsTGV2ZWwsCisgICAgICAgIEhpZ2hlc3RFZGl0YWJsZUFuY2VzdG9yLAorICAgICAgICBIb3Jp
em9udGFsU2Nyb2xsQmFyLAorICAgICAgICBJZGVudGlmaWVyQXR0cmlidXRlLAorICAgICAgICBJ
bnZhbGlkU3RhdHVzLAogICAgICAgICBJc0FjY2Vzc2liaWxpdHlJZ25vcmVkLAorICAgICAgICBJ
c0FjdGl2ZURlc2NlbmRhbnRPZkZvY3VzZWRDb250YWluZXIsCiAgICAgICAgIElzQW5vbnltb3Vz
TWF0aE9wZXJhdG9yLAorICAgICAgICBJc0FSSUFHcmFiYmVkLAorICAgICAgICBJc0FSSUFUcmVl
R3JpZFJvdywKICAgICAgICAgSXNBdHRhY2htZW50LAorICAgICAgICBJc0J1dHRvbiwKKyAgICAg
ICAgSXNCdXN5LAogICAgICAgICBJc0NoZWNrZWQsCiAgICAgICAgIElzQ29sbGFwc2VkLAorICAg
ICAgICBJc0NvbnRyb2wsCiAgICAgICAgIElzRW5hYmxlZCwKICAgICAgICAgSXNFeHBhbmRlZCwK
KyAgICAgICAgSXNGaWVsZHNldCwKICAgICAgICAgSXNGaWxlVXBsb2FkQnV0dG9uLAogICAgICAg
ICBJc0ZvY3VzZWQsCisgICAgICAgIElzR3JvdXAsCiAgICAgICAgIElzSW1hZ2UsCiAgICAgICAg
IElzSW1hZ2VNYXBMaW5rLAogICAgICAgICBJc0luZGV0ZXJtaW5hdGUsCisgICAgICAgIElzSW5s
aW5lVGV4dCwKKyAgICAgICAgSXNJbnB1dEltYWdlLAorICAgICAgICBJc0luc2lkZUxpdmVSZWdp
b24sCiAgICAgICAgIElzTGluaywKICAgICAgICAgSXNMaW5rZWQsCisgICAgICAgIElzTGlzdCwK
KyAgICAgICAgSXNMaXN0Qm94LAogICAgICAgICBJc0xvYWRlZCwKKyAgICAgICAgSXNIZWFkaW5n
LAogICAgICAgICBJc0hvdmVyZWQsCiAgICAgICAgIElzTWF0aEVsZW1lbnQsCiAgICAgICAgIElz
TWF0aEZyYWN0aW9uLApAQCAtNjc4LDIyICsxODIsNTcgQEAgcHJpdmF0ZToKICAgICAgICAgSXNN
YXRoVG9rZW4sCiAgICAgICAgIElzTWF0aFNjcmlwdE9iamVjdCwKICAgICAgICAgSXNNZWRpYUNv
bnRyb2xMYWJlbCwKKyAgICAgICAgSXNNZWRpYVRpbWVsaW5lLAorICAgICAgICBJc01lbnUsCisg
ICAgICAgIElzTWVudUJhciwKKyAgICAgICAgSXNNZW51QnV0dG9uLAorICAgICAgICBJc01lbnVJ
dGVtLAorICAgICAgICBJc01lbnVMaXN0LAorICAgICAgICBJc01lbnVMaXN0T3B0aW9uLAorICAg
ICAgICBJc01lbnVMaXN0UG9wdXAsCisgICAgICAgIElzTWVudVJlbGF0ZWQsCisgICAgICAgIElz
TWV0ZXIsCiAgICAgICAgIElzTXVsdGlTZWxlY3RhYmxlLAogICAgICAgICBJc09mZlNjcmVlbiwK
ICAgICAgICAgSXNPblNjcmVlbiwKKyAgICAgICAgSXNPdXRwdXQsCisgICAgICAgIElzUGFzc3dv
cmRGaWVsZCwKICAgICAgICAgSXNQcmVzc2VkLAorICAgICAgICBJc1Byb2dyZXNzSW5kaWNhdG9y
LAorICAgICAgICBJc1JhbmdlQ29udHJvbCwKICAgICAgICAgSXNSZXF1aXJlZCwKICAgICAgICAg
SXNTY3JvbGxiYXIsCisgICAgICAgIElzU2VhcmNoRmllbGQsCiAgICAgICAgIElzU2VsZWN0ZWQs
CiAgICAgICAgIElzU2VsZWN0ZWRPcHRpb25BY3RpdmUsCisgICAgICAgIElzU2hvd2luZ1ZhbGlk
YXRpb25NZXNzYWdlLAorICAgICAgICBJc1NsaWRlciwKKyAgICAgICAgSXNTdHlsZUZvcm1hdEdy
b3VwLAorICAgICAgICBJc1RhYmxlLAorICAgICAgICBJc1RhYmxlQ2VsbCwKKyAgICAgICAgSXNU
YWJsZUNvbHVtbiwKKyAgICAgICAgSXNUYWJsZVJvdywKKyAgICAgICAgSXNUZXh0Q29udHJvbCwK
ICAgICAgICAgSXNUcmVlLAogICAgICAgICBJc1RyZWVJdGVtLAogICAgICAgICBJc1VudmlzaXRl
ZCwKKyAgICAgICAgSXNWYWx1ZUF1dG9maWxsZWQsCisgICAgICAgIElzVmFsdWVBdXRvZmlsbEF2
YWlsYWJsZSwKICAgICAgICAgSXNWaXNpYmxlLAogICAgICAgICBJc1Zpc2l0ZWQsCisgICAgICAg
IEtleVNob3J0Y3V0c1ZhbHVlLAorICAgICAgICBMYW5ndWFnZSwKKyAgICAgICAgTGF5b3V0Q291
bnQsCisgICAgICAgIExpbmtSZWxWYWx1ZSwKKyAgICAgICAgTGlua2VkVUlFbGVtZW50cywKKyAg
ICAgICAgTGl2ZVJlZ2lvbkF0b21pYywKKyAgICAgICAgTGl2ZVJlZ2lvblJlbGV2YW50LAorICAg
ICAgICBMaXZlUmVnaW9uU3RhdHVzLAogICAgICAgICBNYXRoRmVuY2VkT3BlblN0cmluZywKICAg
ICAgICAgTWF0aEZlbmNlZENsb3NlU3RyaW5nLAogICAgICAgICBNYXRoTGluZVRoaWNrbmVzcywK
KyAgICAgICAgTWF0aFByZXNjcmlwdHMsCisgICAgICAgIE1hdGhQb3N0c2NyaXB0cywKICAgICAg
ICAgTWF0aFJhZGljYW5kT2JqZWN0LAogICAgICAgICBNYXRoUm9vdEluZGV4T2JqZWN0LAogICAg
ICAgICBNYXRoVW5kZXJPYmplY3QsCkBAIC03MDMsMzcgKzI0Miw1NTggQEAgcHJpdmF0ZToKICAg
ICAgICAgTWF0aEJhc2VPYmplY3QsCiAgICAgICAgIE1hdGhTdWJzY3JpcHRPYmplY3QsCiAgICAg
ICAgIE1hdGhTdXBlcnNjcmlwdE9iamVjdCwKKyAgICAgICAgTWF4VmFsdWVGb3JSYW5nZSwKKyAg
ICAgICAgTWluVmFsdWVGb3JSYW5nZSwKKyAgICAgICAgT3JpZW50YXRpb24sCisgICAgICAgIFBs
YWNlaG9sZGVyVmFsdWUsCisgICAgICAgIFByZXNzZWRJc1ByZXNlbnQsCisgICAgICAgIFBvcHVw
VmFsdWUsCisgICAgICAgIFBvc0luU2V0LAorICAgICAgICBQcmV2ZW50S2V5Ym9hcmRET01FdmVu
dERpc3BhdGNoLAorICAgICAgICBSZWFkT25seVZhbHVlLAogICAgICAgICBSZWxhdGl2ZUZyYW1l
LAogICAgICAgICBSb2xlVmFsdWUsCiAgICAgICAgIFJvbGVQbGF0Zm9ybVN0cmluZywKICAgICAg
ICAgUm9sZURlc2NyaXB0aW9uLAotICAgICAgICBBUklBTGFuZG1hcmtSb2xlRGVzY3JpcHRpb24s
CisgICAgICAgIFNlbGVjdGVkQ2hpbGRyZW4sCisgICAgICAgIFNlbGVjdGVkUmFkaW9CdXR0b24s
CisgICAgICAgIFNlbGVjdGVkVGFiSXRlbSwKKyAgICAgICAgU2Vzc2lvbklELAorICAgICAgICBT
ZXRTaXplLAorICAgICAgICBTb3J0RGlyZWN0aW9uLAorICAgICAgICBTcGVha0FzLAogICAgICAg
ICBTcGVlY2hIaW50LAorICAgICAgICBTdXBwb3J0c0FSSUFEcmFnZ2luZywKKyAgICAgICAgU3Vw
cG9ydHNBUklBRHJvcHBpbmcsCisgICAgICAgIFN1cHBvcnRzQVJJQU93bnMsCisgICAgICAgIFN1
cHBvcnRzQ3VycmVudCwKKyAgICAgICAgU3VwcG9ydHNEYXRldGltZUF0dHJpYnV0ZSwKKyAgICAg
ICAgU3VwcG9ydHNFeHBhbmRlZCwKKyAgICAgICAgU3VwcG9ydHNFeHBhbmRlZFRleHRWYWx1ZSwK
KyAgICAgICAgU3VwcG9ydHNMaXZlUmVnaW9uLAorICAgICAgICBTdXBwb3J0c1JhbmdlVmFsdWUs
CisgICAgICAgIFN1cHBvcnRzUG9zSW5TZXQsCisgICAgICAgIFN1cHBvcnRzUHJlc3NBY3Rpb24s
CiAgICAgICAgIFN1cHBvcnRzUmVxdWlyZWRBdHRyaWJ1dGUsCisgICAgICAgIFN1cHBvcnRzU2V0
U2l6ZSwKKyAgICAgICAgVGFiQ2hpbGRyZW4sCisgICAgICAgIFRhYmxlTGV2ZWwsCisgICAgICAg
IFRhZ05hbWUsCisgICAgICAgIFRleHRMZW5ndGgsCiAgICAgICAgIFRpdGxlLAorICAgICAgICBU
aXRsZVVJRWxlbWVudCwKKyAgICAgICAgVVJMLAorICAgICAgICBWYWx1ZUF1dG9maWxsQnV0dG9u
VHlwZSwKKyAgICAgICAgVmFsdWVEZXNjcmlwdGlvbiwKKyAgICAgICAgVmFsdWVGb3JSYW5nZSwK
KyAgICAgICAgVmFsaWRhdGlvbk1lc3NhZ2UsCisgICAgICAgIFZlcnRpY2FsU2Nyb2xsQmFyLAor
ICAgICAgICBWaXNpYmxlQ2hpbGRyZW4sCiAgICAgfTsKLQotICAgIEFYSUQgcGFyZW50KCkgY29u
c3QgeyByZXR1cm4gbV9wYXJlbnQ7IH0KLQotICAgIEFYSXNvbGF0ZWRUcmVlSUQgdHJlZUlkZW50
aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3RyZWVJZGVudGlmaWVyOyB9Ci0gICAgQVhJc29sYXRl
ZFRyZWUqIHRyZWUoKSBjb25zdDsKLQotICAgIEFYSXNvbGF0ZWRPYmplY3QoKSA9IGRlZmF1bHQ7
Ci0gICAgQVhJc29sYXRlZE9iamVjdChBWENvcmVPYmplY3QmKTsKLSAgICB2b2lkIGluaXRpYWxp
emVBdHRyaWJ1dGVEYXRhKEFYQ29yZU9iamVjdCYpOwotCi0gICAgdXNpbmcgQXR0cmlidXRlVmFs
dWVWYXJpYW50ID0gVmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgU3RyaW5nLCBib29sLCBpbnQsIHVu
c2lnbmVkLCBkb3VibGUsIExheW91dFJlY3QsIEFYSUQ+OworICAgIAorICAgIHR5cGVkZWYgc3Rk
OjpwYWlyPEFYSUQsIEFYSUQ+IEFjY2Vzc2liaWxpdHlJc29sYXRlZFRyZWVNYXRoTXVsdGlzY3Jp
cHRQYWlyOworICAgIHN0cnVjdCBBY2Nlc3NpYmlsaXR5SXNvbGF0ZWRUcmVlVGV4dCB7CisgICAg
ICAgIFN0cmluZyB0ZXh0OworICAgICAgICBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZSB0ZXh0U291
cmNlOworICAgICAgICBWZWN0b3I8QVhJRD4gdGV4dEVsZW1lbnRzOworICAgIH07CisgICAgCisg
ICAgdXNpbmcgQXR0cmlidXRlVmFsdWVWYXJpYW50ID0gVmFyaWFudDxzdGQ6Om51bGxwdHJfdCwg
U3RyaW5nLCBib29sLCBpbnQsIHVuc2lnbmVkLCBkb3VibGUsIGZsb2F0LCB1aW50NjRfdCwgQ29s
b3IsIFVSTCwgTGF5b3V0UmVjdCwgQVhJRCwgSW50UG9pbnQsIE9wdGlvblNldDxTcGVha0FzPiwg
VmVjdG9yPEFjY2Vzc2liaWxpdHlJc29sYXRlZFRyZWVUZXh0PiwgVmVjdG9yPEFYSUQ+LCBWZWN0
b3I8QWNjZXNzaWJpbGl0eUlzb2xhdGVkVHJlZU1hdGhNdWx0aXNjcmlwdFBhaXI+LCBWZWN0b3I8
U3RyaW5nPj47CiAgICAgdm9pZCBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZSwgQXR0cmlidXRl
VmFsdWVWYXJpYW50JiYsIGJvb2wgc2hvdWxkUmVtb3ZlID0gZmFsc2UpOwogICAgIHZvaWQgc2V0
T2JqZWN0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWUsIEFYQ29yZU9iamVjdCopOwotICAgIAorICAg
IHZvaWQgc2V0T2JqZWN0VmVjdG9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWUsIEFjY2Vzc2liaWxp
dHlDaGlsZHJlblZlY3RvciYpOworCiAgICAgYm9vbCBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9w
ZXJ0eU5hbWUpIGNvbnN0OwogICAgIGNvbnN0IFN0cmluZyBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShB
WFByb3BlcnR5TmFtZSkgY29uc3Q7CiAgICAgaW50IGludEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVy
dHlOYW1lKSBjb25zdDsKICAgICB1bnNpZ25lZCB1bnNpZ25lZEF0dHJpYnV0ZVZhbHVlKEFYUHJv
cGVydHlOYW1lKSBjb25zdDsKICAgICBkb3VibGUgZG91YmxlQXR0cmlidXRlVmFsdWUoQVhQcm9w
ZXJ0eU5hbWUpIGNvbnN0OwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQgcmVjdEF0dHJpYnV0
ZVZhbHVlKEFYUHJvcGVydHlOYW1lKSBjb25zdDsKKyAgICBmbG9hdCBmbG9hdEF0dHJpYnV0ZVZh
bHVlKEFYUHJvcGVydHlOYW1lKSBjb25zdDsKICAgICBBWENvcmVPYmplY3QqIG9iamVjdEF0dHJp
YnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lKSBjb25zdDsKKyAgICBJbnRQb2ludCBpbnRQb2ludEF0
dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lKSBjb25zdDsKKyAgICBDb2xvciBjb2xvckF0dHJp
YnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lKSBjb25zdDsKKyAgICBVUkwgdXJsQXR0cmlidXRlVmFs
dWUoQVhQcm9wZXJ0eU5hbWUpIGNvbnN0OworICAgIHVpbnQ2NF90IHVpbnQ2NEF0dHJpYnV0ZVZh
bHVlKEFYUHJvcGVydHlOYW1lKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIHJl
Y3RBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZSkgY29uc3Q7CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gVmVjdG9yPFQ+IHZlY3RvckF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lKSBj
b25zdDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBPcHRpb25TZXQ8VD4gb3B0aW9uU2V0QXR0
cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWUpIGNvbnN0OworCisgICAgdm9pZCBmaWxsQ2hpbGRy
ZW5WZWN0b3JGb3JQcm9wZXJ0eShBWFByb3BlcnR5TmFtZSwgQWNjZXNzaWJpbGl0eUNoaWxkcmVu
VmVjdG9yJikgY29uc3Q7CisgICAgdm9pZCBzZXRNYXRoc2NyaXB0cyhBWFByb3BlcnR5TmFtZSwg
QVhDb3JlT2JqZWN0Jik7CisgICAgdm9pZCBpbnNlcnRNYXRoUGFpcnMoVmVjdG9yPEFjY2Vzc2li
aWxpdHlJc29sYXRlZFRyZWVNYXRoTXVsdGlzY3JpcHRQYWlyPiYsIEFjY2Vzc2liaWxpdHlNYXRo
TXVsdGlzY3JpcHRQYWlycyYpOworICAgIAorICAgIC8vIEF0dHJpYnV0ZSByZXRyaWV2YWwgb3Zl
cnJpZGVzLgorICAgIGJvb2wgaXNIZWFkaW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9v
bEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc0hlYWRpbmcpOyB9CisgICAgYm9vbCBp
c0xpbmsoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9w
ZXJ0eU5hbWU6OklzTGluayk7IH0KKyAgICBib29sIGlzSW1hZ2UoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzSW1hZ2UpOyB9Cisg
ICAgYm9vbCBpc1Bhc3N3b3JkRmllbGQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0
cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzUGFzc3dvcmRGaWVsZCk7IH0KKyAgICBib29s
IGlzU2VhcmNoRmllbGQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFs
dWUoQVhQcm9wZXJ0eU5hbWU6OklzU2VhcmNoRmllbGQpOyB9CisgICAgYm9vbCBpc0F0dGFjaG1l
bnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0
eU5hbWU6OklzQXR0YWNobWVudCk7IH0KKyAgICBib29sIGlzTWVkaWFUaW1lbGluZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNN
ZWRpYVRpbWVsaW5lKTsgfQorICAgIGJvb2wgaXNNZW51UmVsYXRlZCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNNZW51UmVsYXRl
ZCk7IH0KKyAgICBib29sIGlzTWVudSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRy
aWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNNZW51KTsgfQorICAgIGJvb2wgaXNNZW51QmFy
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlO
YW1lOjpJc01lbnVCYXIpOyB9CisgICAgYm9vbCBpc01lbnVCdXR0b24oKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzTWVudUJ1dHRv
bik7IH0KKyAgICBib29sIGlzTWVudUl0ZW0oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29s
QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzTWVudUl0ZW0pOyB9CisgICAgYm9vbCBp
c0ZpbGVVcGxvYWRCdXR0b24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRl
VmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzRmlsZVVwbG9hZEJ1dHRvbik7IH0KKyAgICBib29sIGlz
SW5wdXRJbWFnZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShB
WFByb3BlcnR5TmFtZTo6SXNJbnB1dEltYWdlKTsgfQorICAgIGJvb2wgaXNQcm9ncmVzc0luZGlj
YXRvcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3Bl
cnR5TmFtZTo6SXNQcm9ncmVzc0luZGljYXRvcik7IH0KKyAgICBib29sIGlzU2xpZGVyKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJ
c1NsaWRlcik7IH0KKyAgICBib29sIGlzQ29udHJvbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNDb250cm9sKTsgfQorICAgIGJv
b2wgaXNMaXN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFY
UHJvcGVydHlOYW1lOjpJc0xpc3QpOyB9CisgICAgYm9vbCBpc1RhYmxlKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc1RhYmxlKTsg
fQorICAgIGJvb2wgaXNUYWJsZVJvdygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRy
aWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNUYWJsZVJvdyk7IH0KKyAgICBib29sIGlzVGFi
bGVDb2x1bW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQ
cm9wZXJ0eU5hbWU6OklzVGFibGVDb2x1bW4pOyB9CisgICAgYm9vbCBpc1RhYmxlQ2VsbCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6
SXNUYWJsZUNlbGwpOyB9CisgICAgYm9vbCBpc0ZpZWxkc2V0KCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc0ZpZWxkc2V0KTsgfQor
ICAgIGJvb2wgaXNHcm91cCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVW
YWx1ZShBWFByb3BlcnR5TmFtZTo6SXNHcm91cCk7IH0KKyAgICBib29sIGlzQVJJQVRyZWVHcmlk
Um93KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVy
dHlOYW1lOjpJc0FSSUFUcmVlR3JpZFJvdyk7IH0KKyAgICBib29sIGlzTWVudUxpc3QoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6Oklz
TWVudUxpc3QpOyB9CisgICAgYm9vbCBpc01lbnVMaXN0UG9wdXAoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzTWVudUxpc3RQb3B1
cCk7IH0KKyAgICBib29sIGlzTWVudUxpc3RPcHRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzTWVudUxpc3RPcHRpb24pOyB9
CisgICAgYm9vbCBpc1RleHRDb250cm9sKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0
dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc1RleHRDb250cm9sKTsgfQorICAgIGJvb2wg
aXNCdXR0b24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQ
cm9wZXJ0eU5hbWU6OklzQnV0dG9uKTsgfQorICAgIGJvb2wgaXNSYW5nZUNvbnRyb2woKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6Oklz
UmFuZ2VDb250cm9sKTsgfQorICAgIGJvb2wgaXNNZXRlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNNZXRlcik7IH0KKyAgICBi
b29sIGlzU3R5bGVGb3JtYXRHcm91cCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRy
aWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNTdHlsZUZvcm1hdEdyb3VwKTsgfQorICAgIGJv
b2wgaXNPdXRwdXQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUo
QVhQcm9wZXJ0eU5hbWU6OklzT3V0cHV0KTsgfQorICAgIGJvb2wgaXNDaGVja2VkKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc0No
ZWNrZWQpOyB9CisgICAgYm9vbCBpc0VuYWJsZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBi
b29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzRW5hYmxlZCk7IH0KKyAgICBib29s
IGlzU2VsZWN0ZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUo
QVhQcm9wZXJ0eU5hbWU6OklzU2VsZWN0ZWQpOyB9CisgICAgYm9vbCBpc0ZvY3VzZWQoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6Oklz
Rm9jdXNlZCk7IH0KKyAgICBib29sIGlzTXVsdGlTZWxlY3RhYmxlKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc011bHRpU2VsZWN0
YWJsZSk7IH0KKyAgICBib29sIGlzVmlzaXRlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJv
b2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNWaXNpdGVkKTsgfQorICAgIGJvb2wg
aXNSZXF1aXJlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShB
WFByb3BlcnR5TmFtZTo6SXNSZXF1aXJlZCk7IH0KKyAgICBib29sIHN1cHBvcnRzUmVxdWlyZWRB
dHRyaWJ1dGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQ
cm9wZXJ0eU5hbWU6OlN1cHBvcnRzUmVxdWlyZWRBdHRyaWJ1dGUpOyB9CisgICAgYm9vbCBpc0V4
cGFuZGVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJv
cGVydHlOYW1lOjpJc0V4cGFuZGVkKTsgfQorICAgIEZsb2F0UmVjdCByZWxhdGl2ZUZyYW1lKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcmVjdEF0dHJpYnV0ZVZhbHVlPEZsb2F0UmVjdD4oQVhQ
cm9wZXJ0eU5hbWU6OlJlbGF0aXZlRnJhbWUpOyB9CisgICAgYm9vbCBzdXBwb3J0c0RhdGV0aW1l
QXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFY
UHJvcGVydHlOYW1lOjpTdXBwb3J0c0RhdGV0aW1lQXR0cmlidXRlKTsgfQorICAgIFN0cmluZyBk
YXRldGltZUF0dHJpYnV0ZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RyaW5nQXR0
cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkRhdGV0aW1lQXR0cmlidXRlVmFsdWUpOyB9Cisg
ICAgYm9vbCBjYW5TZXRGb2N1c0F0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJv
b2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6Q2FuU2V0Rm9jdXNBdHRyaWJ1dGUpOyB9
CisgICAgYm9vbCBjYW5TZXRUZXh0UmFuZ2VBdHRyaWJ1dGVzKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpDYW5TZXRUZXh0UmFuZ2VB
dHRyaWJ1dGVzKTsgfQorICAgIGJvb2wgY2FuU2V0VmFsdWVBdHRyaWJ1dGUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkNhblNldFZh
bHVlQXR0cmlidXRlKTsgfQorICAgIGJvb2wgY2FuU2V0TnVtZXJpY1ZhbHVlKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpDYW5TZXRO
dW1lcmljVmFsdWUpOyB9CisgICAgYm9vbCBjYW5TZXRTZWxlY3RlZEF0dHJpYnV0ZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6Q2Fu
U2V0U2VsZWN0ZWRBdHRyaWJ1dGUpOyB9CisgICAgYm9vbCBjYW5TZXRTZWxlY3RlZENoaWxkcmVu
QXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFY
UHJvcGVydHlOYW1lOjpDYW5TZXRTZWxlY3RlZENoaWxkcmVuQXR0cmlidXRlKTsgfQorICAgIGJv
b2wgY2FuU2V0RXhwYW5kZWRBdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29s
QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkNhblNldEV4cGFuZGVkQXR0cmlidXRlKTsg
fQorICAgIGJvb2wgYWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNBY2Nlc3NpYmlsaXR5SWdu
b3JlZCk7IH0KKyAgICBib29sIGlzU2hvd2luZ1ZhbGlkYXRpb25NZXNzYWdlKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc1Nob3dp
bmdWYWxpZGF0aW9uTWVzc2FnZSk7IH0KKyAgICBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2UoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFt
ZTo6VmFsaWRhdGlvbk1lc3NhZ2UpOyB9CisgICAgdW5zaWduZWQgYmxvY2txdW90ZUxldmVsKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdW5zaWduZWRBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5
TmFtZTo6QmxvY2txdW90ZUxldmVsKTsgfQorICAgIGludCBoZWFkaW5nTGV2ZWwoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBpbnRBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SGVhZGlu
Z0xldmVsKTsgfQorICAgIGludCB0YWJsZUxldmVsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
aW50QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OlRhYmxlTGV2ZWwpOyB9CisgICAgQWNj
ZXNzaWJpbGl0eUJ1dHRvblN0YXRlIGNoZWNrYm94T3JSYWRpb1ZhbHVlKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRlPihpbnRBdHRy
aWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6QWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRlKSk7IH0K
KyAgICBTdHJpbmcgdmFsdWVEZXNjcmlwdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0
cmluZ0F0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpWYWx1ZURlc2NyaXB0aW9uKTsgfQor
ICAgIGZsb2F0IHZhbHVlRm9yUmFuZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmbG9hdEF0
dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpWYWx1ZUZvclJhbmdlKTsgfQorICAgIGZsb2F0
IG1heFZhbHVlRm9yUmFuZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmbG9hdEF0dHJpYnV0
ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpNYXhWYWx1ZUZvclJhbmdlKTsgfQorICAgIGZsb2F0IG1p
blZhbHVlRm9yUmFuZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmbG9hdEF0dHJpYnV0ZVZh
bHVlKEFYUHJvcGVydHlOYW1lOjpNaW5WYWx1ZUZvclJhbmdlKTsgfQorICAgIEFYQ29yZU9iamVj
dCogc2VsZWN0ZWRSYWRpb0J1dHRvbigpIG92ZXJyaWRlIHsgcmV0dXJuIG9iamVjdEF0dHJpYnV0
ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpTZWxlY3RlZFJhZGlvQnV0dG9uKTsgfQorICAgIEFYQ29y
ZU9iamVjdCogc2VsZWN0ZWRUYWJJdGVtKCkgb3ZlcnJpZGUgeyByZXR1cm4gb2JqZWN0QXR0cmli
dXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OlNlbGVjdGVkVGFiSXRlbSk7IH0KKyAgICBpbnQgbGF5
b3V0Q291bnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBpbnRBdHRyaWJ1dGVWYWx1ZShBWFBy
b3BlcnR5TmFtZTo6TGF5b3V0Q291bnQpOyB9CisgICAgZG91YmxlIGVzdGltYXRlZExvYWRpbmdQ
cm9ncmVzcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGRvdWJsZUF0dHJpYnV0ZVZhbHVlKEFY
UHJvcGVydHlOYW1lOjpFc3RpbWF0ZWRMb2FkaW5nUHJvZ3Jlc3MpOyB9CisgICAgYm9vbCBzdXBw
b3J0c0FSSUFPd25zKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVl
KEFYUHJvcGVydHlOYW1lOjpTdXBwb3J0c0FSSUFPd25zKTsgfQorICAgIGJvb2wgaXNBY3RpdmVE
ZXNjZW5kYW50T2ZGb2N1c2VkQ29udGFpbmVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9v
bEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc0FjdGl2ZURlc2NlbmRhbnRPZkZvY3Vz
ZWRDb250YWluZXIpOyB9CisgICAgdm9pZCBhcmlhQ29udHJvbHNFbGVtZW50cyhBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3ImIGNoaWxkcmVuKSBjb25zdCBvdmVycmlkZSB7IGZpbGxDaGlsZHJl
blZlY3RvckZvclByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpBUklBQ29udHJvbHNFbGVtZW50cywg
Y2hpbGRyZW4pOyB9CisgICAgdm9pZCBhcmlhRGV0YWlsc0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlD
aGlsZHJlblZlY3RvciYgY2hpbGRyZW4pIGNvbnN0IG92ZXJyaWRlIHsgZmlsbENoaWxkcmVuVmVj
dG9yRm9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkFSSUFEZXRhaWxzRWxlbWVudHMsIGNoaWxk
cmVuKTsgfQorICAgIHZvaWQgYXJpYUVycm9yTWVzc2FnZUVsZW1lbnRzKEFjY2Vzc2liaWxpdHlD
aGlsZHJlblZlY3RvciYgY2hpbGRyZW4pIGNvbnN0IG92ZXJyaWRlIHsgZmlsbENoaWxkcmVuVmVj
dG9yRm9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkFSSUFFcnJvck1lc3NhZ2VFbGVtZW50cywg
Y2hpbGRyZW4pOyB9CisgICAgdm9pZCBhcmlhRmxvd1RvRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yJiBjaGlsZHJlbikgY29uc3Qgb3ZlcnJpZGUgeyBmaWxsQ2hpbGRyZW5WZWN0
b3JGb3JQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6QVJJQUZsb3dUb0VsZW1lbnRzLCBjaGlsZHJl
bik7IH0KKyAgICB2b2lkIGFyaWFPd25zRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yJiBjaGlsZHJlbikgY29uc3Qgb3ZlcnJpZGUgeyBmaWxsQ2hpbGRyZW5WZWN0b3JGb3JQcm9w
ZXJ0eShBWFByb3BlcnR5TmFtZTo6QVJJQU93bnNFbGVtZW50cywgY2hpbGRyZW4pOyB9CisgICAg
Ym9vbCBoYXNQb3B1cCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1
ZShBWFByb3BlcnR5TmFtZTo6SGFzUG9wdXApOyB9CisgICAgU3RyaW5nIHBvcHVwVmFsdWUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFt
ZTo6UG9wdXBWYWx1ZSk7IH0KKyAgICBib29sIHByZXNzZWRJc1ByZXNlbnQoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OlByZXNzZWRJ
c1ByZXNlbnQpOyB9CisgICAgYm9vbCBhcmlhSXNNdWx0aWxpbmUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkFSSUFJc011bHRpbGlu
ZSk7IH0KKyAgICBTdHJpbmcgaW52YWxpZFN0YXR1cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHN0cmluZ0F0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJbnZhbGlkU3RhdHVzKTsgfQor
ICAgIGJvb2wgc3VwcG9ydHNFeHBhbmRlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xB
dHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6U3VwcG9ydHNFeHBhbmRlZCk7IH0KKyAgICBB
Y2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbiBzb3J0RGlyZWN0aW9uKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eVNvcnREaXJlY3Rpb24+KGludEF0dHJp
YnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpTb3J0RGlyZWN0aW9uKSk7IH0KKyAgICBib29sIGNh
bnZhc0hhc0ZhbGxiYWNrQ29udGVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRy
aWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6Q2FudmFzSGFzRmFsbGJhY2tDb250ZW50KTsgfQor
ICAgIGJvb2wgc3VwcG9ydHNSYW5nZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9v
bEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpTdXBwb3J0c1JhbmdlVmFsdWUpOyB9Cisg
ICAgU3RyaW5nIGlkZW50aWZpZXJBdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBz
dHJpbmdBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SWRlbnRpZmllckF0dHJpYnV0ZSk7
IH0KKyAgICBTdHJpbmcgbGlua1JlbFZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3Ry
aW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkxpbmtSZWxWYWx1ZSk7IH0KKyAgICB2
b2lkIGNsYXNzTGlzdChWZWN0b3I8U3RyaW5nPiYpIGNvbnN0IG92ZXJyaWRlOworICAgIEFjY2Vz
c2liaWxpdHlDdXJyZW50U3RhdGUgY3VycmVudFN0YXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eUN1cnJlbnRTdGF0ZT4oaW50QXR0cmlidXRlVmFs
dWUoQVhQcm9wZXJ0eU5hbWU6OkN1cnJlbnRTdGF0ZSkpOyB9CisgICAgU3RyaW5nIGN1cnJlbnRW
YWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0cmluZ0F0dHJpYnV0ZVZhbHVlKEFYUHJv
cGVydHlOYW1lOjpDdXJyZW50VmFsdWUpOyB9CisgICAgYm9vbCBzdXBwb3J0c0N1cnJlbnQoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6
OlN1cHBvcnRzQ3VycmVudCk7IH0KKyAgICBjb25zdCBTdHJpbmcga2V5U2hvcnRjdXRzVmFsdWUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5
TmFtZTo6S2V5U2hvcnRjdXRzVmFsdWUpOyB9CisgICAgYm9vbCBzdXBwb3J0c1NldFNpemUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6
OlN1cHBvcnRzU2V0U2l6ZSk7IH0KKyAgICBib29sIHN1cHBvcnRzUG9zSW5TZXQoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OlN1cHBv
cnRzUG9zSW5TZXQpOyB9CisgICAgaW50IHNldFNpemUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBpbnRBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6U2V0U2l6ZSk7IH0KKyAgICBpbnQg
cG9zSW5TZXQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBpbnRBdHRyaWJ1dGVWYWx1ZShBWFBy
b3BlcnR5TmFtZTo6UG9zSW5TZXQpOyB9CisgICAgYm9vbCBzdXBwb3J0c0FSSUFEcm9wcGluZygp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFt
ZTo6U3VwcG9ydHNBUklBRHJvcHBpbmcpOyB9CisgICAgYm9vbCBzdXBwb3J0c0FSSUFEcmFnZ2lu
ZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5
TmFtZTo6U3VwcG9ydHNBUklBRHJhZ2dpbmcpOyB9CisgICAgYm9vbCBpc0FSSUFHcmFiYmVkKCkg
b3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc0FS
SUFHcmFiYmVkKTsgfQorICAgIFZlY3RvcjxTdHJpbmc+IGRldGVybWluZUFSSUFEcm9wRWZmZWN0
cygpIG92ZXJyaWRlIHsgcmV0dXJuIHZlY3RvckF0dHJpYnV0ZVZhbHVlPFN0cmluZz4oQVhQcm9w
ZXJ0eU5hbWU6OkFSSUFEcm9wRWZmZWN0cyk7IH0KKyAgICBBWENvcmVPYmplY3QqIGFjY2Vzc2li
aWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgQVhDb3Jl
T2JqZWN0KiBmb2N1c2VkVUlFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQVhDb3JlT2Jq
ZWN0KiBwYXJlbnRPYmplY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBwYXJlbnRPYmplY3RV
bmlnbm9yZWQoKTsgfQorICAgIEFYQ29yZU9iamVjdCogcGFyZW50T2JqZWN0VW5pZ25vcmVkKCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBsaW5rZWRVSUVsZW1lbnRzKEFjY2Vzc2liaWxpdHlD
aGlsZHJlblZlY3RvciYgY2hpbGRyZW4pIGNvbnN0IG92ZXJyaWRlIHsgZmlsbENoaWxkcmVuVmVj
dG9yRm9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkxpbmtlZFVJRWxlbWVudHMsIGNoaWxkcmVu
KTsgfQorICAgIEFYQ29yZU9iamVjdCogdGl0bGVVSUVsZW1lbnQoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBvYmplY3RBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6VGl0bGVVSUVsZW1l
bnQpOyB9CisgICAgYm9vbCBleHBvc2VzVGl0bGVVSUVsZW1lbnQoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkV4cG9zZXNUaXRsZVVJ
RWxlbWVudCk7IH0KKyAgICBBWENvcmVPYmplY3QqIHNjcm9sbEJhcihBY2Nlc3NpYmlsaXR5T3Jp
ZW50YXRpb24pIG92ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlSb2xlIGFyaWFSb2xlQXR0cmli
dXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eVJv
bGU+KGludEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpBUklBUm9sZUF0dHJpYnV0ZSkp
OyB9CisgICAgU3RyaW5nIGNvbXB1dGVkTGFiZWwoKSBvdmVycmlkZSB7IHJldHVybiBzdHJpbmdB
dHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6Q29tcHV0ZWRMYWJlbCk7IH0KKyAgICBpbnQg
dGV4dExlbmd0aCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGludEF0dHJpYnV0ZVZhbHVlKEFY
UHJvcGVydHlOYW1lOjpUZXh0TGVuZ3RoKTsgfQorICAgIGNvbnN0IFN0cmluZyBwbGFjZWhvbGRl
clZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQ
cm9wZXJ0eU5hbWU6OlBsYWNlaG9sZGVyVmFsdWUpOyB9CisgICAgU3RyaW5nIGV4cGFuZGVkVGV4
dFZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQ
cm9wZXJ0eU5hbWU6OkV4cGFuZGVkVGV4dFZhbHVlKTsgfQorICAgIGJvb2wgc3VwcG9ydHNFeHBh
bmRlZFRleHRWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1
ZShBWFByb3BlcnR5TmFtZTo6U3VwcG9ydHNFeHBhbmRlZFRleHRWYWx1ZSk7IH0KKyAgICB2b2lk
IGNvbG9yVmFsdWUoaW50JiwgaW50JiwgaW50JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgQWNjZXNz
aWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8QWNjZXNzaWJpbGl0eVJvbGU+KGludEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpS
b2xlVmFsdWUpKTsgfQorICAgIFN0cmluZyByb2xlUGxhdGZvcm1TdHJpbmcoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6Um9sZVBs
YXRmb3JtU3RyaW5nKTsgfQorICAgIFN0cmluZyByb2xlRGVzY3JpcHRpb24oKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6Um9sZURl
c2NyaXB0aW9uKTsgfQorICAgIFN0cmluZyBhcmlhTGFuZG1hcmtSb2xlRGVzY3JpcHRpb24oKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFt
ZTo6QVJJQUxhbmRtYXJrUm9sZURlc2NyaXB0aW9uKTsgfQorICAgIGJvb2wgc3VwcG9ydHNQcmVz
c0FjdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFBy
b3BlcnR5TmFtZTo6U3VwcG9ydHNQcmVzc0FjdGlvbik7IH0KKyAgICBMYXlvdXRSZWN0IGJvdW5k
aW5nQm94UmVjdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJlY3RBdHRyaWJ1dGVWYWx1ZTxM
YXlvdXRSZWN0PihBWFByb3BlcnR5TmFtZTo6Qm91bmRpbmdCb3hSZWN0KTsgfQorICAgIExheW91
dFJlY3QgZWxlbWVudFJlY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiByZWN0QXR0cmlidXRl
VmFsdWU8TGF5b3V0UmVjdD4oQVhQcm9wZXJ0eU5hbWU6OkVsZW1lbnRSZWN0KTsgfQorICAgIElu
dFBvaW50IGNsaWNrUG9pbnQoKSBvdmVycmlkZSB7IHJldHVybiBpbnRQb2ludEF0dHJpYnV0ZVZh
bHVlKEFYUHJvcGVydHlOYW1lOjpDbGlja1BvaW50KTsgfQorICAgIHZvaWQgYWNjZXNzaWJpbGl0
eVRleHQoVmVjdG9yPEFjY2Vzc2liaWxpdHlUZXh0PiYgdGV4dHMpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIFN0cmluZyBjb21wdXRlZFJvbGVTdHJpbmcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBz
dHJpbmdBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6Q29tcHV0ZWRSb2xlU3RyaW5nKTsg
fQorICAgIGJvb2wgaXNWYWx1ZUF1dG9maWxsZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBi
b29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzVmFsdWVBdXRvZmlsbGVkKTsgfQor
ICAgIGJvb2wgaXNWYWx1ZUF1dG9maWxsQXZhaWxhYmxlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc1ZhbHVlQXV0b2ZpbGxBdmFp
bGFibGUpOyB9CisgICAgQXV0b0ZpbGxCdXR0b25UeXBlIHZhbHVlQXV0b2ZpbGxCdXR0b25UeXBl
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QXV0b0ZpbGxCdXR0b25UeXBl
PihpbnRBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6VmFsdWVBdXRvZmlsbEJ1dHRvblR5
cGUpKTsgfQorICAgIHZvaWQgYXJpYVRyZWVSb3dzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3Rv
ciYgY2hpbGRyZW4pIG92ZXJyaWRlIHsgZmlsbENoaWxkcmVuVmVjdG9yRm9yUHJvcGVydHkoQVhQ
cm9wZXJ0eU5hbWU6OkFSSUFUcmVlUm93cywgY2hpbGRyZW4pOyB9CisgICAgdm9pZCBhcmlhVHJl
ZUl0ZW1EaXNjbG9zZWRSb3dzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgY2hpbGRyZW4p
IG92ZXJyaWRlIHsgZmlsbENoaWxkcmVuVmVjdG9yRm9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6
OkFSSUFUcmVlSXRlbURpc2Nsb3NlZFJvd3MsIGNoaWxkcmVuKTsgfQorICAgIHZvaWQgYXJpYVRy
ZWVJdGVtQ29udGVudChBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGNoaWxkcmVuKSBvdmVy
cmlkZSB7IGZpbGxDaGlsZHJlblZlY3RvckZvclByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpBUklB
VHJlZUl0ZW1Db250ZW50LCBjaGlsZHJlbik7IH0KKyAgICBVUkwgdXJsKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdXJsQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OlVSTCk7IH0KKyAg
ICBTdHJpbmcgYWNjZXNzS2V5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RyaW5nQXR0cmli
dXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkFjY2Vzc0tleSk7IH0KKyAgICBTdHJpbmcgYWN0aW9u
VmVyYigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0cmluZ0F0dHJpYnV0ZVZhbHVlKEFYUHJv
cGVydHlOYW1lOjpBY3Rpb25WZXJiKTsgfQorICAgIFN0cmluZyByZWFkT25seVZhbHVlKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6
OlJlYWRPbmx5VmFsdWUpOyB9CisgICAgU3RyaW5nIGF1dG9Db21wbGV0ZVZhbHVlKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkF1
dG9Db21wbGV0ZVZhbHVlKTsgfQorICAgIE9wdGlvblNldDxTcGVha0FzPiBzcGVha0FzUHJvcGVy
dHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBvcHRpb25TZXRBdHRyaWJ1dGVWYWx1ZTxTcGVh
a0FzPihBWFByb3BlcnR5TmFtZTo6U3BlYWtBcyk7IH0KKyAgICBib29sIGlzTWF0aEVsZW1lbnQo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5h
bWU6OklzTWF0aEVsZW1lbnQpOyB9CisgICAgYm9vbCBpc01hdGhGcmFjdGlvbigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNNYXRo
RnJhY3Rpb24pOyB9CisgICAgYm9vbCBpc01hdGhGZW5jZWQoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzTWF0aEZlbmNlZCk7IH0K
KyAgICBib29sIGlzTWF0aFN1YnNjcmlwdFN1cGVyc2NyaXB0KCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc01hdGhTdWJzY3JpcHRT
dXBlcnNjcmlwdCk7IH0KKyAgICBib29sIGlzTWF0aFJvdygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNNYXRoUm93KTsgfQorICAg
IGJvb2wgaXNNYXRoVW5kZXJPdmVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJp
YnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc01hdGhVbmRlck92ZXIpOyB9CisgICAgYm9vbCBp
c01hdGhSb290KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFY
UHJvcGVydHlOYW1lOjpJc01hdGhSb290KTsgfQorICAgIGJvb2wgaXNNYXRoU3F1YXJlUm9vdCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFt
ZTo6SXNNYXRoU3F1YXJlUm9vdCk7IH0KKyAgICBib29sIGlzTWF0aFRleHQoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzTWF0aFRl
eHQpOyB9CisgICAgYm9vbCBpc01hdGhOdW1iZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBi
b29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzTWF0aE51bWJlcik7IH0KKyAgICBi
b29sIGlzTWF0aE9wZXJhdG9yKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0
ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc01hdGhPcGVyYXRvcik7IH0KKyAgICBib29sIGlzTWF0
aEZlbmNlT3BlcmF0b3IoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFs
dWUoQVhQcm9wZXJ0eU5hbWU6OklzTWF0aEZlbmNlT3BlcmF0b3IpOyB9CisgICAgYm9vbCBpc01h
dGhTZXBhcmF0b3JPcGVyYXRvcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1
dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNNYXRoU2VwYXJhdG9yT3BlcmF0b3IpOyB9CisgICAg
Ym9vbCBpc01hdGhJZGVudGlmaWVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJp
YnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc01hdGhJZGVudGlmaWVyKTsgfQorICAgIGJvb2wg
aXNNYXRoVGFibGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUo
QVhQcm9wZXJ0eU5hbWU6OklzTWF0aFRhYmxlKTsgfQorICAgIGJvb2wgaXNNYXRoVGFibGVSb3co
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5h
bWU6OklzTWF0aFRhYmxlUm93KTsgfQorICAgIGJvb2wgaXNNYXRoVGFibGVDZWxsKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc01h
dGhUYWJsZUNlbGwpOyB9CisgICAgYm9vbCBpc01hdGhNdWx0aXNjcmlwdCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNNYXRoTXVs
dGlzY3JpcHQpOyB9CisgICAgYm9vbCBpc01hdGhUb2tlbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNNYXRoVG9rZW4pOyB9Cisg
ICAgQVhDb3JlT2JqZWN0KiBtYXRoUmFkaWNhbmRPYmplY3QoKSBvdmVycmlkZSB7IHJldHVybiBv
YmplY3RBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6TWF0aFJhZGljYW5kT2JqZWN0KTsg
fQorICAgIEFYQ29yZU9iamVjdCogbWF0aFJvb3RJbmRleE9iamVjdCgpIG92ZXJyaWRlIHsgcmV0
dXJuIG9iamVjdEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpNYXRoUm9vdEluZGV4T2Jq
ZWN0KTsgfQorICAgIEFYQ29yZU9iamVjdCogbWF0aFVuZGVyT2JqZWN0KCkgb3ZlcnJpZGUgeyBy
ZXR1cm4gb2JqZWN0QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6Ok1hdGhVbmRlck9iamVj
dCk7IH0KKyAgICBBWENvcmVPYmplY3QqIG1hdGhPdmVyT2JqZWN0KCkgb3ZlcnJpZGUgeyByZXR1
cm4gb2JqZWN0QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6Ok1hdGhPdmVyT2JqZWN0KTsg
fQorICAgIEFYQ29yZU9iamVjdCogbWF0aE51bWVyYXRvck9iamVjdCgpIG92ZXJyaWRlIHsgcmV0
dXJuIG9iamVjdEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpNYXRoTnVtZXJhdG9yT2Jq
ZWN0KTsgfQorICAgIEFYQ29yZU9iamVjdCogbWF0aERlbm9taW5hdG9yT2JqZWN0KCkgb3ZlcnJp
ZGUgeyByZXR1cm4gb2JqZWN0QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6Ok1hdGhEZW5v
bWluYXRvck9iamVjdCk7IH0KKyAgICBBWENvcmVPYmplY3QqIG1hdGhCYXNlT2JqZWN0KCkgb3Zl
cnJpZGUgeyByZXR1cm4gb2JqZWN0QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6Ok1hdGhC
YXNlT2JqZWN0KTsgfQorICAgIEFYQ29yZU9iamVjdCogbWF0aFN1YnNjcmlwdE9iamVjdCgpIG92
ZXJyaWRlIHsgcmV0dXJuIG9iamVjdEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpNYXRo
U3Vic2NyaXB0T2JqZWN0KTsgfQorICAgIEFYQ29yZU9iamVjdCogbWF0aFN1cGVyc2NyaXB0T2Jq
ZWN0KCkgb3ZlcnJpZGUgeyByZXR1cm4gb2JqZWN0QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5h
bWU6Ok1hdGhTdXBlcnNjcmlwdE9iamVjdCk7IH0KKyAgICBTdHJpbmcgbWF0aEZlbmNlZE9wZW5T
dHJpbmcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShBWFBy
b3BlcnR5TmFtZTo6TWF0aEZlbmNlZE9wZW5TdHJpbmcpOyB9CisgICAgU3RyaW5nIG1hdGhGZW5j
ZWRDbG9zZVN0cmluZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0cmluZ0F0dHJpYnV0ZVZh
bHVlKEFYUHJvcGVydHlOYW1lOjpNYXRoRmVuY2VkQ2xvc2VTdHJpbmcpOyB9CisgICAgaW50IG1h
dGhMaW5lVGhpY2tuZXNzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gaW50QXR0cmlidXRlVmFs
dWUoQVhQcm9wZXJ0eU5hbWU6Ok1hdGhMaW5lVGhpY2tuZXNzKTsgfQorICAgIGJvb2wgaXNBbm9u
eW1vdXNNYXRoT3BlcmF0b3IoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRl
VmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzQW5vbnltb3VzTWF0aE9wZXJhdG9yKTsgfQorICAgIHZv
aWQgbWF0aFByZXNjcmlwdHMoQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdFBhaXJzJikgb3Zl
cnJpZGU7CisgICAgdm9pZCBtYXRoUG9zdHNjcmlwdHMoQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNj
cmlwdFBhaXJzJikgb3ZlcnJpZGU7CisgICAgYm9vbCBmaWxlVXBsb2FkQnV0dG9uUmV0dXJuc1Zh
bHVlSW5UaXRsZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShB
WFByb3BlcnR5TmFtZTo6RmlsZVVwbG9hZEJ1dHRvblJldHVybnNWYWx1ZUluVGl0bGUpOyB9Cisg
ICAgU3RyaW5nIHNwZWVjaEhpbnRBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHN0cmluZ0F0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpTcGVlY2hIaW50KTsgfQor
ICAgIFN0cmluZyBkZXNjcmlwdGlvbkF0dHJpYnV0ZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkRlc2NyaXB0aW9uKTsg
fQorICAgIFN0cmluZyBoZWxwVGV4dEF0dHJpYnV0ZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkhlbHBUZXh0KTsgfQor
ICAgIFN0cmluZyB0aXRsZUF0dHJpYnV0ZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
c3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OlRpdGxlKTsgfQorICAgIGJvb2wg
Y2FyZXRCcm93c2luZ0VuYWJsZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmli
dXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkNhcmV0QnJvd3NpbmdFbmFibGVkKTsgfQorICAgIEFY
Q29yZU9iamVjdCogZm9jdXNhYmxlQW5jZXN0b3IoKSBvdmVycmlkZSB7IHJldHVybiBvYmplY3RB
dHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6Rm9jdXNhYmxlQW5jZXN0b3IpOyB9CisgICAg
QVhDb3JlT2JqZWN0KiBlZGl0YWJsZUFuY2VzdG9yKCkgb3ZlcnJpZGUgeyByZXR1cm4gb2JqZWN0
QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkVkaXRhYmxlQW5jZXN0b3IpOyB9CisgICAg
QVhDb3JlT2JqZWN0KiBoaWdoZXN0RWRpdGFibGVBbmNlc3RvcigpIG92ZXJyaWRlIHsgcmV0dXJu
IG9iamVjdEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpIaWdoZXN0RWRpdGFibGVBbmNl
c3Rvcik7IH0KKyAgICBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb24gb3JpZW50YXRpb24oKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb24+
KGludEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpPcmllbnRhdGlvbikpOyB9CisgICAg
dW5zaWduZWQgaGllcmFyY2hpY2FsTGV2ZWwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB1bnNp
Z25lZEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpIaWVyYXJjaGljYWxMZXZlbCk7IH0K
KyAgICBTdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdHJpbmdBdHRy
aWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6TGFuZ3VhZ2UpOyB9CisgICAgYm9vbCBjYW5IYXZl
U2VsZWN0ZWRDaGlsZHJlbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVW
YWx1ZShBWFByb3BlcnR5TmFtZTo6Q2FuSGF2ZVNlbGVjdGVkQ2hpbGRyZW4pOyB9CisgICAgdm9p
ZCBzZWxlY3RlZENoaWxkcmVuKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgY2hpbGRyZW4p
IG92ZXJyaWRlIHsgZmlsbENoaWxkcmVuVmVjdG9yRm9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6
OlNlbGVjdGVkQ2hpbGRyZW4sIGNoaWxkcmVuKTsgfQorICAgIHZvaWQgdmlzaWJsZUNoaWxkcmVu
KEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgY2hpbGRyZW4pIG92ZXJyaWRlIHsgZmlsbENo
aWxkcmVuVmVjdG9yRm9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OlZpc2libGVDaGlsZHJlbiwg
Y2hpbGRyZW4pOyB9CisgICAgdm9pZCB0YWJDaGlsZHJlbihBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5W
ZWN0b3ImIGNoaWxkcmVuKSBvdmVycmlkZSB7IGZpbGxDaGlsZHJlblZlY3RvckZvclByb3BlcnR5
KEFYUHJvcGVydHlOYW1lOjpUYWJDaGlsZHJlbiwgY2hpbGRyZW4pOyB9CisgICAgYm9vbCBoYXNB
UklBVmFsdWVOb3coKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUo
QVhQcm9wZXJ0eU5hbWU6Okhhc0FSSUFWYWx1ZU5vdyk7IH0KKyAgICBTdHJpbmcgdGFnTmFtZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0cmluZ0F0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlO
YW1lOjpUYWdOYW1lKTsgfQorICAgIGNvbnN0IEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYg
Y2hpbGRyZW4oYm9vbCB1cGRhdGVDaGlsZHJlbklmTmVlZGVkID0gdHJ1ZSkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCB1cGRhdGVDaGlsZHJlbklmTmVjZXNzYXJ5KCkgb3ZlcnJpZGUgeyB9CisgICAgYm9v
bCBpc0RldGFjaGVkRnJvbVBhcmVudCgpIG92ZXJyaWRlOworICAgIGJvb2wgc3VwcG9ydHNMaXZl
UmVnaW9uKGJvb2wgPSB0cnVlKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRl
VmFsdWUoQVhQcm9wZXJ0eU5hbWU6OlN1cHBvcnRzTGl2ZVJlZ2lvbik7IH0KKyAgICBib29sIGlz
SW5zaWRlTGl2ZVJlZ2lvbihib29sID0gdHJ1ZSkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9v
bEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc0luc2lkZUxpdmVSZWdpb24pOyB9Cisg
ICAgY29uc3QgU3RyaW5nIGxpdmVSZWdpb25TdGF0dXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6TGl2ZVJlZ2lvblN0YXR1cyk7
IH0KKyAgICBjb25zdCBTdHJpbmcgbGl2ZVJlZ2lvblJlbGV2YW50KCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkxpdmVSZWdpb25S
ZWxldmFudCk7IH0KKyAgICBib29sIGxpdmVSZWdpb25BdG9taWMoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkxpdmVSZWdpb25BdG9t
aWMpOyB9CisgICAgYm9vbCBpc0J1c3koKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0
cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzQnVzeSk7IH0KKyAgICBib29sIGlzSW5saW5l
VGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3Bl
cnR5TmFtZTo6SXNJbmxpbmVUZXh0KTsgfQorCisgICAgLy8gQXR0cmlidXRlcyByZXRyaWV2ZWQg
ZnJvbSB0aGUgcm9vdCBub2RlIG9ubHkgc28gdGhhdCB0aGUgZGF0YSBpc24ndCBkdXBsaWNhdGVk
IG9uIGVhY2ggbm9kZS4KKyAgICB1aW50NjRfdCBzZXNzaW9uSUQoKSBjb25zdCBvdmVycmlkZTsK
KyAgICBTdHJpbmcgZG9jdW1lbnRVUkkoKSBjb25zdCBvdmVycmlkZTsKKyAgICBTdHJpbmcgZG9j
dW1lbnRFbmNvZGluZygpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgcHJldmVudEtleWJvYXJk
RE9NRXZlbnREaXNwYXRjaCgpIGNvbnN0IG92ZXJyaWRlOworCisgICAgLy8gVE9ETzogVGV4dCBy
YW5nZXMgYW5kIHNlbGVjdGlvbi4KKyAgICBQbGFpblRleHRSYW5nZSBzZWxlY3RlZFRleHRSYW5n
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFBsYWluVGV4dFJhbmdlKCk7IH0KKyAgICB1bnNp
Z25lZCBzZWxlY3Rpb25TdGFydCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KKyAgICB1
bnNpZ25lZCBzZWxlY3Rpb25FbmQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CisgICAg
VmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBWaXNp
YmxlU2VsZWN0aW9uKCk7IH0KKyAgICBTdHJpbmcgc2VsZWN0ZWRUZXh0KCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KKyAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSB2aXNpYmxl
UG9zaXRpb25SYW5nZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFZpc2libGVQb3NpdGlvblJh
bmdlKCk7IH0KKyAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSB2aXNpYmxlUG9zaXRpb25SYW5nZUZv
ckxpbmUodW5zaWduZWQpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFZpc2libGVQb3NpdGlvblJh
bmdlKCk7IH0KKyAgICBSZWZQdHI8UmFuZ2U+IGVsZW1lbnRSYW5nZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSB2aXNpYmxlUG9z
aXRpb25SYW5nZUZvclVub3JkZXJlZFBvc2l0aW9ucyhjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBj
b25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBWaXNpYmxlUG9z
aXRpb25SYW5nZSgpOyB9CisgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgcG9zaXRpb25PZkxlZnRX
b3JkKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFZpc2li
bGVQb3NpdGlvblJhbmdlKCk7IH0KKyAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSBwb3NpdGlvbk9m
UmlnaHRXb3JkKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IFZpc2libGVQb3NpdGlvblJhbmdlKCk7IH0KKyAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSBsZWZ0
TGluZVZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIFZpc2libGVQb3NpdGlvblJhbmdlKCk7IH0KKyAgICBWaXNpYmxlUG9z
aXRpb25SYW5nZSByaWdodExpbmVWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9z
aXRpb24mKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBWaXNpYmxlUG9zaXRpb25SYW5nZSgpOyB9
CisgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2Ugc2VudGVuY2VGb3JQb3NpdGlvbihjb25zdCBWaXNp
YmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBWaXNpYmxlUG9zaXRpb25SYW5n
ZSgpOyB9CisgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgcGFyYWdyYXBoRm9yUG9zaXRpb24oY29u
c3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVmlzaWJsZVBvc2l0
aW9uUmFuZ2UoKTsgfQorICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHN0eWxlUmFuZ2VGb3JQb3Np
dGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBWaXNp
YmxlUG9zaXRpb25SYW5nZSgpOyB9CisgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgdmlzaWJsZVBv
c2l0aW9uUmFuZ2VGb3JSYW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIFZpc2libGVQb3NpdGlvblJhbmdlKCk7IH0KKyAgICBWaXNpYmxlUG9zaXRpb25S
YW5nZSBsaW5lUmFuZ2VGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBWaXNpYmxlUG9zaXRpb25SYW5nZSgpOyB9CisgICAgUmVmUHRyPFJh
bmdlPiByYW5nZUZvclBsYWluVGV4dFJhbmdlKGNvbnN0IFBsYWluVGV4dFJhbmdlJikgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIFN0cmluZyBzdHJpbmdGb3JSYW5nZShS
ZWZQdHI8UmFuZ2U+KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJpbmcoKTsgfQorICAgIElu
dFJlY3QgYm91bmRzRm9yVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9u
UmFuZ2UmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBJbnRSZWN0KCk7IH0KKyAgICBJbnRSZWN0
IGJvdW5kc0ZvclJhbmdlKGNvbnN0IFJlZlB0cjxSYW5nZT4pIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIEludFJlY3QoKTsgfQorICAgIGludCBsZW5ndGhGb3JWaXNpYmxlUG9zaXRpb25SYW5nZShj
b25zdCBWaXNpYmxlUG9zaXRpb25SYW5nZSYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0K
KyAgICB2b2lkIHNldFNlbGVjdGVkVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBv
c2l0aW9uUmFuZ2UmKSBjb25zdCBvdmVycmlkZSB7IH0KKyAgICBWaXNpYmxlUG9zaXRpb24gdmlz
aWJsZVBvc2l0aW9uRm9yQm91bmRzKGNvbnN0IEludFJlY3QmLCBBY2Nlc3NpYmlsaXR5VmlzaWJs
ZVBvc2l0aW9uRm9yQm91bmRzKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBWaXNpYmxlUG9zaXRp
b24oKTsgfQorICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JQb2ludChjb25z
dCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOyB9
CisgICAgVmlzaWJsZVBvc2l0aW9uIG5leHRWaXNpYmxlUG9zaXRpb24oY29uc3QgVmlzaWJsZVBv
c2l0aW9uJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7IH0KKyAg
ICBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXNWaXNpYmxlUG9zaXRpb24oY29uc3QgVmlzaWJsZVBv
c2l0aW9uJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7IH0KKyAg
ICBWaXNpYmxlUG9zaXRpb24gbmV4dFdvcmRFbmQoY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7IH0KKyAgICBWaXNpYmxlUG9z
aXRpb24gcHJldmlvdXNXb3JkU3RhcnQoY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7IH0KKyAgICBWaXNpYmxlUG9zaXRpb24g
bmV4dExpbmVFbmRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsgfQorICAgIFZpc2libGVQb3NpdGlvbiBwcmV2
aW91c0xpbmVTdGFydFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOyB9CisgICAgVmlzaWJsZVBvc2l0aW9uIG5l
eHRTZW50ZW5jZUVuZFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOyB9CisgICAgVmlzaWJsZVBvc2l0aW9uIHBy
ZXZpb3VzU2VudGVuY2VTdGFydFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOyB9CisgICAgVmlzaWJsZVBvc2l0
aW9uIG5leHRQYXJhZ3JhcGhFbmRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsgfQorICAgIFZpc2libGVQb3Np
dGlvbiBwcmV2aW91c1BhcmFncmFwaFN0YXJ0UG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9u
JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7IH0KKyAgICBWaXNp
YmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgodW5zaWduZWQsIGJvb2wgLypsYXN0
SW5kZXhPSyAqLykgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7IH0K
KyAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgoaW50KSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsgfQorICAgIGludCBpbmRleEZvclZp
c2libGVQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiAwOyB9CisgICAgQVhDb3JlT2JqZWN0KiBhY2Nlc3NpYmlsaXR5T2JqZWN0Rm9yUG9zaXRp
b24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0
cjsgfQorICAgIGludCBsaW5lRm9yUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQorICAgIFBsYWluVGV4dFJhbmdlIHBsYWluVGV4dFJh
bmdlRm9yVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uUmFuZ2UmKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBQbGFpblRleHRSYW5nZSgpOyB9CisgICAgaW50IGluZGV4
KGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KKyAg
ICB2b2lkIGxpbmVCcmVha3MoVmVjdG9yPGludD4mKSBjb25zdCBvdmVycmlkZSB7IH0KKyAgICBQ
bGFpblRleHRSYW5nZSBkb0FYUmFuZ2VGb3JMaW5lKHVuc2lnbmVkKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBQbGFpblRleHRSYW5nZSgpOyB9CisgICAgUGxhaW5UZXh0UmFuZ2UgZG9BWFJhbmdl
Rm9yUG9zaXRpb24oY29uc3QgSW50UG9pbnQmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBQbGFp
blRleHRSYW5nZSgpOyB9CisgICAgUGxhaW5UZXh0UmFuZ2UgZG9BWFJhbmdlRm9ySW5kZXgodW5z
aWduZWQpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFBsYWluVGV4dFJhbmdlKCk7IH0KKyAgICBQ
bGFpblRleHRSYW5nZSBkb0FYU3R5bGVSYW5nZUZvckluZGV4KHVuc2lnbmVkKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBQbGFpblRleHRSYW5nZSgpOyB9CisgICAgU3RyaW5nIGRvQVhTdHJpbmdG
b3JSYW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0
cmluZygpOyB9CisgICAgSW50UmVjdCBkb0FYQm91bmRzRm9yUmFuZ2UoY29uc3QgUGxhaW5UZXh0
UmFuZ2UmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBJbnRSZWN0KCk7IH0KKyAgICBJbnRSZWN0
IGRvQVhCb3VuZHNGb3JSYW5nZVVzaW5nQ2hhcmFjdGVyT2Zmc2V0KGNvbnN0IFBsYWluVGV4dFJh
bmdlJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gSW50UmVjdCgpOyB9CisgICAgdW5zaWduZWQg
ZG9BWExpbmVGb3JJbmRleCh1bnNpZ25lZCkgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQogCisgICAg
Ly8gVE9ETzogQXR0cmlidXRlIHNldHRlcnMuCisgICAgdm9pZCBzZXRBUklBR3JhYmJlZChib29s
KSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIHNldElzRXhwYW5kZWQoYm9vbCkgb3ZlcnJpZGUgeyB9
CisgICAgdm9pZCBzZXRWYWx1ZShmbG9hdCkgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBzZXRTZWxl
Y3RlZChib29sKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIHNldFNlbGVjdGVkUm93cyhBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIHNldEZvY3VzZWQo
Ym9vbCkgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBzZXRTZWxlY3RlZFRleHQoY29uc3QgU3RyaW5n
Jikgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBzZXRTZWxlY3RlZFRleHRSYW5nZShjb25zdCBQbGFp
blRleHRSYW5nZSYpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgc2V0VmFsdWUoY29uc3QgU3RyaW5n
Jikgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBzZXRDYXJldEJyb3dzaW5nRW5hYmxlZChib29sKSBv
dmVycmlkZSB7IH0KKyAgICB2b2lkIHNldFByZXZlbnRLZXlib2FyZERPTUV2ZW50RGlzcGF0Y2go
Ym9vbCkgb3ZlcnJpZGUgeyB9CisKKyAgICAvLyBUT0RPOiBGdW5jdGlvbnMKKyAgICBTdHJpbmcg
dGV4dFVuZGVyRWxlbWVudChBY2Nlc3NpYmlsaXR5VGV4dFVuZGVyRWxlbWVudE1vZGUgPSBBY2Nl
c3NpYmlsaXR5VGV4dFVuZGVyRWxlbWVudE1vZGUoKSkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
U3RyaW5nKCk7IH0KKyAgICBSZWZQdHI8UmFuZ2U+IGdldE1pc3NwZWxsaW5nUmFuZ2UoUmVmUHRy
PFJhbmdlPiBjb25zdCYsIEFjY2Vzc2liaWxpdHlTZWFyY2hEaXJlY3Rpb24pIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2b2lkIGZpbmRNYXRjaGluZ09iamVjdHMoQWNj
ZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhKiwgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikg
b3ZlcnJpZGUgeyB9CisgICAgVmVjdG9yPFJlZlB0cjxSYW5nZT4+IGZpbmRUZXh0UmFuZ2VzKEFj
Y2Vzc2liaWxpdHlTZWFyY2hUZXh0Q3JpdGVyaWEgY29uc3QmKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBWZWN0b3I8UmVmUHRyPFJhbmdlPj4oKTsgfQorICAgIFZlY3RvcjxTdHJpbmc+IHBlcmZv
cm1UZXh0T3BlcmF0aW9uKEFjY2Vzc2liaWxpdHlUZXh0T3BlcmF0aW9uIGNvbnN0Jikgb3ZlcnJp
ZGUgeyByZXR1cm4gVmVjdG9yPFN0cmluZz4oKTsgfQorICAgIEZsb2F0UmVjdCBjb252ZXJ0RnJh
bWVUb1NwYWNlKGNvbnN0IEZsb2F0UmVjdCYsIEFjY2Vzc2liaWxpdHlDb252ZXJzaW9uU3BhY2Up
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEZsb2F0UmVjdCgpOyB9CisgICAgdm9pZCBpbmNyZW1l
bnQoKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIGRlY3JlbWVudCgpIG92ZXJyaWRlIHsgfQorICAg
IHZvaWQgc2Nyb2xsVG9NYWtlVmlzaWJsZSgpIGNvbnN0IG92ZXJyaWRlIHsgfQorICAgIHZvaWQg
c2Nyb2xsVG9NYWtlVmlzaWJsZVdpdGhTdWJGb2N1cyhjb25zdCBJbnRSZWN0JikgY29uc3Qgb3Zl
cnJpZGUgeyB9CisgICAgdm9pZCBzY3JvbGxUb0dsb2JhbFBvaW50KGNvbnN0IEludFBvaW50Jikg
Y29uc3Qgb3ZlcnJpZGUgeyB9CisgICAgYm9vbCByZXBsYWNlVGV4dEluUmFuZ2UoY29uc3QgU3Ry
aW5nJiwgY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSBvdmVycmlkZTsKKyAgICBib29sIGluc2VydFRl
eHQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgdm9pZCBtYWtlUmFuZ2VWaXNpYmxlKGNv
bnN0IFBsYWluVGV4dFJhbmdlJikgb3ZlcnJpZGUgeyB9CisgICAgYm9vbCBwcmVzcygpIG92ZXJy
aWRlOworICAgIGJvb2wgcGVyZm9ybURlZmF1bHRBY3Rpb24oKSBvdmVycmlkZTsKKworICAgIC8v
IEZ1bmN0aW9ucyB0aGF0IHNob3VsZCBuZXZlciBiZSBjYWxsZWQgb24gYW4gaXNvbGF0ZWQgdHJl
ZSBvYmplY3QuIEFTU0VSVCB0aGF0IHRoZXNlIGFyZSBub3QgcmVhY2hlZDsKKyAgICBib29sIGlz
QWNjZXNzaWJpbGl0eU9iamVjdCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNBY2Nlc3Np
YmlsaXR5Tm9kZU9iamVjdCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0FjY2Vzc2liaWxp
dHlTY3JvbGxiYXIoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzQWNjZXNzaWJpbGl0eVNj
cm9sbFZpZXcoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzQWNjZXNzaWJpbGl0eVNWR1Jv
b3QoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzQWNjZXNzaWJpbGl0eVNWR0VsZW1lbnQo
KSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGNvbnRhaW5zVGV4dChTdHJpbmcqKSBjb25zdCBv
dmVycmlkZTsKKyAgICBib29sIGlzQXR0YWNobWVudEVsZW1lbnQoKSBjb25zdCBvdmVycmlkZTsK
KyAgICBib29sIGlzTmF0aXZlSW1hZ2UoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzSW1h
Z2VCdXR0b24oKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzQ29udGFpbmVkQnlQYXNzd29y
ZEZpZWxkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQVhDb3JlT2JqZWN0KiBwYXNzd29yZEZpZWxk
T3JDb250YWluaW5nUGFzc3dvcmRGaWVsZCgpIG92ZXJyaWRlOworICAgIGJvb2wgaXNOYXRpdmVU
ZXh0Q29udHJvbCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNOYXRpdmVMaXN0Qm94KCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0xpc3RCb3hPcHRpb24oKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBib29sIGlzU2xpZGVyVGh1bWIoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlz
SW5wdXRTbGlkZXIoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzTGFiZWwoKSBjb25zdCBv
dmVycmlkZTsKKyAgICBib29sIGlzRGF0YVRhYmxlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9v
bCBpc0ltYWdlTWFwTGluaygpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNOYXRpdmVTcGlu
QnV0dG9uKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1NwaW5CdXR0b25QYXJ0KCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc01vY2tPYmplY3QoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBib29sIGlzTWVkaWFDb250cm9sTGFiZWwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29s
QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzTWVkaWFDb250cm9sTGFiZWwpOyB9Cisg
ICAgYm9vbCBpc01lZGlhT2JqZWN0KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0FSSUFU
ZXh0Q29udHJvbCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNOb25OYXRpdmVUZXh0Q29u
dHJvbCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNCbG9ja3F1b3RlKCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgYm9vbCBpc0xhbmRtYXJrKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBp
c0ZpZ3VyZUVsZW1lbnQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzS2V5Ym9hcmRGb2N1
c2FibGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzSG92ZXJlZCgpIGNvbnN0IG92ZXJy
aWRlOworICAgIGJvb2wgaXNJbmRldGVybWluYXRlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9v
bCBpc0xvYWRlZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNPblNjcmVlbigpIGNvbnN0
IG92ZXJyaWRlOworICAgIGJvb2wgaXNPZmZTY3JlZW4oKSBjb25zdCBvdmVycmlkZTsKKyAgICBi
b29sIGlzUHJlc3NlZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNVbnZpc2l0ZWQoKSBj
b25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzTGlua2VkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
Ym9vbCBpc1Zpc2libGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzQ29sbGFwc2VkKCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1NlbGVjdGVkT3B0aW9uQWN0aXZlKCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgYm9vbCBoYXNCb2xkRm9udCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJv
b2wgaGFzSXRhbGljRm9udCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaGFzTWlzc3BlbGxp
bmcoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGhhc1BsYWluVGV4dCgpIGNvbnN0IG92ZXJy
aWRlOworICAgIGJvb2wgaGFzU2FtZUZvbnQoUmVuZGVyT2JqZWN0KikgY29uc3Qgb3ZlcnJpZGU7
CisgICAgYm9vbCBoYXNTYW1lRm9udENvbG9yKFJlbmRlck9iamVjdCopIGNvbnN0IG92ZXJyaWRl
OworICAgIGJvb2wgaGFzU2FtZVN0eWxlKFJlbmRlck9iamVjdCopIGNvbnN0IG92ZXJyaWRlOwor
ICAgIGJvb2wgaXNTdGF0aWNUZXh0KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBoYXNVbmRl
cmxpbmUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGhhc0hpZ2hsaWdodGluZygpIGNvbnN0
IG92ZXJyaWRlOworICAgIEVsZW1lbnQqIGVsZW1lbnQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBO
b2RlKiBub2RlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlcigp
IGNvbnN0IG92ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gZGVmYXVs
dE9iamVjdEluY2x1c2lvbigpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgYWNjZXNzaWJpbGl0
eUlzSWdub3JlZEJ5RGVmYXVsdCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGZsb2F0IHN0ZXBWYWx1
ZUZvclJhbmdlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQVhDb3JlT2JqZWN0KiBzZWxlY3RlZExp
c3RJdGVtKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBhcmlhQWN0aXZlRGVzY2VuZGFudFJlZmVyZW5j
aW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7
CisgICAgdm9pZCBhcmlhQ29udHJvbHNSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlD
aGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgYXJpYURlc2NyaWJlZEJ5
RWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBhcmlhRGVzY3JpYmVkQnlSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlD
aGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgYXJpYURldGFpbHNSZWZl
cmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJy
aWRlOworICAgIHZvaWQgYXJpYUVycm9yTWVzc2FnZVJlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNz
aWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBhcmlhRmxv
d1RvUmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25z
dCBvdmVycmlkZTsKKyAgICB2b2lkIGFyaWFMYWJlbGxlZEJ5RWxlbWVudHMoQWNjZXNzaWJpbGl0
eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBhcmlhTGFiZWxsZWRC
eVJlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qg
b3ZlcnJpZGU7CisgICAgdm9pZCBhcmlhT3duc1JlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBoYXNEYXRhbGlz
dCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgc3VwcG9ydHNIYXNQb3B1cCgpIGNvbnN0IG92
ZXJyaWRlOworICAgIGJvb2wgc3VwcG9ydHNQcmVzc2VkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
Ym9vbCBzdXBwb3J0c0NoZWNrZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlnbm9yZWRG
cm9tTW9kYWxQcmVzZW5jZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNNb2RhbERlc2Nl
bmRhbnQoTm9kZSopIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNNb2RhbE5vZGUoKSBjb25z
dCBvdmVycmlkZTsKKyAgICBBWENvcmVPYmplY3QqIGVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVz
dChjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOworICAgIEFYQ29yZU9iamVjdCogZmly
c3RDaGlsZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIEFYQ29yZU9iamVjdCogbGFzdENoaWxkKCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgQVhDb3JlT2JqZWN0KiBwcmV2aW91c1NpYmxpbmcoKSBjb25z
dCBvdmVycmlkZTsKKyAgICBBWENvcmVPYmplY3QqIG5leHRTaWJsaW5nKCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgQVhDb3JlT2JqZWN0KiBuZXh0U2libGluZ1VuaWdub3JlZChpbnQgbGltaXQpIGNv
bnN0IG92ZXJyaWRlOworICAgIEFYQ29yZU9iamVjdCogcHJldmlvdXNTaWJsaW5nVW5pZ25vcmVk
KGludCBsaW1pdCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQVhDb3JlT2JqZWN0KiBwYXJlbnRPYmpl
Y3RJZkV4aXN0cygpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNEZXNjZW5kYW50T2ZCYXJy
ZW5QYXJlbnQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzRGVzY2VuZGFudE9mUm9sZShB
Y2Nlc3NpYmlsaXR5Um9sZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQVhDb3JlT2JqZWN0KiBvYnNl
cnZhYmxlT2JqZWN0KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQVhDb3JlT2JqZWN0KiBjb3JyZXNw
b25kaW5nTGFiZWxGb3JDb250cm9sRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlOworICAgIEFYQ29y
ZU9iamVjdCogY29ycmVzcG9uZGluZ0NvbnRyb2xGb3JMYWJlbEVsZW1lbnQoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBib29sIGlzUHJlc2VudGF0aW9uYWxDaGlsZE9mQXJpYVJvbGUoKSBjb25zdCBv
dmVycmlkZTsKKyAgICBib29sIGFyaWFSb2xlSGFzUHJlc2VudGF0aW9uYWxDaGlsZHJlbigpIGNv
bnN0IG92ZXJyaWRlOworICAgIGJvb2wgaW5oZXJpdHNQcmVzZW50YXRpb25hbFJvbGUoKSBjb25z
dCBvdmVycmlkZTsKKyAgICB2b2lkIHNldEFjY2Vzc2libGVOYW1lKGNvbnN0IEF0b21TdHJpbmcm
KSBvdmVycmlkZTsKKyAgICBib29sIGhhc0F0dHJpYnV0ZXNSZXF1aXJlZEZvckluY2x1c2lvbigp
IGNvbnN0IG92ZXJyaWRlOworICAgIFN0cmluZyBhY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24oKSBj
b25zdCBvdmVycmlkZTsKKyAgICBTdHJpbmcgdGl0bGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBT
dHJpbmcgaGVscFRleHQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzQVJJQVN0YXRpY1Rl
eHQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBTdHJpbmcgc3RyaW5nVmFsdWUoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBTdHJpbmcgdGV4dCgpIGNvbnN0IG92ZXJyaWRlOworICAgIFN0cmluZyBhcmlh
TGFiZWxlZEJ5QXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgU3RyaW5nIGFyaWFEZXNj
cmliZWRCeUF0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgYWNjZXNzaWJsZU5h
bWVEZXJpdmVzRnJvbUNvbnRlbnQoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGVsZW1lbnRz
RnJvbUF0dHJpYnV0ZShWZWN0b3I8RWxlbWVudCo+JiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNv
bnN0IG92ZXJyaWRlOworICAgIEFYT2JqZWN0Q2FjaGUqIGF4T2JqZWN0Q2FjaGUoKSBjb25zdCBv
dmVycmlkZTsKKyAgICBFbGVtZW50KiBhbmNob3JFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgRWxlbWVudCogYWN0aW9uRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlOworICAgIFBhdGggZWxl
bWVudFBhdGgoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHN1cHBvcnRzUGF0aCgpIGNvbnN0
IG92ZXJyaWRlOworICAgIFRleHRJdGVyYXRvckJlaGF2aW9yIHRleHRJdGVyYXRvckJlaGF2aW9y
Rm9yVGV4dFJhbmdlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgV2lkZ2V0KiB3aWRnZXQoKSBjb25z
dCBvdmVycmlkZTsKKyAgICBXaWRnZXQqIHdpZGdldEZvckF0dGFjaG1lbnRWaWV3KCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgUGFnZSogcGFnZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIERvY3VtZW50
KiBkb2N1bWVudCgpIGNvbnN0IG92ZXJyaWRlOworICAgIEZyYW1lVmlldyogZG9jdW1lbnRGcmFt
ZVZpZXcoKSBjb25zdCBvdmVycmlkZTsKKyAgICBGcmFtZSogZnJhbWUoKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBGcmFtZSogbWFpbkZyYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgRG9jdW1lbnQq
IHRvcERvY3VtZW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgU2Nyb2xsVmlldyogc2Nyb2xsVmll
d0FuY2VzdG9yKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBjaGlsZHJlbkNoYW5nZWQoKSBv
dmVycmlkZTsKKyAgICB2b2lkIHRleHRDaGFuZ2VkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRh
dGVBY2Nlc3NpYmlsaXR5Um9sZSgpIG92ZXJyaWRlOworICAgIHZvaWQgYWRkQ2hpbGRyZW4oKSBv
dmVycmlkZTsKKyAgICB2b2lkIGFkZENoaWxkKEFYQ29yZU9iamVjdCopIG92ZXJyaWRlOworICAg
IHZvaWQgaW5zZXJ0Q2hpbGQoQVhDb3JlT2JqZWN0KiwgdW5zaWduZWQpIG92ZXJyaWRlOworICAg
IGJvb2wgc2hvdWxkSWdub3JlQXR0cmlidXRlUm9sZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJv
b2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBoYXNDaGlsZHJl
bigpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgc2V0TmVlZHNUb1VwZGF0ZUNoaWxkcmVuKCkg
b3ZlcnJpZGU7CisgICAgdm9pZCBzZXROZWVkc1RvVXBkYXRlU3VidHJlZSgpIG92ZXJyaWRlOwor
ICAgIHZvaWQgY2xlYXJDaGlsZHJlbigpIG92ZXJyaWRlOworICAgIGJvb2wgbmVlZHNUb1VwZGF0
ZUNoaWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBkZXRhY2hGcm9tUGFyZW50KCkg
b3ZlcnJpZGU7CisgICAgYm9vbCBzaG91bGRGb2N1c0FjdGl2ZURlc2NlbmRhbnQoKSBjb25zdCBv
dmVycmlkZTsKKyAgICBBWENvcmVPYmplY3QqIGFjdGl2ZURlc2NlbmRhbnQoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICB2b2lkIGhhbmRsZUFjdGl2ZURlc2NlbmRhbnRDaGFuZ2VkKCkgb3ZlcnJpZGU7
CisgICAgdm9pZCBoYW5kbGVBcmlhRXhwYW5kZWRDaGFuZ2VkKCkgb3ZlcnJpZGU7CisgICAgYm9v
bCBpc0Rlc2NlbmRhbnRPZk9iamVjdChjb25zdCBBWENvcmVPYmplY3QqKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBib29sIGlzQW5jZXN0b3JPZk9iamVjdChjb25zdCBBWENvcmVPYmplY3QqKSBjb25z
dCBvdmVycmlkZTsKKyAgICBBWENvcmVPYmplY3QqIGZpcnN0QW5vbnltb3VzQmxvY2tDaGlsZCgp
IGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaGFzQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmKSBjb25zdCBvdmVycmlkZTsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiBnZXRBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaGFzVGFnTmFt
ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgU3RyaW5nIHN0cmlu
Z1ZhbHVlRm9yTVNBQSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFN0cmluZyBzdHJpbmdSb2xlRm9y
TVNBQSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFN0cmluZyBuYW1lRm9yTVNBQSgpIGNvbnN0IG92
ZXJyaWRlOworICAgIFN0cmluZyBkZXNjcmlwdGlvbkZvck1TQUEoKSBjb25zdCBvdmVycmlkZTsK
KyAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWVGb3JNU0FBKCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgU3RyaW5nIHBhc3N3b3JkRmllbGRWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIEFY
Q29yZU9iamVjdCogbGl2ZVJlZ2lvbkFuY2VzdG9yKGJvb2wgZXhjbHVkZUlmT2ZmID0gdHJ1ZSkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBoYXNDb250ZW50RWRpdGFibGVBdHRyaWJ1dGVTZXQo
KSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHN1cHBvcnRzUmVhZE9ubHkoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBib29sIHN1cHBvcnRzQXV0b0NvbXBsZXRlKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgYm9vbCBzdXBwb3J0c0FSSUFBdHRyaWJ1dGVzKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9v
bCBzY3JvbGxCeVBhZ2UoU2Nyb2xsQnlQYWdlRGlyZWN0aW9uKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBJbnRQb2ludCBzY3JvbGxQb3NpdGlvbigpIGNvbnN0IG92ZXJyaWRlOworICAgIEludFNpemUg
c2Nyb2xsQ29udGVudHNTaXplKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgSW50UmVjdCBzY3JvbGxW
aXNpYmxlQ29udGVudFJlY3QoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHNjcm9sbFRvTWFr
ZVZpc2libGUoY29uc3QgU2Nyb2xsUmVjdFRvVmlzaWJsZU9wdGlvbnMmKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBib29sIGxhc3RLbm93bklzSWdub3JlZFZhbHVlKCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBzZXRMYXN0S25vd25Jc0lnbm9yZWRWYWx1ZShib29sKSBvdmVycmlkZTsKKyAgICB2b2lkIG5v
dGlmeUlmSWdub3JlZFZhbHVlQ2hhbmdlZCgpIG92ZXJyaWRlOworICAgIGJvb2wgaXNNYXRoU2Ny
aXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlNYXRoU2NyaXB0T2JqZWN0VHlwZSkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgYm9vbCBpc01hdGhNdWx0aXNjcmlwdE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0aE11
bHRpc2NyaXB0T2JqZWN0VHlwZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0FYSGlkZGVu
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0RPTUhpZGRlbigpIGNvbnN0IG92ZXJyaWRl
OworICAgIGJvb2wgaXNIaWRkZW4oKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIG92ZXJyaWRl
QXR0YWNobWVudFBhcmVudChBWENvcmVPYmplY3QqIHBhcmVudCkgb3ZlcnJpZGU7CisgICAgYm9v
bCBhY2Nlc3NpYmlsaXR5SWdub3JlQXR0YWNobWVudCgpIGNvbnN0IG92ZXJyaWRlOworICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gYWNjZXNzaWJpbGl0eVBsYXRmb3JtSW5jbHVkZXNP
YmplY3QoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGhhc0FwcGxlUERGQW5ub3RhdGlvbkF0
dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGNvbnN0IEFjY2Vzc2liaWxpdHlTY3JvbGxW
aWV3KiBhbmNlc3RvckFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KGJvb2wgaW5jbHVkZVNlbGYpIGNv
bnN0IG92ZXJyaWRlOworICAgIHZvaWQgc2V0SXNJZ25vcmVkRnJvbVBhcmVudERhdGEoQWNjZXNz
aWJpbGl0eUlzSWdub3JlZEZyb21QYXJlbnREYXRhJikgb3ZlcnJpZGU7CisgICAgdm9pZCBjbGVh
cklzSWdub3JlZEZyb21QYXJlbnREYXRhKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRJc0lnbm9y
ZWRGcm9tUGFyZW50RGF0YUZvckNoaWxkKEFYQ29yZU9iamVjdCopIG92ZXJyaWRlOworCisgICAg
dm9pZCB1cGRhdGVCYWNraW5nU3RvcmUoKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFdyYXBwZXIo
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIqIHdyYXBwZXIpIG92ZXJyaWRlIHsgbV93cmFwcGVy
ID0gd3JhcHBlcjsgfQorICAgIAogICAgIEFYSUQgbV9wYXJlbnQ7CiAgICAgQVhJRCBtX2lkOwog
ICAgIGJvb2wgbV9pbml0aWFsaXplZCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyTWFjLm1tCmluZGV4IDgzYjg1NDMwYWUwMzA0ZjcxOTM1ZmE4MTljYjFiMjNjOWI4
YjZiOWQuLjY2OTMyZDQ0OGNhY2UwZDQ3MTMwYTQ4NzBkZThlOTk4ZDNjNmUyNTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCkBAIC01NTUsMTMgKzU1NSwzOCBAQCBl
eHRlcm4gIkMiIEFYVUlFbGVtZW50UmVmIE5TQWNjZXNzaWJpbGl0eUNyZWF0ZUFYVUlFbGVtZW50
UmVmKGlkIGVsZW1lbnQpOwogICAgIFtzdXBlciBkZXRhY2hdOwogfQogCit0ZW1wbGF0ZTx0eXBl
bmFtZSBVPiBpbmxpbmUgdm9pZCBwZXJmb3JtQWNjZXNzaWJpbGl0eUZ1bmN0aW9uT25NYWluVGhy
ZWFkKFUmJiBsYW1iZGEpCit7CisgICAgaWYgKGlzTWFpblRocmVhZCgpKQorICAgICAgICByZXR1
cm4gbGFtYmRhKCk7CisKKyAgICBjYWxsT25NYWluVGhyZWFkKFsmbGFtYmRhXSB7CisgICAgICAg
IGxhbWJkYSgpOworICAgIH0pOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBV
PiBpbmxpbmUgVCByZXRyaWV2ZUFjY2Vzc2liaWxpdHlWYWx1ZUZyb21NYWluVGhyZWFkKFUmJiBs
YW1iZGEpCit7CisgICAgaWYgKGlzTWFpblRocmVhZCgpKQorICAgICAgICByZXR1cm4gbGFtYmRh
KCk7CisgICAgCisgICAgVCB2YWx1ZTsKKyAgICBjYWxsT25NYWluVGhyZWFkQW5kV2FpdChbJnZh
bHVlLCAmbGFtYmRhXSB7CisgICAgICAgIHZhbHVlID0gbGFtYmRhKCk7CisgICAgfSk7CisgICAg
cmV0dXJuIHZhbHVlOworfQorCiAtIChpZClhdHRhY2htZW50VmlldwogewogICAgIEFTU0VSVCht
X29iamVjdC0+aXNBdHRhY2htZW50KCkpOwotICAgIFdpZGdldCogd2lkZ2V0ID0gbV9vYmplY3Qt
PndpZGdldEZvckF0dGFjaG1lbnRWaWV3KCk7Ci0gICAgaWYgKCF3aWRnZXQpCi0gICAgICAgIHJl
dHVybiBuaWw7Ci0gICAgcmV0dXJuIE5TQWNjZXNzaWJpbGl0eVVuaWdub3JlZERlc2NlbmRhbnQo
d2lkZ2V0LT5wbGF0Zm9ybVdpZGdldCgpKTsKKworICAgIHJldHVybiByZXRyaWV2ZUFjY2Vzc2li
aWxpdHlWYWx1ZUZyb21NYWluVGhyZWFkPGlkPihbcHJvdGVjdGVkU2VsZiA9IFJldGFpblB0cjxX
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcj4oc2VsZildICgpIC0+IGlkIHsKKyAgICAgICAg
YXV0byogd2lkZ2V0ID0gcHJvdGVjdGVkU2VsZi0+bV9vYmplY3QtPndpZGdldEZvckF0dGFjaG1l
bnRWaWV3KCk7CisgICAgICAgIGlmICghd2lkZ2V0KQorICAgICAgICAgICAgcmV0dXJuIG5pbDsK
KyAgICAgICAgcmV0dXJuIE5TQWNjZXNzaWJpbGl0eVVuaWdub3JlZERlc2NlbmRhbnQod2lkZ2V0
LT5wbGF0Zm9ybVdpZGdldCgpKTsKKyAgICB9KTsKIH0KIAogI3ByYWdtYSBtYXJrIFN5c3RlbUlu
dGVyZmFjZSB3cmFwcGVycwpAQCAtNjAzLDcgKzYyOCw5IEBAIHN0YXRpYyBpZCBBWFRleHRNYXJr
ZXJSYW5nZUVuZChpZCByYW5nZSkKIAogLSAoSW50UmVjdClzY3JlZW5Ub0NvbnRlbnRzOihjb25z
dCBJbnRSZWN0JilyZWN0CiB7Ci0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9vYmplY3QtPmRv
Y3VtZW50KCk7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIERvY3VtZW50KiBk
b2N1bWVudCA9IF9heEJhY2tpbmdPYmplY3QtPmRvY3VtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVu
dCkKICAgICAgICAgcmV0dXJuIEludFJlY3QoKTsKICAgICAKQEAgLTE4OTMsMjggKzE5MjAsMjgg
QEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAKIC0gKE5TQXJyYXkqKXJl
bmRlcldpZGdldENoaWxkcmVuCiB7Ci0gICAgV2lkZ2V0KiB3aWRnZXQgPSBtX29iamVjdC0+d2lk
Z2V0KCk7Ci0gICAgaWYgKCF3aWRnZXQpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICByZXR1cm4gWyh3aWRnZXQtPnBsYXRm
b3JtV2lkZ2V0KCkpIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTogTlNBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5BdHRyaWJ1dGVdOwotICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VO
RAorICAgIHJldHVybiByZXRyaWV2ZUFjY2Vzc2liaWxpdHlWYWx1ZUZyb21NYWluVGhyZWFkPE5T
QXJyYXkgKj4oW3Byb3RlY3RlZFNlbGYgPSBSZXRhaW5QdHI8V2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXI+KHNlbGYpXSAoKSAtPiBOU0FycmF5ICogeworICAgICAgICBXaWRnZXQqIHdpZGdl
dCA9IHByb3RlY3RlZFNlbGYtPm1fb2JqZWN0LT53aWRnZXQoKTsKKyAgICAgICAgaWYgKCF3aWRn
ZXQpCisgICAgICAgICAgICByZXR1cm4gbmlsOworICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19CRUdJTgorICAgICAgICByZXR1cm4gWyh3aWRnZXQtPnBsYXRmb3JtV2lkZ2V0
KCkpIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlDaGlsZHJlbkF0
dHJpYnV0ZV07CisgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAorICAg
IH0pOwogfQogCiAtIChpZClyZW1vdGVBY2Nlc3NpYmlsaXR5UGFyZW50T2JqZWN0CiB7CisgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBpZiAoIW1fb2JqZWN0KQogICAgICAgICByZXR1
cm4gbmlsOwotICAgIAotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1fb2JqZWN0LT5kb2N1bWVu
dCgpOwotICAgIGlmICghZG9jdW1lbnQpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAg
RnJhbWUqIGZyYW1lID0gZG9jdW1lbnQtPmZyYW1lKCk7Ci0gICAgaWYgKCFmcmFtZSkKLSAgICAg
ICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICByZXR1cm4gZnJhbWUtPmxvYWRlcigpLmNsaWVudCgp
LmFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKTsKKworICAgIGlmIChhdXRvKiBkb2N1bWVudCA9
IF9heEJhY2tpbmdPYmplY3QtPmRvY3VtZW50KCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIGZyYW1l
ID0gZG9jdW1lbnQtPmZyYW1lKCkpCisgICAgICAgICAgICByZXR1cm4gZnJhbWUtPmxvYWRlcigp
LmNsaWVudCgpLmFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKTsKKyAgICB9CisKKyAgICByZXR1
cm4gbmlsOwogfQogCiBzdGF0aWMgdm9pZCBjb252ZXJ0VG9WZWN0b3IoTlNBcnJheSogYXJyYXks
IEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgdmVjdG9y
KQpAQCAtMTk0NiwxNyArMTk3MywxOSBAQCBzdGF0aWMgTlNNdXRhYmxlQXJyYXkgKmNvbnZlcnRT
dHJpbmdzVG9OU0FycmF5KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB2ZWN0b3IpCiAKIC0gKGlkKWFz
c29jaWF0ZWRQbHVnaW5QYXJlbnQKIHsKLSAgICBpZiAoIW1fb2JqZWN0IHx8ICFtX29iamVjdC0+
aGFzQXR0cmlidXRlKHhfYXBwbGVfcGRmX2Fubm90YXRpb25BdHRyKSkKLSAgICAgICAgcmV0dXJu
IG5pbDsKKyAgICByZXR1cm4gcmV0cmlldmVBY2Nlc3NpYmlsaXR5VmFsdWVGcm9tTWFpblRocmVh
ZDxpZD4oW3Byb3RlY3RlZFNlbGYgPSBSZXRhaW5QdHI8V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXI+KHNlbGYpXSAoKSAtPiBpZCB7CisgICAgICAgIGlmICghcHJvdGVjdGVkU2VsZi0+bV9v
YmplY3QgfHwgIXByb3RlY3RlZFNlbGYtPm1fb2JqZWN0LT5oYXNBcHBsZVBERkFubm90YXRpb25B
dHRyaWJ1dGUoKSkKKyAgICAgICAgICAgIHJldHVybiBuaWw7CiAgICAgCi0gICAgaWYgKCFtX29i
amVjdC0+ZG9jdW1lbnQoKS0+aXNQbHVnaW5Eb2N1bWVudCgpKQotICAgICAgICByZXR1cm4gbmls
OworICAgICAgICBpZiAoIXByb3RlY3RlZFNlbGYtPm1fb2JqZWN0LT5kb2N1bWVudCgpLT5pc1Bs
dWdpbkRvY3VtZW50KCkpCisgICAgICAgICAgICByZXR1cm4gbmlsOwogICAgICAgICAKLSAgICBX
aWRnZXQqIHBsdWdpbldpZGdldCA9IHN0YXRpY19jYXN0PFBsdWdpbkRvY3VtZW50Kj4obV9vYmpl
Y3QtPmRvY3VtZW50KCkpLT5wbHVnaW5XaWRnZXQoKTsKLSAgICBpZiAoIXBsdWdpbldpZGdldCB8
fCAhcGx1Z2luV2lkZ2V0LT5pc1BsdWdpblZpZXdCYXNlKCkpCi0gICAgICAgIHJldHVybiBuaWw7
Ci0KLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UGx1Z2luVmlld0Jhc2UqPihwbHVnaW5XaWRnZXQp
LT5hY2Nlc3NpYmlsaXR5QXNzb2NpYXRlZFBsdWdpblBhcmVudEZvckVsZW1lbnQobV9vYmplY3Qt
PmVsZW1lbnQoKSk7CisgICAgICAgIFdpZGdldCogcGx1Z2luV2lkZ2V0ID0gc3RhdGljX2Nhc3Q8
UGx1Z2luRG9jdW1lbnQqPihwcm90ZWN0ZWRTZWxmLT5tX29iamVjdC0+ZG9jdW1lbnQoKSktPnBs
dWdpbldpZGdldCgpOworICAgICAgICBpZiAoIXBsdWdpbldpZGdldCB8fCAhcGx1Z2luV2lkZ2V0
LT5pc1BsdWdpblZpZXdCYXNlKCkpCisgICAgICAgICAgICByZXR1cm4gbmlsOworICAgICAgICAK
KyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFBsdWdpblZpZXdCYXNlKj4ocGx1Z2luV2lkZ2V0
KS0+YWNjZXNzaWJpbGl0eUFzc29jaWF0ZWRQbHVnaW5QYXJlbnRGb3JFbGVtZW50KHByb3RlY3Rl
ZFNlbGYtPm1fb2JqZWN0LT5lbGVtZW50KCkpOworICAgIH0pOwogfQogCiBzdGF0aWMgdm9pZCBX
ZWJUcmFuc2Zvcm1DR1BhdGhUb05TQmV6aWVyUGF0aCh2b2lkKiBpbmZvLCBjb25zdCBDR1BhdGhF
bGVtZW50ICplbGVtZW50KQpAQCAtMjIyMCwyMCArMjI0OSwyMCBAQCBBTExPV19ERVBSRUNBVEVE
X0RFQ0xBUkFUSU9OU19CRUdJTgogICAgICAgICByZXR1cm4gQCJBWFN1YnNjcmlwdFN0eWxlR3Jv
dXAiOwogCiAgICAgaWYgKG1fb2JqZWN0LT5pc1N0eWxlRm9ybWF0R3JvdXAoKSkgewotICAgICAg
ICBpZiAoTm9kZSogbm9kZSA9IG1fb2JqZWN0LT5ub2RlKCkpIHsKLSAgICAgICAgICAgIGlmIChu
b2RlLT5oYXNUYWdOYW1lKGtiZFRhZykpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEAiQVhLZXli
b2FyZElucHV0U3R5bGVHcm91cCI7Ci0gICAgICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShj
b2RlVGFnKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gQCJBWENvZGVTdHlsZUdyb3VwIjsKLSAg
ICAgICAgICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKHByZVRhZykpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIEAiQVhQcmVmb3JtYXR0ZWRTdHlsZUdyb3VwIjsKLSAgICAgICAgICAgIGlmIChub2Rl
LT5oYXNUYWdOYW1lKHNhbXBUYWcpKQotICAgICAgICAgICAgICAgIHJldHVybiBAIkFYU2FtcGxl
U3R5bGVHcm91cCI7Ci0gICAgICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZSh2YXJUYWcpKQot
ICAgICAgICAgICAgICAgIHJldHVybiBAIkFYVmFyaWFibGVTdHlsZUdyb3VwIjsKLSAgICAgICAg
ICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKGNpdGVUYWcpKQotICAgICAgICAgICAgICAgIHJldHVy
biBAIkFYQ2l0ZVN0eWxlR3JvdXAiOwotICAgICAgICB9CisgICAgICAgIGF1dG8gdGFnTmFtZSA9
IG1fb2JqZWN0LT50YWdOYW1lKCk7CisgICAgICAgIGlmICh0YWdOYW1lID09IGtiZFRhZykKKyAg
ICAgICAgICAgIHJldHVybiBAIkFYS2V5Ym9hcmRJbnB1dFN0eWxlR3JvdXAiOworICAgICAgICBp
ZiAodGFnTmFtZSA9PSBjb2RlVGFnKQorICAgICAgICAgICAgcmV0dXJuIEAiQVhDb2RlU3R5bGVH
cm91cCI7CisgICAgICAgIGlmICh0YWdOYW1lID09IHByZVRhZykKKyAgICAgICAgICAgIHJldHVy
biBAIkFYUHJlZm9ybWF0dGVkU3R5bGVHcm91cCI7CisgICAgICAgIGlmICh0YWdOYW1lID09IHNh
bXBUYWcpCisgICAgICAgICAgICByZXR1cm4gQCJBWFNhbXBsZVN0eWxlR3JvdXAiOworICAgICAg
ICBpZiAodGFnTmFtZSA9PSB2YXJUYWcpCisgICAgICAgICAgICByZXR1cm4gQCJBWFZhcmlhYmxl
U3R5bGVHcm91cCI7CisgICAgICAgIGlmICh0YWdOYW1lID09IGNpdGVUYWcpCisgICAgICAgICAg
ICByZXR1cm4gQCJBWENpdGVTdHlsZUdyb3VwIjsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgfQogICAgIAogICAgIC8vIFJ1Ynkgc3Vicm9sZXMKQEAgLTIyOTcsMjIgKzIzMjYs
MjQgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKIC0gKGlkKXNjcm9sbFZp
ZXdQYXJlbnQKIHsKLSAgICBpZiAoIWlzPEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3PihtX29iamVj
dCkpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgLy8gSWYgdGhpcyBzY3JvbGwgdmll
dyBwcm92aWRlcyBpdCdzIHBhcmVudCBvYmplY3QgKGJlY2F1c2UgaXQncyBhIHN1Yi1mcmFtZSks
IHRoZW4KLSAgICAvLyB3ZSBzaG91bGQgbm90IGZpbmQgdGhlIHJlbW90ZUFjY2Vzc2liaWxpdHlQ
YXJlbnQuCi0gICAgaWYgKG1fb2JqZWN0LT5wYXJlbnRPYmplY3QoKSkKLSAgICAgICAgcmV0dXJu
IG5pbDsKLSAgICAKLSAgICBTY3JvbGxWaWV3KiBzY3JvbGwgPSBkb3duY2FzdDxBY2Nlc3NpYmls
aXR5U2Nyb2xsVmlldz4oKm1fb2JqZWN0KS5zY3JvbGxWaWV3KCk7Ci0gICAgaWYgKCFzY3JvbGwp
Ci0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgaWYgKHNjcm9sbC0+cGxhdGZvcm1XaWRn
ZXQoKSkKLSAgICAgICAgcmV0dXJuIE5TQWNjZXNzaWJpbGl0eVVuaWdub3JlZEFuY2VzdG9yKHNj
cm9sbC0+cGxhdGZvcm1XaWRnZXQoKSk7Ci0gICAgCi0gICAgcmV0dXJuIFtzZWxmIHJlbW90ZUFj
Y2Vzc2liaWxpdHlQYXJlbnRPYmplY3RdOworICAgIHJldHVybiByZXRyaWV2ZUFjY2Vzc2liaWxp
dHlWYWx1ZUZyb21NYWluVGhyZWFkPGlkPihbcHJvdGVjdGVkU2VsZiA9IFJldGFpblB0cjxXZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcj4oc2VsZildICgpIC0+IGlkIHsKKyAgICAgICAgaWYg
KCFpczxBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldz4ocHJvdGVjdGVkU2VsZi0+bV9vYmplY3QpKQor
ICAgICAgICAgICAgcmV0dXJuIG5pbDsKKworICAgICAgICAvLyBJZiB0aGlzIHNjcm9sbCB2aWV3
IHByb3ZpZGVzIGl0J3MgcGFyZW50IG9iamVjdCAoYmVjYXVzZSBpdCdzIGEgc3ViLWZyYW1lKSwg
dGhlbgorICAgICAgICAvLyB3ZSBzaG91bGQgbm90IGZpbmQgdGhlIHJlbW90ZUFjY2Vzc2liaWxp
dHlQYXJlbnQuCisgICAgICAgIGlmIChwcm90ZWN0ZWRTZWxmLT5tX29iamVjdC0+cGFyZW50T2Jq
ZWN0KCkpCisgICAgICAgICAgICByZXR1cm4gbmlsOworCisgICAgICAgIFNjcm9sbFZpZXcqIHNj
cm9sbCA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3PigqcHJvdGVjdGVkU2VsZi0+
bV9vYmplY3QpLnNjcm9sbFZpZXcoKTsKKyAgICAgICAgaWYgKCFzY3JvbGwpCisgICAgICAgICAg
ICByZXR1cm4gbmlsOworCisgICAgICAgIGlmIChzY3JvbGwtPnBsYXRmb3JtV2lkZ2V0KCkpCisg
ICAgICAgICAgICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5VW5pZ25vcmVkQW5jZXN0b3Ioc2Nyb2xs
LT5wbGF0Zm9ybVdpZGdldCgpKTsKKworICAgICAgICByZXR1cm4gW3Byb3RlY3RlZFNlbGYgcmVt
b3RlQWNjZXNzaWJpbGl0eVBhcmVudE9iamVjdF07CisgICAgfSk7CiB9CiAKIC0gKE5TU3RyaW5n
ICopdmFsdWVEZXNjcmlwdGlvbkZvck1ldGVyCkBAIC0yMzM4LDYgKzIzNjksMjMgQEAgQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgcmV0dXJuIHZhbHVlRGVzY3JpcHRpb247
CiB9CiAKKy0gKGlkKXdpbmRvd0VsZW1lbnQ6KE5TU3RyaW5nKilhdHRyaWJ1dGVOYW1lCit7Cisg
ICAgcmV0dXJuIHJldHJpZXZlQWNjZXNzaWJpbGl0eVZhbHVlRnJvbU1haW5UaHJlYWQ8aWQ+KFth
dHRyaWJ1dGVOYW1lLCBwcm90ZWN0ZWRTZWxmID0gUmV0YWluUHRyPFdlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyPihzZWxmKV0gKCkgLT4gaWQgeworICAgICAgICBpZCByZW1vdGVQYXJlbnQg
PSBbcHJvdGVjdGVkU2VsZiByZW1vdGVBY2Nlc3NpYmlsaXR5UGFyZW50T2JqZWN0XTsKKyAgICAg
ICAgaWYgKHJlbW90ZVBhcmVudCkgeworICAgICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNM
QVJBVElPTlNfQkVHSU4KKyAgICAgICAgICAgIHJldHVybiBbcmVtb3RlUGFyZW50IGFjY2Vzc2li
aWxpdHlBdHRyaWJ1dGVWYWx1ZTphdHRyaWJ1dGVOYW1lXTsKKyAgICAgICAgICAgIEFMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0VORAorICAgICAgICB9CisKKyAgICAgICAgaWYgKGF1dG8q
IGZ2ID0gcHJvdGVjdGVkU2VsZi0+bV9vYmplY3QtPmRvY3VtZW50RnJhbWVWaWV3KCkpCisgICAg
ICAgICAgICByZXR1cm4gW2Z2LT5wbGF0Zm9ybVdpZGdldCgpIHdpbmRvd107CisKKyAgICAgICAg
cmV0dXJuIG5pbDsKKyAgICB9KTsKK30KKwogLy8gRklYTUU6IHNwbGl0IHVwIHRoaXMgZnVuY3Rp
b24gaW4gYSBiZXR0ZXIgd2F5LgogLy8gc3VnZ2VzdGlvbnM6IFVzZSBhIGhhc2ggdGFibGUgdGhh
dCBtYXBzIGF0dHJpYnV0ZSBuYW1lcyB0byBmdW5jdGlvbiBjYWxscywKIC8vIG9yIG1heWJlIHBv
aW50ZXJzIHRvIG1lbWJlciBmdW5jdGlvbnMKQEAgLTI0NTMsMTIgKzI1MDEsOCBAQCBBTExPV19E
RVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgICAgIHJldHVybiBbTlNOdW1i
ZXIgbnVtYmVyV2l0aEJvb2w6bV9vYmplY3QtPnByZXZlbnRLZXlib2FyZERPTUV2ZW50RGlzcGF0
Y2goKV07CiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nl
c3NpYmlsaXR5Q2FyZXRCcm93c2luZ0VuYWJsZWRBdHRyaWJ1dGVdKQogICAgICAgICAgICAgcmV0
dXJuIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDptX29iamVjdC0+Y2FyZXRCcm93c2luZ0VuYWJs
ZWQoKV07Ci0gICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nl
c3NpYmlsaXR5V2ViU2Vzc2lvbklEQXR0cmlidXRlXSkgewotICAgICAgICAgICAgaWYgKGF1dG8q
IGRvY3VtZW50ID0gbV9vYmplY3QtPnRvcERvY3VtZW50KCkpIHsKLSAgICAgICAgICAgICAgICBp
ZiAoYXV0byogcGFnZSA9IGRvY3VtZW50LT5wYWdlKCkpCi0gICAgICAgICAgICAgICAgICAgIHJl
dHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkTG9uZ0xvbmc6cGFnZS0+c2Vzc2lvbklE
KCkudG9VSW50NjQoKV07Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKFth
dHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlXZWJTZXNzaW9uSURB
dHRyaWJ1dGVdKQorICAgICAgICAgICAgcmV0dXJuIEAobV9vYmplY3QtPnNlc3Npb25JRCgpKTsK
ICAgICB9CiAgICAgCiAgICAgaWYgKG1fb2JqZWN0LT5pc1RleHRDb250cm9sKCkpIHsKQEAgLTI1
OTksMTQgKzI2NDMsMTQgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAg
ICAgCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzogTlNBY2Nlc3NpYmls
aXR5TWluVmFsdWVBdHRyaWJ1dGVdKSB7CiAgICAgICAgIC8vIEluZGV0ZXJtaW5hdGUgcHJvZ3Jl
c3MgaW5kaWNhdG9yIHNob3VsZCByZXR1cm4gMC4KLSAgICAgICAgaWYgKG1fb2JqZWN0LT5hcmlh
Um9sZUF0dHJpYnV0ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpQcm9ncmVzc0luZGljYXRvciAm
JiAhbV9vYmplY3QtPmhhc0F0dHJpYnV0ZShhcmlhX3ZhbHVlbm93QXR0cikpCisgICAgICAgIGlm
IChtX29iamVjdC0+YXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6UHJv
Z3Jlc3NJbmRpY2F0b3IgJiYgIW1fb2JqZWN0LT5oYXNBUklBVmFsdWVOb3coKSkKICAgICAgICAg
ICAgIHJldHVybiBAMDsKICAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoRmxvYXQ6
bV9vYmplY3QtPm1pblZhbHVlRm9yUmFuZ2UoKV07CiAgICAgfQogICAgIAogICAgIGlmIChbYXR0
cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eU1heFZhbHVlQXR0cmli
dXRlXSkgewogICAgICAgICAvLyBJbmRldGVybWluYXRlIHByb2dyZXNzIGluZGljYXRvciBzaG91
bGQgcmV0dXJuIDAuCi0gICAgICAgIGlmIChtX29iamVjdC0+YXJpYVJvbGVBdHRyaWJ1dGUoKSA9
PSBBY2Nlc3NpYmlsaXR5Um9sZTo6UHJvZ3Jlc3NJbmRpY2F0b3IgJiYgIW1fb2JqZWN0LT5oYXNB
dHRyaWJ1dGUoYXJpYV92YWx1ZW5vd0F0dHIpKQorICAgICAgICBpZiAobV9vYmplY3QtPmFyaWFS
b2xlQXR0cmlidXRlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlByb2dyZXNzSW5kaWNhdG9yICYm
ICFtX29iamVjdC0+aGFzQVJJQVZhbHVlTm93KCkpCiAgICAgICAgICAgICByZXR1cm4gQDA7CiAg
ICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0Om1fb2JqZWN0LT5tYXhWYWx1
ZUZvclJhbmdlKCldOwogICAgIH0KQEAgLTI2MzEsMjAgKzI2NzUsMTEgQEAgQUxMT1dfREVQUkVD
QVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIHJldHVybiBbc2VsZiBwb3NpdGlvbl07
CiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlQ
YXRoQXR0cmlidXRlXSkKICAgICAgICAgcmV0dXJuIFtzZWxmIHBhdGhdOwotICAgIAotICAgIGlm
IChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eVdpbmRvd0F0
dHJpYnV0ZV0gfHwKLSAgICAgICAgW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBOU0Fj
Y2Vzc2liaWxpdHlUb3BMZXZlbFVJRWxlbWVudEF0dHJpYnV0ZV0pIHsKLSAgICAgICAgCi0gICAg
ICAgIGlkIHJlbW90ZVBhcmVudCA9IFtzZWxmIHJlbW90ZUFjY2Vzc2liaWxpdHlQYXJlbnRPYmpl
Y3RdOwotICAgICAgICBpZiAocmVtb3RlUGFyZW50KQotICAgICAgICAgICAgcmV0dXJuIFtyZW1v
dGVQYXJlbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOmF0dHJpYnV0ZU5hbWVdOwotICAg
ICAgICAKLSAgICAgICAgRnJhbWVWaWV3KiBmdiA9IG1fb2JqZWN0LT5kb2N1bWVudEZyYW1lVmll
dygpOwotICAgICAgICBpZiAoZnYpCi0gICAgICAgICAgICByZXR1cm4gW2Z2LT5wbGF0Zm9ybVdp
ZGdldCgpIHdpbmRvd107Ci0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgfQotICAgIAorCisgICAg
aWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlXaW5kb3dB
dHRyaWJ1dGVdCisgICAgICAgIHx8IFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0Fj
Y2Vzc2liaWxpdHlUb3BMZXZlbFVJRWxlbWVudEF0dHJpYnV0ZV0pCisgICAgICAgIHJldHVybiBb
c2VsZiB3aW5kb3dFbGVtZW50OmF0dHJpYnV0ZU5hbWVdOworCiAgICAgaWYgKFthdHRyaWJ1dGVO
YW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlBY2Nlc3NLZXlBdHRyaWJ1dGVdKSB7
CiAgICAgICAgIEF0b21TdHJpbmcgYWNjZXNzS2V5ID0gbV9vYmplY3QtPmFjY2Vzc0tleSgpOwog
ICAgICAgICBpZiAoYWNjZXNzS2V5LmlzTnVsbCgpKQpAQCAtMjg5NywxMiArMjkzMiwxMCBAQCBB
TExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICBpZiAoW2F0dHJpYnV0ZU5h
bWUgaXNFcXVhbFRvU3RyaW5nOiBAIkFYU2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2UiXSkKICAgICAg
ICAgcmV0dXJuIFtzZWxmIHRleHRNYXJrZXJSYW5nZUZvclNlbGVjdGlvbl07CiAgICAgCi0gICAg
aWYgKG1fb2JqZWN0LT5yZW5kZXJlcigpKSB7Ci0gICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBp
c0VxdWFsVG9TdHJpbmc6IEAiQVhTdGFydFRleHRNYXJrZXIiXSkKLSAgICAgICAgICAgIHJldHVy
biBbc2VsZiB0ZXh0TWFya2VyRm9yVmlzaWJsZVBvc2l0aW9uOnN0YXJ0T2ZEb2N1bWVudCgmbV9v
YmplY3QtPnJlbmRlcmVyKCktPmRvY3VtZW50KCkpXTsKLSAgICAgICAgaWYgKFthdHRyaWJ1dGVO
YW1lIGlzRXF1YWxUb1N0cmluZzogQCJBWEVuZFRleHRNYXJrZXIiXSkKLSAgICAgICAgICAgIHJl
dHVybiBbc2VsZiB0ZXh0TWFya2VyRm9yVmlzaWJsZVBvc2l0aW9uOmVuZE9mRG9jdW1lbnQoJm1f
b2JqZWN0LT5yZW5kZXJlcigpLT5kb2N1bWVudCgpKV07Ci0gICAgfQorICAgIGlmIChbYXR0cmli
dXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IEAiQVhTdGFydFRleHRNYXJrZXIiXSkKKyAgICAgICAg
cmV0dXJuIFtzZWxmIHRleHRNYXJrZXJGb3JWaXNpYmxlUG9zaXRpb246c3RhcnRPZkRvY3VtZW50
KF9heEJhY2tpbmdPYmplY3QtPmRvY3VtZW50KCkpXTsKKyAgICBpZiAoW2F0dHJpYnV0ZU5hbWUg
aXNFcXVhbFRvU3RyaW5nOiBAIkFYRW5kVGV4dE1hcmtlciJdKQorICAgICAgICByZXR1cm4gW3Nl
bGYgdGV4dE1hcmtlckZvclZpc2libGVQb3NpdGlvbjplbmRPZkRvY3VtZW50KF9heEJhY2tpbmdP
YmplY3QtPmRvY3VtZW50KCkpXTsKICAgICAKICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVh
bFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUJsb2NrUXVvdGVMZXZlbEF0dHJpYnV0ZV0pCiAgICAg
ICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50Om1fb2JqZWN0LT5ibG9j
a3F1b3RlTGV2ZWwoKV07CkBAIC0zMDQwLDcgKzMwNzMsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lN
UExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgcmV0dXJuIG1fb2JqZWN0LT5kYXRldGltZUF0dHJp
YnV0ZVZhbHVlKCk7CiAgICAgCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmlu
ZzpOU0FjY2Vzc2liaWxpdHlJbmxpbmVUZXh0QXR0cmlidXRlXSkKLSAgICAgICAgcmV0dXJuIEAo
bV9vYmplY3QtPnJlbmRlcmVyKCkgJiYgaXM8UmVuZGVySW5saW5lPihtX29iamVjdC0+cmVuZGVy
ZXIoKSkpOworICAgICAgICByZXR1cm4gQChfYXhCYWNraW5nT2JqZWN0LT5pc0lubGluZVRleHQo
KSk7CiAgICAgCiAgICAgLy8gQVJJQSBMaXZlIHJlZ2lvbiBhdHRyaWJ1dGVzLgogICAgIGlmIChb
YXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5QVJJQUxpdmVBdHRy
aWJ1dGVdKQpAQCAtMzEwOSw3ICszMTQyLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRB
VElPTlNfRU5ECiAgICAgCiAgICAgLy8gVXNlZCBieSBEUlQgdG8gZmluZCBhbiBhY2Nlc3NpYmxl
IG5vZGUgYnkgaXRzIGVsZW1lbnQgaWQuCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxU
b1N0cmluZzpAIkFYRFJURWxlbWVudElkQXR0cmlidXRlIl0pCi0gICAgICAgIHJldHVybiBtX29i
amVjdC0+Z2V0QXR0cmlidXRlKGlkQXR0cik7CisgICAgICAgIHJldHVybiBtX29iamVjdC0+aWRl
bnRpZmllckF0dHJpYnV0ZSgpOwogICAgIAogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFs
VG9TdHJpbmc6QCJBWEF1dG9jb21wbGV0ZVZhbHVlIl0pCiAgICAgICAgIHJldHVybiBtX29iamVj
dC0+YXV0b0NvbXBsZXRlVmFsdWUoKTsKQEAgLTMxNTIsMTcgKzMxODUsMTEgQEAgQUxMT1dfREVQ
UkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVt
YmVyV2l0aEJvb2w6bV9vYmplY3QtPmlzTXVsdGlTZWxlY3RhYmxlKCldOwogICAgIAogICAgIC8v
IERvY3VtZW50IGF0dHJpYnV0ZXMKLSAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3Ry
aW5nOk5TQWNjZXNzaWJpbGl0eURvY3VtZW50VVJJQXR0cmlidXRlXSkgewotICAgICAgICBpZiAo
RG9jdW1lbnQqIGRvY3VtZW50ID0gbV9vYmplY3QtPmRvY3VtZW50KCkpCi0gICAgICAgICAgICBy
ZXR1cm4gZG9jdW1lbnQtPmRvY3VtZW50VVJJKCk7Ci0gICAgICAgIHJldHVybiBuaWw7Ci0gICAg
fQorICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5
RG9jdW1lbnRVUklBdHRyaWJ1dGVdKQorICAgICAgICByZXR1cm4gbV9vYmplY3QtPmRvY3VtZW50
VVJJKCk7CiAgICAgCi0gICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0Fj
Y2Vzc2liaWxpdHlEb2N1bWVudEVuY29kaW5nQXR0cmlidXRlXSkgewotICAgICAgICBpZiAoRG9j
dW1lbnQqIGRvY3VtZW50ID0gbV9vYmplY3QtPmRvY3VtZW50KCkpCi0gICAgICAgICAgICByZXR1
cm4gZG9jdW1lbnQtPmVuY29kaW5nKCk7Ci0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgfQorICAg
IGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5RG9jdW1l
bnRFbmNvZGluZ0F0dHJpYnV0ZV0pCisgICAgICAgIHJldHVybiBtX29iamVjdC0+ZG9jdW1lbnRF
bmNvZGluZygpOwogICAgIAogICAgIC8vIEFyaWEgY29udHJvbHMgZWxlbWVudAogICAgIGlmIChb
YXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5QXJpYUNvbnRyb2xz
QXR0cmlidXRlXSkgewpAQCAtMzM4Miw5ICszNDA5LDYgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBM
RU1FTlRBVElPTlNfRU5ECiAgICAgaWYgKG1fb2JqZWN0LT5pc1Bhc3N3b3JkRmllbGQoKSkKICAg
ICAgICAgcmV0dXJuIEBbIE5TQWNjZXNzaWJpbGl0eVVJRWxlbWVudHNGb3JTZWFyY2hQcmVkaWNh
dGVQYXJhbWV0ZXJpemVkQXR0cmlidXRlIF07CiAgICAgCi0gICAgaWYgKCFtX29iamVjdC0+aXNB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBwYXJhbUF0dHJzOwot
ICAgIAogICAgIGlmIChtX29iamVjdC0+aXNUZXh0Q29udHJvbCgpKQogICAgICAgICByZXR1cm4g
dGV4dFBhcmFtQXR0cnM7CiAgICAgCkBAIC0zNDczLDIxICszNDk3LDMwIEBAIEFMTE9XX0RFUFJF
Q0FURURfREVDTEFSQVRJT05TX0VORAogCiAtICh2b2lkKWFjY2Vzc2liaWxpdHlTaG93Q29udGV4
dE1lbnUKIHsKLSAgICBpZiAoIW1fb2JqZWN0KQorICAgIHBlcmZvcm1BY2Nlc3NpYmlsaXR5RnVu
Y3Rpb25Pbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSBSZXRhaW5QdHI8V2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXI+KHNlbGYpXSB7CisgICAgICAgIFtwcm90ZWN0ZWRTZWxmIF9hY2Nl
c3NpYmlsaXR5U2hvd0NvbnRleHRNZW51XTsKKyAgICB9KTsKK30KKworLSAodm9pZClfYWNjZXNz
aWJpbGl0eVNob3dDb250ZXh0TWVudQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Cisg
ICAgCisgICAgaWYgKCFfYXhCYWNraW5nT2JqZWN0KQogICAgICAgICByZXR1cm47CiAgICAgCi0g
ICAgUGFnZSogcGFnZSA9IG1fb2JqZWN0LT5wYWdlKCk7CisgICAgUGFnZSogcGFnZSA9IF9heEJh
Y2tpbmdPYmplY3QtPnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybjsKICAg
ICAKLSAgICBJbnRSZWN0IHJlY3QgPSBzbmFwcGVkSW50UmVjdChtX29iamVjdC0+ZWxlbWVudFJl
Y3QoKSk7Ci0gICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtX29iamVjdC0+ZG9jdW1lbnRGcmFt
ZVZpZXcoKTsKKyAgICBJbnRSZWN0IHJlY3QgPSBzbmFwcGVkSW50UmVjdChfYXhCYWNraW5nT2Jq
ZWN0LT5lbGVtZW50UmVjdCgpKTsKKyAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IF9heEJhY2tp
bmdPYmplY3QtPmRvY3VtZW50RnJhbWVWaWV3KCk7CiAgICAgCiAgICAgLy8gT24gV0syLCB3ZSBu
ZWVkIHRvIGFjY291bnQgZm9yIHRoZSBzY3JvbGwgcG9zaXRpb24gd2l0aCByZWdhcmRzIHRvIHJv
b3Qgdmlldy4KICAgICAvLyBPbiBXSzEsIHdlIG5lZWQgdG8gY29udmVydCByZWN0IHRvIHdpbmRv
dyBzcGFjZSB0byBtYXRjaCBtb3VzZSBjbGlja2luZy4KICAgICBpZiAoZnJhbWVWaWV3KSB7CiAg
ICAgICAgIC8vIEZpbmQgdGhlIGFwcHJvcHJpYXRlIHNjcm9sbCB2aWV3IHRvIHVzZSB0byBjb252
ZXJ0IHRoZSBjb250ZW50cyB0byB0aGUgd2luZG93LgotICAgICAgICBmb3IgKGF1dG8qIHBhcmVu
dCA9IG1fb2JqZWN0LT5wYXJlbnRPYmplY3QoKTsgcGFyZW50OyBwYXJlbnQgPSBwYXJlbnQtPnBh
cmVudE9iamVjdCgpKSB7CisgICAgICAgIGZvciAoYXV0byogcGFyZW50ID0gX2F4QmFja2luZ09i
amVjdC0+cGFyZW50T2JqZWN0KCk7IHBhcmVudDsgcGFyZW50ID0gcGFyZW50LT5wYXJlbnRPYmpl
Y3QoKSkgewogICAgICAgICAgICAgaWYgKGlzPEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3PigqcGFy
ZW50KSkgewogICAgICAgICAgICAgICAgIGlmIChhdXRvIHNjcm9sbFZpZXcgPSBkb3duY2FzdDxB
Y2Nlc3NpYmlsaXR5U2Nyb2xsVmlldz4oKnBhcmVudCkuc2Nyb2xsVmlldygpKSB7CiAgICAgICAg
ICAgICAgICAgICAgIGlmICghZnJhbWVWaWV3LT5wbGF0Zm9ybVdpZGdldCgpKQpAQCAtMzcxMSwx
MSArMzc0NCwxMyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKIAogLSAo
TlNSYW5nZSlfY29udmVydFRvTlNSYW5nZTooUmFuZ2UqKXJhbmdlCiB7CisgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKyAgICAKICAgICBOU1JhbmdlIHJlc3VsdCA9IE5TTWFrZVJhbmdlKE5T
Tm90Rm91bmQsIDApOwogICAgIGlmICghcmFuZ2UpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAg
ICAgCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9vYmplY3QtPmRvY3VtZW50KCk7CisgICAg
RG9jdW1lbnQqIGRvY3VtZW50ID0gX2F4QmFja2luZ09iamVjdC0+ZG9jdW1lbnQoKTsKICAgICBp
ZiAoIWRvY3VtZW50KQogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIApAQCAtMzc0NCw3ICsz
Nzc5LDkgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAKIC0gKGlkKV90
ZXh0TWFya2VyRm9ySW5kZXg6KE5TSW50ZWdlcil0ZXh0SW5kZXgKIHsKLSAgICBEb2N1bWVudCog
ZG9jdW1lbnQgPSBtX29iamVjdC0+ZG9jdW1lbnQoKTsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOworCisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gX2F4QmFja2luZ09iamVjdC0+ZG9jdW1l
bnQoKTsKICAgICBpZiAoIWRvY3VtZW50KQogICAgICAgICByZXR1cm4gbmlsOwogICAgIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDFhZDZlNWM1ODYwYTNjYmNkYTYwN2E1YzBiZTMzOTIzMTg1MTg4ZjIuLmZkNDYwNTc4OGFm
ZjA1MzUxNzQxYzBlNGY1MjgyYTU2Y2NmZWE0YWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAx
OS0xMi0wNSAgQW5kcmVzIEdvbnphbGV6ICA8YW5kcmVzZ18yMkBhcHBsZS5jb20+CisKKyAgICAg
ICAgSW1wbGVtZW50YXRpb24gb2YgYWRkaXRpb25hbCBhdHRyaWJ1dGUgY2FjaGluZyBpbiB0aGUg
SXNvbGF0ZWRUcmVlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA0OTE4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhlIEFYU3RhcnQvRW5kVGV4dE1hcmtlciBhdHRyaWJ1dGVzIHdlcmUgYmVpbmcgY29t
cHV0ZWQgZm9yCisgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3RzIHRoYXQgaGFkIGEgcmVuZGVy
ZXIgb2JqZWN0LiBXaXRoIHRoaXMgY2hhbmdlLAorICAgICAgICBBWFN0YXJ0L0VuZFRleHRNYXJr
ZXIgYXJlIGNvbXB1dGVkIGZvciBhbGwgQWNjZXNzaWJpbGl0eU9iamVjdHMuIFRodXMKKyAgICAg
ICAgdGhlIGV4cGVjdGVkIG91dHB1dCBmb3IgdGhlIGZvbGxvd2luZyB0ZXN0cyBjaGFuZ2VkIGZy
b20gbnVsbCB2YWx1ZSBmb3IKKyAgICAgICAgdGhlc2UgYXR0cmlidXRlcyB0byB2YWxpZCBvYmpl
Y3QgdmFsdWVzLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pbWFnZS1tYXAyLWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9kb2N1bWVudC1saW5rcy1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS90YWJsZS1hdHRyaWJ1dGVzLWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L3RhYmxlLXNlY3Rpb25zLWV4cGVjdGVkLnR4
dDoKKwogMjAxOS0xMi0wNCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAg
ICAgICAgQWRkIHN1cHBvcnQgZm9yIFdlYklETCBzZXRsaWtlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L2ltYWdlLW1hcDItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS9pbWFnZS1tYXAyLWV4cGVjdGVkLnR4dAppbmRleCAwNjA3YmJkNzk4YWZm
YmUzZWE5ZDRlODgwNTVkNWQ3ZDRlMGIzY2ZkLi40Y2U0NjkwMTY4MDk4ODEzMDc5MDQyMjIxMjQy
NWJkMDhmYWM2ZTJkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2ltYWdl
LW1hcDItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaW1hZ2Ut
bWFwMi1leHBlY3RlZC50eHQKQEAgLTQ0LDggKzQ0LDggQEAgQVhGb2N1c2VkOiAwCiBBWEVuYWJs
ZWQ6IDEKIEFYV2luZG93OiA8QVhMaW5rPgogQVhTZWxlY3RlZFRleHRNYXJrZXJSYW5nZTogKG51
bGwpCi1BWFN0YXJ0VGV4dE1hcmtlcjogKG51bGwpCi1BWEVuZFRleHRNYXJrZXI6IChudWxsKQor
QVhTdGFydFRleHRNYXJrZXI6IDxBWExpbms+CitBWEVuZFRleHRNYXJrZXI6IDxBWExpbms+CiBB
WFZpc2l0ZWQ6IDAKIEFYTGlua2VkVUlFbGVtZW50czogPGFycmF5IG9mIHNpemUgMD4KIEFYU2Vs
ZWN0ZWQ6IDAKQEAgLTc4LDggKzc4LDggQEAgQVhGb2N1c2VkOiAwCiBBWEVuYWJsZWQ6IDEKIEFY
V2luZG93OiA8QVhMaW5rPgogQVhTZWxlY3RlZFRleHRNYXJrZXJSYW5nZTogKG51bGwpCi1BWFN0
YXJ0VGV4dE1hcmtlcjogKG51bGwpCi1BWEVuZFRleHRNYXJrZXI6IChudWxsKQorQVhTdGFydFRl
eHRNYXJrZXI6IDxBWExpbms+CitBWEVuZFRleHRNYXJrZXI6IDxBWExpbms+CiBBWFZpc2l0ZWQ6
IDAKIEFYTGlua2VkVUlFbGVtZW50czogPGFycmF5IG9mIHNpemUgMD4KIEFYU2VsZWN0ZWQ6IDAK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2RvY3VtZW50LWxpbmtz
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2RvY3VtZW50LWxp
bmtzLWV4cGVjdGVkLnR4dAppbmRleCBiYzliNWQ2ZGFkNDEzNDFkZGQ4OGMzOWMyZDdiNjEwYTkw
ZWZhMDQyLi5iZGJlNjBiYmYyYjM1ZTkzYWE3N2IyZjIzNWU5NzRjNTMzMzMzYjRkIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kb2N1bWVudC1saW5rcy1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZG9jdW1lbnQtbGlua3Mt
ZXhwZWN0ZWQudHh0CkBAIC0xNCw4ICsxNCw4IEBAIEFYRm9jdXNlZDogMAogQVhFbmFibGVkOiAx
CiBBWFdpbmRvdzogPEFYTGluaz4KIEFYU2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2U6IChudWxsKQot
QVhTdGFydFRleHRNYXJrZXI6IChudWxsKQotQVhFbmRUZXh0TWFya2VyOiAobnVsbCkKK0FYU3Rh
cnRUZXh0TWFya2VyOiA8QVhMaW5rPgorQVhFbmRUZXh0TWFya2VyOiA8QVhMaW5rPgogQVhWaXNp
dGVkOiAwCiBBWExpbmtlZFVJRWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDA+CiBBWFNlbGVjdGVk
OiAwCkBAIC00OCw4ICs0OCw4IEBAIEFYRm9jdXNlZDogMAogQVhFbmFibGVkOiAxCiBBWFdpbmRv
dzogPEFYTGluaz4KIEFYU2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2U6IChudWxsKQotQVhTdGFydFRl
eHRNYXJrZXI6IChudWxsKQotQVhFbmRUZXh0TWFya2VyOiAobnVsbCkKK0FYU3RhcnRUZXh0TWFy
a2VyOiA8QVhMaW5rPgorQVhFbmRUZXh0TWFya2VyOiA8QVhMaW5rPgogQVhWaXNpdGVkOiAwCiBB
WExpbmtlZFVJRWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDA+CiBBWFNlbGVjdGVkOiAwCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RhYmxlLWF0dHJpYnV0ZXMtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90YWJsZS1hdHRyaWJ1dGVzLWV4cGVj
dGVkLnR4dAppbmRleCBiMTg2ODVjODNhNWNkYzlhODgwMDMwMDY5NjVkODgxYTM0Y2UyN2IxLi5k
MTUzOGVlMjNhNDliOTljNzBhZDJlYTA5NTE1YTUyODFkY2Q0NTNlIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RhYmxlLWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGFibGUtYXR0cmlidXRlcy1leHBlY3RlZC50eHQK
QEAgLTI4OSw4ICsyODksOCBAQCBBWEZvY3VzZWQ6IDAKIEFYRW5hYmxlZDogMQogQVhXaW5kb3c6
IDxBWENvbHVtbj4KIEFYU2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2U6IChudWxsKQotQVhTdGFydFRl
eHRNYXJrZXI6IChudWxsKQotQVhFbmRUZXh0TWFya2VyOiAobnVsbCkKK0FYU3RhcnRUZXh0TWFy
a2VyOiA8QVhDb2x1bW4+CitBWEVuZFRleHRNYXJrZXI6IDxBWENvbHVtbj4KIEFYVmlzaXRlZDog
MAogQVhMaW5rZWRVSUVsZW1lbnRzOiA8YXJyYXkgb2Ygc2l6ZSAwPgogQVhTZWxlY3RlZDogMApA
QCAtMzIzLDggKzMyMyw4IEBAIEFYRm9jdXNlZDogMAogQVhFbmFibGVkOiAxCiBBWFdpbmRvdzog
PEFYQ29sdW1uPgogQVhTZWxlY3RlZFRleHRNYXJrZXJSYW5nZTogKG51bGwpCi1BWFN0YXJ0VGV4
dE1hcmtlcjogKG51bGwpCi1BWEVuZFRleHRNYXJrZXI6IChudWxsKQorQVhTdGFydFRleHRNYXJr
ZXI6IDxBWENvbHVtbj4KK0FYRW5kVGV4dE1hcmtlcjogPEFYQ29sdW1uPgogQVhWaXNpdGVkOiAw
CiBBWExpbmtlZFVJRWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDA+CiBBWFNlbGVjdGVkOiAwCkBA
IC0zNTcsOCArMzU3LDggQEAgQVhGb2N1c2VkOiAwCiBBWEVuYWJsZWQ6IDEKIEFYV2luZG93OiA8
QVhDb2x1bW4+CiBBWFNlbGVjdGVkVGV4dE1hcmtlclJhbmdlOiAobnVsbCkKLUFYU3RhcnRUZXh0
TWFya2VyOiAobnVsbCkKLUFYRW5kVGV4dE1hcmtlcjogKG51bGwpCitBWFN0YXJ0VGV4dE1hcmtl
cjogPEFYQ29sdW1uPgorQVhFbmRUZXh0TWFya2VyOiA8QVhDb2x1bW4+CiBBWFZpc2l0ZWQ6IDAK
IEFYTGlua2VkVUlFbGVtZW50czogPGFycmF5IG9mIHNpemUgMD4KIEFYU2VsZWN0ZWQ6IDAKQEAg
LTM5MSw4ICszOTEsOCBAQCBBWEZvY3VzZWQ6IDAKIEFYRW5hYmxlZDogMQogQVhXaW5kb3c6IDxB
WENvbHVtbj4KIEFYU2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2U6IChudWxsKQotQVhTdGFydFRleHRN
YXJrZXI6IChudWxsKQotQVhFbmRUZXh0TWFya2VyOiAobnVsbCkKK0FYU3RhcnRUZXh0TWFya2Vy
OiA8QVhDb2x1bW4+CitBWEVuZFRleHRNYXJrZXI6IDxBWENvbHVtbj4KIEFYVmlzaXRlZDogMAog
QVhMaW5rZWRVSUVsZW1lbnRzOiA8YXJyYXkgb2Ygc2l6ZSAwPgogQVhTZWxlY3RlZDogMApAQCAt
NDI1LDggKzQyNSw4IEBAIEFYRm9jdXNlZDogMAogQVhFbmFibGVkOiAxCiBBWFdpbmRvdzogPEFY
Q29sdW1uPgogQVhTZWxlY3RlZFRleHRNYXJrZXJSYW5nZTogKG51bGwpCi1BWFN0YXJ0VGV4dE1h
cmtlcjogKG51bGwpCi1BWEVuZFRleHRNYXJrZXI6IChudWxsKQorQVhTdGFydFRleHRNYXJrZXI6
IDxBWENvbHVtbj4KK0FYRW5kVGV4dE1hcmtlcjogPEFYQ29sdW1uPgogQVhWaXNpdGVkOiAwCiBB
WExpbmtlZFVJRWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDA+CiBBWFNlbGVjdGVkOiAwCkBAIC0x
MTEzLDggKzExMTMsOCBAQCBBWEZvY3VzZWQ6IDAKIEFYRW5hYmxlZDogMQogQVhXaW5kb3c6IDxB
WEdyb3VwPgogQVhTZWxlY3RlZFRleHRNYXJrZXJSYW5nZTogKG51bGwpCi1BWFN0YXJ0VGV4dE1h
cmtlcjogKG51bGwpCi1BWEVuZFRleHRNYXJrZXI6IChudWxsKQorQVhTdGFydFRleHRNYXJrZXI6
IDxBWEdyb3VwPgorQVhFbmRUZXh0TWFya2VyOiA8QVhHcm91cD4KIEFYVmlzaXRlZDogMAogQVhM
aW5rZWRVSUVsZW1lbnRzOiA8YXJyYXkgb2Ygc2l6ZSAwPgogQVhTZWxlY3RlZDogMApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90YWJsZS1zZWN0aW9ucy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RhYmxlLXNlY3Rpb25zLWV4cGVjdGVkLnR4
dAppbmRleCA0YzU1ZGIwZjU1YmMxODM5ZjM3YTUwZDYxYzg4ZjkzYWI4ZmQ1MGFlLi5jMzFlNGZk
ZjYzN2MwZmYzNmQwMWI0MzU5NTMzNDQ0YThlOGU0YjdhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9hY2Nlc3NpYmlsaXR5L3RhYmxlLXNlY3Rpb25zLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L3RhYmxlLXNlY3Rpb25zLWV4cGVjdGVkLnR4dApAQCAtMjYxLDgg
KzI2MSw4IEBAIEFYRm9jdXNlZDogMAogQVhFbmFibGVkOiAxCiBBWFdpbmRvdzogPEFYQ29sdW1u
PgogQVhTZWxlY3RlZFRleHRNYXJrZXJSYW5nZTogKG51bGwpCi1BWFN0YXJ0VGV4dE1hcmtlcjog
KG51bGwpCi1BWEVuZFRleHRNYXJrZXI6IChudWxsKQorQVhTdGFydFRleHRNYXJrZXI6IDxBWENv
bHVtbj4KK0FYRW5kVGV4dE1hcmtlcjogPEFYQ29sdW1uPgogQVhWaXNpdGVkOiAwCiBBWExpbmtl
ZFVJRWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDA+CiBBWFNlbGVjdGVkOiAwCkBAIC0yOTUsOCAr
Mjk1LDggQEAgQVhGb2N1c2VkOiAwCiBBWEVuYWJsZWQ6IDEKIEFYV2luZG93OiA8QVhDb2x1bW4+
CiBBWFNlbGVjdGVkVGV4dE1hcmtlclJhbmdlOiAobnVsbCkKLUFYU3RhcnRUZXh0TWFya2VyOiAo
bnVsbCkKLUFYRW5kVGV4dE1hcmtlcjogKG51bGwpCitBWFN0YXJ0VGV4dE1hcmtlcjogPEFYQ29s
dW1uPgorQVhFbmRUZXh0TWFya2VyOiA8QVhDb2x1bW4+CiBBWFZpc2l0ZWQ6IDAKIEFYTGlua2Vk
VUlFbGVtZW50czogPGFycmF5IG9mIHNpemUgMD4KIEFYU2VsZWN0ZWQ6IDAKQEAgLTMyOSw4ICsz
MjksOCBAQCBBWEZvY3VzZWQ6IDAKIEFYRW5hYmxlZDogMQogQVhXaW5kb3c6IDxBWENvbHVtbj4K
IEFYU2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2U6IChudWxsKQotQVhTdGFydFRleHRNYXJrZXI6IChu
dWxsKQotQVhFbmRUZXh0TWFya2VyOiAobnVsbCkKK0FYU3RhcnRUZXh0TWFya2VyOiA8QVhDb2x1
bW4+CitBWEVuZFRleHRNYXJrZXI6IDxBWENvbHVtbj4KIEFYVmlzaXRlZDogMAogQVhMaW5rZWRV
SUVsZW1lbnRzOiA8YXJyYXkgb2Ygc2l6ZSAwPgogQVhTZWxlY3RlZDogMApAQCAtOTQzLDggKzk0
Myw4IEBAIEFYRm9jdXNlZDogMAogQVhFbmFibGVkOiAxCiBBWFdpbmRvdzogPEFYR3JvdXA+CiBB
WFNlbGVjdGVkVGV4dE1hcmtlclJhbmdlOiAobnVsbCkKLUFYU3RhcnRUZXh0TWFya2VyOiAobnVs
bCkKLUFYRW5kVGV4dE1hcmtlcjogKG51bGwpCitBWFN0YXJ0VGV4dE1hcmtlcjogPEFYR3JvdXA+
CitBWEVuZFRleHRNYXJrZXI6IDxBWEdyb3VwPgogQVhWaXNpdGVkOiAwCiBBWExpbmtlZFVJRWxl
bWVudHM6IDxhcnJheSBvZiBzaXplIDA+CiBBWFNlbGVjdGVkOiAwCkBAIC0xMjExLDggKzEyMTEs
OCBAQCBBWEZvY3VzZWQ6IDAKIEFYRW5hYmxlZDogMQogQVhXaW5kb3c6IDxBWENvbHVtbj4KIEFY
U2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2U6IChudWxsKQotQVhTdGFydFRleHRNYXJrZXI6IChudWxs
KQotQVhFbmRUZXh0TWFya2VyOiAobnVsbCkKK0FYU3RhcnRUZXh0TWFya2VyOiA8QVhDb2x1bW4+
CitBWEVuZFRleHRNYXJrZXI6IDxBWENvbHVtbj4KIEFYVmlzaXRlZDogMAogQVhMaW5rZWRVSUVs
ZW1lbnRzOiA8YXJyYXkgb2Ygc2l6ZSAwPgogQVhTZWxlY3RlZDogMApAQCAtMTI0NSw4ICsxMjQ1
LDggQEAgQVhGb2N1c2VkOiAwCiBBWEVuYWJsZWQ6IDEKIEFYV2luZG93OiA8QVhDb2x1bW4+CiBB
WFNlbGVjdGVkVGV4dE1hcmtlclJhbmdlOiAobnVsbCkKLUFYU3RhcnRUZXh0TWFya2VyOiAobnVs
bCkKLUFYRW5kVGV4dE1hcmtlcjogKG51bGwpCitBWFN0YXJ0VGV4dE1hcmtlcjogPEFYQ29sdW1u
PgorQVhFbmRUZXh0TWFya2VyOiA8QVhDb2x1bW4+CiBBWFZpc2l0ZWQ6IDAKIEFYTGlua2VkVUlF
bGVtZW50czogPGFycmF5IG9mIHNpemUgMD4KIEFYU2VsZWN0ZWQ6IDAKQEAgLTEyNzksOCArMTI3
OSw4IEBAIEFYRm9jdXNlZDogMAogQVhFbmFibGVkOiAxCiBBWFdpbmRvdzogPEFYQ29sdW1uPgog
QVhTZWxlY3RlZFRleHRNYXJrZXJSYW5nZTogKG51bGwpCi1BWFN0YXJ0VGV4dE1hcmtlcjogKG51
bGwpCi1BWEVuZFRleHRNYXJrZXI6IChudWxsKQorQVhTdGFydFRleHRNYXJrZXI6IDxBWENvbHVt
bj4KK0FYRW5kVGV4dE1hcmtlcjogPEFYQ29sdW1uPgogQVhWaXNpdGVkOiAwCiBBWExpbmtlZFVJ
RWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDA+CiBBWFNlbGVjdGVkOiAwCkBAIC0xODkzLDggKzE4
OTMsOCBAQCBBWEZvY3VzZWQ6IDAKIEFYRW5hYmxlZDogMQogQVhXaW5kb3c6IDxBWEdyb3VwPgog
QVhTZWxlY3RlZFRleHRNYXJrZXJSYW5nZTogKG51bGwpCi1BWFN0YXJ0VGV4dE1hcmtlcjogKG51
bGwpCi1BWEVuZFRleHRNYXJrZXI6IChudWxsKQorQVhTdGFydFRleHRNYXJrZXI6IDxBWEdyb3Vw
PgorQVhFbmRUZXh0TWFya2VyOiA8QVhHcm91cD4KIEFYVmlzaXRlZDogMAogQVhMaW5rZWRVSUVs
ZW1lbnRzOiA8YXJyYXkgb2Ygc2l6ZSAwPgogQVhTZWxlY3RlZDogMAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385010</attachid>
            <date>2019-12-06 06:42:05 -0800</date>
            <delta_ts>2019-12-07 12:34:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204918-20191206094203.patch</filename>
            <type>text/plain</type>
            <size>206035</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzMTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjM4MDA4YTZkMGI4YjFi
MjY1MWUxOGQ0OWJiOGM3ZTBhYjhjYWZjZS4uNDI4NTZlYjIyNTBlOGU4MmM0MGQ5ODA4ZWEyNTA0
YzNlZmVhNjNmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwMyBAQAorMjAxOS0xMi0wNSAgQW5k
cmVzIEdvbnphbGV6ICA8YW5kcmVzZ18yMkBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50
YXRpb24gb2YgYWRkaXRpb25hbCBhdHRyaWJ1dGUgY2FjaGluZyBpbiB0aGUgSXNvbGF0ZWRUcmVl
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0OTE4
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzLCBubyBuZXcgZnVuY3Rpb25hbGl0eS4gVXBkYXRlZCBzZXZlcmFsIHRlc3RzIHRvIGZp
eGVkCisgICAgICAgIGV4cGVjdGVkIG91dHB1dC4KKworICAgICAgICAtIEltcGxlbWVudGF0aW9u
IG9mIGFyb3VuZCAyMDAgbWV0aG9kcyBpbiB0aGUgQVhJc29sYXRlZE9iamVjdCBjbGFzcy4KKyAg
ICAgICAgLSBUaGUgcGVuZGluZyBtZXRob2QgaW1wbGVtZW50YXRpb25zIGhhdmUgYW4gQVNTRVJU
X05PVF9SRUFDSEVELgorICAgICAgICAtIFN1cHBvcnQgZm9yIGRpc3BhdGNoaW5nIHRvIHRoZSBt
YWluIHRocmVhZCBzb21lCisgICAgICAgIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIG1l
dGhvZHMgdGhhdCBjYW5ub3QgYmUgcnVuIGluIHRoZQorICAgICAgICBzZWNvbmRhcnkgdGhyZWFk
LgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmNyZWF0ZUlzb2xhdGVkVHJlZUhpZXJhcmNoeSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpnZW5lcmF0ZUlzb2xhdGVkVHJlZSk6Cisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmg6CisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6YXJpYUxhYmVsZWRCeVRleHQgY29uc3QpOgorICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphY3Rpb25WZXJiIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmRhdGV0aW1lQXR0cmlidXRlVmFsdWUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bGlua1JlbFZhbHVlIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzSW5saW5lVGV4
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjppZGVudGlm
aWVyQXR0cmlidXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OmRvY3VtZW50VVJJIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmRvY3VtZW50RW5jb2RpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6c2Vzc2lvbklEIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlPYmplY3Q6OnRhZ05hbWUgY29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRl
eHQ6OkFjY2Vzc2liaWxpdHlUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmFjdGlvblZlcmIgY29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdEludGVyZmFjZS5oOiBCYXNlIGltcGxlbWVudGF0aW9uIGZvcgorICAgICAg
ICBzZXZlcmFsIGlzWFhYIG1ldGhvZHMgdGhhdCByZWx5IG9uIHRoZSBvYmplY3Qgcm9sZVZhbHVl
LgorICAgICAgICAoV2ViQ29yZTo6QVhDb3JlT2JqZWN0Ojppc0ltYWdlTWFwIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFYQ29yZU9iamVjdDo6aXNXZWJBcmVhIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkFYQ29yZU9iamVjdDo6aXNDaGVja2JveCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpBWENvcmVPYmplY3Q6OmlzUmFkaW9CdXR0b24gY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6QVhDb3JlT2JqZWN0Ojppc0xpc3RCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhD
b3JlT2JqZWN0Ojppc1NwaW5CdXR0b24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhDb3Jl
T2JqZWN0Ojppc1N3aXRjaCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWENvcmVPYmplY3Q6
OmlzVG9nZ2xlQnV0dG9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYQ29yZU9iamVjdDo6
aXNUYWJMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYQ29yZU9iamVjdDo6aXNUYWJJ
dGVtIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYQ29yZU9iamVjdDo6aXNSYWRpb0dyb3Vw
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYQ29yZU9iamVjdDo6aXNDb21ib0JveCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpBWENvcmVPYmplY3Q6OmlzVHJlZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpBWENvcmVPYmplY3Q6OmlzVHJlZUdyaWQgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6QVhDb3JlT2JqZWN0Ojppc1RyZWVJdGVtIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkFYQ29yZU9iamVjdDo6aXNTY3JvbGxiYXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
QVhDb3JlT2JqZWN0Ojppc0xpc3RJdGVtIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYQ29y
ZU9iamVjdDo6aXNDaGVja2JveE9yUmFkaW8gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhD
b3JlT2JqZWN0Ojppc1Njcm9sbFZpZXcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhDb3Jl
T2JqZWN0Ojppc0NhbnZhcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWENvcmVPYmplY3Q6
OmlzUG9wVXBCdXR0b24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhDb3JlT2JqZWN0Ojpp
c0NvbG9yV2VsbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWENvcmVPYmplY3Q6OmlzU3Bs
aXR0ZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhDb3JlT2JqZWN0Ojppc1Rvb2xiYXIg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhDb3JlT2JqZWN0Ojppc1N1bW1hcnkgY29uc3Qp
OgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphY2Nlc3NLZXkg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWN0
aW9uVmVyYiBjb25zdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0Lmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U3BpbkJ1
dHRvbi5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRU
cmVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjpzZXRSb290Tm9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6c2V0Um9vdCk6IFJlbmFtZWQgc2V0
Um9vdE5vZGUuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRl
ZFRyZWUuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVk
VHJlZU5vZGUuY3BwOiBJbXBsZW1lbnRhdGlvbiBvZgorICAgICAgICBhcm91bmQgMjAwIG1ldGhv
ZHMgaW4gdGhlIEFYSXNvbGF0ZWRPYmplY3QgY2xhc3MuIFRoZSBtZXRob2RzIHRoYXQgYXJlCisg
ICAgICAgIHBlbmRpbmcsIGhhdmUgYSBzdHViIGltcGxlbWV0YXRpb24gd2l0aCBhbiBBU1NFUlRf
Tk9UX1JFQUNIRUQuCisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpBWElzb2xh
dGVkT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojppbml0aWFsaXplQXR0cmlidXRl
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpzZXRNYXRoc2NyaXB0
cyk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpzZXRPYmplY3RWZWN0b3JQ
cm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojppc0RldGFjaGVk
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmlzRGV0YWNoZWRG
cm9tUGFyZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmFjY2Vzc2li
aWxpdHlUZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmNs
YXNzTGlzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpzZXNz
aW9uSUQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6ZG9jdW1l
bnRVUkkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6cHJldmVu
dEtleWJvYXJkRE9NRXZlbnREaXNwYXRjaCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElz
b2xhdGVkT2JqZWN0Ojpkb2N1bWVudEVuY29kaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkFYSXNvbGF0ZWRPYmplY3Q6Omluc2VydE1hdGhQYWlycyk6CisgICAgICAgIChXZWJDb3JlOjpB
WElzb2xhdGVkT2JqZWN0OjptYXRoUHJlc2NyaXB0cyk6CisgICAgICAgIChXZWJDb3JlOjpBWElz
b2xhdGVkT2JqZWN0OjptYXRoUG9zdHNjcmlwdHMpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29s
YXRlZE9iamVjdDo6c2Nyb2xsQmFyKToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmpl
Y3Q6OmNvbG9yVmFsdWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVj
dDo6aW50UG9pbnRBdHRyaWJ1dGVWYWx1ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElz
b2xhdGVkT2JqZWN0Ojp2ZWN0b3JBdHRyaWJ1dGVWYWx1ZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpBWElzb2xhdGVkT2JqZWN0OjpvcHRpb25TZXRBdHRyaWJ1dGVWYWx1ZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojp1aW50NjRBdHRyaWJ1dGVWYWx1ZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojp1cmxBdHRyaWJ1dGVW
YWx1ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojpjb2xvckF0
dHJpYnV0ZVZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6
OmZsb2F0QXR0cmlidXRlVmFsdWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRl
ZE9iamVjdDo6ZmlsbENoaWxkcmVuVmVjdG9yRm9yUHJvcGVydHkgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6cmVwbGFjZVRleHRJblJhbmdlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6Omluc2VydFRleHQpOgorICAgICAgICAoV2ViQ29y
ZTo6QVhJc29sYXRlZE9iamVjdDo6cHJlc3MpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRl
ZE9iamVjdDo6cGVyZm9ybURlZmF1bHRBY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29s
YXRlZE9iamVjdDo6aXNBY2Nlc3NpYmlsaXR5T2JqZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmlzQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6aXNBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmlzQWNj
ZXNzaWJpbGl0eVNjcm9sbGJhciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVk
T2JqZWN0Ojppc0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmlzQWNjZXNzaWJpbGl0eVNWR1Jvb3QgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6aXNBY2Nlc3NpYmlsaXR5U1ZHRWxlbWVu
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojpjb250YWluc1Rl
eHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6aXNBdHRhY2ht
ZW50RWxlbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojpp
c05hdGl2ZUltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6
OmlzSW1hZ2VCdXR0b24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVj
dDo6aXNDb250YWluZWRCeVBhc3N3b3JkRmllbGQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
QVhJc29sYXRlZE9iamVjdDo6cGFzc3dvcmRGaWVsZE9yQ29udGFpbmluZ1Bhc3N3b3JkRmllbGQp
OgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6aXNOYXRpdmVUZXh0Q29udHJv
bCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojppc05hdGl2ZUxp
c3RCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6aXNMaXN0
Qm94T3B0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6Omlz
U2xpZGVyVGh1bWIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6
aXNJbnB1dFNsaWRlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0
Ojppc0xhYmVsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6Omlz
RGF0YVRhYmxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6Omlz
SW1hZ2VNYXBMaW5rIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6
OmlzTmF0aXZlU3BpbkJ1dHRvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVk
T2JqZWN0Ojppc1NwaW5CdXR0b25QYXJ0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNv
bGF0ZWRPYmplY3Q6OmlzTW9ja09iamVjdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElz
b2xhdGVkT2JqZWN0Ojppc01lZGlhT2JqZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFY
SXNvbGF0ZWRPYmplY3Q6OmlzQVJJQVRleHRDb250cm9sIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmlzTm9uTmF0aXZlVGV4dENvbnRyb2wgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6aXNCbG9ja3F1b3RlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmlzTGFuZG1hcmsgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6aXNGaWd1cmVFbGVtZW50IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmlzS2V5Ym9hcmRGb2N1c2FibGUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6aXNIb3ZlcmVkIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmlzSW5kZXRlcm1pbmF0
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojppc0xvYWRlZCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojppc09uU2NyZWVuIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmlzT2ZmU2NyZWVuIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmlzUHJlc3NlZCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojppc1VudmlzaXRlZCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojppc0xpbmtlZCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojppc1Zpc2libGUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6aXNDb2xsYXBzZWQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6aXNTZWxlY3RlZE9wdGlvbkFjdGl2
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpoYXNCb2xkRm9u
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpoYXNJdGFsaWNG
b250IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6Omhhc01pc3Nw
ZWxsaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6Omhhc1Bs
YWluVGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpoYXNT
YW1lRm9udCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpoYXNT
YW1lRm9udENvbG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6
Omhhc1NhbWVTdHlsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0
Ojppc1N0YXRpY1RleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVj
dDo6aGFzVW5kZXJsaW5lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmpl
Y3Q6Omhhc0hpZ2hsaWdodGluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVk
T2JqZWN0OjplbGVtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmpl
Y3Q6Om5vZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6cmVu
ZGVyZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6ZGVmYXVs
dE9iamVjdEluY2x1c2lvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2Jq
ZWN0OjphY2Nlc3NpYmlsaXR5SXNJZ25vcmVkQnlEZWZhdWx0IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OnN0ZXBWYWx1ZUZvclJhbmdlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OnNlbGVjdGVkTGlzdEl0ZW0pOgorICAgICAg
ICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6YXJpYUFjdGl2ZURlc2NlbmRhbnRSZWZlcmVu
Y2luZ0VsZW1lbnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6
OmFyaWFDb250cm9sc1JlZmVyZW5jaW5nRWxlbWVudHMgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6QVhJc29sYXRlZE9iamVjdDo6YXJpYURlc2NyaWJlZEJ5RWxlbWVudHMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6YXJpYURlc2NyaWJlZEJ5UmVmZXJlbmNp
bmdFbGVtZW50cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojph
cmlhRGV0YWlsc1JlZmVyZW5jaW5nRWxlbWVudHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
QVhJc29sYXRlZE9iamVjdDo6YXJpYUVycm9yTWVzc2FnZVJlZmVyZW5jaW5nRWxlbWVudHMgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6YXJpYUZsb3dUb1JlZmVy
ZW5jaW5nRWxlbWVudHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVj
dDo6YXJpYUxhYmVsbGVkQnlFbGVtZW50cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElz
b2xhdGVkT2JqZWN0OjphcmlhTGFiZWxsZWRCeVJlZmVyZW5jaW5nRWxlbWVudHMgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6YXJpYU93bnNSZWZlcmVuY2luZ0Vs
ZW1lbnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6Omhhc0Rh
dGFsaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OnN1cHBv
cnRzSGFzUG9wdXAgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6
c3VwcG9ydHNQcmVzc2VkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmpl
Y3Q6OnN1cHBvcnRzQ2hlY2tlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVk
T2JqZWN0OjppZ25vcmVkRnJvbU1vZGFsUHJlc2VuY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6QVhJc29sYXRlZE9iamVjdDo6aXNNb2RhbERlc2NlbmRhbnQgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6aXNNb2RhbE5vZGUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6ZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmZpcnN0Q2hpbGQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6bGFzdENoaWxkIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OnByZXZpb3VzU2libGluZyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpuZXh0U2libGluZyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpuZXh0U2libGluZ1Vu
aWdub3JlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpwcmV2
aW91c1NpYmxpbmdVbmlnbm9yZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRl
ZE9iamVjdDo6cGFyZW50T2JqZWN0SWZFeGlzdHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
QVhJc29sYXRlZE9iamVjdDo6aXNEZXNjZW5kYW50T2ZCYXJyZW5QYXJlbnQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6aXNEZXNjZW5kYW50T2ZSb2xlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6Om9ic2VydmFibGVPYmplY3Qg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6Y29ycmVzcG9uZGlu
Z0xhYmVsRm9yQ29udHJvbEVsZW1lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29s
YXRlZE9iamVjdDo6Y29ycmVzcG9uZGluZ0NvbnRyb2xGb3JMYWJlbEVsZW1lbnQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6aXNQcmVzZW50YXRpb25hbENoaWxk
T2ZBcmlhUm9sZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojph
cmlhUm9sZUhhc1ByZXNlbnRhdGlvbmFsQ2hpbGRyZW4gY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6QVhJc29sYXRlZE9iamVjdDo6aW5oZXJpdHNQcmVzZW50YXRpb25hbFJvbGUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6c2V0QWNjZXNzaWJsZU5hbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6aGFzQXR0cmlidXRlc1JlcXVpcmVk
Rm9ySW5jbHVzaW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6
OmFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElz
b2xhdGVkT2JqZWN0Ojp0aXRsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVk
T2JqZWN0OjpoZWxwVGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2Jq
ZWN0Ojppc0FSSUFTdGF0aWNUZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0
ZWRPYmplY3Q6OnN0cmluZ1ZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0
ZWRPYmplY3Q6OnRleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVj
dDo6YXJpYUxhYmVsZWRCeUF0dHJpYnV0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElz
b2xhdGVkT2JqZWN0OjphcmlhRGVzY3JpYmVkQnlBdHRyaWJ1dGUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6YWNjZXNzaWJsZU5hbWVEZXJpdmVzRnJvbUNvbnRl
bnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6ZWxlbWVudHNG
cm9tQXR0cmlidXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6
OmF4T2JqZWN0Q2FjaGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVj
dDo6YW5jaG9yRWxlbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2Jq
ZWN0OjphY3Rpb25FbGVtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRP
YmplY3Q6OmVsZW1lbnRQYXRoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRP
YmplY3Q6OnN1cHBvcnRzUGF0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVk
T2JqZWN0Ojp0ZXh0SXRlcmF0b3JCZWhhdmlvckZvclRleHRSYW5nZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojp3aWRnZXQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6QVhJc29sYXRlZE9iamVjdDo6d2lkZ2V0Rm9yQXR0YWNobWVudFZpZXcgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6cGFnZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojpkb2N1bWVudCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojpkb2N1bWVudEZyYW1lVmlldyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpmcmFtZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjptYWluRnJhbWUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6QVhJc29sYXRlZE9iamVjdDo6dG9wRG9jdW1lbnQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6QVhJc29sYXRlZE9iamVjdDo6c2Nyb2xsVmlld0FuY2VzdG9yIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAg
IChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojp0ZXh0Q2hhbmdlZCk6CisgICAgICAgIChXZWJD
b3JlOjpBWElzb2xhdGVkT2JqZWN0Ojp1cGRhdGVBY2Nlc3NpYmlsaXR5Um9sZSk6CisgICAgICAg
IChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjphZGRDaGlsZHJlbik6CisgICAgICAgIChXZWJD
b3JlOjpBWElzb2xhdGVkT2JqZWN0OjphZGRDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpBWElz
b2xhdGVkT2JqZWN0OjppbnNlcnRDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVk
T2JqZWN0OjpzaG91bGRJZ25vcmVBdHRyaWJ1dGVSb2xlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmNhbkhhdmVDaGlsZHJlbiBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpoYXNDaGlsZHJlbiBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpzZXROZWVkc1RvVXBkYXRlQ2hpbGRyZW4pOgorICAg
ICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6c2V0TmVlZHNUb1VwZGF0ZVN1YnRyZWUp
OgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6Y2xlYXJDaGlsZHJlbik6Cisg
ICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpuZWVkc1RvVXBkYXRlQ2hpbGRyZW4g
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6ZGV0YWNoRnJvbVBh
cmVudCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpzaG91bGRGb2N1c0Fj
dGl2ZURlc2NlbmRhbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVj
dDo6YWN0aXZlRGVzY2VuZGFudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVk
T2JqZWN0OjpoYW5kbGVBY3RpdmVEZXNjZW5kYW50Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpBWElzb2xhdGVkT2JqZWN0OjpoYW5kbGVBcmlhRXhwYW5kZWRDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmlzRGVzY2VuZGFudE9mT2JqZWN0IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmlzQW5jZXN0b3JPZk9iamVjdCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpmaXJzdEFub255bW91
c0Jsb2NrQ2hpbGQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6
aGFzQXR0cmlidXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6
OmdldEF0dHJpYnV0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0
OjpoYXNUYWdOYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6
OnN0cmluZ1ZhbHVlRm9yTVNBQSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVk
T2JqZWN0OjpzdHJpbmdSb2xlRm9yTVNBQSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElz
b2xhdGVkT2JqZWN0OjpuYW1lRm9yTVNBQSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElz
b2xhdGVkT2JqZWN0OjpkZXNjcmlwdGlvbkZvck1TQUEgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6QVhJc29sYXRlZE9iamVjdDo6cm9sZVZhbHVlRm9yTVNBQSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpwYXNzd29yZEZpZWxkVmFsdWUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6bGl2ZVJlZ2lvbkFuY2VzdG9yIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6Omhhc0NvbnRlbnRFZGl0YWJs
ZUF0dHJpYnV0ZVNldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0
OjpzdXBwb3J0c1JlYWRPbmx5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRP
YmplY3Q6OnN1cHBvcnRzQXV0b0NvbXBsZXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFY
SXNvbGF0ZWRPYmplY3Q6OnN1cHBvcnRzQVJJQUF0dHJpYnV0ZXMgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6c2Nyb2xsQnlQYWdlIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OnNjcm9sbFBvc2l0aW9uIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OnNjcm9sbENvbnRlbnRzU2l6ZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpzY3JvbGxWaXNpYmxlQ29udGVu
dFJlY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6c2Nyb2xs
VG9NYWtlVmlzaWJsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0
OjpsYXN0S25vd25Jc0lnbm9yZWRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVk
T2JqZWN0OjpzZXRMYXN0S25vd25Jc0lnbm9yZWRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpB
WElzb2xhdGVkT2JqZWN0Ojpub3RpZnlJZklnbm9yZWRWYWx1ZUNoYW5nZWQpOgorICAgICAgICAo
V2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6aXNNYXRoU2NyaXB0T2JqZWN0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmlzQVhIaWRkZW4g
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6aXNET01IaWRkZW4g
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6aXNIaWRkZW4gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6b3ZlcnJpZGVBdHRhY2ht
ZW50UGFyZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmFjY2Vzc2li
aWxpdHlJZ25vcmVBdHRhY2htZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0
ZWRPYmplY3Q6OmFjY2Vzc2liaWxpdHlQbGF0Zm9ybUluY2x1ZGVzT2JqZWN0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6Omhhc0FwcGxlUERGQW5ub3RhdGlvbkF0
dHJpYnV0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjphbmNl
c3RvckFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFY
SXNvbGF0ZWRPYmplY3Q6OnNldElzSWdub3JlZEZyb21QYXJlbnREYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmNsZWFySXNJZ25vcmVkRnJvbVBhcmVudERhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6c2V0SXNJZ25vcmVkRnJvbVBhcmVu
dERhdGFGb3JDaGlsZCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJ
c29sYXRlZFRyZWVOb2RlLmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW06IEFkZGVkCisgICAgICAgIGRpc3BhdGNoaW5nIHRv
IHRoZSBtYWluIHRocmVhZCBzb21lIG9mIHRoZSBtZXRob2RzIHRoYXQgY2Fubm90IGJlIHJ1bgor
ICAgICAgICBpbiB0aGUgc2Vjb25kYXJ5IHRocmVhZC4KKyAgICAgICAgKHBlcmZvcm1BY2Nlc3Np
YmlsaXR5RnVuY3Rpb25Pbk1haW5UaHJlYWQpOgorICAgICAgICAocmV0cmlldmVBY2Nlc3NpYmls
aXR5VmFsdWVGcm9tTWFpblRocmVhZCk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyIGF0dGFjaG1lbnRWaWV3XSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyIHNjcmVlblRvQ29udGVudHM6XSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyIHJlbmRlcldpZGdldENoaWxkcmVuXSk6CisgICAgICAgICgtW1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHJlbW90ZUFjY2Vzc2liaWxpdHlQYXJlbnRPYmpl
Y3RdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYXNzb2NpYXRl
ZFBsdWdpblBhcmVudF0pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ciBzdWJyb2xlXSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHNj
cm9sbFZpZXdQYXJlbnRdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXIgd2luZG93RWxlbWVudDpdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOl0pOgorICAgICAgICAoLVtXZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlciBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19F
TkRdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJp
bGl0eVNob3dDb250ZXh0TWVudV0pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlciBfYWNjZXNzaWJpbGl0eVNob3dDb250ZXh0TWVudV0pOgorICAgICAgICAoLVtXZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBfY29udmVydFRvTlNSYW5nZTpdKToKKyAgICAgICAg
KC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgX3RleHRNYXJrZXJGb3JJbmRleDpdKToK
KwogMjAxOS0xMi0wNCAgeW91ZW5uIGZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAg
ICAgTW92ZSBzb2Z0IHVwZGF0ZSBoYW5kbGluZyB0byBuZXR3b3JrIHByb2Nlc3MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCmluZGV4IDAzZTYwMDRl
MjUzZjM1OWQwNjIzYjg5OGFkN2Q4Y2QwY2FjZTI3NWQuLjVhMjAyNDQ3NjZhMGY2OGM5MGNiNGE3
NDI1NzQ1MzRlMDA4MWFiYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQVhPYmplY3RDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WE9iamVjdENhY2hlLmNwcApAQCAtMzA2NCw5ICszMDY0LDkgQEAgdm9pZCBBWE9iamVjdENhY2hl
OjpwZXJmb3JtRGVmZXJyZWRDYWNoZVVwZGF0ZSgpCiB9CiAgICAgCiAjaWYgRU5BQkxFKEFDQ0VT
U0lCSUxJVFlfSVNPTEFURURfVFJFRSkKLVJlZjxBWElzb2xhdGVkT2JqZWN0PiBBWE9iamVjdENh
Y2hlOjpjcmVhdGVJc29sYXRlZFRyZWVIaWVyYXJjaHkoQVhDb3JlT2JqZWN0JiBvYmplY3QsIEFY
SUQgcGFyZW50SUQsIEFYT2JqZWN0Q2FjaGUqIGF4T2JqZWN0Q2FjaGUsIEFYSXNvbGF0ZWRUcmVl
JiB0cmVlLCBWZWN0b3I8UmVmPEFYSXNvbGF0ZWRPYmplY3Q+PiYgbm9kZUNoYW5nZXMpCitSZWY8
QVhJc29sYXRlZE9iamVjdD4gQVhPYmplY3RDYWNoZTo6Y3JlYXRlSXNvbGF0ZWRUcmVlSGllcmFy
Y2h5KEFYQ29yZU9iamVjdCYgb2JqZWN0LCBBWElEIHBhcmVudElELCBBWE9iamVjdENhY2hlKiBh
eE9iamVjdENhY2hlLCBBWElzb2xhdGVkVHJlZSYgdHJlZSwgVmVjdG9yPFJlZjxBWElzb2xhdGVk
T2JqZWN0Pj4mIG5vZGVDaGFuZ2VzLCBib29sIGlzUm9vdCkKIHsKLSAgICBhdXRvIGlzb2xhdGVk
VHJlZU5vZGUgPSBBWElzb2xhdGVkT2JqZWN0OjpjcmVhdGUob2JqZWN0KTsKKyAgICBhdXRvIGlz
b2xhdGVkVHJlZU5vZGUgPSBBWElzb2xhdGVkT2JqZWN0OjpjcmVhdGUob2JqZWN0LCBpc1Jvb3Qp
OwogICAgIG5vZGVDaGFuZ2VzLmFwcGVuZChpc29sYXRlZFRyZWVOb2RlLmNvcHlSZWYoKSk7CiAK
ICAgICBpc29sYXRlZFRyZWVOb2RlLT5zZXRUcmVlSWRlbnRpZmllcih0cmVlLnRyZWVJZGVudGlm
aWVyKCkpOwpAQCAtMzA3NCw3ICszMDc0LDcgQEAgUmVmPEFYSXNvbGF0ZWRPYmplY3Q+IEFYT2Jq
ZWN0Q2FjaGU6OmNyZWF0ZUlzb2xhdGVkVHJlZUhpZXJhcmNoeShBWENvcmVPYmplY3QmIG8KICAg
ICBheE9iamVjdENhY2hlLT5hdHRhY2hXcmFwcGVyKCZpc29sYXRlZFRyZWVOb2RlLmdldCgpKTsK
IAogICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGQgOiBvYmplY3QuY2hpbGRyZW4oKSkgewotICAg
ICAgICBhdXRvIHN0YXRpY0NoaWxkID0gY3JlYXRlSXNvbGF0ZWRUcmVlSGllcmFyY2h5KCpjaGls
ZCwgaXNvbGF0ZWRUcmVlTm9kZS0+b2JqZWN0SUQoKSwgYXhPYmplY3RDYWNoZSwgdHJlZSwgbm9k
ZUNoYW5nZXMpOworICAgICAgICBhdXRvIHN0YXRpY0NoaWxkID0gY3JlYXRlSXNvbGF0ZWRUcmVl
SGllcmFyY2h5KCpjaGlsZCwgaXNvbGF0ZWRUcmVlTm9kZS0+b2JqZWN0SUQoKSwgYXhPYmplY3RD
YWNoZSwgdHJlZSwgbm9kZUNoYW5nZXMsIGZhbHNlKTsKICAgICAgICAgaXNvbGF0ZWRUcmVlTm9k
ZS0+YXBwZW5kQ2hpbGQoc3RhdGljQ2hpbGQtPm9iamVjdElEKCkpOwogICAgIH0KIApAQCAtMzA5
OCw4ICszMDk4LDggQEAgUmVmPEFYSXNvbGF0ZWRUcmVlPiBBWE9iamVjdENhY2hlOjpnZW5lcmF0
ZUlzb2xhdGVkVHJlZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIEQKICAgICBhdXRvKiBheFJvb3Qg
PSBheE9iamVjdENhY2hlLT5nZXRPckNyZWF0ZShkb2N1bWVudC52aWV3KCkpOwogICAgIGlmIChh
eFJvb3QpIHsKICAgICAgICAgVmVjdG9yPFJlZjxBWElzb2xhdGVkT2JqZWN0Pj4gbm9kZUNoYW5n
ZXM7Ci0gICAgICAgIGF1dG8gaXNvbGF0ZWRSb290ID0gY3JlYXRlSXNvbGF0ZWRUcmVlSGllcmFy
Y2h5KCpheFJvb3QsIEludmFsaWRBWElELCBheE9iamVjdENhY2hlLCAqdHJlZSwgbm9kZUNoYW5n
ZXMpOwotICAgICAgICB0cmVlLT5zZXRSb290KGlzb2xhdGVkUm9vdCk7CisgICAgICAgIGF1dG8g
aXNvbGF0ZWRSb290ID0gY3JlYXRlSXNvbGF0ZWRUcmVlSGllcmFyY2h5KCpheFJvb3QsIEludmFs
aWRBWElELCBheE9iamVjdENhY2hlLCAqdHJlZSwgbm9kZUNoYW5nZXMsIHRydWUpOworICAgICAg
ICB0cmVlLT5zZXRSb290Tm9kZShpc29sYXRlZFJvb3QpOwogICAgICAgICB0cmVlLT5hcHBlbmRO
b2RlQ2hhbmdlcyhub2RlQ2hhbmdlcyk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCmluZGV4IGU1OWUyMjA5OTg2NDBlNTU4NTg1ZjIzZTg5
MzhiODVjMWIxMDQyZmEuLjgwMmE3NTU0ZTZiOTI2NTJhYTkxNWRjZTNiNmRkMWViMDliYzdiNWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCkBAIC0x
OTgsNyArMTk4LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgQVhDb3JlT2JqZWN0KiBpc29sYXRl
ZFRyZWVGb2N1c2VkT2JqZWN0KERvY3VtZW50Jik7CiAgICAgdm9pZCBzZXRJc29sYXRlZFRyZWVG
b2N1c2VkT2JqZWN0KE5vZGUqKTsKICAgICBzdGF0aWMgUmVmPEFYSXNvbGF0ZWRUcmVlPiBnZW5l
cmF0ZUlzb2xhdGVkVHJlZShQYWdlSWRlbnRpZmllciwgRG9jdW1lbnQmKTsKLSAgICBzdGF0aWMg
UmVmPEFYSXNvbGF0ZWRPYmplY3Q+IGNyZWF0ZUlzb2xhdGVkVHJlZUhpZXJhcmNoeShBWENvcmVP
YmplY3QmLCBBWElELCBBWE9iamVjdENhY2hlKiwgQVhJc29sYXRlZFRyZWUmLCBWZWN0b3I8UmVm
PEFYSXNvbGF0ZWRPYmplY3Q+PiYpOworICAgIHN0YXRpYyBSZWY8QVhJc29sYXRlZE9iamVjdD4g
Y3JlYXRlSXNvbGF0ZWRUcmVlSGllcmFyY2h5KEFYQ29yZU9iamVjdCYsIEFYSUQsIEFYT2JqZWN0
Q2FjaGUqLCBBWElzb2xhdGVkVHJlZSYsIFZlY3RvcjxSZWY8QVhJc29sYXRlZE9iamVjdD4+Jiwg
Ym9vbCBpc1Jvb3QpOwogI2VuZGlmCiAKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKaW5kZXggNjFi
N2E0ZWM4M2M2M2Y2OTc4YTliNmQ0OWRmMWNkNTNlYzVmZDkwZC4uMTZiNjI0MDU1YTI3NDZjNzYw
NWUzOWQ0MmM0NjIwNWZkMzc4ZDIwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKQEAgLTE1MTMsMTEgKzE1
MTMsMTEgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6YXJpYUxhYmVsZWRCeVRleHQo
VmVjdG9yPEFjY2Vzc2liaWxpdHlUZXh0PiYgdGV4dE8KICAgICAgICAgVmVjdG9yPEVsZW1lbnQq
PiBlbGVtZW50czsKICAgICAgICAgYXJpYUxhYmVsZWRCeUVsZW1lbnRzKGVsZW1lbnRzKTsKIAot
ICAgICAgICBWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+PiBheEVsZW1lbnRzOwor
ICAgICAgICBWZWN0b3I8QVhDb3JlT2JqZWN0Kj4gYXhFbGVtZW50czsKICAgICAgICAgZm9yIChj
b25zdCBhdXRvJiBlbGVtZW50IDogZWxlbWVudHMpCiAgICAgICAgICAgICBheEVsZW1lbnRzLmFw
cGVuZChvYmplY3RDYWNoZS0+Z2V0T3JDcmVhdGUoZWxlbWVudCkpOwogICAgICAgICAKLSAgICAg
ICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4dChhcmlhTGFiZWxlZEJ5LCBBY2Nl
c3NpYmlsaXR5VGV4dFNvdXJjZTo6QWx0ZXJuYXRpdmUsIFdURk1vdmUoYXhFbGVtZW50cykpKTsK
KyAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4dChhcmlhTGFiZWxlZEJ5
LCBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6QWx0ZXJuYXRpdmUsIGF4RWxlbWVudHMpKTsKICAg
ICB9CiB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5T2JqZWN0LmNwcAppbmRleCA4MGFjMWVlMDI0YTdhZmFmMzViYTc2ZGExNTUwYjAw
YTRjMjQwNzUzLi44MWY0M2I0NWFiZDVhZWJiNDRlZDllZWNkYjY3ZjU2ZjZjN2ZiZTJhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVj
dC5jcHAKQEAgLTIwOTQsNyArMjA5NCw3IEBAIGNvbnN0IFN0cmluZyBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpkZWZhdWx0TGl2ZVJlZ2lvblN0YXR1c0ZvclJvbGUoQWNjZXNzaWJpbGl0eVJvCiB9CiAg
ICAgCiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFkpCi1jb25zdCBTdHJpbmcmIEFjY2Vzc2liaWxp
dHlPYmplY3Q6OmFjdGlvblZlcmIoKSBjb25zdAorU3RyaW5nIEFjY2Vzc2liaWxpdHlPYmplY3Q6
OmFjdGlvblZlcmIoKSBjb25zdAogewogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8v
IEZJWE1FOiBOZWVkIHRvIGFkZCB2ZXJicyBmb3Igc2VsZWN0IGVsZW1lbnRzLgpAQCAtMjcyMywx
NiArMjcyMywyMSBAQCBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnN1cHBvcnRzRGF0ZXRpbWVB
dHRyaWJ1dGUoKSBjb25zdAogICAgIHJldHVybiBoYXNUYWdOYW1lKGluc1RhZykgfHwgaGFzVGFn
TmFtZShkZWxUYWcpIHx8IGhhc1RhZ05hbWUodGltZVRhZyk7CiB9CiAKLWNvbnN0IEF0b21TdHJp
bmcmIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmRhdGV0aW1lQXR0cmlidXRlVmFsdWUoKSBjb25zdAor
U3RyaW5nIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmRhdGV0aW1lQXR0cmlidXRlVmFsdWUoKSBjb25z
dAogewogICAgIHJldHVybiBnZXRBdHRyaWJ1dGUoZGF0ZXRpbWVBdHRyKTsKIH0KICAgICAKLWNv
bnN0IEF0b21TdHJpbmcmIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmxpbmtSZWxWYWx1ZSgpIGNvbnN0
CitTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdDo6bGlua1JlbFZhbHVlKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gZ2V0QXR0cmlidXRlKHJlbEF0dHIpOwogfQogICAgIAorYm9vbCBBY2Nlc3NpYmls
aXR5T2JqZWN0Ojppc0lubGluZVRleHQoKSBjb25zdAoreworICAgIHJldHVybiBpczxSZW5kZXJJ
bmxpbmU+KHJlbmRlcmVyKCkpOworfQorCiBjb25zdCBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVj
dDo6a2V5U2hvcnRjdXRzVmFsdWUoKSBjb25zdAogewogICAgIHJldHVybiBnZXRBdHRyaWJ1dGUo
YXJpYV9rZXlzaG9ydGN1dHNBdHRyKTsKQEAgLTI5NjgsNyArMjk3Myw3IEBAIGludCBBY2Nlc3Np
YmlsaXR5T2JqZWN0Ojpwb3NJblNldCgpIGNvbnN0CiAgICAgcmV0dXJuIGdldEF0dHJpYnV0ZShh
cmlhX3Bvc2luc2V0QXR0cikudG9JbnQoKTsKIH0KICAgICAKLWNvbnN0IEF0b21TdHJpbmcmIEFj
Y2Vzc2liaWxpdHlPYmplY3Q6OmlkZW50aWZpZXJBdHRyaWJ1dGUoKSBjb25zdAorU3RyaW5nIEFj
Y2Vzc2liaWxpdHlPYmplY3Q6OmlkZW50aWZpZXJBdHRyaWJ1dGUoKSBjb25zdAogewogICAgIHJl
dHVybiBnZXRBdHRyaWJ1dGUoaWRBdHRyKTsKIH0KQEAgLTM2MzUsNiArMzY0MCwzNyBAQCBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpyYWRpb0dyb3VwQW5jZXN0b3Io
KSBjb25zdAogICAgIH0pOwogfQogCitTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdDo6ZG9jdW1l
bnRVUkkoKSBjb25zdAoreworICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50
KCkpCisgICAgICAgIHJldHVybiBkb2N1bWVudC0+ZG9jdW1lbnRVUkkoKTsKKyAgICByZXR1cm4g
U3RyaW5nKCk7Cit9CisKK1N0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpkb2N1bWVudEVuY29k
aW5nKCkgY29uc3QKK3sKKyAgICBpZiAoYXV0byogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgp
KQorICAgICAgICByZXR1cm4gZG9jdW1lbnQtPmVuY29kaW5nKCk7CisgICAgcmV0dXJuIFN0cmlu
ZygpOworfQorCit1aW50NjRfdCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXNzaW9uSUQoKSBjb25z
dAoreworICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IHRvcERvY3VtZW50KCkpIHsKKyAgICAgICAg
aWYgKGF1dG8qIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgpKQorICAgICAgICAgICAgcmV0dXJuIHBh
Z2UtPnNlc3Npb25JRCgpLnRvVUludDY0KCk7CisgICAgfQorICAgIHJldHVybiAwOworfQorCitT
dHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdDo6dGFnTmFtZSgpIGNvbnN0Cit7CisgICAgaWYgKEVs
ZW1lbnQqIGVsZW1lbnQgPSB0aGlzLT5lbGVtZW50KCkpCisgICAgICAgIHJldHVybiBlbGVtZW50
LT5sb2NhbE5hbWUoKTsKKworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKwogYm9vbCBBY2Nlc3Np
YmlsaXR5T2JqZWN0Ojppc1N0eWxlRm9ybWF0R3JvdXAoKSBjb25zdAogewogICAgIE5vZGUqIG5v
ZGUgPSB0aGlzLT5ub2RlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU9iamVjdC5oCmluZGV4IDRjYmRmN2YxYWMzMzM5MWVmYzI0MDQ1NzMyNzAw
M2I0NzMwNjMxY2YuLjE2MmU3YzBiZDViOGU5ZDdhODM1NWI4OTcxYWI2MDFkYjM1YTZmMmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVj
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVj
dC5oCkBAIC02Niw0MSArNjYsMzAgQEAgY2xhc3MgSW50UG9pbnQ7CiBjbGFzcyBJbnRTaXplOwog
Y2xhc3MgU2Nyb2xsYWJsZUFyZWE7CiAKLWVudW0gY2xhc3MgQWNjZXNzaWJpbGl0eVRleHRTb3Vy
Y2UgewotICAgIEFsdGVybmF0aXZlLAotICAgIENoaWxkcmVuLAotICAgIFN1bW1hcnksCi0gICAg
SGVscCwKLSAgICBWaXNpYmxlLAotICAgIFRpdGxlVGFnLAotICAgIFBsYWNlaG9sZGVyLAotICAg
IExhYmVsQnlFbGVtZW50LAotICAgIFRpdGxlLAotICAgIFN1YnRpdGxlLAotICAgIEFjdGlvbiwK
LX07Ci0gICAgCiBzdHJ1Y3QgQWNjZXNzaWJpbGl0eVRleHQgewogICAgIFN0cmluZyB0ZXh0Owog
ICAgIEFjY2Vzc2liaWxpdHlUZXh0U291cmNlIHRleHRTb3VyY2U7Ci0gICAgVmVjdG9yPFJlZlB0
cjxBY2Nlc3NpYmlsaXR5T2JqZWN0Pj4gdGV4dEVsZW1lbnRzOworICAgIFZlY3RvcjxSZWZQdHI8
QVhDb3JlT2JqZWN0Pj4gdGV4dEVsZW1lbnRzOwogICAgIAogICAgIEFjY2Vzc2liaWxpdHlUZXh0
KGNvbnN0IFN0cmluZyYgdCwgY29uc3QgQWNjZXNzaWJpbGl0eVRleHRTb3VyY2UmIHMpCiAgICAg
ICAgIDogdGV4dCh0KQogICAgICAgICAsIHRleHRTb3VyY2UocykKICAgICB7IH0KIAotICAgIEFj
Y2Vzc2liaWxpdHlUZXh0KGNvbnN0IFN0cmluZyYgdCwgY29uc3QgQWNjZXNzaWJpbGl0eVRleHRT
b3VyY2UmIHMsIFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4+IGVsZW1lbnRzKQor
ICAgIEFjY2Vzc2liaWxpdHlUZXh0KGNvbnN0IFN0cmluZyYgdCwgY29uc3QgQWNjZXNzaWJpbGl0
eVRleHRTb3VyY2UmIHMsIFZlY3RvcjxBWENvcmVPYmplY3QqPiBlbGVtZW50cykKICAgICAgICAg
OiB0ZXh0KHQpCiAgICAgICAgICwgdGV4dFNvdXJjZShzKQotICAgICAgICAsIHRleHRFbGVtZW50
cyhXVEZNb3ZlKGVsZW1lbnRzKSkKLSAgICB7IH0KKyAgICB7CisgICAgICAgIHRleHRFbGVtZW50
cy5yZXNlcnZlQ2FwYWNpdHkoZWxlbWVudHMuc2l6ZSgpKTsKKyAgICAgICAgZm9yIChhdXRvIGVs
ZW1lbnQgOiBlbGVtZW50cykKKyAgICAgICAgICAgIHRleHRFbGVtZW50cy51bmNoZWNrZWRBcHBl
bmQoZWxlbWVudCk7CisgICAgfQogCi0gICAgQWNjZXNzaWJpbGl0eVRleHQoY29uc3QgU3RyaW5n
JiB0LCBjb25zdCBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZSYgcywgUmVmUHRyPEFjY2Vzc2liaWxp
dHlPYmplY3Q+JiYgZWxlbWVudCkKKyAgICBBY2Nlc3NpYmlsaXR5VGV4dChjb25zdCBTdHJpbmcm
IHQsIGNvbnN0IEFjY2Vzc2liaWxpdHlUZXh0U291cmNlJiBzLCBBWENvcmVPYmplY3QqIGVsZW1l
bnQpCiAgICAgICAgIDogdGV4dCh0KQogICAgICAgICAsIHRleHRTb3VyY2UocykKICAgICB7Ci0g
ICAgICAgIHRleHRFbGVtZW50cy5hcHBlbmQoV1RGTW92ZShlbGVtZW50KSk7CisgICAgICAgIHRl
eHRFbGVtZW50cy5hcHBlbmQoZWxlbWVudCk7CiAgICAgfQogfTsKIApAQCAtMTM3LDcgKzEyNiw2
IEBAIHB1YmxpYzoKICAgICBib29sIGlzSGVhZGluZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9CiAgICAgYm9vbCBpc0xpbmsoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxz
ZTsgfQogICAgIGJvb2wgaXNJbWFnZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
Ci0gICAgYm9vbCBpc0ltYWdlTWFwKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcm9sZVZhbHVl
KCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkltYWdlTWFwOyB9CiAgICAgYm9vbCBpc05hdGl2ZUlt
YWdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGlzSW1hZ2VC
dXR0b24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgaXNQYXNz
d29yZEZpZWxkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTE0NSwxMSAr
MTMzLDcgQEAgcHVibGljOgogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhc3N3b3JkRmllbGRP
ckNvbnRhaW5pbmdQYXNzd29yZEZpZWxkKCkgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQog
ICAgIGJvb2wgaXNOYXRpdmVUZXh0Q29udHJvbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgYm9vbCBpc1NlYXJjaEZpZWxkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
ZmFsc2U7IH0KLSAgICBib29sIGlzV2ViQXJlYSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJv
bGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpXZWJBcmVhOyB9Ci0gICAgYm9vbCBpc0No
ZWNrYm94KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJp
bGl0eVJvbGU6OkNoZWNrQm94OyB9Ci0gICAgYm9vbCBpc1JhZGlvQnV0dG9uKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlJhZGlvQnV0
dG9uOyB9CiAgICAgYm9vbCBpc05hdGl2ZUxpc3RCb3goKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQotICAgIGJvb2wgaXNMaXN0Qm94KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RCb3g7IH0KICAgICBib29sIGlz
TGlzdEJveE9wdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9v
bCBpc0F0dGFjaG1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJv
b2wgaXNNZWRpYVRpbWVsaW5lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KQEAg
LTE3OSw0MiArMTYzLDIyIEBAIHB1YmxpYzoKICAgICBib29sIGlzTWVudUxpc3QoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgaXNNZW51TGlzdFBvcHVwKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGlzTWVudUxpc3RPcHRpb24o
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNTcGluQnV0dG9u
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJv
bGU6OlNwaW5CdXR0b247IH0KICAgICBib29sIGlzTmF0aXZlU3BpbkJ1dHRvbigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc1NwaW5CdXR0b25QYXJ0KCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGlzTW9ja09iamVjdCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc01lZGlhQ29udHJvbExh
YmVsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wg
aXNNZWRpYUNvbnRyb2xMYWJlbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBp
c01lZGlhT2JqZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29s
IGlzU3dpdGNoKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNz
aWJpbGl0eVJvbGU6OlN3aXRjaDsgfQotICAgIGJvb2wgaXNUb2dnbGVCdXR0b24oKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VG9nZ2xl
QnV0dG9uOyB9CiAgICAgYm9vbCBpc1RleHRDb250cm9sKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
Ym9vbCBpc0FSSUFUZXh0Q29udHJvbCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgaXNOb25O
YXRpdmVUZXh0Q29udHJvbCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgaXNUYWJMaXN0KCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6
OlRhYkxpc3Q7IH0KLSAgICBib29sIGlzVGFiSXRlbSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUYWI7IH0KLSAgICBib29sIGlzUmFk
aW9Hcm91cCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2li
aWxpdHlSb2xlOjpSYWRpb0dyb3VwOyB9Ci0gICAgYm9vbCBpc0NvbWJvQm94KCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkNvbWJvQm94
OyB9Ci0gICAgYm9vbCBpc1RyZWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiByb2xlVmFsdWUo
KSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZTsgfQotICAgIGJvb2wgaXNUcmVlR3JpZCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpU
cmVlR3JpZDsgfQotICAgIGJvb2wgaXNUcmVlSXRlbSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlSXRlbTsgfQotICAgIGJvb2wg
aXNTY3JvbGxiYXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nl
c3NpYmlsaXR5Um9sZTo6U2Nyb2xsQmFyOyB9CiAgICAgYm9vbCBpc0J1dHRvbigpIGNvbnN0IG92
ZXJyaWRlOwotICAgIGJvb2wgaXNMaXN0SXRlbSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJv
bGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0SXRlbTsgfQotICAgIGJvb2wgaXND
aGVja2JveE9yUmFkaW8oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBpc0NoZWNrYm94KCkgfHwg
aXNSYWRpb0J1dHRvbigpOyB9Ci0gICAgYm9vbCBpc1Njcm9sbFZpZXcoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U2Nyb2xsQXJlYTsg
fQotICAgIGJvb2wgaXNDYW52YXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiByb2xlVmFsdWUo
KSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q2FudmFzOyB9Ci0gICAgYm9vbCBpc1BvcFVwQnV0dG9u
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJv
bGU6OlBvcFVwQnV0dG9uOyB9CiAgICAgYm9vbCBpc0Jsb2NrcXVvdGUoKSBjb25zdCBvdmVycmlk
ZTsKICAgICBib29sIGlzTGFuZG1hcmsoKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIGlzQ29s
b3JXZWxsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJp
bGl0eVJvbGU6OkNvbG9yV2VsbDsgfQogICAgIGJvb2wgaXNSYW5nZUNvbnRyb2woKSBjb25zdCBv
dmVycmlkZTsKICAgICBib29sIGlzTWV0ZXIoKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIGlz
U3BsaXR0ZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3Np
YmlsaXR5Um9sZTo6U3BsaXR0ZXI7IH0KLSAgICBib29sIGlzVG9vbGJhcigpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUb29sYmFyOyB9
CiAgICAgYm9vbCBpc1N0eWxlRm9ybWF0R3JvdXAoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29s
IGlzRmlndXJlRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgaXNLZXlib2FyZEZv
Y3VzYWJsZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgaXNTdW1tYXJ5KCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlN1bW1hcnk7
IH0KICAgICBib29sIGlzT3V0cHV0KCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBib29sIGlzQ2hl
Y2tlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0yNTUsNyArMjE5LDcg
QEAgcHVibGljOgogICAgIGJvb2wgaGFzSGlnaGxpZ2h0aW5nKCkgY29uc3Qgb3ZlcnJpZGU7CiAK
ICAgICBib29sIHN1cHBvcnRzRGF0ZXRpbWVBdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlkZTsKLSAg
ICBjb25zdCBBdG9tU3RyaW5nJiBkYXRldGltZUF0dHJpYnV0ZVZhbHVlKCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgU3RyaW5nIGRhdGV0aW1lQXR0cmlidXRlVmFsdWUoKSBjb25zdCBvdmVycmlkZTsK
IAogICAgIGJvb2wgY2FuU2V0Rm9jdXNBdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQogICAgIGJvb2wgY2FuU2V0VGV4dFJhbmdlQXR0cmlidXRlcygpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0zMjMsOCArMjg3LDggQEAgcHVibGljOgogICAg
IEFjY2Vzc2liaWxpdHlTb3J0RGlyZWN0aW9uIHNvcnREaXJlY3Rpb24oKSBjb25zdCBvdmVycmlk
ZTsKICAgICBib29sIGNhbnZhc0hhc0ZhbGxiYWNrQ29udGVudCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBzdXBwb3J0c1JhbmdlVmFsdWUoKSBjb25zdCBvdmVy
cmlkZTsKLSAgICBjb25zdCBBdG9tU3RyaW5nJiBpZGVudGlmaWVyQXR0cmlidXRlKCkgY29uc3Qg
b3ZlcnJpZGU7Ci0gICAgY29uc3QgQXRvbVN0cmluZyYgbGlua1JlbFZhbHVlKCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgU3RyaW5nIGlkZW50aWZpZXJBdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlkZTsK
KyAgICBTdHJpbmcgbGlua1JlbFZhbHVlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbGFz
c0xpc3QoVmVjdG9yPFN0cmluZz4mKSBjb25zdCBvdmVycmlkZTsKICAgICBBY2Nlc3NpYmlsaXR5
Q3VycmVudFN0YXRlIGN1cnJlbnRTdGF0ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFN0cmluZyBj
dXJyZW50VmFsdWUoKSBjb25zdCBvdmVycmlkZTsKQEAgLTQ1NCw4ICs0MTgsOCBAQCBwdWJsaWM6
CiAgICAgVVJMIHVybCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFVSTCgpOyB9CiAgICAgVmlz
aWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBWaXNpYmxl
U2VsZWN0aW9uKCk7IH0KICAgICBTdHJpbmcgc2VsZWN0ZWRUZXh0KCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICBjb25zdCBBdG9tU3RyaW5nJiBhY2Nlc3NLZXkoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBudWxsQXRvbSgpOyB9Ci0gICAgY29uc3QgU3RyaW5nJiBh
Y3Rpb25WZXJiKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgU3RyaW5nIGFjY2Vzc0tleSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxBdG9tKCk7IH0KKyAgICBTdHJpbmcgYWN0aW9uVmVyYigp
IGNvbnN0IG92ZXJyaWRlOwogICAgIFdpZGdldCogd2lkZ2V0KCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gbnVsbHB0cjsgfQogICAgIFdpZGdldCogd2lkZ2V0Rm9yQXR0YWNobWVudFZpZXcoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CiAgICAgUGFnZSogcGFnZSgpIGNvbnN0
IG92ZXJyaWRlOwpAQCAtNDY4LDYgKzQzMiw3IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgbGFuZ3Vh
Z2UoKSBjb25zdCBvdmVycmlkZTsKICAgICAvLyAxLWJhc2VkLCB0byBtYXRjaCB0aGUgYXJpYS1s
ZXZlbCBzcGVjLgogICAgIHVuc2lnbmVkIGhpZXJhcmNoaWNhbExldmVsKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gMDsgfQorICAgIGJvb2wgaXNJbmxpbmVUZXh0KCkgY29uc3Qgb3ZlcnJpZGU7
CiAKICAgICB2b2lkIHNldEZvY3VzZWQoYm9vbCkgb3ZlcnJpZGUgeyB9CiAgICAgdm9pZCBzZXRT
ZWxlY3RlZFRleHQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGUgeyB9CkBAIC01MjgsNiArNDkzLDcg
QEAgcHVibGljOgogICAgIGJvb2wgaGFzQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBj
b25zdCBvdmVycmlkZTsKICAgICBjb25zdCBBdG9tU3RyaW5nJiBnZXRBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgaGFzVGFnTmFtZShjb25z
dCBRdWFsaWZpZWROYW1lJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgU3RyaW5nIHRhZ05hbWUoKSBj
b25zdCBvdmVycmlkZTsKIAogICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHZpc2libGVQb3NpdGlv
blJhbmdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVmlzaWJsZVBvc2l0aW9uUmFuZ2UoKTsg
fQogICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHZpc2libGVQb3NpdGlvblJhbmdlRm9yTGluZSh1
bnNpZ25lZCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVmlzaWJsZVBvc2l0aW9uUmFuZ2UoKTsg
fQpAQCAtNjI5LDYgKzU5NSw3IEBAIHB1YmxpYzoKICAgICBib29sIHN1cHBvcnRzQXV0b0NvbXBs
ZXRlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIGF1dG9Db21wbGV0ZVZhbHVlKCkgY29u
c3Qgb3ZlcnJpZGU7CiAKKyAgICBib29sIGhhc0FSSUFWYWx1ZU5vdygpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGhhc0F0dHJpYnV0ZShIVE1MTmFtZXM6OmFyaWFfdmFsdWVub3dBdHRyKTsgfQog
ICAgIGJvb2wgc3VwcG9ydHNBUklBQXR0cmlidXRlcygpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAg
Ly8gQ1NTMyBTcGVlY2ggcHJvcGVydGllcy4KQEAgLTc1MCw2ICs3MTcsNyBAQCBwdWJsaWM6CiAg
ICAgU3RyaW5nIGRlc2NyaXB0aW9uQXR0cmlidXRlVmFsdWUoKSBjb25zdCBvdmVycmlkZTsKICAg
ICBTdHJpbmcgaGVscFRleHRBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFN0
cmluZyB0aXRsZUF0dHJpYnV0ZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBoYXNB
cHBsZVBERkFubm90YXRpb25BdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBoYXNB
dHRyaWJ1dGUoSFRNTE5hbWVzOjp4X2FwcGxlX3BkZl9hbm5vdGF0aW9uQXR0cik7IH0KICNlbmRp
ZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmICFQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtNzY2
LDYgKzczNCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhcklzSWdub3JlZEZyb21QYXJlbnRE
YXRhKCkgb3ZlcnJpZGUgeyBtX2lzSWdub3JlZEZyb21QYXJlbnREYXRhID0gQWNjZXNzaWJpbGl0
eUlzSWdub3JlZEZyb21QYXJlbnREYXRhKCk7IH0KICAgICB2b2lkIHNldElzSWdub3JlZEZyb21Q
YXJlbnREYXRhRm9yQ2hpbGQoQVhDb3JlT2JqZWN0Kikgb3ZlcnJpZGU7CiAKKyAgICB1aW50NjRf
dCBzZXNzaW9uSUQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBTdHJpbmcgZG9jdW1lbnRVUkkoKSBj
b25zdCBvdmVycmlkZTsKKyAgICBTdHJpbmcgZG9jdW1lbnRFbmNvZGluZygpIGNvbnN0IG92ZXJy
aWRlOworCiBwcm90ZWN0ZWQ6CiAgICAgQVhJRCBtX2lkIHsgMCB9OwogICAgIEFjY2Vzc2liaWxp
dHlDaGlsZHJlblZlY3RvciBtX2NoaWxkcmVuOwpAQCAtODIzLDcgKzc5NSw3IEBAIHByb3RlY3Rl
ZDoKIAogI2lmICFFTkFCTEUoQUNDRVNTSUJJTElUWSkKIGlubGluZSBjb25zdCBBY2Nlc3NpYmls
aXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OmNoaWxkcmVuKGJvb2wpIHsgcmV0dXJuIG1fY2hpbGRyZW47IH0KLWlubGluZSBjb25zdCBT
dHJpbmcmIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjdGlvblZlcmIoKSBjb25zdCB7IHJldHVybiBl
bXB0eVN0cmluZygpOyB9CitpbmxpbmUgU3RyaW5nIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjdGlv
blZlcmIoKSBjb25zdCB7IHJldHVybiBlbXB0eVN0cmluZygpOyB9CiBpbmxpbmUgaW50IEFjY2Vz
c2liaWxpdHlPYmplY3Q6OmxpbmVGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBj
b25zdCB7IHJldHVybiAtMTsgfQogaW5saW5lIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6dXBk
YXRlQmFja2luZ1N0b3JlKCkgeyB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgKaW5kZXgg
YTJkNWU4ODZmMzAzNjAxZDY1N2E3YTEzMzVhYmVmZDVhNDljZDVkZi4uOTFiOTgyM2M4YTJiZTcx
NDkzNDkyYWMyYTNhZWFmMjVjMjg0NDljYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgKQEAgLTIz
NCw2ICsyMzQsMjAgQEAgZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5U2VhcmNoRGlyZWN0aW9uIHsK
ICAgICBQcmV2aW91cywKIH07CiAKK2VudW0gY2xhc3MgQWNjZXNzaWJpbGl0eVRleHRTb3VyY2Ug
eworICAgIEFsdGVybmF0aXZlLAorICAgIENoaWxkcmVuLAorICAgIFN1bW1hcnksCisgICAgSGVs
cCwKKyAgICBWaXNpYmxlLAorICAgIFRpdGxlVGFnLAorICAgIFBsYWNlaG9sZGVyLAorICAgIExh
YmVsQnlFbGVtZW50LAorICAgIFRpdGxlLAorICAgIFN1YnRpdGxlLAorICAgIEFjdGlvbiwKK307
CisKIGVudW0gY2xhc3MgQWNjZXNzaWJpbGl0eVNlYXJjaEtleSB7CiAgICAgQW55VHlwZSA9IDEs
CiAgICAgQXJ0aWNsZSwKQEAgLTQ3OSw3ICs0OTMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBi
b29sIGlzSGVhZGluZygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNMaW5rKCkgY29u
c3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc0ltYWdlKCkgY29uc3QgPSAwOwotICAgIHZpcnR1
YWwgYm9vbCBpc0ltYWdlTWFwKCkgY29uc3QgPSAwOworICAgIGJvb2wgaXNJbWFnZU1hcCgpIGNv
bnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpJbWFnZU1hcDsg
fQogICAgIHZpcnR1YWwgYm9vbCBpc05hdGl2ZUltYWdlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1
YWwgYm9vbCBpc0ltYWdlQnV0dG9uKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc1Bh
c3N3b3JkRmllbGQoKSBjb25zdCA9IDA7CkBAIC00ODcsMTEgKzUwMSwxMSBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBBWENvcmVPYmplY3QqIHBhc3N3b3JkRmllbGRPckNvbnRhaW5pbmdQYXNzd29y
ZEZpZWxkKCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc05hdGl2ZVRleHRDb250cm9sKCkgY29u
c3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc1NlYXJjaEZpZWxkKCkgY29uc3QgPSAwOwotICAg
IHZpcnR1YWwgYm9vbCBpc1dlYkFyZWEoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBib29sIGlz
Q2hlY2tib3goKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBib29sIGlzUmFkaW9CdXR0b24oKSBj
b25zdCA9IDA7CisgICAgYm9vbCBpc1dlYkFyZWEoKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUo
KSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6V2ViQXJlYTsgfQorICAgIGJvb2wgaXNDaGVja2JveCgp
IGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpDaGVja0Jv
eDsgfQorICAgIGJvb2wgaXNSYWRpb0J1dHRvbigpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgp
ID09IEFjY2Vzc2liaWxpdHlSb2xlOjpSYWRpb0J1dHRvbjsgfQorICAgIGJvb2wgaXNMaXN0Qm94
KCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RC
b3g7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNOYXRpdmVMaXN0Qm94KCkgY29uc3QgPSAwOwotICAg
IHZpcnR1YWwgYm9vbCBpc0xpc3RCb3goKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlz
TGlzdEJveE9wdGlvbigpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNBdHRhY2htZW50
KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc01lZGlhVGltZWxpbmUoKSBjb25zdCA9
IDA7CkBAIC01MjEsNDIgKzUzNSw0MyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzTWVu
dUxpc3QoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzTWVudUxpc3RQb3B1cCgpIGNv
bnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNNZW51TGlzdE9wdGlvbigpIGNvbnN0ID0gMDsK
LSAgICB2aXJ0dWFsIGJvb2wgaXNTcGluQnV0dG9uKCkgY29uc3QgPSAwOworICAgIGJvb2wgaXNT
cGluQnV0dG9uKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJv
bGU6OlNwaW5CdXR0b247IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNOYXRpdmVTcGluQnV0dG9uKCkg
Y29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc1NwaW5CdXR0b25QYXJ0KCkgY29uc3QgPSAw
OwogICAgIHZpcnR1YWwgYm9vbCBpc01vY2tPYmplY3QoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVh
bCBib29sIGlzTWVkaWFDb250cm9sTGFiZWwoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29s
IGlzTWVkaWFPYmplY3QoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBib29sIGlzU3dpdGNoKCkg
Y29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBpc1RvZ2dsZUJ1dHRvbigpIGNvbnN0ID0gMDsK
KyAgICBib29sIGlzU3dpdGNoKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNz
aWJpbGl0eVJvbGU6OlN3aXRjaDsgfQorICAgIGJvb2wgaXNUb2dnbGVCdXR0b24oKSBjb25zdCB7
IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VG9nZ2xlQnV0dG9uOyB9
CiAgICAgdmlydHVhbCBib29sIGlzVGV4dENvbnRyb2woKSBjb25zdCA9IDA7CiAgICAgdmlydHVh
bCBib29sIGlzQVJJQVRleHRDb250cm9sKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBp
c05vbk5hdGl2ZVRleHRDb250cm9sKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBpc1Rh
Ykxpc3QoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBib29sIGlzVGFiSXRlbSgpIGNvbnN0ID0g
MDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNSYWRpb0dyb3VwKCkgY29uc3QgPSAwOwotICAgIHZpcnR1
YWwgYm9vbCBpc0NvbWJvQm94KCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBpc1RyZWUo
KSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBib29sIGlzVHJlZUdyaWQoKSBjb25zdCA9IDA7Ci0g
ICAgdmlydHVhbCBib29sIGlzVHJlZUl0ZW0oKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBib29s
IGlzU2Nyb2xsYmFyKCkgY29uc3QgPSAwOworICAgIGJvb2wgaXNUYWJMaXN0KCkgY29uc3QgeyBy
ZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRhYkxpc3Q7IH0KKyAgICBi
b29sIGlzVGFiSXRlbSgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxp
dHlSb2xlOjpUYWI7IH0KKyAgICBib29sIGlzUmFkaW9Hcm91cCgpIGNvbnN0IHsgcmV0dXJuIHJv
bGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpSYWRpb0dyb3VwOyB9CisgICAgYm9vbCBp
c0NvbWJvQm94KCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJv
bGU6OkNvbWJvQm94OyB9CisgICAgYm9vbCBpc1RyZWUoKSBjb25zdCB7IHJldHVybiByb2xlVmFs
dWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZTsgfQorICAgIGJvb2wgaXNUcmVlR3JpZCgp
IGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlR3Jp
ZDsgfQorICAgIGJvb2wgaXNUcmVlSXRlbSgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09
IEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlSXRlbTsgfQorICAgIGJvb2wgaXNTY3JvbGxiYXIoKSBj
b25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U2Nyb2xsQmFy
OyB9CiAgICAgdmlydHVhbCBib29sIGlzQnV0dG9uKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwg
Ym9vbCBpc0xpc3RJdGVtKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBpc0NoZWNrYm94
T3JSYWRpbygpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNTY3JvbGxWaWV3KCkgY29u
c3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBpc0NhbnZhcygpIGNvbnN0ID0gMDsKLSAgICB2aXJ0
dWFsIGJvb2wgaXNQb3BVcEJ1dHRvbigpIGNvbnN0ID0gMDsKKworICAgIGJvb2wgaXNMaXN0SXRl
bSgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0
SXRlbTsgfQorICAgIGJvb2wgaXNDaGVja2JveE9yUmFkaW8oKSBjb25zdCB7IHJldHVybiBpc0No
ZWNrYm94KCkgfHwgaXNSYWRpb0J1dHRvbigpOyB9CisgICAgYm9vbCBpc1Njcm9sbFZpZXcoKSBj
b25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U2Nyb2xsQXJl
YTsgfQorICAgIGJvb2wgaXNDYW52YXMoKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6Q2FudmFzOyB9CisgICAgYm9vbCBpc1BvcFVwQnV0dG9uKCkgY29u
c3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlBvcFVwQnV0dG9u
OyB9CisgICAgYm9vbCBpc0NvbG9yV2VsbCgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09
IEFjY2Vzc2liaWxpdHlSb2xlOjpDb2xvcldlbGw7IH0KKyAgICBib29sIGlzU3BsaXR0ZXIoKSBj
b25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3BsaXR0ZXI7
IH0KKyAgICBib29sIGlzVG9vbGJhcigpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFj
Y2Vzc2liaWxpdHlSb2xlOjpUb29sYmFyOyB9CisgICAgYm9vbCBpc1N1bW1hcnkoKSBjb25zdCB7
IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3VtbWFyeTsgfQorCiAg
ICAgdmlydHVhbCBib29sIGlzQmxvY2txdW90ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJv
b2wgaXNMYW5kbWFyaygpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNDb2xvcldlbGwo
KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzUmFuZ2VDb250cm9sKCkgY29uc3QgPSAw
OwogICAgIHZpcnR1YWwgYm9vbCBpc01ldGVyKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9v
bCBpc1NwbGl0dGVyKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBpc1Rvb2xiYXIoKSBj
b25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzU3R5bGVGb3JtYXRHcm91cCgpIGNvbnN0ID0g
MDsKICAgICB2aXJ0dWFsIGJvb2wgaXNGaWd1cmVFbGVtZW50KCkgY29uc3QgPSAwOwogICAgIHZp
cnR1YWwgYm9vbCBpc0tleWJvYXJkRm9jdXNhYmxlKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwg
Ym9vbCBpc1N1bW1hcnkoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzT3V0cHV0KCkg
Y29uc3QgPSAwOwogCiAgICAgdmlydHVhbCBib29sIGlzQ2hlY2tlZCgpIGNvbnN0ID0gMDsKQEAg
LTU5OSw3ICs2MTQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGhhc0hpZ2hsaWdodGlu
ZygpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0RhdGV0aW1lQXR0cmli
dXRlKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgY29uc3QgQXRvbVN0cmluZyYgZGF0ZXRpbWVB
dHRyaWJ1dGVWYWx1ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBkYXRldGltZUF0
dHJpYnV0ZVZhbHVlKCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCBib29sIGNhblNldEZvY3Vz
QXR0cmlidXRlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBjYW5TZXRUZXh0UmFuZ2VB
dHRyaWJ1dGVzKCkgY29uc3QgPSAwOwpAQCAtNjY2LDggKzY4MSw4IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIEFjY2Vzc2liaWxpdHlTb3J0RGlyZWN0aW9uIHNvcnREaXJlY3Rpb24oKSBjb25zdCA9
IDA7CiAgICAgdmlydHVhbCBib29sIGNhbnZhc0hhc0ZhbGxiYWNrQ29udGVudCgpIGNvbnN0ID0g
MDsKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNSYW5nZVZhbHVlKCkgY29uc3QgPSAwOwotICAg
IHZpcnR1YWwgY29uc3QgQXRvbVN0cmluZyYgaWRlbnRpZmllckF0dHJpYnV0ZSgpIGNvbnN0ID0g
MDsKLSAgICB2aXJ0dWFsIGNvbnN0IEF0b21TdHJpbmcmIGxpbmtSZWxWYWx1ZSgpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIFN0cmluZyBpZGVudGlmaWVyQXR0cmlidXRlKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgU3RyaW5nIGxpbmtSZWxWYWx1ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgY2xhc3NMaXN0KFZlY3RvcjxTdHJpbmc+JikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwg
QWNjZXNzaWJpbGl0eUN1cnJlbnRTdGF0ZSBjdXJyZW50U3RhdGUoKSBjb25zdCA9IDA7CiAgICAg
dmlydHVhbCBTdHJpbmcgY3VycmVudFZhbHVlKCkgY29uc3QgPSAwOwpAQCAtNzkxLDggKzgwNiw4
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFVSTCB1cmwoKSBjb25zdCA9IDA7CiAgICAgdmlydHVh
bCBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbigpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFN0
cmluZyBzZWxlY3RlZFRleHQoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBjb25zdCBBdG9tU3Ry
aW5nJiBhY2Nlc3NLZXkoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBjb25zdCBTdHJpbmcmIGFj
dGlvblZlcmIoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgYWNjZXNzS2V5KCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIGFjdGlvblZlcmIoKSBjb25zdCA9IDA7CiAgICAg
dmlydHVhbCBXaWRnZXQqIHdpZGdldCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFdpZGdldCog
d2lkZ2V0Rm9yQXR0YWNobWVudFZpZXcoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBQYWdlKiBw
YWdlKCkgY29uc3QgPSAwOwpAQCAtODA1LDcgKzgyMCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IFN0cmluZyBsYW5ndWFnZSgpIGNvbnN0ID0gMDsKICAgICAvLyAxLWJhc2VkLCB0byBtYXRjaCB0
aGUgYXJpYS1sZXZlbCBzcGVjLgogICAgIHZpcnR1YWwgdW5zaWduZWQgaGllcmFyY2hpY2FsTGV2
ZWwoKSBjb25zdCA9IDA7Ci0KKyAgICB2aXJ0dWFsIGJvb2wgaXNJbmxpbmVUZXh0KCkgY29uc3Qg
PSAwOworICAgIAogICAgIHZpcnR1YWwgdm9pZCBzZXRGb2N1c2VkKGJvb2wpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgc2V0U2VsZWN0ZWRUZXh0KGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgc2V0U2VsZWN0ZWRUZXh0UmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSA9IDA7
CkBAIC04NjAsNiArODc2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBoYXNBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGNvbnN0IEF0
b21TdHJpbmcmIGdldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3QgPSAwOwog
ICAgIHZpcnR1YWwgYm9vbCBoYXNUYWdOYW1lKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBTdHJpbmcgdGFnTmFtZSgpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1
YWwgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgdmlzaWJsZVBvc2l0aW9uUmFuZ2UoKSBjb25zdCA9IDA7
CiAgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb25SYW5nZSB2aXNpYmxlUG9zaXRpb25SYW5nZUZv
ckxpbmUodW5zaWduZWQpIGNvbnN0ID0gMDsKQEAgLTkzMCw2ICs5NDcsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBib29sIGlzVmFsdWVBdXRvZmlsbGVkKCkgY29uc3QgPSAwOwogICAgIHZpcnR1
YWwgYm9vbCBpc1ZhbHVlQXV0b2ZpbGxBdmFpbGFibGUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVh
bCBBdXRvRmlsbEJ1dHRvblR5cGUgdmFsdWVBdXRvZmlsbEJ1dHRvblR5cGUoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBib29sIGhhc0FSSUFWYWx1ZU5vdygpIGNvbnN0ID0gMDsKIAogICAgIC8v
IFVzZWQgYnkgYW4gQVJJQSB0cmVlIHRvIGdldCBhbGwgaXRzIHJvd3MuCiAgICAgdmlydHVhbCB2
b2lkIGFyaWFUcmVlUm93cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSA9IDA7CkBAIC0x
MDI3LDcgKzEwNDUsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzQW5vbnltb3VzTWF0
aE9wZXJhdG9yKCkgY29uc3QgPSAwOwogCiAgICAgLy8gTXVsdGlzY3JpcHRzIGNvbXBvbmVudHMu
Ci0gICAgdHlwZWRlZiBWZWN0b3I8c3RkOjpwYWlyPEFYQ29yZU9iamVjdCosIEFYQ29yZU9iamVj
dCo+PiBBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0UGFpcnM7CisgICAgdHlwZWRlZiBzdGQ6
OnBhaXI8QVhDb3JlT2JqZWN0KiwgQVhDb3JlT2JqZWN0Kj4gQWNjZXNzaWJpbGl0eU1hdGhNdWx0
aXNjcmlwdFBhaXI7CisgICAgdHlwZWRlZiBWZWN0b3I8QWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNj
cmlwdFBhaXI+IEFjY2Vzc2liaWxpdHlNYXRoTXVsdGlzY3JpcHRQYWlyczsKICAgICB2aXJ0dWFs
IHZvaWQgbWF0aFByZXNjcmlwdHMoQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdFBhaXJzJikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBtYXRoUG9zdHNjcmlwdHMoQWNjZXNzaWJpbGl0eU1hdGhN
dWx0aXNjcmlwdFBhaXJzJikgPSAwOwogCkBAIC0xMDY0LDYgKzEwODMsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBTdHJpbmcgZGVzY3JpcHRpb25BdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0ID0gMDsK
ICAgICB2aXJ0dWFsIFN0cmluZyBoZWxwVGV4dEF0dHJpYnV0ZVZhbHVlKCkgY29uc3QgPSAwOwog
ICAgIHZpcnR1YWwgU3RyaW5nIHRpdGxlQXR0cmlidXRlVmFsdWUoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBib29sIGhhc0FwcGxlUERGQW5ub3RhdGlvbkF0dHJpYnV0ZSgpIGNvbnN0ID0gMDsK
ICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmICFQTEFURk9STShJT1NfRkFNSUxZKQpA
QCAtMTA4MCw2ICsxMTAwLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0SXNJZ25v
cmVkRnJvbVBhcmVudERhdGEoQWNjZXNzaWJpbGl0eUlzSWdub3JlZEZyb21QYXJlbnREYXRhJikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhcklzSWdub3JlZEZyb21QYXJlbnREYXRhKCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBzZXRJc0lnbm9yZWRGcm9tUGFyZW50RGF0YUZvckNoaWxkKEFY
Q29yZU9iamVjdCopID0gMDsKKyAgICAKKyAgICB2aXJ0dWFsIHVpbnQ2NF90IHNlc3Npb25JRCgp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBkb2N1bWVudFVSSSgpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIFN0cmluZyBkb2N1bWVudEVuY29kaW5nKCkgY29uc3QgPSAwOwogfTsKIAog
bmFtZXNwYWNlIEFjY2Vzc2liaWxpdHkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXggODk0OTZi
ZDY0N2UwMjFmMzgwZjBlNThhZWZiNzBhOTI1NTUxNDc0YS4uYjdkYTZhYWNkM2Q2MmE2NjUyNGU1
YzFhZTJmMzhmYjYxYzY2YTFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC0xNTcwLDcgKzE1
NzAsNyBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c2VsZWN0ZWRUZXh0KCkg
Y29uc3QKICAgICByZXR1cm4gZG9BWFN0cmluZ0ZvclJhbmdlKGRvY3VtZW50QmFzZWRTZWxlY3Rl
ZFRleHRSYW5nZSgpKTsKIH0KIAotY29uc3QgQXRvbVN0cmluZyYgQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6YWNjZXNzS2V5KCkgY29uc3QKK1N0cmluZyBBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0OjphY2Nlc3NLZXkoKSBjb25zdAogewogICAgIE5vZGUqIG5vZGUgPSBtX3JlbmRlcmVyLT5u
b2RlKCk7CiAgICAgaWYgKCFpczxFbGVtZW50Pihub2RlKSkKQEAgLTM1ODIsNyArMzU4Miw3IEBA
IHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dGFiQ2hpbGRyZW4oQWNjZXNzaWJpbGl0
eUNoaWxkcmVuVmVjdG9yJiByZXN1bHQpCiAgICAgfQogfQogICAgIAotY29uc3QgU3RyaW5nJiBB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphY3Rpb25WZXJiKCkgY29uc3QKK1N0cmluZyBBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphY3Rpb25WZXJiKCkgY29uc3QKIHsKICNpZiAhUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICAvLyBGSVhNRTogTmVlZCB0byBhZGQgdmVyYnMgZm9yIHNlbGVj
dCBlbGVtZW50cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgKaW5kZXggMzk2MTczMDRjZWEzNzBmNDk3YmYzNGM1
ZjUxNDcyMTAxN2RiYjcwMi4uM2YzNDY3ODNlNDhhOTVkODNiOWQzM2UxMGRjZjNiOWQ1MGI4OWNi
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0LmgKQEAgLTEzNCw4ICsxMzQsOCBAQCBwdWJsaWM6CiAgICAgU3Ry
aW5nIHRleHQoKSBjb25zdCBvdmVycmlkZTsKICAgICBpbnQgdGV4dExlbmd0aCgpIGNvbnN0IG92
ZXJyaWRlOwogICAgIFN0cmluZyBzZWxlY3RlZFRleHQoKSBjb25zdCBvdmVycmlkZTsKLSAgICBj
b25zdCBBdG9tU3RyaW5nJiBhY2Nlc3NLZXkoKSBjb25zdCBvdmVycmlkZTsKLSAgICBjb25zdCBT
dHJpbmcmIGFjdGlvblZlcmIoKSBjb25zdCBvdmVycmlkZTsKKyAgICBTdHJpbmcgYWNjZXNzS2V5
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgU3RyaW5nIGFjdGlvblZlcmIoKSBjb25zdCBvdmVycmlk
ZTsKICAgICBXaWRnZXQqIHdpZGdldCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFdpZGdldCogd2lk
Z2V0Rm9yQXR0YWNobWVudFZpZXcoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQg
Z2V0RG9jdW1lbnRMaW5rcyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24u
aCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24u
aAppbmRleCAwMGU5MGEyOTNmNDc5ZTA4OTU3NmQ5Y2E4YTQxNjMxMjFlNDFiNDE5Li4xYTJkYzk2
ODc1M2NlMzRiYzRhMWZkNWUzMmEyNDM2NjM3ODViYjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTcGluQnV0dG9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbi5oCkBAIC00Niw3
ICs0Niw2IEBAIHByaXZhdGU6CiAgICAgQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24oKTsKIAogICAg
IEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEFj
Y2Vzc2liaWxpdHlSb2xlOjpTcGluQnV0dG9uOyB9Ci0gICAgYm9vbCBpc1NwaW5CdXR0b24oKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgYm9vbCBpc05hdGl2ZVNwaW5CdXR0
b24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCBhZGRDaGlsZHJl
bigpIG92ZXJyaWRlOwogICAgIExheW91dFJlY3QgZWxlbWVudFJlY3QoKSBjb25zdCBvdmVycmlk
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFj
Y2Vzc2libGVIeXBlcmxpbmsuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsv
V2ViS2l0QWNjZXNzaWJsZUh5cGVybGluay5jcHAKaW5kZXggYjBmNzNlNmE0ZmFhMGNmY2VjODE0
NzNiNjg1NTUzMDk3ZTQwMWU2OC4uYTQ2MWMxZmFkYWY4YzcyNWRjZGI0ZmU5ZTVmODAwZmI4YjY4
MjllZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0
QWNjZXNzaWJsZUh5cGVybGluay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUh5cGVybGluay5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgc3Rh
dGljIGNvbnN0IGdjaGFyKiB3ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5rQWN0aW9uR2V0S2V5Ymlu
ZGluZyhBdGtBY3Rpb24qIGFjdGkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBhdXRv
JiBjb3JlT2JqZWN0ID0gd2Via2l0QWNjZXNzaWJsZUdldEFjY2Vzc2liaWxpdHlPYmplY3QoYWNj
ZXNzaWJsZUh5cGVybGluay0+cHJpdi0+aHlwZXJsaW5rSW1wbCk7Ci0gICAgYWNjZXNzaWJsZUh5
cGVybGluay0+cHJpdi0+YWN0aW9uS2V5QmluZGluZyA9IGNvcmVPYmplY3QuYWNjZXNzS2V5KCku
c3RyaW5nKCkudXRmOCgpOworICAgIGFjY2Vzc2libGVIeXBlcmxpbmstPnByaXYtPmFjdGlvbktl
eUJpbmRpbmcgPSBjb3JlT2JqZWN0LmFjY2Vzc0tleSgpLnV0ZjgoKTsKICAgICByZXR1cm4gYWNj
ZXNzaWJsZUh5cGVybGluay0+cHJpdi0+YWN0aW9uS2V5QmluZGluZy5kYXRhKCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2li
bGVJbnRlcmZhY2VBY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsv
V2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZUFjdGlvbi5jcHAKaW5kZXggNTgxNzU5YjJmMzU1Mzcx
YTdhZDdhNjJkNjViNzRhMWI0YzJiZmFjMy4uY2EyM2FkZmQ3MWE3MjZlZjU4MGMyYTIyYmFlYmY5
ZWZhM2UzNWNmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsv
V2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZUFjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZUFjdGlvbi5jcHAKQEAg
LTgzLDcgKzgzLDcgQEAgc3RhdGljIGNvbnN0IGdjaGFyKiB3ZWJraXRBY2Nlc3NpYmxlQWN0aW9u
R2V0S2V5YmluZGluZyhBdGtBY3Rpb24qIGFjdGlvbiwgZ2ludCkKICAgICByZXR1cm5WYWxJZldl
YktpdEFjY2Vzc2libGVJc0ludmFsaWQoYWNjZXNzaWJsZSwgbnVsbHB0cik7CiAKICAgICAvLyBG
SVhNRTogQ29uc3RydWN0IGEgcHJvcGVyIGtleWJpbmRpbmcgc3RyaW5nLgotICAgIHJldHVybiB3
ZWJraXRBY2Nlc3NpYmxlQ2FjaGVBbmRSZXR1cm5BdGtQcm9wZXJ0eShhY2Nlc3NpYmxlLCBBdGtD
YWNoZWRBY3Rpb25LZXlCaW5kaW5nLCBjb3JlKGFjdGlvbiktPmFjY2Vzc0tleSgpLnN0cmluZygp
LnV0ZjgoKSk7CisgICAgcmV0dXJuIHdlYmtpdEFjY2Vzc2libGVDYWNoZUFuZFJldHVybkF0a1By
b3BlcnR5KGFjY2Vzc2libGUsIEF0a0NhY2hlZEFjdGlvbktleUJpbmRpbmcsIGNvcmUoYWN0aW9u
KS0+YWNjZXNzS2V5KCkudXRmOCgpKTsKIH0KIAogc3RhdGljIGNvbnN0IGdjaGFyKiB3ZWJraXRB
Y2Nlc3NpYmxlQWN0aW9uR2V0TmFtZShBdGtBY3Rpb24qIGFjdGlvbiwgZ2ludCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRU
cmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNv
bGF0ZWRUcmVlLmNwcAppbmRleCA1ZDNmY2JhMWY4ODM3NmFhMWU0MjJmZjdlNDUzZDJmM2ZiMmE3
N2MwLi4zYzM5MThhNzBhNzkyZWRjYjgyNDFiMDJhYjVhNDI5OTU0N2FkODU1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJl
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJ
c29sYXRlZFRyZWUuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgUmVmUHRyPEFYSXNvbGF0ZWRPYmpl
Y3Q+IEFYSXNvbGF0ZWRUcmVlOjpyb290Tm9kZSgpCiAgICAgcmV0dXJuIG5vZGVGb3JJRChtX3Jv
b3ROb2RlSUQpOwogfQogCi12b2lkIEFYSXNvbGF0ZWRUcmVlOjpzZXRSb290KFJlZjxBWElzb2xh
dGVkT2JqZWN0PiYgcm9vdCkKK3ZvaWQgQVhJc29sYXRlZFRyZWU6OnNldFJvb3ROb2RlKFJlZjxB
WElzb2xhdGVkT2JqZWN0PiYgcm9vdCkKIHsKICAgICBMb2NrSG9sZGVyIGxvY2tlciB7IG1fY2hh
bmdlTG9nTG9jayB9OwogICAgIG1fcm9vdE5vZGVJRCA9IHJvb3QtPm9iamVjdElEKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xh
dGVkVHJlZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJ
c29sYXRlZFRyZWUuaAppbmRleCAzMDdjZDkxYTA3ZDJjNWYzMGIzN2NmNzFmOGMzMTI4MjExOTQ5
NWJjLi45ZWZiMjJiZWYxN2I4NGM5MTIwZTAxMzE4MjI2YmY5YTA0YTZhMzg4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJl
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNv
bGF0ZWRUcmVlLmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIHZvaWQgYXBwZW5kTm9k
ZUNoYW5nZXMoVmVjdG9yPFJlZjxBWElzb2xhdGVkT2JqZWN0Pj4mKTsKICAgICB2b2lkIHJlbW92
ZU5vZGUoQVhJRCk7CiAKLSAgICB2b2lkIHNldFJvb3QoUmVmPEFYSXNvbGF0ZWRPYmplY3Q+Jik7
CisgICAgdm9pZCBzZXRSb290Tm9kZShSZWY8QVhJc29sYXRlZE9iamVjdD4mKTsKICAgICB2b2lk
IHNldEZvY3VzZWROb2RlSUQoQVhJRCk7CiAgICAgCiAgICAgLy8gQ2FsbCBvbiBBWCB0aHJlYWQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FY
SXNvbGF0ZWRUcmVlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xh
dGVkdHJlZS9BWElzb2xhdGVkVHJlZU5vZGUuY3BwCmluZGV4IDg3MDRmOTQxNzgwMTgxM2MzNGEx
NWEyMDhkNDcwNTk3YTQ0MGRjZTIuLjcxZTVkYzJjNDM3ZjIxYTZkMGE0OTcyNmFiNjk2MWFiOWIw
NThiNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0
cmVlL0FYSXNvbGF0ZWRUcmVlTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWVOb2RlLmNwcApAQCAtMzIsMjQgKzMyLDI0
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQVhJc29sYXRlZE9iamVjdDo6QVhJc29sYXRl
ZE9iamVjdChBWENvcmVPYmplY3QmIG9iamVjdCkKK0FYSXNvbGF0ZWRPYmplY3Q6OkFYSXNvbGF0
ZWRPYmplY3QoQVhDb3JlT2JqZWN0JiBvYmplY3QsIGJvb2wgaXNSb290KQogICAgIDogbV9pZChv
YmplY3Qub2JqZWN0SUQoKSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGlu
aXRpYWxpemVBdHRyaWJ1dGVEYXRhKG9iamVjdCk7CisgICAgaW5pdGlhbGl6ZUF0dHJpYnV0ZURh
dGEob2JqZWN0LCBpc1Jvb3QpOwogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICBtX2luaXRpYWxp
emVkID0gdHJ1ZTsKICNlbmRpZgogfQogCi1SZWY8QVhJc29sYXRlZE9iamVjdD4gQVhJc29sYXRl
ZE9iamVjdDo6Y3JlYXRlKEFYQ29yZU9iamVjdCYgb2JqZWN0KQorUmVmPEFYSXNvbGF0ZWRPYmpl
Y3Q+IEFYSXNvbGF0ZWRPYmplY3Q6OmNyZWF0ZShBWENvcmVPYmplY3QmIG9iamVjdCwgYm9vbCBp
c1Jvb3QpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQVhJc29sYXRlZE9iamVjdChvYmpl
Y3QpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBWElzb2xhdGVkT2JqZWN0KG9iamVjdCwg
aXNSb290KSk7CiB9CiAKIEFYSXNvbGF0ZWRPYmplY3Q6On5BWElzb2xhdGVkT2JqZWN0KCkgPSBk
ZWZhdWx0OwogCi12b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OmluaXRpYWxpemVBdHRyaWJ1dGVEYXRh
KEFYQ29yZU9iamVjdCYgb2JqZWN0KQordm9pZCBBWElzb2xhdGVkT2JqZWN0Ojppbml0aWFsaXpl
QXR0cmlidXRlRGF0YShBWENvcmVPYmplY3QmIG9iamVjdCwgYm9vbCBpc1Jvb3QpCiB7CiAgICAg
c2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkJvdW5kaW5nQm94UmVjdCwgb2JqZWN0LmJvdW5k
aW5nQm94UmVjdCgpKTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6RWxlbWVudFJl
Y3QsIG9iamVjdC5lbGVtZW50UmVjdCgpKTsKQEAgLTU4LDcgKzU4LDYgQEAgdm9pZCBBWElzb2xh
dGVkT2JqZWN0Ojppbml0aWFsaXplQXR0cmlidXRlRGF0YShBWENvcmVPYmplY3QmIG9iamVjdCkK
ICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6QVJJQUxhbmRtYXJrUm9sZURlc2NyaXB0
aW9uLCBvYmplY3QuYXJpYUxhbmRtYXJrUm9sZURlc2NyaXB0aW9uKCkuaXNvbGF0ZWRDb3B5KCkp
OwogICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpSb2xlRGVzY3JpcHRpb24sIG9iamVj
dC5yb2xlRGVzY3JpcHRpb24oKS5pc29sYXRlZENvcHkoKSk7CiAgICAgc2V0UHJvcGVydHkoQVhQ
cm9wZXJ0eU5hbWU6OklzQXR0YWNobWVudCwgb2JqZWN0LmlzQXR0YWNobWVudCgpKTsKLSAgICBz
ZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNNZWRpYUNvbnRyb2xMYWJlbCwgb2JqZWN0Lmlz
TWVkaWFDb250cm9sTGFiZWwoKSk7CiAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6Oklz
TGluaywgb2JqZWN0LmlzTGluaygpKTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6
SXNJbWFnZU1hcExpbmssIG9iamVjdC5pc0ltYWdlTWFwTGluaygpKTsKICAgICBzZXRQcm9wZXJ0
eShBWFByb3BlcnR5TmFtZTo6SXNJbWFnZSwgb2JqZWN0LmlzSW1hZ2UoKSk7CkBAIC03MSw3ICs3
MCw0MSBAQCB2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OmluaXRpYWxpemVBdHRyaWJ1dGVEYXRhKEFY
Q29yZU9iamVjdCYgb2JqZWN0KQogICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpUaXRs
ZSwgb2JqZWN0LnRpdGxlQXR0cmlidXRlVmFsdWUoKS5pc29sYXRlZENvcHkoKSk7CiAgICAgc2V0
UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkRlc2NyaXB0aW9uLCBvYmplY3QuZGVzY3JpcHRpb25B
dHRyaWJ1dGVWYWx1ZSgpLmlzb2xhdGVkQ29weSgpKTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3Bl
cnR5TmFtZTo6SGVscFRleHQsIG9iamVjdC5oZWxwVGV4dEF0dHJpYnV0ZVZhbHVlKCkuaXNvbGF0
ZWRDb3B5KCkpOwotCisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OklzU2VhcmNoRmll
bGQsIG9iamVjdC5pc1NlYXJjaEZpZWxkKCkpOworICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlO
YW1lOjpJc01lZGlhVGltZWxpbmUsIG9iamVjdC5pc01lZGlhVGltZWxpbmUoKSk7CisgICAgc2V0
UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OklzTWVudVJlbGF0ZWQsIG9iamVjdC5pc01lbnVSZWxh
dGVkKCkpOworICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc01lbnUsIG9iamVjdC5p
c01lbnUoKSk7CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OklzTWVudUJhciwgb2Jq
ZWN0LmlzTWVudUJhcigpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNNZW51
QnV0dG9uLCBvYmplY3QuaXNNZW51QnV0dG9uKCkpOworICAgIHNldFByb3BlcnR5KEFYUHJvcGVy
dHlOYW1lOjpJc01lbnVJdGVtLCBvYmplY3QuaXNNZW51SXRlbSgpKTsKKyAgICBzZXRQcm9wZXJ0
eShBWFByb3BlcnR5TmFtZTo6SXNJbnB1dEltYWdlLCBvYmplY3QuaXNJbnB1dEltYWdlKCkpOwor
ICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc1Byb2dyZXNzSW5kaWNhdG9yLCBvYmpl
Y3QuaXNQcm9ncmVzc0luZGljYXRvcigpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFt
ZTo6SXNTbGlkZXIsIG9iamVjdC5pc1NsaWRlcigpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3Bl
cnR5TmFtZTo6SXNDb250cm9sLCBvYmplY3QuaXNDb250cm9sKCkpOworICAgIHNldFByb3BlcnR5
KEFYUHJvcGVydHlOYW1lOjpJc0xpc3QsIG9iamVjdC5pc0xpc3QoKSk7CisgICAgc2V0UHJvcGVy
dHkoQVhQcm9wZXJ0eU5hbWU6OklzVGFibGUsIG9iamVjdC5pc1RhYmxlKCkpOworICAgIHNldFBy
b3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc1RhYmxlUm93LCBvYmplY3QuaXNUYWJsZVJvdygpKTsK
KyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNUYWJsZUNvbHVtbiwgb2JqZWN0Lmlz
VGFibGVDb2x1bW4oKSk7CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OklzVGFibGVD
ZWxsLCBvYmplY3QuaXNUYWJsZUNlbGwoKSk7CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5h
bWU6OklzRmllbGRzZXQsIG9iamVjdC5pc0ZpZWxkc2V0KCkpOworICAgIHNldFByb3BlcnR5KEFY
UHJvcGVydHlOYW1lOjpJc0dyb3VwLCBvYmplY3QuaXNHcm91cCgpKTsKKyAgICBzZXRQcm9wZXJ0
eShBWFByb3BlcnR5TmFtZTo6SXNBUklBVHJlZUdyaWRSb3csIG9iamVjdC5pc0FSSUFUcmVlR3Jp
ZFJvdygpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNNZW51TGlzdCwgb2Jq
ZWN0LmlzTWVudUxpc3QoKSk7CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OklzTWVu
dUxpc3RQb3B1cCwgb2JqZWN0LmlzTWVudUxpc3RQb3B1cCgpKTsKKyAgICBzZXRQcm9wZXJ0eShB
WFByb3BlcnR5TmFtZTo6SXNNZW51TGlzdE9wdGlvbiwgb2JqZWN0LmlzTWVudUxpc3RPcHRpb24o
KSk7CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OklzVGV4dENvbnRyb2wsIG9iamVj
dC5pc1RleHRDb250cm9sKCkpOworICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc0J1
dHRvbiwgb2JqZWN0LmlzQnV0dG9uKCkpOworICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1l
OjpJc1JhbmdlQ29udHJvbCwgb2JqZWN0LmlzUmFuZ2VDb250cm9sKCkpOworICAgIHNldFByb3Bl
cnR5KEFYUHJvcGVydHlOYW1lOjpJc1N0eWxlRm9ybWF0R3JvdXAsIG9iamVjdC5pc1N0eWxlRm9y
bWF0R3JvdXAoKSk7CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OklzT3V0cHV0LCBv
YmplY3QuaXNPdXRwdXQoKSk7CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OlN1cHBv
cnRzRGF0ZXRpbWVBdHRyaWJ1dGUsIG9iamVjdC5zdXBwb3J0c0RhdGV0aW1lQXR0cmlidXRlKCkp
OworICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpEYXRldGltZUF0dHJpYnV0ZVZhbHVl
LCBvYmplY3QuZGF0ZXRpbWVBdHRyaWJ1dGVWYWx1ZSgpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFBy
b3BlcnR5TmFtZTo6Q2FuU2V0Rm9jdXNBdHRyaWJ1dGUsIG9iamVjdC5jYW5TZXRGb2N1c0F0dHJp
YnV0ZSgpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6Q2FuU2V0VGV4dFJhbmdl
QXR0cmlidXRlcywgb2JqZWN0LmNhblNldFRleHRSYW5nZUF0dHJpYnV0ZXMoKSk7CisgICAgc2V0
UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkNhblNldFZhbHVlQXR0cmlidXRlLCBvYmplY3QuY2Fu
U2V0VmFsdWVBdHRyaWJ1dGUoKSk7CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkNh
blNldE51bWVyaWNWYWx1ZSwgb2JqZWN0LmNhblNldE51bWVyaWNWYWx1ZSgpKTsKKyAgICBzZXRQ
cm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNQYXNzd29yZEZpZWxkLCBvYmplY3QuaXNQYXNzd29y
ZEZpZWxkKCkpOworICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc0hlYWRpbmcsIG9i
amVjdC5pc0hlYWRpbmcoKSk7CiAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OklzQ2hl
Y2tlZCwgb2JqZWN0LmlzQ2hlY2tlZCgpKTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFt
ZTo6SXNFbmFibGVkLCBvYmplY3QuaXNFbmFibGVkKCkpOwogICAgIHNldFByb3BlcnR5KEFYUHJv
cGVydHlOYW1lOjpJc1NlbGVjdGVkLCBvYmplY3QuaXNTZWxlY3RlZCgpKTsKQEAgLTkyLDcgKzEy
NSwxNjQgQEAgdm9pZCBBWElzb2xhdGVkT2JqZWN0Ojppbml0aWFsaXplQXR0cmlidXRlRGF0YShB
WENvcmVPYmplY3QmIG9iamVjdCkKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNW
aXNpYmxlLCBvYmplY3QuaXNWaXNpYmxlKCkpOwogICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlO
YW1lOjpJc0NvbGxhcHNlZCwgb2JqZWN0LmlzQ29sbGFwc2VkKCkpOwogICAgIHNldFByb3BlcnR5
KEFYUHJvcGVydHlOYW1lOjpJc1NlbGVjdGVkT3B0aW9uQWN0aXZlLCBvYmplY3QuaXNTZWxlY3Rl
ZE9wdGlvbkFjdGl2ZSgpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6Q2FuU2V0
U2VsZWN0ZWRBdHRyaWJ1dGUsIG9iamVjdC5jYW5TZXRTZWxlY3RlZEF0dHJpYnV0ZSgpKTsKKyAg
ICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6Q2FuU2V0U2VsZWN0ZWRDaGlsZHJlbkF0dHJp
YnV0ZSwgb2JqZWN0LmNhblNldFNlbGVjdGVkQ2hpbGRyZW5BdHRyaWJ1dGUoKSk7CisgICAgc2V0
UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkNhblNldEV4cGFuZGVkQXR0cmlidXRlLCBvYmplY3Qu
Y2FuU2V0RXhwYW5kZWRBdHRyaWJ1dGUoKSk7CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5h
bWU6OklzU2hvd2luZ1ZhbGlkYXRpb25NZXNzYWdlLCBvYmplY3QuaXNTaG93aW5nVmFsaWRhdGlv
bk1lc3NhZ2UoKSk7CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OlZhbGlkYXRpb25N
ZXNzYWdlLCBvYmplY3QudmFsaWRhdGlvbk1lc3NhZ2UoKSk7CisgICAgc2V0UHJvcGVydHkoQVhQ
cm9wZXJ0eU5hbWU6OkJsb2NrcXVvdGVMZXZlbCwgb2JqZWN0LmJsb2NrcXVvdGVMZXZlbCgpKTsK
KyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SGVhZGluZ0xldmVsLCBvYmplY3QuaGVh
ZGluZ0xldmVsKCkpOworICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpUYWJsZUxldmVs
LCBvYmplY3QudGFibGVMZXZlbCgpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6
QWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRlLCBzdGF0aWNfY2FzdDxpbnQ+KG9iamVjdC5jaGVja2Jv
eE9yUmFkaW9WYWx1ZSgpKSk7CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OlZhbHVl
RGVzY3JpcHRpb24sIG9iamVjdC52YWx1ZURlc2NyaXB0aW9uKCkpOworICAgIHNldFByb3BlcnR5
KEFYUHJvcGVydHlOYW1lOjpWYWx1ZUZvclJhbmdlLCBvYmplY3QudmFsdWVGb3JSYW5nZSgpKTsK
KyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6TWF4VmFsdWVGb3JSYW5nZSwgb2JqZWN0
Lm1heFZhbHVlRm9yUmFuZ2UoKSk7CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6Ok1p
blZhbHVlRm9yUmFuZ2UsIG9iamVjdC5taW5WYWx1ZUZvclJhbmdlKCkpOworICAgIHNldFByb3Bl
cnR5KEFYUHJvcGVydHlOYW1lOjpTZWxlY3RlZFJhZGlvQnV0dG9uLCBvYmplY3Quc2VsZWN0ZWRS
YWRpb0J1dHRvbigpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6U2VsZWN0ZWRU
YWJJdGVtLCBvYmplY3Quc2VsZWN0ZWRUYWJJdGVtKCkpOworICAgIHNldFByb3BlcnR5KEFYUHJv
cGVydHlOYW1lOjpMYXlvdXRDb3VudCwgb2JqZWN0LmxheW91dENvdW50KCkpOworICAgIHNldFBy
b3BlcnR5KEFYUHJvcGVydHlOYW1lOjpFc3RpbWF0ZWRMb2FkaW5nUHJvZ3Jlc3MsIG9iamVjdC5l
c3RpbWF0ZWRMb2FkaW5nUHJvZ3Jlc3MoKSk7CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5h
bWU6OlN1cHBvcnRzQVJJQU93bnMsIG9iamVjdC5zdXBwb3J0c0FSSUFPd25zKCkpOworICAgIHNl
dFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc0FjdGl2ZURlc2NlbmRhbnRPZkZvY3VzZWRDb250
YWluZXIsIG9iamVjdC5pc0FjdGl2ZURlc2NlbmRhbnRPZkZvY3VzZWRDb250YWluZXIoKSk7Cisg
ICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6Okhhc1BvcHVwLCBvYmplY3QuaGFzUG9wdXAo
KSk7CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OlBvcHVwVmFsdWUsIG9iamVjdC5w
b3B1cFZhbHVlKCkpOworICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpQcmVzc2VkSXNQ
cmVzZW50LCBvYmplY3QucHJlc3NlZElzUHJlc2VudCgpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFBy
b3BlcnR5TmFtZTo6QVJJQUlzTXVsdGlsaW5lLCBvYmplY3QuYXJpYUlzTXVsdGlsaW5lKCkpOwor
ICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJbnZhbGlkU3RhdHVzLCBvYmplY3QuaW52
YWxpZFN0YXR1cygpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6U3VwcG9ydHNF
eHBhbmRlZCwgb2JqZWN0LnN1cHBvcnRzRXhwYW5kZWQoKSk7CisgICAgc2V0UHJvcGVydHkoQVhQ
cm9wZXJ0eU5hbWU6OlNvcnREaXJlY3Rpb24sIHN0YXRpY19jYXN0PGludD4ob2JqZWN0LnNvcnRE
aXJlY3Rpb24oKSkpOworICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpDYW52YXNIYXNG
YWxsYmFja0NvbnRlbnQsIG9iamVjdC5jYW52YXNIYXNGYWxsYmFja0NvbnRlbnQoKSk7CisgICAg
c2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OlN1cHBvcnRzUmFuZ2VWYWx1ZSwgb2JqZWN0LnN1
cHBvcnRzUmFuZ2VWYWx1ZSgpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SWRl
bnRpZmllckF0dHJpYnV0ZSwgb2JqZWN0LmlkZW50aWZpZXJBdHRyaWJ1dGUoKSk7CisgICAgc2V0
UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkxpbmtSZWxWYWx1ZSwgb2JqZWN0LmxpbmtSZWxWYWx1
ZSgpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6Q3VycmVudFN0YXRlLCBzdGF0
aWNfY2FzdDxpbnQ+KG9iamVjdC5jdXJyZW50U3RhdGUoKSkpOworICAgIHNldFByb3BlcnR5KEFY
UHJvcGVydHlOYW1lOjpDdXJyZW50VmFsdWUsIG9iamVjdC5jdXJyZW50VmFsdWUoKSk7CisgICAg
c2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OlN1cHBvcnRzQ3VycmVudCwgb2JqZWN0LnN1cHBv
cnRzQ3VycmVudCgpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6S2V5U2hvcnRj
dXRzVmFsdWUsIG9iamVjdC5rZXlTaG9ydGN1dHNWYWx1ZSgpKTsKKyAgICBzZXRQcm9wZXJ0eShB
WFByb3BlcnR5TmFtZTo6U3VwcG9ydHNTZXRTaXplLCBvYmplY3Quc3VwcG9ydHNTZXRTaXplKCkp
OworICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpTdXBwb3J0c1Bvc0luU2V0LCBvYmpl
Y3Quc3VwcG9ydHNQb3NJblNldCgpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6
U2V0U2l6ZSwgb2JqZWN0LnNldFNpemUoKSk7CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5h
bWU6OlBvc0luU2V0LCBvYmplY3QucG9zSW5TZXQoKSk7CisgICAgc2V0UHJvcGVydHkoQVhQcm9w
ZXJ0eU5hbWU6OlN1cHBvcnRzQVJJQURyb3BwaW5nLCBvYmplY3Quc3VwcG9ydHNBUklBRHJvcHBp
bmcoKSk7CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OlN1cHBvcnRzQVJJQURyYWdn
aW5nLCBvYmplY3Quc3VwcG9ydHNBUklBRHJhZ2dpbmcoKSk7CisgICAgc2V0UHJvcGVydHkoQVhQ
cm9wZXJ0eU5hbWU6OklzQVJJQUdyYWJiZWQsIG9iamVjdC5pc0FSSUFHcmFiYmVkKCkpOworICAg
IHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpBUklBRHJvcEVmZmVjdHMsIG9iamVjdC5kZXRl
cm1pbmVBUklBRHJvcEVmZmVjdHMoKSk7CisgICAgc2V0T2JqZWN0UHJvcGVydHkoQVhQcm9wZXJ0
eU5hbWU6OlRpdGxlVUlFbGVtZW50LCBvYmplY3QudGl0bGVVSUVsZW1lbnQoKSk7CisgICAgc2V0
UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkV4cG9zZXNUaXRsZVVJRWxlbWVudCwgb2JqZWN0LmV4
cG9zZXNUaXRsZVVJRWxlbWVudCgpKTsKKyAgICBzZXRPYmplY3RQcm9wZXJ0eShBWFByb3BlcnR5
TmFtZTo6VmVydGljYWxTY3JvbGxCYXIsIG9iamVjdC5zY3JvbGxCYXIoQWNjZXNzaWJpbGl0eU9y
aWVudGF0aW9uOjpWZXJ0aWNhbCkpOworICAgIHNldE9iamVjdFByb3BlcnR5KEFYUHJvcGVydHlO
YW1lOjpIb3Jpem9udGFsU2Nyb2xsQmFyLCBvYmplY3Quc2Nyb2xsQmFyKEFjY2Vzc2liaWxpdHlP
cmllbnRhdGlvbjo6SG9yaXpvbnRhbCkpOworICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1l
OjpBUklBUm9sZUF0dHJpYnV0ZSwgc3RhdGljX2Nhc3Q8aW50PihvYmplY3QuYXJpYVJvbGVBdHRy
aWJ1dGUoKSkpOworICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpDb21wdXRlZExhYmVs
LCBvYmplY3QuY29tcHV0ZWRMYWJlbCgpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFt
ZTo6UGxhY2Vob2xkZXJWYWx1ZSwgb2JqZWN0LnBsYWNlaG9sZGVyVmFsdWUoKSk7CisgICAgc2V0
UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkV4cGFuZGVkVGV4dFZhbHVlLCBvYmplY3QuZXhwYW5k
ZWRUZXh0VmFsdWUoKSk7CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OlN1cHBvcnRz
RXhwYW5kZWRUZXh0VmFsdWUsIG9iamVjdC5zdXBwb3J0c0V4cGFuZGVkVGV4dFZhbHVlKCkpOwor
ICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpTdXBwb3J0c1ByZXNzQWN0aW9uLCBvYmpl
Y3Quc3VwcG9ydHNQcmVzc0FjdGlvbigpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFt
ZTo6Q2xpY2tQb2ludCwgb2JqZWN0LmNsaWNrUG9pbnQoKSk7CisgICAgc2V0UHJvcGVydHkoQVhQ
cm9wZXJ0eU5hbWU6OkNvbXB1dGVkUm9sZVN0cmluZywgb2JqZWN0LmNvbXB1dGVkUm9sZVN0cmlu
ZygpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNWYWx1ZUF1dG9maWxsZWQs
IG9iamVjdC5pc1ZhbHVlQXV0b2ZpbGxlZCgpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5
TmFtZTo6SXNWYWx1ZUF1dG9maWxsQXZhaWxhYmxlLCBvYmplY3QuaXNWYWx1ZUF1dG9maWxsQXZh
aWxhYmxlKCkpOworICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpWYWx1ZUF1dG9maWxs
QnV0dG9uVHlwZSwgc3RhdGljX2Nhc3Q8aW50PihvYmplY3QudmFsdWVBdXRvZmlsbEJ1dHRvblR5
cGUoKSkpOworICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpVUkwsIG9iamVjdC51cmwo
KSk7CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkFjY2Vzc0tleSwgb2JqZWN0LmFj
Y2Vzc0tleSgpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6QWN0aW9uVmVyYiwg
b2JqZWN0LmFjdGlvblZlcmIoKSk7CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OlJl
YWRPbmx5VmFsdWUsIG9iamVjdC5yZWFkT25seVZhbHVlKCkpOworICAgIHNldFByb3BlcnR5KEFY
UHJvcGVydHlOYW1lOjpBdXRvQ29tcGxldGVWYWx1ZSwgb2JqZWN0LmF1dG9Db21wbGV0ZVZhbHVl
KCkpOworICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpTcGVha0FzLCBvYmplY3Quc3Bl
YWtBc1Byb3BlcnR5KCkpOworICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpDYXJldEJy
b3dzaW5nRW5hYmxlZCwgb2JqZWN0LmNhcmV0QnJvd3NpbmdFbmFibGVkKCkpOworICAgIHNldE9i
amVjdFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpGb2N1c2FibGVBbmNlc3Rvciwgb2JqZWN0LmZv
Y3VzYWJsZUFuY2VzdG9yKCkpOworICAgIHNldE9iamVjdFByb3BlcnR5KEFYUHJvcGVydHlOYW1l
OjpFZGl0YWJsZUFuY2VzdG9yLCBvYmplY3QuZWRpdGFibGVBbmNlc3RvcigpKTsKKyAgICBzZXRP
YmplY3RQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SGlnaGVzdEVkaXRhYmxlQW5jZXN0b3IsIG9i
amVjdC5oaWdoZXN0RWRpdGFibGVBbmNlc3RvcigpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3Bl
cnR5TmFtZTo6T3JpZW50YXRpb24sIHN0YXRpY19jYXN0PGludD4ob2JqZWN0Lm9yaWVudGF0aW9u
KCkpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SGllcmFyY2hpY2FsTGV2ZWws
IG9iamVjdC5oaWVyYXJjaGljYWxMZXZlbCgpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5
TmFtZTo6TGFuZ3VhZ2UsIG9iamVjdC5sYW5ndWFnZSgpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFBy
b3BlcnR5TmFtZTo6Q2FuSGF2ZVNlbGVjdGVkQ2hpbGRyZW4sIG9iamVjdC5jYW5IYXZlU2VsZWN0
ZWRDaGlsZHJlbigpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SGFzQVJJQVZh
bHVlTm93LCBvYmplY3QuaGFzQVJJQVZhbHVlTm93KCkpOworICAgIHNldFByb3BlcnR5KEFYUHJv
cGVydHlOYW1lOjpUYWdOYW1lLCBvYmplY3QudGFnTmFtZSgpKTsKKyAgICBzZXRQcm9wZXJ0eShB
WFByb3BlcnR5TmFtZTo6U3VwcG9ydHNMaXZlUmVnaW9uLCBvYmplY3Quc3VwcG9ydHNMaXZlUmVn
aW9uKCkpOworICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc0luc2lkZUxpdmVSZWdp
b24sIG9iamVjdC5pc0luc2lkZUxpdmVSZWdpb24oKSk7CisgICAgc2V0UHJvcGVydHkoQVhQcm9w
ZXJ0eU5hbWU6OkxpdmVSZWdpb25TdGF0dXMsIG9iamVjdC5saXZlUmVnaW9uU3RhdHVzKCkpOwor
ICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpMaXZlUmVnaW9uUmVsZXZhbnQsIG9iamVj
dC5saXZlUmVnaW9uUmVsZXZhbnQoKSk7CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6
OkxpdmVSZWdpb25BdG9taWMsIG9iamVjdC5saXZlUmVnaW9uQXRvbWljKCkpOworICAgIHNldFBy
b3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc0J1c3ksIG9iamVjdC5pc0J1c3koKSk7CisgICAgc2V0
UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OklzSW5saW5lVGV4dCwgb2JqZWN0LmlzSW5saW5lVGV4
dCgpKTsKKyAgICBpZiAob2JqZWN0LmlzVGV4dENvbnRyb2woKSkKKyAgICAgICAgc2V0UHJvcGVy
dHkoQVhQcm9wZXJ0eU5hbWU6OlRleHRMZW5ndGgsIG9iamVjdC50ZXh0TGVuZ3RoKCkpOworCisg
ICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIHNlbGVjdGVkQ2hpbGRyZW47CisgICAgb2Jq
ZWN0LnNlbGVjdGVkQ2hpbGRyZW4oc2VsZWN0ZWRDaGlsZHJlbik7CisgICAgc2V0T2JqZWN0VmVj
dG9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OlNlbGVjdGVkQ2hpbGRyZW4sIHNlbGVjdGVkQ2hp
bGRyZW4pOworCisgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIHZpc2libGVDaGlsZHJl
bjsKKyAgICBvYmplY3QudmlzaWJsZUNoaWxkcmVuKHZpc2libGVDaGlsZHJlbik7CisgICAgc2V0
T2JqZWN0VmVjdG9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OlZpc2libGVDaGlsZHJlbiwgdmlz
aWJsZUNoaWxkcmVuKTsKKworICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciB0YWJDaGls
ZHJlbjsKKyAgICBvYmplY3QudGFiQ2hpbGRyZW4odGFiQ2hpbGRyZW4pOworICAgIHNldE9iamVj
dFZlY3RvclByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpUYWJDaGlsZHJlbiwgdGFiQ2hpbGRyZW4p
OworCisgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGFyaWFUcmVlUm93czsKKyAgICBv
YmplY3QuYXJpYVRyZWVSb3dzKGFyaWFUcmVlUm93cyk7CisgICAgc2V0T2JqZWN0VmVjdG9yUHJv
cGVydHkoQVhQcm9wZXJ0eU5hbWU6OkFSSUFUcmVlUm93cywgYXJpYVRyZWVSb3dzKTsKKworICAg
IEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBhcmlhVHJlZUl0ZW1EaXNjbG9zZWRSb3dzOwor
ICAgIG9iamVjdC5hcmlhVHJlZUl0ZW1EaXNjbG9zZWRSb3dzKGFyaWFUcmVlSXRlbURpc2Nsb3Nl
ZFJvd3MpOworICAgIHNldE9iamVjdFZlY3RvclByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpBUklB
VHJlZUl0ZW1EaXNjbG9zZWRSb3dzLCBhcmlhVHJlZUl0ZW1EaXNjbG9zZWRSb3dzKTsKKworICAg
IEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBhcmlhVHJlZUl0ZW1Db250ZW50OworICAgIG9i
amVjdC5hcmlhVHJlZUl0ZW1Db250ZW50KGFyaWFUcmVlSXRlbUNvbnRlbnQpOworICAgIHNldE9i
amVjdFZlY3RvclByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpBUklBVHJlZUl0ZW1Db250ZW50LCBh
cmlhVHJlZUl0ZW1Db250ZW50KTsKKworICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBs
aW5rZWRVSUVsZW1lbnRzOworICAgIG9iamVjdC5saW5rZWRVSUVsZW1lbnRzKGxpbmtlZFVJRWxl
bWVudHMpOworICAgIHNldE9iamVjdFZlY3RvclByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpMaW5r
ZWRVSUVsZW1lbnRzLCBsaW5rZWRVSUVsZW1lbnRzKTsKIAorICAgIEFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciBhcmlhQ29udHJvbHNFbGVtZW50czsKKyAgICBvYmplY3QuYXJpYUNvbnRyb2xz
RWxlbWVudHMoYXJpYUNvbnRyb2xzRWxlbWVudHMpOworICAgIHNldE9iamVjdFZlY3RvclByb3Bl
cnR5KEFYUHJvcGVydHlOYW1lOjpBUklBQ29udHJvbHNFbGVtZW50cywgYXJpYUNvbnRyb2xzRWxl
bWVudHMpOworCisgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGFyaWFEZXRhaWxzRWxl
bWVudHM7CisgICAgb2JqZWN0LmFyaWFEZXRhaWxzRWxlbWVudHMoYXJpYURldGFpbHNFbGVtZW50
cyk7CisgICAgc2V0T2JqZWN0VmVjdG9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkFSSUFEZXRh
aWxzRWxlbWVudHMsIGFyaWFEZXRhaWxzRWxlbWVudHMpOworCisgICAgQWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yIGFyaWFFcnJvck1lc3NhZ2VFbGVtZW50czsKKyAgICBvYmplY3QuYXJpYUVy
cm9yTWVzc2FnZUVsZW1lbnRzKGFyaWFFcnJvck1lc3NhZ2VFbGVtZW50cyk7CisgICAgc2V0T2Jq
ZWN0VmVjdG9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkFSSUFFcnJvck1lc3NhZ2VFbGVtZW50
cywgYXJpYUVycm9yTWVzc2FnZUVsZW1lbnRzKTsKKworICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJl
blZlY3RvciBhcmlhRmxvd1RvRWxlbWVudHM7CisgICAgb2JqZWN0LmFyaWFGbG93VG9FbGVtZW50
cyhhcmlhRmxvd1RvRWxlbWVudHMpOworICAgIHNldE9iamVjdFZlY3RvclByb3BlcnR5KEFYUHJv
cGVydHlOYW1lOjpBUklBRmxvd1RvRWxlbWVudHMsIGFyaWFGbG93VG9FbGVtZW50cyk7CisKKyAg
ICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgYXJpYU93bnNFbGVtZW50czsKKyAgICBvYmpl
Y3QuYXJpYU93bnNFbGVtZW50cyhhcmlhT3duc0VsZW1lbnRzKTsKKyAgICBzZXRPYmplY3RWZWN0
b3JQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6QVJJQU93bnNFbGVtZW50cywgYXJpYU93bnNFbGVt
ZW50cyk7CisKKyAgICBWZWN0b3I8QWNjZXNzaWJpbGl0eVRleHQ+IHRleHRzOworICAgIG9iamVj
dC5hY2Nlc3NpYmlsaXR5VGV4dCh0ZXh0cyk7CisgICAgVmVjdG9yPEFjY2Vzc2liaWxpdHlJc29s
YXRlZFRyZWVUZXh0PiBpc29sYXRlZFRleHRzOworICAgIGlzb2xhdGVkVGV4dHMucmVzZXJ2ZUNh
cGFjaXR5KHRleHRzLnNpemUoKSk7CisgICAgZm9yIChhdXRvIHRleHQgOiB0ZXh0cykgeworICAg
ICAgICBBY2Nlc3NpYmlsaXR5SXNvbGF0ZWRUcmVlVGV4dCBpc29sYXRlZFRleHQ7CisgICAgICAg
IGlzb2xhdGVkVGV4dC50ZXh0ID0gdGV4dC50ZXh0OworICAgICAgICBpc29sYXRlZFRleHQudGV4
dFNvdXJjZSA9IHRleHQudGV4dFNvdXJjZTsKKyAgICAgICAgZm9yIChhdXRvIG9iamVjdCA6IHRl
eHQudGV4dEVsZW1lbnRzKQorICAgICAgICAgICAgaXNvbGF0ZWRUZXh0LnRleHRFbGVtZW50cy5h
cHBlbmQob2JqZWN0LT5vYmplY3RJRCgpKTsKKyAgICAgICAgaXNvbGF0ZWRUZXh0cy51bmNoZWNr
ZWRBcHBlbmQoaXNvbGF0ZWRUZXh0KTsKKyAgICB9CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0
eU5hbWU6OkFjY2Vzc2liaWxpdHlUZXh0LCBpc29sYXRlZFRleHRzKTsKKworICAgIFZlY3RvcjxT
dHJpbmc+IGNsYXNzTGlzdDsKKyAgICBvYmplY3QuY2xhc3NMaXN0KGNsYXNzTGlzdCk7CisgICAg
U3RyaW5nIGNvbWJpbmVkQ2xhc3NMaXN0OworICAgIGZvciAoYXV0byBpdCA9IGNsYXNzTGlzdC5i
ZWdpbigpLCBlbmQgPSBjbGFzc0xpc3QuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAg
ICBjb21iaW5lZENsYXNzTGlzdC5hcHBlbmQoKml0KTsKKyAgICAgICAgY29tYmluZWRDbGFzc0xp
c3QuYXBwZW5kKCIgIik7CisgICAgfQorICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpD
bGFzc0xpc3QsIGNvbWJpbmVkQ2xhc3NMaXN0KTsKKyAgICAKKyAgICBpbnQgciwgZywgYjsKKyAg
ICBvYmplY3QuY29sb3JWYWx1ZShyLCBnLCBiKTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5
TmFtZTo6Q29sb3JWYWx1ZSwgQ29sb3IociwgZywgYikpOworICAgIAogICAgIGlmIChib29sIGlz
TWF0aEVsZW1lbnQgPSBvYmplY3QuaXNNYXRoRWxlbWVudCgpKSB7CiAgICAgICAgIHNldFByb3Bl
cnR5KEFYUHJvcGVydHlOYW1lOjpJc01hdGhFbGVtZW50LCBpc01hdGhFbGVtZW50KTsKICAgICAg
ICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OklzQW5vbnltb3VzTWF0aE9wZXJhdG9yLCBv
YmplY3QuaXNBbm9ueW1vdXNNYXRoT3BlcmF0b3IoKSk7CkBAIC0xMjYsNyArMzE2LDQxIEBAIHZv
aWQgQVhJc29sYXRlZE9iamVjdDo6aW5pdGlhbGl6ZUF0dHJpYnV0ZURhdGEoQVhDb3JlT2JqZWN0
JiBvYmplY3QpCiAgICAgICAgIHNldE9iamVjdFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpNYXRo
QmFzZU9iamVjdCwgb2JqZWN0Lm1hdGhCYXNlT2JqZWN0KCkpOwogICAgICAgICBzZXRPYmplY3RQ
cm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6TWF0aFN1YnNjcmlwdE9iamVjdCwgb2JqZWN0Lm1hdGhT
dWJzY3JpcHRPYmplY3QoKSk7CiAgICAgICAgIHNldE9iamVjdFByb3BlcnR5KEFYUHJvcGVydHlO
YW1lOjpNYXRoU3VwZXJzY3JpcHRPYmplY3QsIG9iamVjdC5tYXRoU3VwZXJzY3JpcHRPYmplY3Qo
KSk7CisgICAgICAgIHNldE1hdGhzY3JpcHRzKEFYUHJvcGVydHlOYW1lOjpNYXRoUHJlc2NyaXB0
cywgb2JqZWN0KTsKKyAgICAgICAgc2V0TWF0aHNjcmlwdHMoQVhQcm9wZXJ0eU5hbWU6Ok1hdGhQ
b3N0c2NyaXB0cywgb2JqZWN0KTsKKyAgICB9CisgICAgCisgICAgaWYgKGlzUm9vdCkgeworICAg
ICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6UHJldmVudEtleWJvYXJkRE9NRXZlbnRE
aXNwYXRjaCwgb2JqZWN0LnByZXZlbnRLZXlib2FyZERPTUV2ZW50RGlzcGF0Y2goKSk7CisgICAg
ICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpTZXNzaW9uSUQsIG9iamVjdC5zZXNzaW9u
SUQoKSk7CisgICAgICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpEb2N1bWVudFVSSSwg
b2JqZWN0LmRvY3VtZW50VVJJKCkpOworICAgICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFt
ZTo6RG9jdW1lbnRFbmNvZGluZywgb2JqZWN0LmRvY3VtZW50RW5jb2RpbmcoKSk7CisgICAgfQor
fQorCit2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OnNldE1hdGhzY3JpcHRzKEFYUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgQVhDb3JlT2JqZWN0JiBvYmplY3QpCit7CisgICAgQWNjZXNzaWJpbGl0
eU1hdGhNdWx0aXNjcmlwdFBhaXJzIHBhaXJzOworICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gQVhQ
cm9wZXJ0eU5hbWU6Ok1hdGhQcmVzY3JpcHRzKQorICAgICAgICBvYmplY3QubWF0aFByZXNjcmlw
dHMocGFpcnMpOworICAgIGVsc2UgaWYgKHByb3BlcnR5TmFtZSA9PSBBWFByb3BlcnR5TmFtZTo6
TWF0aFBvc3RzY3JpcHRzKQorICAgICAgICBvYmplY3QubWF0aFBvc3RzY3JpcHRzKHBhaXJzKTsK
KyAgICAKKyAgICBzaXplX3QgbWF0aFNpemUgPSBwYWlycy5zaXplKCk7CisgICAgaWYgKCFtYXRo
U2l6ZSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIFZlY3RvcjxBY2Nlc3NpYmlsaXR5SXNv
bGF0ZWRUcmVlTWF0aE11bHRpc2NyaXB0UGFpcj4gaWRQYWlyczsKKyAgICBpZFBhaXJzLnJlc2Vy
dmVDYXBhY2l0eShtYXRoU2l6ZSk7CisgICAgZm9yIChhdXRvIG1hdGhQYWlyIDogcGFpcnMpIHsK
KyAgICAgICAgQWNjZXNzaWJpbGl0eUlzb2xhdGVkVHJlZU1hdGhNdWx0aXNjcmlwdFBhaXIgaWRQ
YWlyOworICAgICAgICBpZiAobWF0aFBhaXIuZmlyc3QpCisgICAgICAgICAgICBpZFBhaXIuZmly
c3QgPSBtYXRoUGFpci5maXJzdC0+b2JqZWN0SUQoKTsKKyAgICAgICAgaWYgKG1hdGhQYWlyLnNl
Y29uZCkKKyAgICAgICAgICAgIGlkUGFpci5zZWNvbmQgPSBtYXRoUGFpci5zZWNvbmQtPm9iamVj
dElEKCk7CisgICAgICAgIGlkUGFpcnMudW5jaGVja2VkQXBwZW5kKGlkUGFpcik7CiAgICAgfQor
ICAgIHNldFByb3BlcnR5KHByb3BlcnR5TmFtZSwgaWRQYWlycyk7CiB9CiAKIHZvaWQgQVhJc29s
YXRlZE9iamVjdDo6c2V0T2JqZWN0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBBWENvcmVPYmplY3QqIG9iamVjdCkKQEAgLTEzNyw2ICszNjEsMTkgQEAgdm9pZCBBWElzb2xh
dGVkT2JqZWN0OjpzZXRPYmplY3RQcm9wZXJ0eShBWFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IEFYQ29yZU9iamUKICAgICAgICAgc2V0UHJvcGVydHkocHJvcGVydHlOYW1lLCBudWxscHRyLCB0
cnVlKTsKIH0KIAordm9pZCBBWElzb2xhdGVkT2JqZWN0OjpzZXRPYmplY3RWZWN0b3JQcm9wZXJ0
eShBWFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3Rv
ciYgY2hpbGRyZW4pCit7CisgICAgc2l6ZV90IGNoaWxkcmVuU2l6ZSA9IGNoaWxkcmVuLnNpemUo
KTsKKyAgICBpZiAoIWNoaWxkcmVuU2l6ZSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIFZl
Y3RvcjxBWElEPiBjaGlsZHJlblZlY3RvcjsKKyAgICBjaGlsZHJlblZlY3Rvci5yZXNlcnZlQ2Fw
YWNpdHkoY2hpbGRyZW5TaXplKTsKKyAgICBmb3IgKGF1dG8gY2hpbGRPYmplY3QgOiBjaGlsZHJl
bikKKyAgICAgICAgY2hpbGRyZW5WZWN0b3IudW5jaGVja2VkQXBwZW5kKGNoaWxkT2JqZWN0LT5v
YmplY3RJRCgpKTsKKyAgICBzZXRQcm9wZXJ0eShwcm9wZXJ0eU5hbWUsIGNoaWxkcmVuVmVjdG9y
KTsKK30KKwogdm9pZCBBWElzb2xhdGVkT2JqZWN0OjpzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIEF0dHJpYnV0ZVZhbHVlVmFyaWFudCYmIHZhbHVlLCBib29sIHNob3Vs
ZFJlbW92ZSkKIHsKICAgICBBU1NFUlQoIW1faW5pdGlhbGl6ZWQpOwpAQCAtMTYwLDYgKzM5Nywx
MiBAQCB2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OnNldFBhcmVudChBWElEIHBhcmVudCkKICAgICBt
X3BhcmVudCA9IHBhcmVudDsKIH0KIAorYm9vbCBBWElzb2xhdGVkT2JqZWN0Ojppc0RldGFjaGVk
KCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKIHZvaWQgQVhJc29sYXRlZE9iamVjdDo6c2V0VHJlZUlkZW50aWZpZXIoQVhJc29sYXRl
ZFRyZWVJRCB0cmVlSWRlbnRpZmllcikKIHsKICAgICBtX3RyZWVJZGVudGlmaWVyID0gdHJlZUlk
ZW50aWZpZXI7CkBAIC0xODAsNiArNDIzLDgzIEBAIGNvbnN0IEFYQ29yZU9iamVjdDo6QWNjZXNz
aWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBBWElzb2xhdGVkT2JqZWN0OjpjaGlsZHJlbihib29sCiAg
ICAgcmV0dXJuIG1fY2hpbGRyZW47CiB9CiAKK2Jvb2wgQVhJc29sYXRlZE9iamVjdDo6aXNEZXRh
Y2hlZEZyb21QYXJlbnQoKQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVy
biBmYWxzZTsKK30KKwordm9pZCBBWElzb2xhdGVkT2JqZWN0OjphY2Nlc3NpYmlsaXR5VGV4dChW
ZWN0b3I8QWNjZXNzaWJpbGl0eVRleHQ+JiB0ZXh0cykgY29uc3QKK3sKKyAgICBhdXRvIGlzb2xh
dGVkVGV4dHMgPSB2ZWN0b3JBdHRyaWJ1dGVWYWx1ZTxBY2Nlc3NpYmlsaXR5SXNvbGF0ZWRUcmVl
VGV4dD4oQVhQcm9wZXJ0eU5hbWU6OkFjY2Vzc2liaWxpdHlUZXh0KTsKKyAgICBmb3IgKGF1dG8g
aXNvbGF0ZWRUZXh0IDogaXNvbGF0ZWRUZXh0cykgeworICAgICAgICBBY2Nlc3NpYmlsaXR5VGV4
dCB0ZXh0KGlzb2xhdGVkVGV4dC50ZXh0LCBpc29sYXRlZFRleHQudGV4dFNvdXJjZSk7CisgICAg
ICAgIGZvciAoYXV0byBheElEIDogaXNvbGF0ZWRUZXh0LnRleHRFbGVtZW50cykgeworICAgICAg
ICAgICAgaWYgKGF1dG8gb2JqZWN0ID0gdHJlZSgpLT5ub2RlRm9ySUQoYXhJRCkpCisgICAgICAg
ICAgICAgICAgdGV4dC50ZXh0RWxlbWVudHMuYXBwZW5kKG9iamVjdCk7CisgICAgICAgIH0KKyAg
ICAgICAgdGV4dHMuYXBwZW5kKHRleHQpOworICAgIH0KK30KKwordm9pZCBBWElzb2xhdGVkT2Jq
ZWN0OjpjbGFzc0xpc3QoVmVjdG9yPFN0cmluZz4mIGxpc3QpIGNvbnN0Cit7CisgICAgU3RyaW5n
IGNsYXNzTGlzdCA9IHN0cmluZ0F0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpDbGFzc0xp
c3QpOworICAgIGxpc3QuYXBwZW5kVmVjdG9yKGNsYXNzTGlzdC5zcGxpdCgiICIpKTsKK30KKwor
dWludDY0X3QgQVhJc29sYXRlZE9iamVjdDo6c2Vzc2lvbklEKCkgY29uc3QKK3sKKyAgICBpZiAo
YXV0byByb290ID0gdHJlZSgpLT5yb290Tm9kZSgpKQorICAgICAgICByZXR1cm4gcm9vdC0+dWlu
dDY0QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OlNlc3Npb25JRCk7CisgICAgcmV0dXJu
IDA7Cit9CisKK1N0cmluZyBBWElzb2xhdGVkT2JqZWN0Ojpkb2N1bWVudFVSSSgpIGNvbnN0Cit7
CisgICAgaWYgKGF1dG8gcm9vdCA9IHRyZWUoKS0+cm9vdE5vZGUoKSkKKyAgICAgICAgcmV0dXJu
IHJvb3QtPnN0cmluZ0F0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpEb2N1bWVudFVSSSk7
CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitib29sIEFYSXNvbGF0ZWRPYmplY3Q6OnByZXZl
bnRLZXlib2FyZERPTUV2ZW50RGlzcGF0Y2goKSBjb25zdAoreworICAgIGlmIChhdXRvIHJvb3Qg
PSB0cmVlKCktPnJvb3ROb2RlKCkpCisgICAgICAgIHJldHVybiByb290LT5ib29sQXR0cmlidXRl
VmFsdWUoQVhQcm9wZXJ0eU5hbWU6OlByZXZlbnRLZXlib2FyZERPTUV2ZW50RGlzcGF0Y2gpOwor
ICAgIHJldHVybiBmYWxzZTsKK30KKworU3RyaW5nIEFYSXNvbGF0ZWRPYmplY3Q6OmRvY3VtZW50
RW5jb2RpbmcoKSBjb25zdAoreworICAgIGlmIChhdXRvIHJvb3QgPSB0cmVlKCktPnJvb3ROb2Rl
KCkpCisgICAgICAgIHJldHVybiByb290LT5zdHJpbmdBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5
TmFtZTo6RG9jdW1lbnRFbmNvZGluZyk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCit2b2lk
IEFYSXNvbGF0ZWRPYmplY3Q6Omluc2VydE1hdGhQYWlycyhWZWN0b3I8QWNjZXNzaWJpbGl0eUlz
b2xhdGVkVHJlZU1hdGhNdWx0aXNjcmlwdFBhaXI+JiBpc29sYXRlZFBhaXJzLCBBY2Nlc3NpYmls
aXR5TWF0aE11bHRpc2NyaXB0UGFpcnMmIHBhaXJzKQoreworICAgIGZvciAoYXV0byBwYWlyIDog
aXNvbGF0ZWRQYWlycykgeworICAgICAgICBBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0UGFp
ciBwcmVzY3JpcHRQYWlyOworICAgICAgICBpZiAoYXV0byogY29yZU9iamVjdCA9IHRyZWUoKS0+
bm9kZUZvcklEKHBhaXIuZmlyc3QpLmdldCgpKQorICAgICAgICAgICAgcHJlc2NyaXB0UGFpci5m
aXJzdCA9IGNvcmVPYmplY3Q7CisgICAgICAgIGlmIChhdXRvKiBjb3JlT2JqZWN0ID0gdHJlZSgp
LT5ub2RlRm9ySUQocGFpci5zZWNvbmQpLmdldCgpKQorICAgICAgICAgICAgcHJlc2NyaXB0UGFp
ci5zZWNvbmQgPSBjb3JlT2JqZWN0OworICAgICAgICBwYWlycy5hcHBlbmQocHJlc2NyaXB0UGFp
cik7CisgICAgfQorfQorCit2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6Om1hdGhQcmVzY3JpcHRzKEFj
Y2Vzc2liaWxpdHlNYXRoTXVsdGlzY3JpcHRQYWlycyYgcGFpcnMpCit7CisgICAgYXV0byBpc29s
YXRlZFBhaXJzID0gdmVjdG9yQXR0cmlidXRlVmFsdWU8QWNjZXNzaWJpbGl0eUlzb2xhdGVkVHJl
ZU1hdGhNdWx0aXNjcmlwdFBhaXI+KEFYUHJvcGVydHlOYW1lOjpNYXRoUHJlc2NyaXB0cyk7Cisg
ICAgaW5zZXJ0TWF0aFBhaXJzKGlzb2xhdGVkUGFpcnMsIHBhaXJzKTsKK30KKwordm9pZCBBWElz
b2xhdGVkT2JqZWN0OjptYXRoUG9zdHNjcmlwdHMoQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlw
dFBhaXJzJiBwYWlycykKK3sKKyAgICBhdXRvIGlzb2xhdGVkUGFpcnMgPSB2ZWN0b3JBdHRyaWJ1
dGVWYWx1ZTxBY2Nlc3NpYmlsaXR5SXNvbGF0ZWRUcmVlTWF0aE11bHRpc2NyaXB0UGFpcj4oQVhQ
cm9wZXJ0eU5hbWU6Ok1hdGhQb3N0c2NyaXB0cyk7CisgICAgaW5zZXJ0TWF0aFBhaXJzKGlzb2xh
dGVkUGFpcnMsIHBhaXJzKTsKK30KKwogQVhDb3JlT2JqZWN0KiBBWElzb2xhdGVkT2JqZWN0Ojpm
b2N1c2VkVUlFbGVtZW50KCkgY29uc3QKIHsKICAgICBpZiAoYXV0byBmb2N1c2VkRWxlbWVudCA9
IHRyZWUoKS0+Zm9jdXNlZFVJRWxlbWVudCgpKQpAQCAtMTkyLDYgKzUxMiwxOSBAQCBBWENvcmVP
YmplY3QqIEFYSXNvbGF0ZWRPYmplY3Q6OnBhcmVudE9iamVjdFVuaWdub3JlZCgpIGNvbnN0CiAg
ICAgcmV0dXJuIHRyZWUoKS0+bm9kZUZvcklEKHBhcmVudCgpKS5nZXQoKTsKIH0KIAorQVhDb3Jl
T2JqZWN0KiBBWElzb2xhdGVkT2JqZWN0OjpzY3JvbGxCYXIoQWNjZXNzaWJpbGl0eU9yaWVudGF0
aW9uIG9yaWVudGF0aW9uKQoreworICAgIHJldHVybiBvYmplY3RBdHRyaWJ1dGVWYWx1ZShvcmll
bnRhdGlvbiA9PSBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb246OlZlcnRpY2FsID8gQVhQcm9wZXJ0
eU5hbWU6OlZlcnRpY2FsU2Nyb2xsQmFyIDogQVhQcm9wZXJ0eU5hbWU6Okhvcml6b250YWxTY3Jv
bGxCYXIpOworfQorCit2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OmNvbG9yVmFsdWUoaW50JiByLCBp
bnQmIGcsIGludCYgYikgY29uc3QKK3sKKyAgICBhdXRvIGNvbG9yID0gY29sb3JBdHRyaWJ1dGVW
YWx1ZShBWFByb3BlcnR5TmFtZTo6Q29sb3JWYWx1ZSk7CisgICAgciA9IGNvbG9yLnJlZCgpOwor
ICAgIGcgPSBjb2xvci5ncmVlbigpOworICAgIGIgPSBjb2xvci5ibHVlKCk7Cit9CisKIEFYQ29y
ZU9iamVjdCogQVhJc29sYXRlZE9iamVjdDo6YWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50
UG9pbnQmIHBvaW50KSBjb25zdAogewogICAgIGlmICghcmVsYXRpdmVGcmFtZSgpLmNvbnRhaW5z
KHBvaW50KSkKQEAgLTIxMCw2ICs1NDMsMTUgQEAgQVhJc29sYXRlZFRyZWUqIEFYSXNvbGF0ZWRP
YmplY3Q6OnRyZWUoKSBjb25zdAogICAgIHJldHVybiBtX2NhY2hlZFRyZWUuZ2V0KCk7CiB9CiAK
K0ludFBvaW50IEFYSXNvbGF0ZWRPYmplY3Q6OmludFBvaW50QXR0cmlidXRlVmFsdWUoQVhQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdAoreworICAgIGF1dG8gdmFsdWUgPSBtX2F0dHJp
YnV0ZU1hcC5nZXQocHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbih2YWx1
ZSwKKyAgICAgICAgW10gKEludFBvaW50JiB0eXBlZFZhbHVlKSB7IHJldHVybiB0eXBlZFZhbHVl
OyB9LAorICAgICAgICBbXSAoYXV0byYpIHsgcmV0dXJuIEludFBvaW50KCk7IH0KKyAgICApOwor
fQorCiBBWENvcmVPYmplY3QqIEFYSXNvbGF0ZWRPYmplY3Q6Om9iamVjdEF0dHJpYnV0ZVZhbHVl
KEFYUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgY29uc3QKIHsKICAgICBhdXRvIHZhbHVlID0g
bV9hdHRyaWJ1dGVNYXAuZ2V0KHByb3BlcnR5TmFtZSk7CkBAIC0yMzEsNiArNTczLDYyIEBAIFQg
QVhJc29sYXRlZE9iamVjdDo6cmVjdEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSkgY29uc3QKICAgICApOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorVmVjdG9y
PFQ+IEFYSXNvbGF0ZWRPYmplY3Q6OnZlY3RvckF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSkgY29uc3QKK3sKKyAgICBhdXRvIHZhbHVlID0gbV9hdHRyaWJ1dGVNYXAu
Z2V0KHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24odmFsdWUsCisgICAg
ICAgIFtdIChWZWN0b3I8VD4mIHR5cGVkVmFsdWUpIHsgcmV0dXJuIHR5cGVkVmFsdWU7IH0sCisg
ICAgICAgIFtdIChhdXRvJikgeyByZXR1cm4gVmVjdG9yPFQ+KCk7IH0KKyAgICApOworfQorCit0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgorT3B0aW9uU2V0PFQ+IEFYSXNvbGF0ZWRPYmplY3Q6Om9wdGlv
blNldEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgY29uc3QKK3sK
KyAgICBhdXRvIHZhbHVlID0gbV9hdHRyaWJ1dGVNYXAuZ2V0KHByb3BlcnR5TmFtZSk7CisgICAg
cmV0dXJuIFdURjo6c3dpdGNoT24odmFsdWUsCisgICAgICAgIFtdIChUJiB0eXBlZFZhbHVlKSB7
IHJldHVybiB0eXBlZFZhbHVlOyB9LAorICAgICAgICBbXSAoYXV0byYpIHsgcmV0dXJuIE9wdGlv
blNldDxUPigpOyB9CisgICAgKTsKK30KKwordWludDY0X3QgQVhJc29sYXRlZE9iamVjdDo6dWlu
dDY0QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdAorewor
ICAgIGF1dG8gdmFsdWUgPSBtX2F0dHJpYnV0ZU1hcC5nZXQocHJvcGVydHlOYW1lKTsKKyAgICBy
ZXR1cm4gV1RGOjpzd2l0Y2hPbih2YWx1ZSwKKyAgICAgICAgW10gKHVpbnQ2NF90JiB0eXBlZFZh
bHVlKSB7IHJldHVybiB0eXBlZFZhbHVlOyB9LAorICAgICAgICBbXSAoYXV0byYpIHsgcmV0dXJu
IDA7IH0KKyAgICApOworfQorCitVUkwgQVhJc29sYXRlZE9iamVjdDo6dXJsQXR0cmlidXRlVmFs
dWUoQVhQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdAoreworICAgIGF1dG8gdmFsdWUg
PSBtX2F0dHJpYnV0ZU1hcC5nZXQocHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gV1RGOjpzd2l0
Y2hPbih2YWx1ZSwKKyAgICAgICAgW10gKFVSTCYgdHlwZWRWYWx1ZSkgeyByZXR1cm4gdHlwZWRW
YWx1ZTsgfSwKKyAgICAgICAgW10gKGF1dG8mKSB7IHJldHVybiBVUkwoKTsgfQorICAgICk7Cit9
CisKK0NvbG9yIEFYSXNvbGF0ZWRPYmplY3Q6OmNvbG9yQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdAoreworICAgIGF1dG8gdmFsdWUgPSBtX2F0dHJpYnV0
ZU1hcC5nZXQocHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbih2YWx1ZSwK
KyAgICAgICAgW10gKENvbG9yJiB0eXBlZFZhbHVlKSB7IHJldHVybiB0eXBlZFZhbHVlOyB9LAor
ICAgICAgICBbXSAoYXV0byYpIHsgcmV0dXJuIENvbG9yKCk7IH0KKyAgICApOworfQorCitmbG9h
dCBBWElzb2xhdGVkT2JqZWN0OjpmbG9hdEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSkgY29uc3QKK3sKKyAgICBhdXRvIHZhbHVlID0gbV9hdHRyaWJ1dGVNYXAuZ2V0
KHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24odmFsdWUsCisgICAgICAg
IFtdIChmbG9hdCYgdHlwZWRWYWx1ZSkgeyByZXR1cm4gdHlwZWRWYWx1ZTsgfSwKKyAgICAgICAg
W10gKGF1dG8mKSB7IHJldHVybiAwOyB9CisgICAgKTsKK30KKwogZG91YmxlIEFYSXNvbGF0ZWRP
YmplY3Q6OmRvdWJsZUF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkg
Y29uc3QKIHsKICAgICBhdXRvIHZhbHVlID0gbV9hdHRyaWJ1dGVNYXAuZ2V0KHByb3BlcnR5TmFt
ZSk7CkBAIC0yNzYsNiArNjc0LDE2IEBAIGludCBBWElzb2xhdGVkT2JqZWN0OjppbnRBdHRyaWJ1
dGVWYWx1ZShBWFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIGNvbnN0CiAgICAgKTsKIH0KIAor
dm9pZCBBWElzb2xhdGVkT2JqZWN0OjpmaWxsQ2hpbGRyZW5WZWN0b3JGb3JQcm9wZXJ0eShBWFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgY2hp
bGRyZW4pIGNvbnN0Cit7CisgICAgVmVjdG9yPEFYSUQ+IGNoaWxkSURzID0gdmVjdG9yQXR0cmli
dXRlVmFsdWU8QVhJRD4ocHJvcGVydHlOYW1lKTsKKyAgICBjaGlsZHJlbi5yZXNlcnZlQ2FwYWNp
dHkoY2hpbGRJRHMuc2l6ZSgpKTsKKyAgICBmb3IgKGF1dG8gY2hpbGRJRCA6IGNoaWxkSURzKSB7
CisgICAgICAgIGlmIChhdXRvIG9iamVjdCA9IHRyZWUoKS0+bm9kZUZvcklEKGNoaWxkSUQpKQor
ICAgICAgICAgICAgY2hpbGRyZW4udW5jaGVja2VkQXBwZW5kKG9iamVjdCk7CisgICAgfQorfQor
CiB2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OnVwZGF0ZUJhY2tpbmdTdG9yZSgpCiB7CiAgICAgQVNT
RVJUKCFpc01haW5UaHJlYWQoKSk7CkBAIC0yODUsNiArNjkzLDEwNDkgQEAgdm9pZCBBWElzb2xh
dGVkT2JqZWN0Ojp1cGRhdGVCYWNraW5nU3RvcmUoKQogICAgIH0KIH0KIAorYm9vbCBBWElzb2xh
dGVkT2JqZWN0OjpyZXBsYWNlVGV4dEluUmFuZ2UoY29uc3QgU3RyaW5nJiwgY29uc3QgUGxhaW5U
ZXh0UmFuZ2UmKQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxz
ZTsKK30KKworYm9vbCBBWElzb2xhdGVkT2JqZWN0OjppbnNlcnRUZXh0KGNvbnN0IFN0cmluZyYp
Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiti
b29sIEFYSXNvbGF0ZWRPYmplY3Q6OnByZXNzKCkKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQVhJc29sYXRlZE9iamVjdDo6cGVyZm9y
bURlZmF1bHRBY3Rpb24oKQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVy
biBmYWxzZTsKK30KKworYm9vbCBBWElzb2xhdGVkT2JqZWN0Ojppc0FjY2Vzc2liaWxpdHlPYmpl
Y3QoKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxz
ZTsKK30KKworYm9vbCBBWElzb2xhdGVkT2JqZWN0Ojppc0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0
KCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK2Jvb2wgQVhJc29sYXRlZE9iamVjdDo6aXNBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
KCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK2Jvb2wgQVhJc29sYXRlZE9iamVjdDo6aXNBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyKCkg
Y29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK2Jvb2wgQVhJc29sYXRlZE9iamVjdDo6aXNBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldygpIGNv
bnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQor
Citib29sIEFYSXNvbGF0ZWRPYmplY3Q6OmlzQWNjZXNzaWJpbGl0eVNWR1Jvb3QoKSBjb25zdAor
eworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9v
bCBBWElzb2xhdGVkT2JqZWN0Ojppc0FjY2Vzc2liaWxpdHlTVkdFbGVtZW50KCkgY29uc3QKK3sK
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wg
QVhJc29sYXRlZE9iamVjdDo6Y29udGFpbnNUZXh0KFN0cmluZyopIGNvbnN0Cit7CisgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFYSXNvbGF0
ZWRPYmplY3Q6OmlzQXR0YWNobWVudEVsZW1lbnQoKSBjb25zdAoreworICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBWElzb2xhdGVkT2JqZWN0
Ojppc05hdGl2ZUltYWdlKCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQVhJc29sYXRlZE9iamVjdDo6aXNJbWFnZUJ1dHRv
bigpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCitib29sIEFYSXNvbGF0ZWRPYmplY3Q6OmlzQ29udGFpbmVkQnlQYXNzd29yZEZpZWxk
KCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK0FYQ29yZU9iamVjdCogQVhJc29sYXRlZE9iamVjdDo6cGFzc3dvcmRGaWVsZE9yQ29u
dGFpbmluZ1Bhc3N3b3JkRmllbGQoKQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IHJldHVybiBudWxscHRyOworfQorCitib29sIEFYSXNvbGF0ZWRPYmplY3Q6OmlzTmF0aXZlVGV4
dENvbnRyb2woKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVy
biBmYWxzZTsKK30KKworYm9vbCBBWElzb2xhdGVkT2JqZWN0Ojppc05hdGl2ZUxpc3RCb3goKSBj
b25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30K
KworYm9vbCBBWElzb2xhdGVkT2JqZWN0Ojppc0xpc3RCb3hPcHRpb24oKSBjb25zdAoreworICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBWElz
b2xhdGVkT2JqZWN0Ojppc1NsaWRlclRodW1iKCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQVhJc29sYXRlZE9iamVjdDo6
aXNJbnB1dFNsaWRlcigpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
cmV0dXJuIGZhbHNlOworfQorCitib29sIEFYSXNvbGF0ZWRPYmplY3Q6OmlzTGFiZWwoKSBjb25z
dAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwor
Ym9vbCBBWElzb2xhdGVkT2JqZWN0Ojppc0RhdGFUYWJsZSgpIGNvbnN0Cit7CisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFYSXNvbGF0ZWRP
YmplY3Q6OmlzSW1hZ2VNYXBMaW5rKCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQVhJc29sYXRlZE9iamVjdDo6aXNOYXRp
dmVTcGluQnV0dG9uKCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQVhJc29sYXRlZE9iamVjdDo6aXNTcGluQnV0dG9uUGFy
dCgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCitib29sIEFYSXNvbGF0ZWRPYmplY3Q6OmlzTW9ja09iamVjdCgpIGNvbnN0Cit7Cisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFY
SXNvbGF0ZWRPYmplY3Q6OmlzTWVkaWFPYmplY3QoKSBjb25zdAoreworICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBWElzb2xhdGVkT2JqZWN0
Ojppc0FSSUFUZXh0Q29udHJvbCgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFYSXNvbGF0ZWRPYmplY3Q6OmlzTm9uTmF0
aXZlVGV4dENvbnRyb2woKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBWElzb2xhdGVkT2JqZWN0Ojppc0Jsb2NrcXVvdGUo
KSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsK
K30KKworYm9vbCBBWElzb2xhdGVkT2JqZWN0Ojppc0xhbmRtYXJrKCkgY29uc3QKK3sKKyAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQVhJc29s
YXRlZE9iamVjdDo6aXNGaWd1cmVFbGVtZW50KCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQVhJc29sYXRlZE9iamVjdDo6
aXNLZXlib2FyZEZvY3VzYWJsZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFYSXNvbGF0ZWRPYmplY3Q6OmlzSG92ZXJl
ZCgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCitib29sIEFYSXNvbGF0ZWRPYmplY3Q6OmlzSW5kZXRlcm1pbmF0ZSgpIGNvbnN0Cit7
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29s
IEFYSXNvbGF0ZWRPYmplY3Q6OmlzTG9hZGVkKCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQVhJc29sYXRlZE9iamVjdDo6
aXNPblNjcmVlbigpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0
dXJuIGZhbHNlOworfQorCitib29sIEFYSXNvbGF0ZWRPYmplY3Q6OmlzT2ZmU2NyZWVuKCkgY29u
c3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K2Jvb2wgQVhJc29sYXRlZE9iamVjdDo6aXNQcmVzc2VkKCkgY29uc3QKK3sKKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQVhJc29sYXRlZE9i
amVjdDo6aXNVbnZpc2l0ZWQoKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBWElzb2xhdGVkT2JqZWN0Ojppc0xpbmtlZCgp
IGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCitib29sIEFYSXNvbGF0ZWRPYmplY3Q6OmlzVmlzaWJsZSgpIGNvbnN0Cit7CisgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFYSXNvbGF0
ZWRPYmplY3Q6OmlzQ29sbGFwc2VkKCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQVhJc29sYXRlZE9iamVjdDo6aXNTZWxl
Y3RlZE9wdGlvbkFjdGl2ZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFYSXNvbGF0ZWRPYmplY3Q6Omhhc0JvbGRGb250
KCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK2Jvb2wgQVhJc29sYXRlZE9iamVjdDo6aGFzSXRhbGljRm9udCgpIGNvbnN0Cit7Cisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFY
SXNvbGF0ZWRPYmplY3Q6Omhhc01pc3NwZWxsaW5nKCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQVhJc29sYXRlZE9iamVj
dDo6aGFzUGxhaW5UZXh0KCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQVhJc29sYXRlZE9iamVjdDo6aGFzU2FtZUZvbnQo
UmVuZGVyT2JqZWN0KikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQVhJc29sYXRlZE9iamVjdDo6aGFzU2FtZUZvbnRDb2xv
cihSZW5kZXJPYmplY3QqKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBWElzb2xhdGVkT2JqZWN0OjpoYXNTYW1lU3R5bGUo
UmVuZGVyT2JqZWN0KikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQVhJc29sYXRlZE9iamVjdDo6aXNTdGF0aWNUZXh0KCkg
Y29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK2Jvb2wgQVhJc29sYXRlZE9iamVjdDo6aGFzVW5kZXJsaW5lKCkgY29uc3QKK3sKKyAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQVhJc29s
YXRlZE9iamVjdDo6aGFzSGlnaGxpZ2h0aW5nKCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK0VsZW1lbnQqIEFYSXNvbGF0ZWRPYmpl
Y3Q6OmVsZW1lbnQoKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJl
dHVybiBudWxscHRyOworfQorCitOb2RlKiBBWElzb2xhdGVkT2JqZWN0Ojpub2RlKCkgY29uc3QK
K3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwor
UmVuZGVyT2JqZWN0KiBBWElzb2xhdGVkT2JqZWN0OjpyZW5kZXJlcigpIGNvbnN0Cit7CisgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0FjY2Vzc2li
aWxpdHlPYmplY3RJbmNsdXNpb24gQVhJc29sYXRlZE9iamVjdDo6ZGVmYXVsdE9iamVjdEluY2x1
c2lvbigpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIEFj
Y2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246OkRlZmF1bHRCZWhhdmlvcjsKK30KKworYm9vbCBB
WElzb2xhdGVkT2JqZWN0OjphY2Nlc3NpYmlsaXR5SXNJZ25vcmVkQnlEZWZhdWx0KCkgY29uc3QK
K3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Zs
b2F0IEFYSXNvbGF0ZWRPYmplY3Q6OnN0ZXBWYWx1ZUZvclJhbmdlKCkgY29uc3QKK3sKKyAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gMDsKK30KKworQVhDb3JlT2JqZWN0KiBB
WElzb2xhdGVkT2JqZWN0OjpzZWxlY3RlZExpc3RJdGVtKCkKK3sKKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordm9pZCBBWElzb2xhdGVkT2JqZWN0
OjphcmlhQWN0aXZlRGVzY2VuZGFudFJlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yJikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwor
dm9pZCBBWElzb2xhdGVkT2JqZWN0OjphcmlhQ29udHJvbHNSZWZlcmVuY2luZ0VsZW1lbnRzKEFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Cit9CisKK3ZvaWQgQVhJc29sYXRlZE9iamVjdDo6YXJpYURlc2NyaWJlZEJ5RWxlbWVu
dHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKK30KKwordm9pZCBBWElzb2xhdGVkT2JqZWN0OjphcmlhRGVzY3JpYmVkQnlS
ZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0Cit7
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgQVhJc29sYXRlZE9iamVjdDo6
YXJpYURldGFpbHNSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3Rv
ciYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgQVhJc29s
YXRlZE9iamVjdDo6YXJpYUVycm9yTWVzc2FnZVJlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
K30KKwordm9pZCBBWElzb2xhdGVkT2JqZWN0OjphcmlhRmxvd1RvUmVmZXJlbmNpbmdFbGVtZW50
cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdAoreworICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworfQorCit2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OmFyaWFMYWJlbGxlZEJ5RWxl
bWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3QKK3sKKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBBWElzb2xhdGVkT2JqZWN0OjphcmlhTGFiZWxsZWRC
eVJlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3QK
K3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBBWElzb2xhdGVkT2JqZWN0
OjphcmlhT3duc1JlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
JikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworYm9vbCBBWElzb2xh
dGVkT2JqZWN0OjpoYXNEYXRhbGlzdCgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFYSXNvbGF0ZWRPYmplY3Q6OnN1cHBv
cnRzSGFzUG9wdXAoKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJl
dHVybiBmYWxzZTsKK30KKworYm9vbCBBWElzb2xhdGVkT2JqZWN0OjpzdXBwb3J0c1ByZXNzZWQo
KSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsK
K30KKworYm9vbCBBWElzb2xhdGVkT2JqZWN0OjpzdXBwb3J0c0NoZWNrZWQoKSBjb25zdAorewor
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBB
WElzb2xhdGVkT2JqZWN0OjppZ25vcmVkRnJvbU1vZGFsUHJlc2VuY2UoKSBjb25zdAoreworICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBWElz
b2xhdGVkT2JqZWN0Ojppc01vZGFsRGVzY2VuZGFudChOb2RlKikgY29uc3QKK3sKKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQVhJc29sYXRl
ZE9iamVjdDo6aXNNb2RhbE5vZGUoKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIHJldHVybiBmYWxzZTsKK30KKworQVhDb3JlT2JqZWN0KiBBWElzb2xhdGVkT2JqZWN0
OjplbGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmKSBjb25zdAorewor
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitBWENv
cmVPYmplY3QqIEFYSXNvbGF0ZWRPYmplY3Q6OmZpcnN0Q2hpbGQoKSBjb25zdAoreworICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitBWENvcmVPYmpl
Y3QqIEFYSXNvbGF0ZWRPYmplY3Q6Omxhc3RDaGlsZCgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0FYQ29yZU9iamVjdCogQVhJ
c29sYXRlZE9iamVjdDo6cHJldmlvdXNTaWJsaW5nKCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworQVhDb3JlT2JqZWN0KiBBWElz
b2xhdGVkT2JqZWN0OjpuZXh0U2libGluZygpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0FYQ29yZU9iamVjdCogQVhJc29sYXRl
ZE9iamVjdDo6bmV4dFNpYmxpbmdVbmlnbm9yZWQoaW50KSBjb25zdAoreworICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitBWENvcmVPYmplY3QqIEFY
SXNvbGF0ZWRPYmplY3Q6OnByZXZpb3VzU2libGluZ1VuaWdub3JlZChpbnQpIGNvbnN0Cit7Cisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0FYQ29y
ZU9iamVjdCogQVhJc29sYXRlZE9iamVjdDo6cGFyZW50T2JqZWN0SWZFeGlzdHMoKSBjb25zdAor
eworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCiti
b29sIEFYSXNvbGF0ZWRPYmplY3Q6OmlzRGVzY2VuZGFudE9mQmFycmVuUGFyZW50KCkgY29uc3QK
K3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jv
b2wgQVhJc29sYXRlZE9iamVjdDo6aXNEZXNjZW5kYW50T2ZSb2xlKEFjY2Vzc2liaWxpdHlSb2xl
KSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsK
K30KKworQVhDb3JlT2JqZWN0KiBBWElzb2xhdGVkT2JqZWN0OjpvYnNlcnZhYmxlT2JqZWN0KCkg
Y29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsK
K30KKworQVhDb3JlT2JqZWN0KiBBWElzb2xhdGVkT2JqZWN0Ojpjb3JyZXNwb25kaW5nTGFiZWxG
b3JDb250cm9sRWxlbWVudCgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0FYQ29yZU9iamVjdCogQVhJc29sYXRlZE9iamVjdDo6
Y29ycmVzcG9uZGluZ0NvbnRyb2xGb3JMYWJlbEVsZW1lbnQoKSBjb25zdAoreworICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitib29sIEFYSXNvbGF0
ZWRPYmplY3Q6OmlzUHJlc2VudGF0aW9uYWxDaGlsZE9mQXJpYVJvbGUoKSBjb25zdAoreworICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBWElz
b2xhdGVkT2JqZWN0OjphcmlhUm9sZUhhc1ByZXNlbnRhdGlvbmFsQ2hpbGRyZW4oKSBjb25zdAor
eworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9v
bCBBWElzb2xhdGVkT2JqZWN0Ojppbmhlcml0c1ByZXNlbnRhdGlvbmFsUm9sZSgpIGNvbnN0Cit7
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lk
IEFYSXNvbGF0ZWRPYmplY3Q6OnNldEFjY2Vzc2libGVOYW1lKGNvbnN0IEF0b21TdHJpbmcmKQor
eworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCitib29sIEFYSXNvbGF0ZWRPYmplY3Q6
Omhhc0F0dHJpYnV0ZXNSZXF1aXJlZEZvckluY2x1c2lvbigpIGNvbnN0Cit7CisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitTdHJpbmcgQVhJc29sYXRl
ZE9iamVjdDo6YWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKCkgY29uc3QKK3sKKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBBWElzb2xh
dGVkT2JqZWN0Ojp0aXRsZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgQVhJc29sYXRlZE9iamVjdDo6aGVscFRl
eHQoKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBTdHJp
bmcoKTsKK30KKworYm9vbCBBWElzb2xhdGVkT2JqZWN0Ojppc0FSSUFTdGF0aWNUZXh0KCkgY29u
c3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K1N0cmluZyBBWElzb2xhdGVkT2JqZWN0OjpzdHJpbmdWYWx1ZSgpIGNvbnN0Cit7CisgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgQVhJ
c29sYXRlZE9iamVjdDo6dGV4dCgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgQVhJc29sYXRlZE9iamVjdDo6YXJp
YUxhYmVsZWRCeUF0dHJpYnV0ZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgQVhJc29sYXRlZE9iamVjdDo6YXJp
YURlc2NyaWJlZEJ5QXR0cmlidXRlKCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK2Jvb2wgQVhJc29sYXRlZE9iamVjdDo6YWNj
ZXNzaWJsZU5hbWVEZXJpdmVzRnJvbUNvbnRlbnQoKSBjb25zdAoreworICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBBWElzb2xhdGVkT2JqZWN0
OjplbGVtZW50c0Zyb21BdHRyaWJ1dGUoVmVjdG9yPEVsZW1lbnQqPiYsIGNvbnN0IFF1YWxpZmll
ZE5hbWUmKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCitBWE9iamVj
dENhY2hlKiBBWElzb2xhdGVkT2JqZWN0OjpheE9iamVjdENhY2hlKCkgY29uc3QKK3sKKyAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworRWxlbWVudCog
QVhJc29sYXRlZE9iamVjdDo6YW5jaG9yRWxlbWVudCgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0VsZW1lbnQqIEFYSXNvbGF0
ZWRPYmplY3Q6OmFjdGlvbkVsZW1lbnQoKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitQYXRoIEFYSXNvbGF0ZWRPYmplY3Q6OmVs
ZW1lbnRQYXRoKCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1
cm4gUGF0aCgpOworfQorCitib29sIEFYSXNvbGF0ZWRPYmplY3Q6OnN1cHBvcnRzUGF0aCgpIGNv
bnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQor
CitUZXh0SXRlcmF0b3JCZWhhdmlvciBBWElzb2xhdGVkT2JqZWN0Ojp0ZXh0SXRlcmF0b3JCZWhh
dmlvckZvclRleHRSYW5nZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorCitXaWRnZXQqIEFYSXNvbGF0ZWRPYmplY3Q6OndpZGdldCgp
IGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIG51bGxwdHI7
Cit9CisKK1dpZGdldCogQVhJc29sYXRlZE9iamVjdDo6d2lkZ2V0Rm9yQXR0YWNobWVudFZpZXco
KSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBudWxscHRy
OworfQorCitQYWdlKiBBWElzb2xhdGVkT2JqZWN0OjpwYWdlKCkgY29uc3QKK3sKKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworRG9jdW1lbnQqIEFY
SXNvbGF0ZWRPYmplY3Q6OmRvY3VtZW50KCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworRnJhbWVWaWV3KiBBWElzb2xhdGVkT2Jq
ZWN0Ojpkb2N1bWVudEZyYW1lVmlldygpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0ZyYW1lKiBBWElzb2xhdGVkT2JqZWN0Ojpm
cmFtZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIG51
bGxwdHI7Cit9CisKK0ZyYW1lKiBBWElzb2xhdGVkT2JqZWN0OjptYWluRnJhbWUoKSBjb25zdAor
eworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitE
b2N1bWVudCogQVhJc29sYXRlZE9iamVjdDo6dG9wRG9jdW1lbnQoKSBjb25zdAoreworICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitTY3JvbGxWaWV3
KiBBWElzb2xhdGVkT2JqZWN0OjpzY3JvbGxWaWV3QW5jZXN0b3IoKSBjb25zdAoreworICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCit2b2lkIEFYSXNv
bGF0ZWRPYmplY3Q6OmNoaWxkcmVuQ2hhbmdlZCgpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Cit9CisKK3ZvaWQgQVhJc29sYXRlZE9iamVjdDo6dGV4dENoYW5nZWQoKQoreworICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OnVwZGF0ZUFj
Y2Vzc2liaWxpdHlSb2xlKCkKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9p
ZCBBWElzb2xhdGVkT2JqZWN0OjphZGRDaGlsZHJlbigpCit7CisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Cit9CisKK3ZvaWQgQVhJc29sYXRlZE9iamVjdDo6YWRkQ2hpbGQoQVhDb3JlT2JqZWN0
KikKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBBWElzb2xhdGVkT2Jq
ZWN0OjppbnNlcnRDaGlsZChBWENvcmVPYmplY3QqLCB1bnNpZ25lZCkKK3sKKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKK30KKworYm9vbCBBWElzb2xhdGVkT2JqZWN0OjpzaG91bGRJZ25vcmVB
dHRyaWJ1dGVSb2xlKCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQVhJc29sYXRlZE9iamVjdDo6Y2FuSGF2ZUNoaWxkcmVu
KCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK2Jvb2wgQVhJc29sYXRlZE9iamVjdDo6aGFzQ2hpbGRyZW4oKSBjb25zdAoreworICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBBWElz
b2xhdGVkT2JqZWN0OjpzZXROZWVkc1RvVXBkYXRlQ2hpbGRyZW4oKQoreworICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworfQorCit2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OnNldE5lZWRzVG9VcGRh
dGVTdWJ0cmVlKCkKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBBWElz
b2xhdGVkT2JqZWN0OjpjbGVhckNoaWxkcmVuKCkKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKK30KKworYm9vbCBBWElzb2xhdGVkT2JqZWN0OjpuZWVkc1RvVXBkYXRlQ2hpbGRyZW4oKSBj
b25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30K
Kwordm9pZCBBWElzb2xhdGVkT2JqZWN0OjpkZXRhY2hGcm9tUGFyZW50KCkKK3sKKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKK30KKworYm9vbCBBWElzb2xhdGVkT2JqZWN0OjpzaG91bGRGb2N1
c0FjdGl2ZURlc2NlbmRhbnQoKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIHJldHVybiBmYWxzZTsKK30KKworQVhDb3JlT2JqZWN0KiBBWElzb2xhdGVkT2JqZWN0Ojph
Y3RpdmVEZXNjZW5kYW50KCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gbnVsbHB0cjsKK30KKwordm9pZCBBWElzb2xhdGVkT2JqZWN0OjpoYW5kbGVBY3Rp
dmVEZXNjZW5kYW50Q2hhbmdlZCgpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisK
K3ZvaWQgQVhJc29sYXRlZE9iamVjdDo6aGFuZGxlQXJpYUV4cGFuZGVkQ2hhbmdlZCgpCit7Cisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK2Jvb2wgQVhJc29sYXRlZE9iamVjdDo6aXNE
ZXNjZW5kYW50T2ZPYmplY3QoY29uc3QgQVhDb3JlT2JqZWN0KikgY29uc3QKK3sKKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQVhJc29sYXRl
ZE9iamVjdDo6aXNBbmNlc3Rvck9mT2JqZWN0KGNvbnN0IEFYQ29yZU9iamVjdCopIGNvbnN0Cit7
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitBWENv
cmVPYmplY3QqIEFYSXNvbGF0ZWRPYmplY3Q6OmZpcnN0QW5vbnltb3VzQmxvY2tDaGlsZCgpIGNv
bnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9
CisKK2Jvb2wgQVhJc29sYXRlZE9iamVjdDo6aGFzQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxz
ZTsKK30KKworY29uc3QgQXRvbVN0cmluZyYgQVhJc29sYXRlZE9iamVjdDo6Z2V0QXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIHJldHVybiBudWxsQXRvbSgpOworfQorCitib29sIEFYSXNvbGF0ZWRPYmplY3Q6Omhh
c1RhZ05hbWUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitTdHJpbmcgQVhJc29sYXRlZE9iamVj
dDo6c3RyaW5nVmFsdWVGb3JNU0FBKCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBBWElzb2xhdGVkT2JqZWN0Ojpz
dHJpbmdSb2xlRm9yTVNBQSgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgQVhJc29sYXRlZE9iamVjdDo6bmFtZUZv
ck1TQUEoKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBT
dHJpbmcoKTsKK30KKworU3RyaW5nIEFYSXNvbGF0ZWRPYmplY3Q6OmRlc2NyaXB0aW9uRm9yTVNB
QSgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFN0cmlu
ZygpOworfQorCitBY2Nlc3NpYmlsaXR5Um9sZSBBWElzb2xhdGVkT2JqZWN0Ojpyb2xlVmFsdWVG
b3JNU0FBKCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4g
QWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd247Cit9CisKK1N0cmluZyBBWElzb2xhdGVkT2JqZWN0
OjpwYXNzd29yZEZpZWxkVmFsdWUoKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworQVhDb3JlT2JqZWN0KiBBWElzb2xhdGVkT2Jq
ZWN0OjpsaXZlUmVnaW9uQW5jZXN0b3IoYm9vbCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworYm9vbCBBWElzb2xhdGVkT2JqZWN0
OjpoYXNDb250ZW50RWRpdGFibGVBdHRyaWJ1dGVTZXQoKSBjb25zdAoreworICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBWElzb2xhdGVkT2Jq
ZWN0OjpzdXBwb3J0c1JlYWRPbmx5KCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQVhJc29sYXRlZE9iamVjdDo6c3VwcG9y
dHNBdXRvQ29tcGxldGUoKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBWElzb2xhdGVkT2JqZWN0OjpzdXBwb3J0c0FSSUFB
dHRyaWJ1dGVzKCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK2Jvb2wgQVhJc29sYXRlZE9iamVjdDo6c2Nyb2xsQnlQYWdlKFNjcm9s
bEJ5UGFnZURpcmVjdGlvbikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK0ludFBvaW50IEFYSXNvbGF0ZWRPYmplY3Q6OnNjcm9sbFBv
c2l0aW9uKCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4g
SW50UG9pbnQoKTsKK30KKworSW50U2l6ZSBBWElzb2xhdGVkT2JqZWN0OjpzY3JvbGxDb250ZW50
c1NpemUoKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBJ
bnRTaXplKCk7Cit9CisKK0ludFJlY3QgQVhJc29sYXRlZE9iamVjdDo6c2Nyb2xsVmlzaWJsZUNv
bnRlbnRSZWN0KCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1
cm4gSW50UmVjdCgpOworfQorCit2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OnNjcm9sbFRvTWFrZVZp
c2libGUoY29uc3QgU2Nyb2xsUmVjdFRvVmlzaWJsZU9wdGlvbnMmKSBjb25zdAoreworICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCitib29sIEFYSXNvbGF0ZWRPYmplY3Q6Omxhc3RLbm93
bklzSWdub3JlZFZhbHVlKCkKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK3ZvaWQgQVhJc29sYXRlZE9iamVjdDo6c2V0TGFzdEtub3duSXNJZ25v
cmVkVmFsdWUoYm9vbCkKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBB
WElzb2xhdGVkT2JqZWN0Ojpub3RpZnlJZklnbm9yZWRWYWx1ZUNoYW5nZWQoKQoreworICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCitib29sIEFYSXNvbGF0ZWRPYmplY3Q6OmlzTWF0aFNj
cmlwdE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0aFNjcmlwdE9iamVjdFR5cGUpIGNvbnN0Cit7Cisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFY
SXNvbGF0ZWRPYmplY3Q6OmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlNYXRo
TXVsdGlzY3JpcHRPYmplY3RUeXBlKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBWElzb2xhdGVkT2JqZWN0Ojppc0FYSGlk
ZGVuKCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK2Jvb2wgQVhJc29sYXRlZE9iamVjdDo6aXNET01IaWRkZW4oKSBjb25zdAorewor
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBB
WElzb2xhdGVkT2JqZWN0Ojppc0hpZGRlbigpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6Om92
ZXJyaWRlQXR0YWNobWVudFBhcmVudChBWENvcmVPYmplY3QqKQoreworICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworfQorCitib29sIEFYSXNvbGF0ZWRPYmplY3Q6OmFjY2Vzc2liaWxpdHlJZ25v
cmVBdHRhY2htZW50KCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK0FjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gQVhJc29sYXRl
ZE9iamVjdDo6YWNjZXNzaWJpbGl0eVBsYXRmb3JtSW5jbHVkZXNPYmplY3QoKSBjb25zdAorewor
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T2JqZWN0
SW5jbHVzaW9uOjpEZWZhdWx0QmVoYXZpb3I7Cit9CisKK2Jvb2wgQVhJc29sYXRlZE9iamVjdDo6
aGFzQXBwbGVQREZBbm5vdGF0aW9uQXR0cmlidXRlKCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2NvbnN0IEFjY2Vzc2liaWxpdHlT
Y3JvbGxWaWV3KiBBWElzb2xhdGVkT2JqZWN0OjphbmNlc3RvckFjY2Vzc2liaWxpdHlTY3JvbGxW
aWV3KGJvb2wpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJu
IG51bGxwdHI7Cit9CisKK3ZvaWQgQVhJc29sYXRlZE9iamVjdDo6c2V0SXNJZ25vcmVkRnJvbVBh
cmVudERhdGEoQWNjZXNzaWJpbGl0eUlzSWdub3JlZEZyb21QYXJlbnREYXRhJikKK3sKKyAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBBWElzb2xhdGVkT2JqZWN0OjpjbGVhcklz
SWdub3JlZEZyb21QYXJlbnREYXRhKCkKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30K
Kwordm9pZCBBWElzb2xhdGVkT2JqZWN0OjpzZXRJc0lnbm9yZWRGcm9tUGFyZW50RGF0YUZvckNo
aWxkKEFYQ29yZU9iamVjdCopCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRSgoQUNDRVNTSUJJTElUWV9J
U09MQVRFRF9UUkVFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
c29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWVOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZU5vZGUuaAppbmRleCBiZDc1Nzk4ZTQz
Y2NiOWYzM2Y3YTlmMmM0NmJkMjM5Yjc3NjlkZWIxLi45ZGFlMmYxMjYyNzZiOGMwM2JlODhmNTA4
ZTkyZDFkYzIzYzZlMjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZU5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZU5vZGUuaApAQCAtNDcsNyAr
NDcsNyBAQCBjbGFzcyBBWElzb2xhdGVkVHJlZTsKIAogY2xhc3MgQVhJc29sYXRlZE9iamVjdCBm
aW5hbCA6IHB1YmxpYyBBWENvcmVPYmplY3QgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8QVhJ
c29sYXRlZE9iamVjdD4gY3JlYXRlKEFYQ29yZU9iamVjdCYpOworICAgIHN0YXRpYyBSZWY8QVhJ
c29sYXRlZE9iamVjdD4gY3JlYXRlKEFYQ29yZU9iamVjdCYsIGJvb2wgaXNSb290KTsKICAgICB+
QVhJc29sYXRlZE9iamVjdCgpOwogCiAgICAgdm9pZCBzZXRPYmplY3RJRChBWElEIGlkKSBvdmVy
cmlkZSB7IG1faWQgPSBpZDsgfQpAQCAtNTYsNjA2ICs1NiwxMTAgQEAgcHVibGljOgogCiAgICAg
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIqIHdyYXBwZXIoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBtX3dyYXBwZXIuZ2V0KCk7IH0KICAgICB2b2lkIGRldGFjaChBY2Nlc3NpYmlsaXR5RGV0
YWNobWVudFR5cGUsIEFYT2JqZWN0Q2FjaGUqID0gbnVsbHB0cikgb3ZlcnJpZGUgeyB9Ci0gICAg
Ym9vbCBpc0RldGFjaGVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBi
b29sIGlzRGV0YWNoZWQoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgc2V0VHJlZUlkZW50
aWZpZXIoQVhJc29sYXRlZFRyZWVJRCk7CiAgICAgdm9pZCBzZXRQYXJlbnQoQVhJRCk7CiAgICAg
dm9pZCBhcHBlbmRDaGlsZChBWElEKTsKIAogcHJpdmF0ZToKLSAgICBib29sIGlzQWNjZXNzaWJp
bGl0eU9iamVjdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBp
c0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7
IH0KLSAgICBib29sIGlzQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc0FjY2Vzc2liaWxpdHlTY3JvbGxiYXIoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5
U2Nyb2xsVmlldygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBp
c0FjY2Vzc2liaWxpdHlTVkdSb290KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0K
LSAgICBib29sIGlzQWNjZXNzaWJpbGl0eVNWR0VsZW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBmYWxzZTsgfQotCi0gICAgYm9vbCBjb250YWluc1RleHQoU3RyaW5nICopIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc0F0dGFjaG1lbnRFbGVtZW50KCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzSGVhZGluZygpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc0xpbmsoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzTGlu
ayk7IH0KLSAgICBib29sIGlzSW1hZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0
cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzSW1hZ2UpOyB9Ci0gICAgYm9vbCBpc0ltYWdl
TWFwKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzTmF0aXZl
SW1hZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNJbWFn
ZUJ1dHRvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc1Bh
c3N3b3JkRmllbGQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wg
aXNDb250YWluZWRCeVBhc3N3b3JkRmllbGQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxz
ZTsgfQotICAgIEFYQ29yZU9iamVjdCogcGFzc3dvcmRGaWVsZE9yQ29udGFpbmluZ1Bhc3N3b3Jk
RmllbGQoKSBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgYm9vbCBpc05hdGl2ZVRl
eHRDb250cm9sKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlz
U2VhcmNoRmllbGQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wg
aXNXZWJBcmVhKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlz
Q2hlY2tib3goKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNS
YWRpb0J1dHRvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBp
c05hdGl2ZUxpc3RCb3goKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJv
b2wgaXNMaXN0Qm94KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29s
IGlzTGlzdEJveE9wdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
Ym9vbCBpc0F0dGFjaG1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRl
VmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzQXR0YWNobWVudCk7IH0KLSAgICBib29sIGlzTWVkaWFU
aW1lbGluZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc01l
bnVSZWxhdGVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlz
TWVudSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc01lbnVC
YXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNNZW51QnV0
dG9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzTWVudUl0
ZW0oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNGaWxlVXBs
b2FkQnV0dG9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFY
UHJvcGVydHlOYW1lOjpJc0ZpbGVVcGxvYWRCdXR0b24pOyB9Ci0gICAgYm9vbCBpc0lucHV0SW1h
Z2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNQcm9ncmVz
c0luZGljYXRvcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBp
c1NsaWRlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc1Ns
aWRlclRodW1iKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlz
SW5wdXRTbGlkZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wg
aXNDb250cm9sKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlz
TGFiZWwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNMaXN0
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzVGFibGUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNEYXRhVGFibGUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNUYWJsZVJvdygpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc1RhYmxlQ29sdW1uKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzVGFibGVDZWxsKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzRmllbGRzZXQoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNHcm91cCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc0FSSUFUcmVlR3JpZFJvdygp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc0ltYWdlTWFwTGlu
aygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5
TmFtZTo6SXNJbWFnZU1hcExpbmspOyB9Ci0gICAgYm9vbCBpc01lbnVMaXN0KCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzTWVudUxpc3RQb3B1cCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc01lbnVMaXN0T3B0aW9uKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzU3BpbkJ1dHRvbigp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc05hdGl2ZVNwaW5C
dXR0b24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNTcGlu
QnV0dG9uUGFydCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBp
c01vY2tPYmplY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wg
aXNNZWRpYUNvbnRyb2xMYWJlbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1
dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNNZWRpYUNvbnRyb2xMYWJlbCk7IH0KLSAgICBib29s
IGlzTWVkaWFPYmplY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJv
b2wgaXNTd2l0Y2goKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wg
aXNUb2dnbGVCdXR0b24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJv
b2wgaXNUZXh0Q29udHJvbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
Ym9vbCBpc0FSSUFUZXh0Q29udHJvbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
Ci0gICAgYm9vbCBpc05vbk5hdGl2ZVRleHRDb250cm9sKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KLSAgICBib29sIGlzVGFiTGlzdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9Ci0gICAgYm9vbCBpc1RhYkl0ZW0oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQotICAgIGJvb2wgaXNSYWRpb0dyb3VwKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
ZmFsc2U7IH0KLSAgICBib29sIGlzQ29tYm9Cb3goKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQotICAgIGJvb2wgaXNUcmVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0
dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc1RyZWUpOyB9Ci0gICAgYm9vbCBpc1RyZWVH
cmlkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzVHJlZUl0
ZW0oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0
eU5hbWU6OklzVHJlZUl0ZW0pOyB9Ci0gICAgYm9vbCBpc1Njcm9sbGJhcigpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNTY3JvbGxi
YXIpOyB9Ci0gICAgYm9vbCBpc0J1dHRvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgYm9vbCBpc0xpc3RJdGVtKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7
IH0KLSAgICBib29sIGlzQ2hlY2tib3hPclJhZGlvKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
ZmFsc2U7IH0KLSAgICBib29sIGlzU2Nyb2xsVmlldygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9Ci0gICAgYm9vbCBpc0NhbnZhcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9Ci0gICAgYm9vbCBpc1BvcFVwQnV0dG9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
ZmFsc2U7IH0KLSAgICBib29sIGlzQmxvY2txdW90ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9Ci0gICAgYm9vbCBpc0xhbmRtYXJrKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
ZmFsc2U7IH0KLSAgICBib29sIGlzQ29sb3JXZWxsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
ZmFsc2U7IH0KLSAgICBib29sIGlzUmFuZ2VDb250cm9sKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KLSAgICBib29sIGlzTWV0ZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQotICAgIGJvb2wgaXNTcGxpdHRlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9Ci0gICAgYm9vbCBpc1Rvb2xiYXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxz
ZTsgfQotICAgIGJvb2wgaXNTdHlsZUZvcm1hdEdyb3VwKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KLSAgICBib29sIGlzRmlndXJlRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc0tleWJvYXJkRm9jdXNhYmxlKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzU3VtbWFyeSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc091dHB1dCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9Ci0KLSAgICBib29sIGlzQ2hlY2tlZCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNDaGVja2VkKTsg
fQotICAgIGJvb2wgaXNFbmFibGVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJp
YnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc0VuYWJsZWQpOyB9Ci0gICAgYm9vbCBpc1NlbGVj
dGVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVy
dHlOYW1lOjpJc1NlbGVjdGVkKTsgfQotICAgIGJvb2wgaXNGb2N1c2VkKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc0ZvY3VzZWQp
OyB9Ci0gICAgYm9vbCBpc0hvdmVyZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0
cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzSG92ZXJlZCk7IH0KLSAgICBib29sIGlzSW5k
ZXRlcm1pbmF0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShB
WFByb3BlcnR5TmFtZTo6SXNJbmRldGVybWluYXRlKTsgfQotICAgIGJvb2wgaXNMb2FkZWQoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6
OklzTG9hZGVkKTsgfQotICAgIGJvb2wgaXNNdWx0aVNlbGVjdGFibGUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzTXVsdGlTZWxl
Y3RhYmxlKTsgfQotICAgIGJvb2wgaXNPblNjcmVlbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNPblNjcmVlbik7IH0KLSAgICBi
b29sIGlzT2ZmU2NyZWVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZh
bHVlKEFYUHJvcGVydHlOYW1lOjpJc09mZlNjcmVlbik7IH0KLSAgICBib29sIGlzUHJlc3NlZCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFt
ZTo6SXNQcmVzc2VkKTsgfQotICAgIGJvb2wgaXNVbnZpc2l0ZWQoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzVW52aXNpdGVkKTsg
fQotICAgIGJvb2wgaXNWaXNpdGVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJp
YnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc1Zpc2l0ZWQpOyB9Ci0gICAgYm9vbCBpc1JlcXVp
cmVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVy
dHlOYW1lOjpJc1JlcXVpcmVkKTsgfQotICAgIGJvb2wgc3VwcG9ydHNSZXF1aXJlZEF0dHJpYnV0
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5
TmFtZTo6U3VwcG9ydHNSZXF1aXJlZEF0dHJpYnV0ZSk7IH0KLSAgICBib29sIGlzTGlua2VkKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1l
OjpJc0xpbmtlZCk7IH0KLSAgICBib29sIGlzRXhwYW5kZWQoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzRXhwYW5kZWQpOyB9Ci0g
ICAgYm9vbCBpc1Zpc2libGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRl
VmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzVmlzaWJsZSk7IH0KLSAgICBib29sIGlzQ29sbGFwc2Vk
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlO
YW1lOjpJc0NvbGxhcHNlZCk7IH0KLSAgICBGbG9hdFJlY3QgcmVsYXRpdmVGcmFtZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHJlY3RBdHRyaWJ1dGVWYWx1ZTxGbG9hdFJlY3Q+KEFYUHJvcGVy
dHlOYW1lOjpSZWxhdGl2ZUZyYW1lKTsgfQotICAgIEZsb2F0UmVjdCBjb252ZXJ0RnJhbWVUb1Nw
YWNlKGNvbnN0IEZsb2F0UmVjdCYsIEFjY2Vzc2liaWxpdHlDb252ZXJzaW9uU3BhY2UpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIEZsb2F0UmVjdCgpOyB9Ci0KLSAgICBib29sIGlzU2VsZWN0ZWRP
cHRpb25BY3RpdmUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUo
QVhQcm9wZXJ0eU5hbWU6OklzU2VsZWN0ZWRPcHRpb25BY3RpdmUpOyB9Ci0KLSAgICB2b2lkIHNl
dElzRXhwYW5kZWQoYm9vbCkgb3ZlcnJpZGUgeyB9Ci0gICAgYm9vbCBoYXNCb2xkRm9udCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBoYXNJdGFsaWNGb250KCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGhhc01pc3NwZWxsaW5n
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBSZWZQdHI8UmFuZ2U+IGdl
dE1pc3NwZWxsaW5nUmFuZ2UoUmVmUHRyPFJhbmdlPiBjb25zdCYsIEFjY2Vzc2liaWxpdHlTZWFy
Y2hEaXJlY3Rpb24pIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICBib29s
IGhhc1BsYWluVGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9v
bCBoYXNTYW1lRm9udChSZW5kZXJPYmplY3QqKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxz
ZTsgfQotICAgIGJvb2wgaGFzU2FtZUZvbnRDb2xvcihSZW5kZXJPYmplY3QqKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaGFzU2FtZVN0eWxlKFJlbmRlck9iamVj
dCopIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc1N0YXRpY1Rl
eHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaGFzVW5kZXJs
aW5lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGhhc0hpZ2hs
aWdodGluZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0KLSAgICBib29sIHN1
cHBvcnRzRGF0ZXRpbWVBdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQotICAgIGNvbnN0IEF0b21TdHJpbmcmIGRhdGV0aW1lQXR0cmlidXRlVmFsdWUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBudWxsQXRvbSgpOyB9Ci0KLSAgICBib29sIGNhblNldEZvY3VzQXR0
cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGNhblNl
dFRleHRSYW5nZUF0dHJpYnV0ZXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQot
ICAgIGJvb2wgY2FuU2V0VmFsdWVBdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQotICAgIGJvb2wgY2FuU2V0TnVtZXJpY1ZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGNhblNldFNlbGVjdGVkQXR0cmlidXRlKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGNhblNldFNlbGVjdGVkQ2hpbGRy
ZW5BdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wg
Y2FuU2V0RXhwYW5kZWRBdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQotCi0gICAgRWxlbWVudCogZWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxw
dHI7IH0KLSAgICBOb2RlKiBub2RlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsg
fQotICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBu
dWxscHRyOyB9Ci0KLSAgICBib29sIGFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzQWNjZXNz
aWJpbGl0eUlnbm9yZWQpOyB9Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiBkZWZh
dWx0T2JqZWN0SW5jbHVzaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQWNjZXNzaWJpbGl0
eU9iamVjdEluY2x1c2lvbjo6RGVmYXVsdEJlaGF2aW9yOyB9Ci0gICAgYm9vbCBhY2Nlc3NpYmls
aXR5SXNJZ25vcmVkQnlEZWZhdWx0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0K
LQotICAgIGJvb2wgaXNTaG93aW5nVmFsaWRhdGlvbk1lc3NhZ2UoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQotICAgIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9Ci0KLSAgICB1bnNpZ25lZCBibG9ja3F1b3RlTGV2
ZWwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9Ci0gICAgaW50IGhlYWRpbmdMZXZlbCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KLSAgICBpbnQgdGFibGVMZXZlbCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KLSAgICBBY2Nlc3NpYmlsaXR5QnV0dG9uU3RhdGUgY2hl
Y2tib3hPclJhZGlvVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBBY2Nlc3NpYmlsaXR5
QnV0dG9uU3RhdGU6Ok9mZjsgfQotICAgIFN0cmluZyB2YWx1ZURlc2NyaXB0aW9uKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICBmbG9hdCB2YWx1ZUZvclJhbmdlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQotICAgIGZsb2F0IG1heFZhbHVlRm9yUmFuZ2Uo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9Ci0gICAgZmxvYXQgbWluVmFsdWVGb3JSYW5n
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KLSAgICBmbG9hdCBzdGVwVmFsdWVGb3JS
YW5nZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KLSAgICBBWENvcmVPYmplY3QqIHNl
bGVjdGVkUmFkaW9CdXR0b24oKSBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgQVhD
b3JlT2JqZWN0KiBzZWxlY3RlZFRhYkl0ZW0oKSBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9
Ci0gICAgQVhDb3JlT2JqZWN0KiBzZWxlY3RlZExpc3RJdGVtKCkgb3ZlcnJpZGUgeyByZXR1cm4g
bnVsbHB0cjsgfQotICAgIGludCBsYXlvdXRDb3VudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IDA7IH0KLSAgICBkb3VibGUgZXN0aW1hdGVkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gMDsgfQotCi0gICAgYm9vbCBzdXBwb3J0c0FSSUFPd25zKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzQWN0aXZlRGVzY2VuZGFudE9mRm9j
dXNlZENvbnRhaW5lcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdm9p
ZCBhcmlhQWN0aXZlRGVzY2VuZGFudFJlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGUgeyB9Ci0gICAgdm9pZCBhcmlhQ29udHJvbHNF
bGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZSB7IH0K
LSAgICB2b2lkIGFyaWFDb250cm9sc1JlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGUgeyB9Ci0gICAgdm9pZCBhcmlhRGVzY3JpYmVk
QnlFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZSB7
IH0KLSAgICB2b2lkIGFyaWFEZXNjcmliZWRCeVJlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGUgeyB9Ci0gICAgdm9pZCBhcmlhRGV0
YWlsc0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRl
IHsgfQotICAgIHZvaWQgYXJpYURldGFpbHNSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxp
dHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRlIHsgfQotICAgIHZvaWQgYXJpYUVycm9y
TWVzc2FnZUVsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJy
aWRlIHsgfQotICAgIHZvaWQgYXJpYUVycm9yTWVzc2FnZVJlZmVyZW5jaW5nRWxlbWVudHMoQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGUgeyB9Ci0gICAgdm9pZCBh
cmlhRmxvd1RvRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3Zl
cnJpZGUgeyB9Ci0gICAgdm9pZCBhcmlhRmxvd1RvUmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZSB7IH0KLSAgICB2b2lkIGFyaWFM
YWJlbGxlZEJ5RWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3Zl
cnJpZGUgeyB9Ci0gICAgdm9pZCBhcmlhTGFiZWxsZWRCeVJlZmVyZW5jaW5nRWxlbWVudHMoQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGUgeyB9Ci0gICAgdm9pZCBh
cmlhT3duc0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJy
aWRlIHsgfQotICAgIHZvaWQgYXJpYU93bnNSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxp
dHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRlIHsgfQotCi0gICAgYm9vbCBoYXNQb3B1
cCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgU3RyaW5nIHBvcHVwVmFs
dWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJpbmcoKTsgfQotICAgIGJvb2wgaGFzRGF0
YWxpc3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgc3VwcG9y
dHNIYXNQb3B1cCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBw
cmVzc2VkSXNQcmVzZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBi
b29sIGFyaWFJc011bHRpbGluZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0g
ICAgU3RyaW5nIGludmFsaWRTdGF0dXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJpbmco
KTsgfQotICAgIGJvb2wgc3VwcG9ydHNQcmVzc2VkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
ZmFsc2U7IH0KLSAgICBib29sIHN1cHBvcnRzRXhwYW5kZWQoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBmYWxzZTsgfQotICAgIGJvb2wgc3VwcG9ydHNDaGVja2VkKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KLSAgICBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbiBzb3J0RGly
ZWN0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQWNjZXNzaWJpbGl0eVNvcnREaXJlY3Rp
b246Ok5vbmU7IH0KLSAgICBib29sIGNhbnZhc0hhc0ZhbGxiYWNrQ29udGVudCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBzdXBwb3J0c1JhbmdlVmFsdWUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGNvbnN0IEF0b21TdHJpbmcmIGlk
ZW50aWZpZXJBdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxsQXRvbSgpOyB9
Ci0gICAgY29uc3QgQXRvbVN0cmluZyYgbGlua1JlbFZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gbnVsbEF0b20oKTsgfQotICAgIHZvaWQgY2xhc3NMaXN0KFZlY3RvcjxTdHJpbmc+Jikg
Y29uc3Qgb3ZlcnJpZGUgeyB9Ci0gICAgQWNjZXNzaWJpbGl0eUN1cnJlbnRTdGF0ZSBjdXJyZW50
U3RhdGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBBY2Nlc3NpYmlsaXR5Q3VycmVudFN0YXRl
OjpGYWxzZTsgfQotICAgIFN0cmluZyBjdXJyZW50VmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBTdHJpbmcoKTsgfQotICAgIGJvb2wgc3VwcG9ydHNDdXJyZW50KCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBjb25zdCBTdHJpbmcga2V5U2hvcnRjdXRzVmFsdWUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJpbmcoKTsgfQotCi0gICAgLy8gVGhpcyBmdW5j
dGlvbiBjaGVja3MgaWYgdGhlIG9iamVjdCBzaG91bGQgYmUgaWdub3JlZCB3aGVuIHRoZXJlJ3Mg
YSBtb2RhbCBkaWFsb2cgZGlzcGxheWVkLgotICAgIGJvb2wgaWdub3JlZEZyb21Nb2RhbFByZXNl
bmNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzTW9kYWxE
ZXNjZW5kYW50KE5vZGUqKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJv
b2wgaXNNb2RhbE5vZGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotCi0gICAg
Ym9vbCBzdXBwb3J0c1NldFNpemUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQot
ICAgIGJvb2wgc3VwcG9ydHNQb3NJblNldCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgaW50IHNldFNpemUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9Ci0gICAg
aW50IHBvc0luU2V0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQotCi0gICAgYm9vbCBz
dXBwb3J0c0FSSUFEcm9wcGluZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0g
ICAgYm9vbCBzdXBwb3J0c0FSSUFEcmFnZ2luZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9Ci0gICAgYm9vbCBpc0FSSUFHcmFiYmVkKCkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7
IH0KLSAgICB2b2lkIHNldEFSSUFHcmFiYmVkKGJvb2wpIG92ZXJyaWRlIHsgfQotICAgIFZlY3Rv
cjxTdHJpbmc+IGRldGVybWluZUFSSUFEcm9wRWZmZWN0cygpIG92ZXJyaWRlIHsgcmV0dXJuIFZl
Y3RvcjxTdHJpbmc+KCk7IH0KLQotICAgIEFYQ29yZU9iamVjdCogYWNjZXNzaWJpbGl0eUhpdFRl
c3QoY29uc3QgSW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKLSAgICBBWENvcmVPYmplY3QqIGVs
ZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG51bGxwdHI7IH0KLQotICAgIEFYQ29yZU9iamVjdCogZm9jdXNlZFVJRWxlbWVu
dCgpIGNvbnN0IG92ZXJyaWRlOwotCi0gICAgQVhDb3JlT2JqZWN0KiBmaXJzdENoaWxkKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIEFYQ29yZU9iamVjdCogbGFzdENo
aWxkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIEFYQ29yZU9iamVj
dCogcHJldmlvdXNTaWJsaW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQot
ICAgIEFYQ29yZU9iamVjdCogbmV4dFNpYmxpbmcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBu
dWxscHRyOyB9Ci0gICAgQVhDb3JlT2JqZWN0KiBuZXh0U2libGluZ1VuaWdub3JlZChpbnQpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICBBWENvcmVPYmplY3QqIHByZXZp
b3VzU2libGluZ1VuaWdub3JlZChpbnQpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7
IH0KLSAgICBBWENvcmVPYmplY3QqIHBhcmVudE9iamVjdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG51bGxwdHI7IH0KLSAgICBBWENvcmVPYmplY3QqIHBhcmVudE9iamVjdFVuaWdub3JlZCgp
IGNvbnN0IG92ZXJyaWRlOwotICAgIEFYQ29yZU9iamVjdCogcGFyZW50T2JqZWN0SWZFeGlzdHMo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdm9pZCBmaW5kTWF0Y2hp
bmdPYmplY3RzKEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSosIEFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciYpIG92ZXJyaWRlIHsgfQotICAgIGJvb2wgaXNEZXNjZW5kYW50T2ZCYXJyZW5Q
YXJlbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNEZXNj
ZW5kYW50T2ZSb2xlKEFjY2Vzc2liaWxpdHlSb2xlKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQotCi0gICAgVmVjdG9yPFJlZlB0cjxSYW5nZT4+IGZpbmRUZXh0UmFuZ2VzKEFjY2Vz
c2liaWxpdHlTZWFyY2hUZXh0Q3JpdGVyaWEgY29uc3QmKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBWZWN0b3I8UmVmUHRyPFJhbmdlPj4oKTsgfQotICAgIFZlY3RvcjxTdHJpbmc+IHBlcmZvcm1U
ZXh0T3BlcmF0aW9uKEFjY2Vzc2liaWxpdHlUZXh0T3BlcmF0aW9uIGNvbnN0Jikgb3ZlcnJpZGUg
eyByZXR1cm4gVmVjdG9yPFN0cmluZz4oKTsgfQotCi0gICAgQVhDb3JlT2JqZWN0KiBvYnNlcnZh
YmxlT2JqZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZvaWQg
bGlua2VkVUlFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVy
cmlkZSB7IH0KLSAgICBBWENvcmVPYmplY3QqIHRpdGxlVUlFbGVtZW50KCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIGJvb2wgZXhwb3Nlc1RpdGxlVUlFbGVtZW50KCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBBWENvcmVPYmplY3QqIGNvcnJl
c3BvbmRpbmdMYWJlbEZvckNvbnRyb2xFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bnVsbHB0cjsgfQotICAgIEFYQ29yZU9iamVjdCogY29ycmVzcG9uZGluZ0NvbnRyb2xGb3JMYWJl
bEVsZW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgQVhDb3Jl
T2JqZWN0KiBzY3JvbGxCYXIoQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uKSBvdmVycmlkZSB7IHJl
dHVybiBudWxscHRyOyB9Ci0KLSAgICBBY2Nlc3NpYmlsaXR5Um9sZSBhcmlhUm9sZUF0dHJpYnV0
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duOyB9
Ci0gICAgYm9vbCBpc1ByZXNlbnRhdGlvbmFsQ2hpbGRPZkFyaWFSb2xlKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGFyaWFSb2xlSGFzUHJlc2VudGF0aW9uYWxD
aGlsZHJlbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpbmhl
cml0c1ByZXNlbnRhdGlvbmFsUm9sZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
Ci0KLSAgICB2b2lkIGFjY2Vzc2liaWxpdHlUZXh0KFZlY3RvcjxBY2Nlc3NpYmlsaXR5VGV4dD4m
KSBjb25zdCBvdmVycmlkZSB7IH0KLSAgICBTdHJpbmcgY29tcHV0ZWRMYWJlbCgpIG92ZXJyaWRl
IHsgcmV0dXJuIFN0cmluZygpOyB9Ci0KLSAgICB2b2lkIHNldEFjY2Vzc2libGVOYW1lKGNvbnN0
IEF0b21TdHJpbmcmKSBvdmVycmlkZSB7IH0KLSAgICBib29sIGhhc0F0dHJpYnV0ZXNSZXF1aXJl
ZEZvckluY2x1c2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0KLSAgICBT
dHJpbmcgYWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
U3RyaW5nKCk7IH0KLSAgICBTdHJpbmcgdGl0bGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBT
dHJpbmcoKTsgfQotICAgIFN0cmluZyBoZWxwVGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IFN0cmluZygpOyB9Ci0KLSAgICBib29sIGlzQVJJQVN0YXRpY1RleHQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBmYWxzZTsgfQotICAgIFN0cmluZyBzdHJpbmdWYWx1ZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIFN0cmluZygpOyB9Ci0gICAgU3RyaW5nIHRleHRVbmRlckVsZW1lbnQoQWNj
ZXNzaWJpbGl0eVRleHRVbmRlckVsZW1lbnRNb2RlID0gQWNjZXNzaWJpbGl0eVRleHRVbmRlckVs
ZW1lbnRNb2RlKCkpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9Ci0gICAgU3Ry
aW5nIHRleHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJpbmcoKTsgfQotICAgIGludCB0
ZXh0TGVuZ3RoKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQotICAgIFN0cmluZyBhcmlh
TGFiZWxlZEJ5QXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0K
LSAgICBTdHJpbmcgYXJpYURlc2NyaWJlZEJ5QXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gU3RyaW5nKCk7IH0KLSAgICBjb25zdCBTdHJpbmcgcGxhY2Vob2xkZXJWYWx1ZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9Ci0gICAgYm9vbCBhY2Nlc3NpYmxlTmFt
ZURlcml2ZXNGcm9tQ29udGVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0K
LSAgICBTdHJpbmcgZXhwYW5kZWRUZXh0VmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBT
dHJpbmcoKTsgfQotICAgIGJvb2wgc3VwcG9ydHNFeHBhbmRlZFRleHRWYWx1ZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0KLSAgICB2b2lkIGVsZW1lbnRzRnJvbUF0dHJpYnV0
ZShWZWN0b3I8RWxlbWVudCo+JiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IG92ZXJyaWRl
IHsgfQotCi0gICAgdm9pZCBjb2xvclZhbHVlKGludCYsIGludCYsIGludCYpIGNvbnN0IG92ZXJy
aWRlIHsgfQotCi0gICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eVJvbGU+KGludEF0dHJpYnV0ZVZh
bHVlKEFYUHJvcGVydHlOYW1lOjpSb2xlVmFsdWUpKTsgfQotICAgIFN0cmluZyByb2xlUGxhdGZv
cm1TdHJpbmcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShB
WFByb3BlcnR5TmFtZTo6Um9sZVBsYXRmb3JtU3RyaW5nKTsgfQotICAgIFN0cmluZyByb2xlRGVz
Y3JpcHRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShB
WFByb3BlcnR5TmFtZTo6Um9sZURlc2NyaXB0aW9uKTsgfQotICAgIFN0cmluZyBhcmlhTGFuZG1h
cmtSb2xlRGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdHJpbmdBdHRyaWJ1
dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6QVJJQUxhbmRtYXJrUm9sZURlc2NyaXB0aW9uKTsgfQot
Ci0gICAgQVhPYmplY3RDYWNoZSogYXhPYmplY3RDYWNoZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG51bGxwdHI7IH0KLQotICAgIEVsZW1lbnQqIGFuY2hvckVsZW1lbnQoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgYm9vbCBzdXBwb3J0c1ByZXNzQWN0aW9uKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBFbGVtZW50KiBhY3Rpb25FbGVt
ZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIExheW91dFJlY3Qg
Ym91bmRpbmdCb3hSZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcmVjdEF0dHJpYnV0ZVZh
bHVlPExheW91dFJlY3Q+KEFYUHJvcGVydHlOYW1lOjpCb3VuZGluZ0JveFJlY3QpOyB9Ci0gICAg
TGF5b3V0UmVjdCBlbGVtZW50UmVjdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJlY3RBdHRy
aWJ1dGVWYWx1ZTxMYXlvdXRSZWN0PihBWFByb3BlcnR5TmFtZTo6RWxlbWVudFJlY3QpOyB9Ci0g
ICAgSW50UG9pbnQgY2xpY2tQb2ludCgpIG92ZXJyaWRlIHsgcmV0dXJuIEludFBvaW50KCk7IH0K
LSAgICBQYXRoIGVsZW1lbnRQYXRoKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gUGF0aCgpOyB9
Ci0gICAgYm9vbCBzdXBwb3J0c1BhdGgoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQotCi0gICAgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgdGV4dEl0ZXJhdG9yQmVoYXZpb3JGb3JUZXh0
UmFuZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZp
b3I7IH0KLSAgICBQbGFpblRleHRSYW5nZSBzZWxlY3RlZFRleHRSYW5nZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIFBsYWluVGV4dFJhbmdlKCk7IH0KLSAgICB1bnNpZ25lZCBzZWxlY3Rpb25T
dGFydCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KLSAgICB1bnNpZ25lZCBzZWxlY3Rp
b25FbmQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9Ci0KLSAgICBVUkwgdXJsKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gVVJMKCk7IH0KLSAgICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVj
dGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFZpc2libGVTZWxlY3Rpb24oKTsgfQotICAg
IFN0cmluZyBzZWxlY3RlZFRleHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJpbmcoKTsg
fQotICAgIGNvbnN0IEF0b21TdHJpbmcmIGFjY2Vzc0tleSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG51bGxBdG9tKCk7IH0KLSAgICBjb25zdCBTdHJpbmcmIGFjdGlvblZlcmIoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBudWxsQXRvbSgpOyB9Ci0gICAgV2lkZ2V0KiB3aWRnZXQoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgV2lkZ2V0KiB3aWRnZXRGb3JBdHRh
Y2htZW50VmlldygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICBQYWdl
KiBwYWdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIERvY3VtZW50
KiBkb2N1bWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICBGcmFt
ZVZpZXcqIGRvY3VtZW50RnJhbWVWaWV3KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0
cjsgfQotICAgIEZyYW1lKiBmcmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7
IH0KLSAgICBGcmFtZSogbWFpbkZyYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0
cjsgfQotICAgIERvY3VtZW50KiB0b3BEb2N1bWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG51bGxwdHI7IH0KLSAgICBTY3JvbGxWaWV3KiBzY3JvbGxWaWV3QW5jZXN0b3IoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgU3RyaW5nIGxhbmd1YWdlKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICB1bnNpZ25lZCBoaWVyYXJjaGljYWxM
ZXZlbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KLQotICAgIHZvaWQgc2V0Rm9jdXNl
ZChib29sKSBvdmVycmlkZSB7IH0KLSAgICB2b2lkIHNldFNlbGVjdGVkVGV4dChjb25zdCBTdHJp
bmcmKSBvdmVycmlkZSB7IH0KLSAgICB2b2lkIHNldFNlbGVjdGVkVGV4dFJhbmdlKGNvbnN0IFBs
YWluVGV4dFJhbmdlJikgb3ZlcnJpZGUgeyB9Ci0gICAgdm9pZCBzZXRWYWx1ZShjb25zdCBTdHJp
bmcmKSBvdmVycmlkZSB7IH0KLSAgICBib29sIHJlcGxhY2VUZXh0SW5SYW5nZShjb25zdCBTdHJp
bmcmLCBjb25zdCBQbGFpblRleHRSYW5nZSYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0g
ICAgYm9vbCBpbnNlcnRUZXh0KGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9Ci0KLSAgICB2b2lkIHNldFZhbHVlKGZsb2F0KSBvdmVycmlkZSB7IH0KLSAgICB2b2lkIHNl
dFNlbGVjdGVkKGJvb2wpIG92ZXJyaWRlIHsgfQotICAgIHZvaWQgc2V0U2VsZWN0ZWRSb3dzKEFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIG92ZXJyaWRlIHsgfQotCi0gICAgdm9pZCBtYWtl
UmFuZ2VWaXNpYmxlKGNvbnN0IFBsYWluVGV4dFJhbmdlJikgb3ZlcnJpZGUgeyB9Ci0gICAgYm9v
bCBwcmVzcygpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBwZXJmb3JtRGVm
YXVsdEFjdGlvbigpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0KLSAgICBBY2Nlc3NpYmls
aXR5T3JpZW50YXRpb24gb3JpZW50YXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBBY2Nl
c3NpYmlsaXR5T3JpZW50YXRpb246OlVuZGVmaW5lZDsgfQotICAgIHZvaWQgaW5jcmVtZW50KCkg
b3ZlcnJpZGUgeyB9Ci0gICAgdm9pZCBkZWNyZW1lbnQoKSBvdmVycmlkZSB7IH0KLQotICAgIHZv
aWQgY2hpbGRyZW5DaGFuZ2VkKCkgb3ZlcnJpZGUgeyB9Ci0gICAgdm9pZCB0ZXh0Q2hhbmdlZCgp
IG92ZXJyaWRlIHsgfQotICAgIHZvaWQgdXBkYXRlQWNjZXNzaWJpbGl0eVJvbGUoKSBvdmVycmlk
ZSB7IH0KLSAgICBjb25zdCBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGNoaWxkcmVuKGJv
b2wgdXBkYXRlQ2hpbGRyZW5JZk5lZWRlZCA9IHRydWUpIG92ZXJyaWRlOwotICAgIHZvaWQgYWRk
Q2hpbGRyZW4oKSBvdmVycmlkZSB7IH0KLSAgICB2b2lkIGFkZENoaWxkKEFYQ29yZU9iamVjdCop
IG92ZXJyaWRlIHsgfQotICAgIHZvaWQgaW5zZXJ0Q2hpbGQoQVhDb3JlT2JqZWN0KiwgdW5zaWdu
ZWQpIG92ZXJyaWRlIHsgfQotCi0gICAgYm9vbCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVSb2xlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLQotICAgIGJvb2wgY2FuSGF2ZUNoaWxk
cmVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGhhc0NoaWxk
cmVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2b2lkIHVwZGF0ZUNo
aWxkcmVuSWZOZWNlc3NhcnkoKSBvdmVycmlkZSB7IH0KLSAgICB2b2lkIHNldE5lZWRzVG9VcGRh
dGVDaGlsZHJlbigpIG92ZXJyaWRlIHsgfQotICAgIHZvaWQgc2V0TmVlZHNUb1VwZGF0ZVN1YnRy
ZWUoKSBvdmVycmlkZSB7IH07Ci0gICAgdm9pZCBjbGVhckNoaWxkcmVuKCkgb3ZlcnJpZGUgeyB9
Ci0gICAgYm9vbCBuZWVkc1RvVXBkYXRlQ2hpbGRyZW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQotICAgIHZvaWQgZGV0YWNoRnJvbVBhcmVudCgpIG92ZXJyaWRlIHsgfQotICAg
IGJvb2wgaXNEZXRhY2hlZEZyb21QYXJlbnQoKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQot
Ci0gICAgYm9vbCBjYW5IYXZlU2VsZWN0ZWRDaGlsZHJlbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgdm9pZCBzZWxlY3RlZENoaWxkcmVuKEFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciYpIG92ZXJyaWRlIHsgfQotICAgIHZvaWQgdmlzaWJsZUNoaWxkcmVuKEFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciYpIG92ZXJyaWRlIHsgfQotICAgIHZvaWQgdGFiQ2hpbGRy
ZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgb3ZlcnJpZGUgeyB9Ci0gICAgYm9vbCBz
aG91bGRGb2N1c0FjdGl2ZURlc2NlbmRhbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxz
ZTsgfQotICAgIEFYQ29yZU9iamVjdCogYWN0aXZlRGVzY2VuZGFudCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2b2lkIGhhbmRsZUFjdGl2ZURlc2NlbmRhbnRDaGFu
Z2VkKCkgb3ZlcnJpZGUgeyB9Ci0gICAgdm9pZCBoYW5kbGVBcmlhRXhwYW5kZWRDaGFuZ2VkKCkg
b3ZlcnJpZGUgeyB9Ci0gICAgYm9vbCBpc0Rlc2NlbmRhbnRPZk9iamVjdChjb25zdCBBWENvcmVP
YmplY3QqKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNBbmNl
c3Rvck9mT2JqZWN0KGNvbnN0IEFYQ29yZU9iamVjdCopIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9Ci0gICAgQVhDb3JlT2JqZWN0KiBmaXJzdEFub255bW91c0Jsb2NrQ2hpbGQoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9Ci0KLSAgICBib29sIGhhc0F0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0K
LSAgICBjb25zdCBBdG9tU3RyaW5nJiBnZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxBdG9tKCk7IH0KLSAgICBib29sIGhhc1RhZ05h
bWUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
Ci0KLSAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSB2aXNpYmxlUG9zaXRpb25SYW5nZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIFZpc2libGVQb3NpdGlvblJhbmdlKCk7IH0KLSAgICBWaXNpYmxl
UG9zaXRpb25SYW5nZSB2aXNpYmxlUG9zaXRpb25SYW5nZUZvckxpbmUodW5zaWduZWQpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIFZpc2libGVQb3NpdGlvblJhbmdlKCk7IH0KLSAgICBSZWZQdHI8
UmFuZ2U+IGVsZW1lbnRSYW5nZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0K
LSAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSB2aXNpYmxlUG9zaXRpb25SYW5nZUZvclVub3JkZXJl
ZFBvc2l0aW9ucyhjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBjb25zdCBWaXNpYmxlUG9zaXRpb24m
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBWaXNpYmxlUG9zaXRpb25SYW5nZSgpOyB9Ci0gICAg
VmlzaWJsZVBvc2l0aW9uUmFuZ2UgcG9zaXRpb25PZkxlZnRXb3JkKGNvbnN0IFZpc2libGVQb3Np
dGlvbiYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFZpc2libGVQb3NpdGlvblJhbmdlKCk7IH0K
LSAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSBwb3NpdGlvbk9mUmlnaHRXb3JkKGNvbnN0IFZpc2li
bGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFZpc2libGVQb3NpdGlvblJhbmdl
KCk7IH0KLSAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSBsZWZ0TGluZVZpc2libGVQb3NpdGlvblJh
bmdlKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFZpc2li
bGVQb3NpdGlvblJhbmdlKCk7IH0KLSAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSByaWdodExpbmVW
aXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBWaXNpYmxlUG9zaXRpb25SYW5nZSgpOyB9Ci0gICAgVmlzaWJsZVBvc2l0aW9u
UmFuZ2Ugc2VudGVuY2VGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBWaXNpYmxlUG9zaXRpb25SYW5nZSgpOyB9Ci0gICAgVmlzaWJsZVBv
c2l0aW9uUmFuZ2UgcGFyYWdyYXBoRm9yUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVmlzaWJsZVBvc2l0aW9uUmFuZ2UoKTsgfQotICAgIFZp
c2libGVQb3NpdGlvblJhbmdlIHN0eWxlUmFuZ2VGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9z
aXRpb24mKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBWaXNpYmxlUG9zaXRpb25SYW5nZSgpOyB9
Ci0gICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgdmlzaWJsZVBvc2l0aW9uUmFuZ2VGb3JSYW5nZShj
b25zdCBQbGFpblRleHRSYW5nZSYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFZpc2libGVQb3Np
dGlvblJhbmdlKCk7IH0KLSAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSBsaW5lUmFuZ2VGb3JQb3Np
dGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBWaXNp
YmxlUG9zaXRpb25SYW5nZSgpOyB9Ci0KLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlRm9yUGxhaW5U
ZXh0UmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBu
dWxscHRyOyB9Ci0KLSAgICBTdHJpbmcgc3RyaW5nRm9yUmFuZ2UoUmVmUHRyPFJhbmdlPikgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICBJbnRSZWN0IGJvdW5kc0ZvclZp
c2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZpc2libGVQb3NpdGlvblJhbmdlJikgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gSW50UmVjdCgpOyB9Ci0gICAgSW50UmVjdCBib3VuZHNGb3JSYW5nZShj
b25zdCBSZWZQdHI8UmFuZ2U+KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBJbnRSZWN0KCk7IH0K
LSAgICBpbnQgbGVuZ3RoRm9yVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0
aW9uUmFuZ2UmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9Ci0gICAgdm9pZCBzZXRTZWxl
Y3RlZFZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZpc2libGVQb3NpdGlvblJhbmdlJikgY29u
c3Qgb3ZlcnJpZGUgeyB9Ci0KLSAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9y
Qm91bmRzKGNvbnN0IEludFJlY3QmLCBBY2Nlc3NpYmlsaXR5VmlzaWJsZVBvc2l0aW9uRm9yQm91
bmRzKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsgfQotICAgIFZp
c2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JQb2ludChjb25zdCBJbnRQb2ludCYpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOyB9Ci0gICAgVmlzaWJsZVBv
c2l0aW9uIG5leHRWaXNpYmxlUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7IH0KLSAgICBWaXNpYmxlUG9zaXRp
b24gcHJldmlvdXNWaXNpYmxlUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7IH0KLSAgICBWaXNpYmxlUG9zaXRp
b24gbmV4dFdvcmRFbmQoY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7IH0KLSAgICBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXNX
b3JkU3RhcnQoY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
VmlzaWJsZVBvc2l0aW9uKCk7IH0KLSAgICBWaXNpYmxlUG9zaXRpb24gbmV4dExpbmVFbmRQb3Np
dGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBWaXNp
YmxlUG9zaXRpb24oKTsgfQotICAgIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c0xpbmVTdGFydFBv
c2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFZp
c2libGVQb3NpdGlvbigpOyB9Ci0gICAgVmlzaWJsZVBvc2l0aW9uIG5leHRTZW50ZW5jZUVuZFBv
c2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFZp
c2libGVQb3NpdGlvbigpOyB9Ci0gICAgVmlzaWJsZVBvc2l0aW9uIHByZXZpb3VzU2VudGVuY2VT
dGFydFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIFZpc2libGVQb3NpdGlvbigpOyB9Ci0gICAgVmlzaWJsZVBvc2l0aW9uIG5leHRQYXJhZ3Jh
cGhFbmRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBWaXNpYmxlUG9zaXRpb24oKTsgfQotICAgIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c1Bh
cmFncmFwaFN0YXJ0UG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7IH0KLSAgICBWaXNpYmxlUG9zaXRpb24gdmlz
aWJsZVBvc2l0aW9uRm9ySW5kZXgodW5zaWduZWQsIGJvb2wgLypsYXN0SW5kZXhPSyAqLykgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7IH0KLQotICAgIFZpc2libGVQ
b3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JJbmRleChpbnQpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIFZpc2libGVQb3NpdGlvbigpOyB9Ci0gICAgaW50IGluZGV4Rm9yVmlzaWJsZVBvc2l0aW9u
KGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KLQot
ICAgIEFYQ29yZU9iamVjdCogYWNjZXNzaWJpbGl0eU9iamVjdEZvclBvc2l0aW9uKGNvbnN0IFZp
c2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICBp
bnQgbGluZUZvclBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIDA7IH0KLSAgICBQbGFpblRleHRSYW5nZSBwbGFpblRleHRSYW5nZUZvclZpc2li
bGVQb3NpdGlvblJhbmdlKGNvbnN0IFZpc2libGVQb3NpdGlvblJhbmdlJikgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gUGxhaW5UZXh0UmFuZ2UoKTsgfQotICAgIGludCBpbmRleChjb25zdCBWaXNp
YmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9Ci0KLSAgICB2b2lkIGxp
bmVCcmVha3MoVmVjdG9yPGludD4mKSBjb25zdCBvdmVycmlkZSB7IH0KLSAgICBQbGFpblRleHRS
YW5nZSBkb0FYUmFuZ2VGb3JMaW5lKHVuc2lnbmVkKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBQ
bGFpblRleHRSYW5nZSgpOyB9Ci0gICAgUGxhaW5UZXh0UmFuZ2UgZG9BWFJhbmdlRm9yUG9zaXRp
b24oY29uc3QgSW50UG9pbnQmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBQbGFpblRleHRSYW5n
ZSgpOyB9Ci0gICAgUGxhaW5UZXh0UmFuZ2UgZG9BWFJhbmdlRm9ySW5kZXgodW5zaWduZWQpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIFBsYWluVGV4dFJhbmdlKCk7IH0KLSAgICBQbGFpblRleHRS
YW5nZSBkb0FYU3R5bGVSYW5nZUZvckluZGV4KHVuc2lnbmVkKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBQbGFpblRleHRSYW5nZSgpOyB9Ci0KLSAgICBTdHJpbmcgZG9BWFN0cmluZ0ZvclJhbmdl
KGNvbnN0IFBsYWluVGV4dFJhbmdlJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7
IH0KLSAgICBJbnRSZWN0IGRvQVhCb3VuZHNGb3JSYW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEludFJlY3QoKTsgfQotICAgIEludFJlY3QgZG9BWEJv
dW5kc0ZvclJhbmdlVXNpbmdDaGFyYWN0ZXJPZmZzZXQoY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBJbnRSZWN0KCk7IH0KLQotICAgIHVuc2lnbmVkIGRvQVhM
aW5lRm9ySW5kZXgodW5zaWduZWQpIG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KLQotICAgIFN0cmlu
ZyBjb21wdXRlZFJvbGVTdHJpbmcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJpbmcoKTsg
fQotCi0gICAgLy8gTVNBQQotICAgIFN0cmluZyBzdHJpbmdWYWx1ZUZvck1TQUEoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBTdHJpbmcoKTsgfQotICAgIFN0cmluZyBzdHJpbmdSb2xlRm9yTVNB
QSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9Ci0gICAgU3RyaW5nIG5hbWVG
b3JNU0FBKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICBTdHJpbmcg
ZGVzY3JpcHRpb25Gb3JNU0FBKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0K
LSAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWVGb3JNU0FBKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd247IH0KLQotICAgIFN0cmluZyBwYXNz
d29yZEZpZWxkVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJpbmcoKTsgfQotICAg
IGJvb2wgaXNWYWx1ZUF1dG9maWxsZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQotICAgIGJvb2wgaXNWYWx1ZUF1dG9maWxsQXZhaWxhYmxlKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gZmFsc2U7IH0KLSAgICBBdXRvRmlsbEJ1dHRvblR5cGUgdmFsdWVBdXRvZmlsbEJ1dHRv
blR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBBdXRvRmlsbEJ1dHRvblR5cGU6Ok5vbmU7
IH0KLQotICAgIHZvaWQgYXJpYVRyZWVSb3dzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYp
IG92ZXJyaWRlIHsgfQotICAgIHZvaWQgYXJpYVRyZWVJdGVtRGlzY2xvc2VkUm93cyhBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBvdmVycmlkZSB7IH0KLSAgICB2b2lkIGFyaWFUcmVlSXRl
bUNvbnRlbnQoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgb3ZlcnJpZGUgeyB9Ci0KLSAg
ICBib29sIHN1cHBvcnRzTGl2ZVJlZ2lvbihib29sID0gdHJ1ZSkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzSW5zaWRlTGl2ZVJlZ2lvbihib29sID0gdHJ1ZSkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBBWENvcmVPYmplY3QqIGxpdmVS
ZWdpb25BbmNlc3Rvcihib29sID0gdHJ1ZSkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0
cjsgfQotICAgIGNvbnN0IFN0cmluZyBsaXZlUmVnaW9uU3RhdHVzKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICBjb25zdCBTdHJpbmcgbGl2ZVJlZ2lvblJlbGV2YW50
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICBib29sIGxpdmVSZWdp
b25BdG9taWMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNC
dXN5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLQotICAgIGJvb2wgaGFzQ29u
dGVudEVkaXRhYmxlQXR0cmlidXRlU2V0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7
IH0KLQotICAgIGJvb2wgc3VwcG9ydHNSZWFkT25seSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9Ci0gICAgU3RyaW5nIHJlYWRPbmx5VmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBTdHJpbmcoKTsgfQotCi0gICAgYm9vbCBzdXBwb3J0c0F1dG9Db21wbGV0ZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgU3RyaW5nIGF1dG9Db21wbGV0ZVZhbHVl
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KLQotICAgIGJvb2wgc3VwcG9y
dHNBUklBQXR0cmlidXRlcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0KLSAg
ICBPcHRpb25TZXQ8U3BlYWtBcz4gc3BlYWtBc1Byb3BlcnR5KCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gT3B0aW9uU2V0PFNwZWFrQXM+KCk7IH0KLQotICAgIHZvaWQgc2Nyb2xsVG9NYWtlVmlz
aWJsZSgpIGNvbnN0IG92ZXJyaWRlIHsgfQotICAgIHZvaWQgc2Nyb2xsVG9NYWtlVmlzaWJsZVdp
dGhTdWJGb2N1cyhjb25zdCBJbnRSZWN0JikgY29uc3Qgb3ZlcnJpZGUgeyB9Ci0gICAgdm9pZCBz
Y3JvbGxUb0dsb2JhbFBvaW50KGNvbnN0IEludFBvaW50JikgY29uc3Qgb3ZlcnJpZGUgeyB9Ci0K
LSAgICBib29sIHNjcm9sbEJ5UGFnZShTY3JvbGxCeVBhZ2VEaXJlY3Rpb24pIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgSW50UG9pbnQgc2Nyb2xsUG9zaXRpb24oKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBJbnRQb2ludCgpOyB9Ci0gICAgSW50U2l6ZSBzY3JvbGxDb250
ZW50c1NpemUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBJbnRTaXplKCk7IH0KLSAgICBJbnRS
ZWN0IHNjcm9sbFZpc2libGVDb250ZW50UmVjdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIElu
dFJlY3QoKTsgfQotICAgIHZvaWQgc2Nyb2xsVG9NYWtlVmlzaWJsZShjb25zdCBTY3JvbGxSZWN0
VG9WaXNpYmxlT3B0aW9ucyYpIGNvbnN0IG92ZXJyaWRlIHsgfQotCi0gICAgYm9vbCBsYXN0S25v
d25Jc0lnbm9yZWRWYWx1ZSgpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdm9pZCBz
ZXRMYXN0S25vd25Jc0lnbm9yZWRWYWx1ZShib29sKSBvdmVycmlkZSB7IH0KLQotICAgIHZvaWQg
bm90aWZ5SWZJZ25vcmVkVmFsdWVDaGFuZ2VkKCkgb3ZlcnJpZGUgeyB9Ci0KLSAgICBib29sIGlz
TWF0aEVsZW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUo
QVhQcm9wZXJ0eU5hbWU6OklzTWF0aEVsZW1lbnQpOyB9Ci0gICAgYm9vbCBpc01hdGhGcmFjdGlv
bigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5
TmFtZTo6SXNNYXRoRnJhY3Rpb24pOyB9Ci0gICAgYm9vbCBpc01hdGhGZW5jZWQoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzTWF0
aEZlbmNlZCk7IH0KLSAgICBib29sIGlzTWF0aFN1YnNjcmlwdFN1cGVyc2NyaXB0KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc01h
dGhTdWJzY3JpcHRTdXBlcnNjcmlwdCk7IH0KLSAgICBib29sIGlzTWF0aFJvdygpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNNYXRo
Um93KTsgfQotICAgIGJvb2wgaXNNYXRoVW5kZXJPdmVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc01hdGhVbmRlck92ZXIpOyB9
Ci0gICAgYm9vbCBpc01hdGhSb290KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJp
YnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc01hdGhSb290KTsgfQotICAgIGJvb2wgaXNNYXRo
U3F1YXJlUm9vdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShB
WFByb3BlcnR5TmFtZTo6SXNNYXRoU3F1YXJlUm9vdCk7IH0KLSAgICBib29sIGlzTWF0aFRleHQo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5h
bWU6OklzTWF0aFRleHQpOyB9Ci0gICAgYm9vbCBpc01hdGhOdW1iZXIoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzTWF0aE51bWJl
cik7IH0KLSAgICBib29sIGlzTWF0aE9wZXJhdG9yKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
Ym9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc01hdGhPcGVyYXRvcik7IH0KLSAg
ICBib29sIGlzTWF0aEZlbmNlT3BlcmF0b3IoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29s
QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzTWF0aEZlbmNlT3BlcmF0b3IpOyB9Ci0g
ICAgYm9vbCBpc01hdGhTZXBhcmF0b3JPcGVyYXRvcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNNYXRoU2VwYXJhdG9yT3BlcmF0
b3IpOyB9Ci0gICAgYm9vbCBpc01hdGhJZGVudGlmaWVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc01hdGhJZGVudGlmaWVyKTsg
fQotICAgIGJvb2wgaXNNYXRoVGFibGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0
cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzTWF0aFRhYmxlKTsgfQotICAgIGJvb2wgaXNN
YXRoVGFibGVSb3coKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUo
QVhQcm9wZXJ0eU5hbWU6OklzTWF0aFRhYmxlUm93KTsgfQotICAgIGJvb2wgaXNNYXRoVGFibGVD
ZWxsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVy
dHlOYW1lOjpJc01hdGhUYWJsZUNlbGwpOyB9Ci0gICAgYm9vbCBpc01hdGhNdWx0aXNjcmlwdCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFt
ZTo6SXNNYXRoTXVsdGlzY3JpcHQpOyB9Ci0gICAgYm9vbCBpc01hdGhUb2tlbigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNNYXRo
VG9rZW4pOyB9Ci0gICAgYm9vbCBpc01hdGhTY3JpcHRPYmplY3QoQWNjZXNzaWJpbGl0eU1hdGhT
Y3JpcHRPYmplY3RUeXBlKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJv
b2wgaXNNYXRoTXVsdGlzY3JpcHRPYmplY3QoQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdE9i
amVjdFR5cGUpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0KLSAgICBBWENvcmVP
YmplY3QqIG1hdGhSYWRpY2FuZE9iamVjdCgpIG92ZXJyaWRlIHsgcmV0dXJuIG9iamVjdEF0dHJp
YnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpNYXRoUmFkaWNhbmRPYmplY3QpOyB9Ci0gICAgQVhD
b3JlT2JqZWN0KiBtYXRoUm9vdEluZGV4T2JqZWN0KCkgb3ZlcnJpZGUgeyByZXR1cm4gb2JqZWN0
QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6Ok1hdGhSb290SW5kZXhPYmplY3QpOyB9Ci0K
LSAgICBBWENvcmVPYmplY3QqIG1hdGhVbmRlck9iamVjdCgpIG92ZXJyaWRlIHsgcmV0dXJuIG9i
amVjdEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpNYXRoVW5kZXJPYmplY3QpOyB9Ci0g
ICAgQVhDb3JlT2JqZWN0KiBtYXRoT3Zlck9iamVjdCgpIG92ZXJyaWRlIHsgcmV0dXJuIG9iamVj
dEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpNYXRoT3Zlck9iamVjdCk7IH0KLQotICAg
IEFYQ29yZU9iamVjdCogbWF0aE51bWVyYXRvck9iamVjdCgpIG92ZXJyaWRlIHsgcmV0dXJuIG9i
amVjdEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpNYXRoTnVtZXJhdG9yT2JqZWN0KTsg
fQotICAgIEFYQ29yZU9iamVjdCogbWF0aERlbm9taW5hdG9yT2JqZWN0KCkgb3ZlcnJpZGUgeyBy
ZXR1cm4gb2JqZWN0QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6Ok1hdGhEZW5vbWluYXRv
ck9iamVjdCk7IH0KLQotICAgIEFYQ29yZU9iamVjdCogbWF0aEJhc2VPYmplY3QoKSBvdmVycmlk
ZSB7IHJldHVybiBvYmplY3RBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6TWF0aEJhc2VP
YmplY3QpOyB9Ci0gICAgQVhDb3JlT2JqZWN0KiBtYXRoU3Vic2NyaXB0T2JqZWN0KCkgb3ZlcnJp
ZGUgeyByZXR1cm4gb2JqZWN0QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6Ok1hdGhTdWJz
Y3JpcHRPYmplY3QpOyB9Ci0gICAgQVhDb3JlT2JqZWN0KiBtYXRoU3VwZXJzY3JpcHRPYmplY3Qo
KSBvdmVycmlkZSB7IHJldHVybiBvYmplY3RBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6
TWF0aFN1cGVyc2NyaXB0T2JqZWN0KTsgfQotCi0gICAgU3RyaW5nIG1hdGhGZW5jZWRPcGVuU3Ry
aW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9w
ZXJ0eU5hbWU6Ok1hdGhGZW5jZWRPcGVuU3RyaW5nKTsgfQotICAgIFN0cmluZyBtYXRoRmVuY2Vk
Q2xvc2VTdHJpbmcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdHJpbmdBdHRyaWJ1dGVWYWx1
ZShBWFByb3BlcnR5TmFtZTo6TWF0aEZlbmNlZENsb3NlU3RyaW5nKTsgfQotICAgIGludCBtYXRo
TGluZVRoaWNrbmVzcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGludEF0dHJpYnV0ZVZhbHVl
KEFYUHJvcGVydHlOYW1lOjpNYXRoTGluZVRoaWNrbmVzcyk7IH0KLSAgICBib29sIGlzQW5vbnlt
b3VzTWF0aE9wZXJhdG9yKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZh
bHVlKEFYUHJvcGVydHlOYW1lOjpJc0Fub255bW91c01hdGhPcGVyYXRvcik7IH0KLQotICAgIHZv
aWQgbWF0aFByZXNjcmlwdHMoQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdFBhaXJzJikgb3Zl
cnJpZGUgeyB9Ci0gICAgdm9pZCBtYXRoUG9zdHNjcmlwdHMoQWNjZXNzaWJpbGl0eU1hdGhNdWx0
aXNjcmlwdFBhaXJzJikgb3ZlcnJpZGUgeyB9Ci0KLSAgICBib29sIGlzQVhIaWRkZW4oKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNET01IaWRkZW4oKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNIaWRkZW4oKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotCi0gICAgdm9pZCBzZXRXcmFwcGVyKEFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyKiB3cmFwcGVyKSBvdmVycmlkZSB7IG1fd3JhcHBlciA9IHdyYXBw
ZXI7IH0KLQotICAgIHZvaWQgb3ZlcnJpZGVBdHRhY2htZW50UGFyZW50KEFYQ29yZU9iamVjdCop
IG92ZXJyaWRlIHsgfQotCi0gICAgYm9vbCBhY2Nlc3NpYmlsaXR5SWdub3JlQXR0YWNobWVudCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVj
dEluY2x1c2lvbiBhY2Nlc3NpYmlsaXR5UGxhdGZvcm1JbmNsdWRlc09iamVjdCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246OkRlZmF1bHRCZWhh
dmlvcjsgfQotCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBpbnQgYWNjZXNzaWJpbGl0
eVBhc3N3b3JkRmllbGRMZW5ndGgoKSBvdmVycmlkZSB7IHJldHVybiAwOyB9Ci0gICAgYm9vbCBo
YXNUb3VjaEV2ZW50TGlzdGVuZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQot
ICAgIGJvb2wgaXNJbnB1dFR5cGVQb3B1cEJ1dHRvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9Ci0jZW5kaWYKLQotICAgIHZvaWQgdXBkYXRlQmFja2luZ1N0b3JlKCkgb3ZlcnJp
ZGU7Ci0KLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBib29sIHByZXZlbnRLZXlib2FyZERPTUV2
ZW50RGlzcGF0Y2goKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZvaWQg
c2V0UHJldmVudEtleWJvYXJkRE9NRXZlbnREaXNwYXRjaChib29sKSBvdmVycmlkZSB7IH0KLSAg
ICBib29sIGZpbGVVcGxvYWRCdXR0b25SZXR1cm5zVmFsdWVJblRpdGxlKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBTdHJpbmcgc3BlZWNoSGludEF0dHJpYnV0ZVZhbHVl
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0
eU5hbWU6OlNwZWVjaEhpbnQpOyB9Ci0gICAgU3RyaW5nIGRlc2NyaXB0aW9uQXR0cmlidXRlVmFs
dWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShBWFByb3Bl
cnR5TmFtZTo6RGVzY3JpcHRpb24pOyB9Ci0gICAgU3RyaW5nIGhlbHBUZXh0QXR0cmlidXRlVmFs
dWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShBWFByb3Bl
cnR5TmFtZTo6SGVscFRleHQpOyB9Ci0gICAgU3RyaW5nIHRpdGxlQXR0cmlidXRlVmFsdWUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFt
ZTo6VGl0bGUpOyB9Ci0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhUExBVEZPUk0o
SU9TX0ZBTUlMWSkKLSAgICBib29sIGNhcmV0QnJvd3NpbmdFbmFibGVkKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2b2lkIHNldENhcmV0QnJvd3NpbmdFbmFibGVkKGJv
b2wpIG92ZXJyaWRlIHsgfQotI2VuZGlmCi0KLSAgICBBWENvcmVPYmplY3QqIGZvY3VzYWJsZUFu
Y2VzdG9yKCkgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIEFYQ29yZU9iamVjdCog
ZWRpdGFibGVBbmNlc3RvcigpIG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICBBWENv
cmVPYmplY3QqIGhpZ2hlc3RFZGl0YWJsZUFuY2VzdG9yKCkgb3ZlcnJpZGUgeyByZXR1cm4gbnVs
bHB0cjsgfQotCi0gICAgY29uc3QgQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcqIGFuY2VzdG9yQWNj
ZXNzaWJpbGl0eVNjcm9sbFZpZXcoYm9vbCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0
cjsgfQotCi0gICAgdm9pZCBzZXRJc0lnbm9yZWRGcm9tUGFyZW50RGF0YShBY2Nlc3NpYmlsaXR5
SXNJZ25vcmVkRnJvbVBhcmVudERhdGEmKSBvdmVycmlkZSB7IH07Ci0gICAgdm9pZCBjbGVhcklz
SWdub3JlZEZyb21QYXJlbnREYXRhKCkgb3ZlcnJpZGUgeyB9Ci0gICAgdm9pZCBzZXRJc0lnbm9y
ZWRGcm9tUGFyZW50RGF0YUZvckNoaWxkKEFYQ29yZU9iamVjdCopIG92ZXJyaWRlIHsgfQogCisg
ICAgQVhJRCBwYXJlbnQoKSBjb25zdCB7IHJldHVybiBtX3BhcmVudDsgfQorICAgIAorICAgIEFY
SXNvbGF0ZWRUcmVlSUQgdHJlZUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3RyZWVJZGVu
dGlmaWVyOyB9CisgICAgQVhJc29sYXRlZFRyZWUqIHRyZWUoKSBjb25zdDsKKyAgICAKKyAgICBB
WElzb2xhdGVkT2JqZWN0KCkgPSBkZWZhdWx0OworICAgIEFYSXNvbGF0ZWRPYmplY3QoQVhDb3Jl
T2JqZWN0JiwgYm9vbCBpc1Jvb3QpOworICAgIHZvaWQgaW5pdGlhbGl6ZUF0dHJpYnV0ZURhdGEo
QVhDb3JlT2JqZWN0JiwgYm9vbCBpc1Jvb3QpOworICAgIAogICAgIGVudW0gY2xhc3MgQVhQcm9w
ZXJ0eU5hbWUgOiB1aW50OF90IHsKICAgICAgICAgTm9uZSA9IDAsCisgICAgICAgIEFjY2Vzc0tl
eSwKKyAgICAgICAgQWN0aW9uVmVyYiwKKyAgICAgICAgQWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRl
LAorICAgICAgICBBY2Nlc3NpYmlsaXR5VGV4dCwKKyAgICAgICAgQXV0b0NvbXBsZXRlVmFsdWUs
CisgICAgICAgIEFSSUFDb250cm9sc0VsZW1lbnRzLAorICAgICAgICBBUklBRGV0YWlsc0VsZW1l
bnRzLAorICAgICAgICBBUklBRHJvcEVmZmVjdHMsCisgICAgICAgIEFSSUFFcnJvck1lc3NhZ2VF
bGVtZW50cywKKyAgICAgICAgQVJJQUlzTXVsdGlsaW5lLAorICAgICAgICBBUklBRmxvd1RvRWxl
bWVudHMsCisgICAgICAgIEFSSUFMYW5kbWFya1JvbGVEZXNjcmlwdGlvbiwKKyAgICAgICAgQVJJ
QVRyZWVJdGVtQ29udGVudCwKKyAgICAgICAgQVJJQVRyZWVJdGVtRGlzY2xvc2VkUm93cywKKyAg
ICAgICAgQVJJQVRyZWVSb3dzLAorICAgICAgICBBUklBUm9sZUF0dHJpYnV0ZSwKKyAgICAgICAg
QVJJQU93bnNFbGVtZW50cywKKyAgICAgICAgQmxvY2txdW90ZUxldmVsLAogICAgICAgICBCb3Vu
ZGluZ0JveFJlY3QsCisgICAgICAgIENhbkhhdmVTZWxlY3RlZENoaWxkcmVuLAorICAgICAgICBD
YW5TZXRFeHBhbmRlZEF0dHJpYnV0ZSwKKyAgICAgICAgQ2FuU2V0Rm9jdXNBdHRyaWJ1dGUsCisg
ICAgICAgIENhblNldE51bWVyaWNWYWx1ZSwKKyAgICAgICAgQ2FuU2V0U2VsZWN0ZWRBdHRyaWJ1
dGUsCisgICAgICAgIENhblNldFNlbGVjdGVkQ2hpbGRyZW5BdHRyaWJ1dGUsCisgICAgICAgIENh
blNldFRleHRSYW5nZUF0dHJpYnV0ZXMsCisgICAgICAgIENhblNldFZhbHVlQXR0cmlidXRlLAor
ICAgICAgICBDYW52YXNIYXNGYWxsYmFja0NvbnRlbnQsCisgICAgICAgIENhcmV0QnJvd3NpbmdF
bmFibGVkLAorICAgICAgICBDbGFzc0xpc3QsCisgICAgICAgIENsaWNrUG9pbnQsCisgICAgICAg
IENvbG9yVmFsdWUsCisgICAgICAgIENvbXB1dGVkTGFiZWwsCisgICAgICAgIENvbXB1dGVkUm9s
ZVN0cmluZywKKyAgICAgICAgQ3VycmVudFN0YXRlLAorICAgICAgICBDdXJyZW50VmFsdWUsCisg
ICAgICAgIERhdGV0aW1lQXR0cmlidXRlVmFsdWUsCiAgICAgICAgIERlc2NyaXB0aW9uLAorICAg
ICAgICBEb2N1bWVudEVuY29kaW5nLAorICAgICAgICBEb2N1bWVudFVSSSwKKyAgICAgICAgRWRp
dGFibGVBbmNlc3RvciwKICAgICAgICAgRWxlbWVudFJlY3QsCisgICAgICAgIEVzdGltYXRlZExv
YWRpbmdQcm9ncmVzcywKKyAgICAgICAgRXhwYW5kZWRUZXh0VmFsdWUsCisgICAgICAgIEV4cG9z
ZXNUaXRsZVVJRWxlbWVudCwKKyAgICAgICAgRmlsZVVwbG9hZEJ1dHRvblJldHVybnNWYWx1ZUlu
VGl0bGUsCisgICAgICAgIEZvY3VzYWJsZUFuY2VzdG9yLAorICAgICAgICBIYXNBUklBVmFsdWVO
b3csCisgICAgICAgIEhhc1BvcHVwLAorICAgICAgICBIZWFkaW5nTGV2ZWwsCiAgICAgICAgIEhl
bHBUZXh0LAorICAgICAgICBIaWVyYXJjaGljYWxMZXZlbCwKKyAgICAgICAgSGlnaGVzdEVkaXRh
YmxlQW5jZXN0b3IsCisgICAgICAgIEhvcml6b250YWxTY3JvbGxCYXIsCisgICAgICAgIElkZW50
aWZpZXJBdHRyaWJ1dGUsCisgICAgICAgIEludmFsaWRTdGF0dXMsCiAgICAgICAgIElzQWNjZXNz
aWJpbGl0eUlnbm9yZWQsCisgICAgICAgIElzQWN0aXZlRGVzY2VuZGFudE9mRm9jdXNlZENvbnRh
aW5lciwKICAgICAgICAgSXNBbm9ueW1vdXNNYXRoT3BlcmF0b3IsCisgICAgICAgIElzQVJJQUdy
YWJiZWQsCisgICAgICAgIElzQVJJQVRyZWVHcmlkUm93LAogICAgICAgICBJc0F0dGFjaG1lbnQs
CisgICAgICAgIElzQnV0dG9uLAorICAgICAgICBJc0J1c3ksCiAgICAgICAgIElzQ2hlY2tlZCwK
ICAgICAgICAgSXNDb2xsYXBzZWQsCisgICAgICAgIElzQ29udHJvbCwKICAgICAgICAgSXNFbmFi
bGVkLAogICAgICAgICBJc0V4cGFuZGVkLAorICAgICAgICBJc0ZpZWxkc2V0LAogICAgICAgICBJ
c0ZpbGVVcGxvYWRCdXR0b24sCiAgICAgICAgIElzRm9jdXNlZCwKKyAgICAgICAgSXNHcm91cCwK
ICAgICAgICAgSXNJbWFnZSwKICAgICAgICAgSXNJbWFnZU1hcExpbmssCiAgICAgICAgIElzSW5k
ZXRlcm1pbmF0ZSwKKyAgICAgICAgSXNJbmxpbmVUZXh0LAorICAgICAgICBJc0lucHV0SW1hZ2Us
CisgICAgICAgIElzSW5zaWRlTGl2ZVJlZ2lvbiwKICAgICAgICAgSXNMaW5rLAogICAgICAgICBJ
c0xpbmtlZCwKKyAgICAgICAgSXNMaXN0LAorICAgICAgICBJc0xpc3RCb3gsCiAgICAgICAgIElz
TG9hZGVkLAorICAgICAgICBJc0hlYWRpbmcsCiAgICAgICAgIElzSG92ZXJlZCwKICAgICAgICAg
SXNNYXRoRWxlbWVudCwKICAgICAgICAgSXNNYXRoRnJhY3Rpb24sCkBAIC02NzcsMjMgKzE4MSw1
NyBAQCBwcml2YXRlOgogICAgICAgICBJc01hdGhNdWx0aXNjcmlwdCwKICAgICAgICAgSXNNYXRo
VG9rZW4sCiAgICAgICAgIElzTWF0aFNjcmlwdE9iamVjdCwKLSAgICAgICAgSXNNZWRpYUNvbnRy
b2xMYWJlbCwKKyAgICAgICAgSXNNZWRpYVRpbWVsaW5lLAorICAgICAgICBJc01lbnUsCisgICAg
ICAgIElzTWVudUJhciwKKyAgICAgICAgSXNNZW51QnV0dG9uLAorICAgICAgICBJc01lbnVJdGVt
LAorICAgICAgICBJc01lbnVMaXN0LAorICAgICAgICBJc01lbnVMaXN0T3B0aW9uLAorICAgICAg
ICBJc01lbnVMaXN0UG9wdXAsCisgICAgICAgIElzTWVudVJlbGF0ZWQsCisgICAgICAgIElzTWV0
ZXIsCiAgICAgICAgIElzTXVsdGlTZWxlY3RhYmxlLAogICAgICAgICBJc09mZlNjcmVlbiwKICAg
ICAgICAgSXNPblNjcmVlbiwKKyAgICAgICAgSXNPdXRwdXQsCisgICAgICAgIElzUGFzc3dvcmRG
aWVsZCwKICAgICAgICAgSXNQcmVzc2VkLAorICAgICAgICBJc1Byb2dyZXNzSW5kaWNhdG9yLAor
ICAgICAgICBJc1JhbmdlQ29udHJvbCwKICAgICAgICAgSXNSZXF1aXJlZCwKICAgICAgICAgSXNT
Y3JvbGxiYXIsCisgICAgICAgIElzU2VhcmNoRmllbGQsCiAgICAgICAgIElzU2VsZWN0ZWQsCiAg
ICAgICAgIElzU2VsZWN0ZWRPcHRpb25BY3RpdmUsCisgICAgICAgIElzU2hvd2luZ1ZhbGlkYXRp
b25NZXNzYWdlLAorICAgICAgICBJc1NsaWRlciwKKyAgICAgICAgSXNTdHlsZUZvcm1hdEdyb3Vw
LAorICAgICAgICBJc1RhYmxlLAorICAgICAgICBJc1RhYmxlQ2VsbCwKKyAgICAgICAgSXNUYWJs
ZUNvbHVtbiwKKyAgICAgICAgSXNUYWJsZVJvdywKKyAgICAgICAgSXNUZXh0Q29udHJvbCwKICAg
ICAgICAgSXNUcmVlLAogICAgICAgICBJc1RyZWVJdGVtLAogICAgICAgICBJc1VudmlzaXRlZCwK
KyAgICAgICAgSXNWYWx1ZUF1dG9maWxsZWQsCisgICAgICAgIElzVmFsdWVBdXRvZmlsbEF2YWls
YWJsZSwKICAgICAgICAgSXNWaXNpYmxlLAogICAgICAgICBJc1Zpc2l0ZWQsCisgICAgICAgIEtl
eVNob3J0Y3V0c1ZhbHVlLAorICAgICAgICBMYW5ndWFnZSwKKyAgICAgICAgTGF5b3V0Q291bnQs
CisgICAgICAgIExpbmtSZWxWYWx1ZSwKKyAgICAgICAgTGlua2VkVUlFbGVtZW50cywKKyAgICAg
ICAgTGl2ZVJlZ2lvbkF0b21pYywKKyAgICAgICAgTGl2ZVJlZ2lvblJlbGV2YW50LAorICAgICAg
ICBMaXZlUmVnaW9uU3RhdHVzLAogICAgICAgICBNYXRoRmVuY2VkT3BlblN0cmluZywKICAgICAg
ICAgTWF0aEZlbmNlZENsb3NlU3RyaW5nLAogICAgICAgICBNYXRoTGluZVRoaWNrbmVzcywKKyAg
ICAgICAgTWF0aFByZXNjcmlwdHMsCisgICAgICAgIE1hdGhQb3N0c2NyaXB0cywKICAgICAgICAg
TWF0aFJhZGljYW5kT2JqZWN0LAogICAgICAgICBNYXRoUm9vdEluZGV4T2JqZWN0LAogICAgICAg
ICBNYXRoVW5kZXJPYmplY3QsCkBAIC03MDMsMzcgKzI0MSw1NTcgQEAgcHJpdmF0ZToKICAgICAg
ICAgTWF0aEJhc2VPYmplY3QsCiAgICAgICAgIE1hdGhTdWJzY3JpcHRPYmplY3QsCiAgICAgICAg
IE1hdGhTdXBlcnNjcmlwdE9iamVjdCwKKyAgICAgICAgTWF4VmFsdWVGb3JSYW5nZSwKKyAgICAg
ICAgTWluVmFsdWVGb3JSYW5nZSwKKyAgICAgICAgT3JpZW50YXRpb24sCisgICAgICAgIFBsYWNl
aG9sZGVyVmFsdWUsCisgICAgICAgIFByZXNzZWRJc1ByZXNlbnQsCisgICAgICAgIFBvcHVwVmFs
dWUsCisgICAgICAgIFBvc0luU2V0LAorICAgICAgICBQcmV2ZW50S2V5Ym9hcmRET01FdmVudERp
c3BhdGNoLAorICAgICAgICBSZWFkT25seVZhbHVlLAogICAgICAgICBSZWxhdGl2ZUZyYW1lLAog
ICAgICAgICBSb2xlVmFsdWUsCiAgICAgICAgIFJvbGVQbGF0Zm9ybVN0cmluZywKICAgICAgICAg
Um9sZURlc2NyaXB0aW9uLAotICAgICAgICBBUklBTGFuZG1hcmtSb2xlRGVzY3JpcHRpb24sCisg
ICAgICAgIFNlbGVjdGVkQ2hpbGRyZW4sCisgICAgICAgIFNlbGVjdGVkUmFkaW9CdXR0b24sCisg
ICAgICAgIFNlbGVjdGVkVGFiSXRlbSwKKyAgICAgICAgU2Vzc2lvbklELAorICAgICAgICBTZXRT
aXplLAorICAgICAgICBTb3J0RGlyZWN0aW9uLAorICAgICAgICBTcGVha0FzLAogICAgICAgICBT
cGVlY2hIaW50LAorICAgICAgICBTdXBwb3J0c0FSSUFEcmFnZ2luZywKKyAgICAgICAgU3VwcG9y
dHNBUklBRHJvcHBpbmcsCisgICAgICAgIFN1cHBvcnRzQVJJQU93bnMsCisgICAgICAgIFN1cHBv
cnRzQ3VycmVudCwKKyAgICAgICAgU3VwcG9ydHNEYXRldGltZUF0dHJpYnV0ZSwKKyAgICAgICAg
U3VwcG9ydHNFeHBhbmRlZCwKKyAgICAgICAgU3VwcG9ydHNFeHBhbmRlZFRleHRWYWx1ZSwKKyAg
ICAgICAgU3VwcG9ydHNMaXZlUmVnaW9uLAorICAgICAgICBTdXBwb3J0c1JhbmdlVmFsdWUsCisg
ICAgICAgIFN1cHBvcnRzUG9zSW5TZXQsCisgICAgICAgIFN1cHBvcnRzUHJlc3NBY3Rpb24sCiAg
ICAgICAgIFN1cHBvcnRzUmVxdWlyZWRBdHRyaWJ1dGUsCisgICAgICAgIFN1cHBvcnRzU2V0U2l6
ZSwKKyAgICAgICAgVGFiQ2hpbGRyZW4sCisgICAgICAgIFRhYmxlTGV2ZWwsCisgICAgICAgIFRh
Z05hbWUsCisgICAgICAgIFRleHRMZW5ndGgsCiAgICAgICAgIFRpdGxlLAorICAgICAgICBUaXRs
ZVVJRWxlbWVudCwKKyAgICAgICAgVVJMLAorICAgICAgICBWYWx1ZUF1dG9maWxsQnV0dG9uVHlw
ZSwKKyAgICAgICAgVmFsdWVEZXNjcmlwdGlvbiwKKyAgICAgICAgVmFsdWVGb3JSYW5nZSwKKyAg
ICAgICAgVmFsaWRhdGlvbk1lc3NhZ2UsCisgICAgICAgIFZlcnRpY2FsU2Nyb2xsQmFyLAorICAg
ICAgICBWaXNpYmxlQ2hpbGRyZW4sCiAgICAgfTsKLQotICAgIEFYSUQgcGFyZW50KCkgY29uc3Qg
eyByZXR1cm4gbV9wYXJlbnQ7IH0KLQotICAgIEFYSXNvbGF0ZWRUcmVlSUQgdHJlZUlkZW50aWZp
ZXIoKSBjb25zdCB7IHJldHVybiBtX3RyZWVJZGVudGlmaWVyOyB9Ci0gICAgQVhJc29sYXRlZFRy
ZWUqIHRyZWUoKSBjb25zdDsKLQotICAgIEFYSXNvbGF0ZWRPYmplY3QoKSA9IGRlZmF1bHQ7Ci0g
ICAgQVhJc29sYXRlZE9iamVjdChBWENvcmVPYmplY3QmKTsKLSAgICB2b2lkIGluaXRpYWxpemVB
dHRyaWJ1dGVEYXRhKEFYQ29yZU9iamVjdCYpOwotCi0gICAgdXNpbmcgQXR0cmlidXRlVmFsdWVW
YXJpYW50ID0gVmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgU3RyaW5nLCBib29sLCBpbnQsIHVuc2ln
bmVkLCBkb3VibGUsIExheW91dFJlY3QsIEFYSUQ+OworICAgIAorICAgIHR5cGVkZWYgc3RkOjpw
YWlyPEFYSUQsIEFYSUQ+IEFjY2Vzc2liaWxpdHlJc29sYXRlZFRyZWVNYXRoTXVsdGlzY3JpcHRQ
YWlyOworICAgIHN0cnVjdCBBY2Nlc3NpYmlsaXR5SXNvbGF0ZWRUcmVlVGV4dCB7CisgICAgICAg
IFN0cmluZyB0ZXh0OworICAgICAgICBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZSB0ZXh0U291cmNl
OworICAgICAgICBWZWN0b3I8QVhJRD4gdGV4dEVsZW1lbnRzOworICAgIH07CisgICAgCisgICAg
dXNpbmcgQXR0cmlidXRlVmFsdWVWYXJpYW50ID0gVmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgU3Ry
aW5nLCBib29sLCBpbnQsIHVuc2lnbmVkLCBkb3VibGUsIGZsb2F0LCB1aW50NjRfdCwgQ29sb3Is
IFVSTCwgTGF5b3V0UmVjdCwgQVhJRCwgSW50UG9pbnQsIE9wdGlvblNldDxTcGVha0FzPiwgVmVj
dG9yPEFjY2Vzc2liaWxpdHlJc29sYXRlZFRyZWVUZXh0PiwgVmVjdG9yPEFYSUQ+LCBWZWN0b3I8
QWNjZXNzaWJpbGl0eUlzb2xhdGVkVHJlZU1hdGhNdWx0aXNjcmlwdFBhaXI+LCBWZWN0b3I8U3Ry
aW5nPj47CiAgICAgdm9pZCBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZSwgQXR0cmlidXRlVmFs
dWVWYXJpYW50JiYsIGJvb2wgc2hvdWxkUmVtb3ZlID0gZmFsc2UpOwogICAgIHZvaWQgc2V0T2Jq
ZWN0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWUsIEFYQ29yZU9iamVjdCopOwotICAgIAorICAgIHZv
aWQgc2V0T2JqZWN0VmVjdG9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWUsIEFjY2Vzc2liaWxpdHlD
aGlsZHJlblZlY3RvciYpOworCiAgICAgYm9vbCBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0
eU5hbWUpIGNvbnN0OwogICAgIGNvbnN0IFN0cmluZyBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShBWFBy
b3BlcnR5TmFtZSkgY29uc3Q7CiAgICAgaW50IGludEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlO
YW1lKSBjb25zdDsKICAgICB1bnNpZ25lZCB1bnNpZ25lZEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVy
dHlOYW1lKSBjb25zdDsKICAgICBkb3VibGUgZG91YmxlQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0
eU5hbWUpIGNvbnN0OwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQgcmVjdEF0dHJpYnV0ZVZh
bHVlKEFYUHJvcGVydHlOYW1lKSBjb25zdDsKKyAgICBmbG9hdCBmbG9hdEF0dHJpYnV0ZVZhbHVl
KEFYUHJvcGVydHlOYW1lKSBjb25zdDsKICAgICBBWENvcmVPYmplY3QqIG9iamVjdEF0dHJpYnV0
ZVZhbHVlKEFYUHJvcGVydHlOYW1lKSBjb25zdDsKKyAgICBJbnRQb2ludCBpbnRQb2ludEF0dHJp
YnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lKSBjb25zdDsKKyAgICBDb2xvciBjb2xvckF0dHJpYnV0
ZVZhbHVlKEFYUHJvcGVydHlOYW1lKSBjb25zdDsKKyAgICBVUkwgdXJsQXR0cmlidXRlVmFsdWUo
QVhQcm9wZXJ0eU5hbWUpIGNvbnN0OworICAgIHVpbnQ2NF90IHVpbnQ2NEF0dHJpYnV0ZVZhbHVl
KEFYUHJvcGVydHlOYW1lKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIHJlY3RB
dHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZSkgY29uc3Q7CisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4gVmVjdG9yPFQ+IHZlY3RvckF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lKSBjb25z
dDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBPcHRpb25TZXQ8VD4gb3B0aW9uU2V0QXR0cmli
dXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWUpIGNvbnN0OwogCisgICAgdm9pZCBmaWxsQ2hpbGRyZW5W
ZWN0b3JGb3JQcm9wZXJ0eShBWFByb3BlcnR5TmFtZSwgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yJikgY29uc3Q7CisgICAgdm9pZCBzZXRNYXRoc2NyaXB0cyhBWFByb3BlcnR5TmFtZSwgQVhD
b3JlT2JqZWN0Jik7CisgICAgdm9pZCBpbnNlcnRNYXRoUGFpcnMoVmVjdG9yPEFjY2Vzc2liaWxp
dHlJc29sYXRlZFRyZWVNYXRoTXVsdGlzY3JpcHRQYWlyPiYsIEFjY2Vzc2liaWxpdHlNYXRoTXVs
dGlzY3JpcHRQYWlycyYpOworICAgIAorICAgIC8vIEF0dHJpYnV0ZSByZXRyaWV2YWwgb3ZlcnJp
ZGVzLgorICAgIGJvb2wgaXNIZWFkaW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0
dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc0hlYWRpbmcpOyB9CisgICAgYm9vbCBpc0xp
bmsoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0
eU5hbWU6OklzTGluayk7IH0KKyAgICBib29sIGlzSW1hZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzSW1hZ2UpOyB9CisgICAg
Ym9vbCBpc1Bhc3N3b3JkRmllbGQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmli
dXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzUGFzc3dvcmRGaWVsZCk7IH0KKyAgICBib29sIGlz
U2VhcmNoRmllbGQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUo
QVhQcm9wZXJ0eU5hbWU6OklzU2VhcmNoRmllbGQpOyB9CisgICAgYm9vbCBpc0F0dGFjaG1lbnQo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5h
bWU6OklzQXR0YWNobWVudCk7IH0KKyAgICBib29sIGlzTWVkaWFUaW1lbGluZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNNZWRp
YVRpbWVsaW5lKTsgfQorICAgIGJvb2wgaXNNZW51UmVsYXRlZCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNNZW51UmVsYXRlZCk7
IH0KKyAgICBib29sIGlzTWVudSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1
dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNNZW51KTsgfQorICAgIGJvb2wgaXNNZW51QmFyKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1l
OjpJc01lbnVCYXIpOyB9CisgICAgYm9vbCBpc01lbnVCdXR0b24oKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzTWVudUJ1dHRvbik7
IH0KKyAgICBib29sIGlzTWVudUl0ZW0oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0
cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzTWVudUl0ZW0pOyB9CisgICAgYm9vbCBpc0Zp
bGVVcGxvYWRCdXR0b24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFs
dWUoQVhQcm9wZXJ0eU5hbWU6OklzRmlsZVVwbG9hZEJ1dHRvbik7IH0KKyAgICBib29sIGlzSW5w
dXRJbWFnZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFBy
b3BlcnR5TmFtZTo6SXNJbnB1dEltYWdlKTsgfQorICAgIGJvb2wgaXNQcm9ncmVzc0luZGljYXRv
cigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5
TmFtZTo6SXNQcm9ncmVzc0luZGljYXRvcik7IH0KKyAgICBib29sIGlzU2xpZGVyKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc1Ns
aWRlcik7IH0KKyAgICBib29sIGlzQ29udHJvbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJv
b2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNDb250cm9sKTsgfQorICAgIGJvb2wg
aXNMaXN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJv
cGVydHlOYW1lOjpJc0xpc3QpOyB9CisgICAgYm9vbCBpc1RhYmxlKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc1RhYmxlKTsgfQor
ICAgIGJvb2wgaXNUYWJsZVJvdygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1
dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNUYWJsZVJvdyk7IH0KKyAgICBib29sIGlzVGFibGVD
b2x1bW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9w
ZXJ0eU5hbWU6OklzVGFibGVDb2x1bW4pOyB9CisgICAgYm9vbCBpc1RhYmxlQ2VsbCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNU
YWJsZUNlbGwpOyB9CisgICAgYm9vbCBpc0ZpZWxkc2V0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc0ZpZWxkc2V0KTsgfQorICAg
IGJvb2wgaXNHcm91cCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1
ZShBWFByb3BlcnR5TmFtZTo6SXNHcm91cCk7IH0KKyAgICBib29sIGlzQVJJQVRyZWVHcmlkUm93
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlO
YW1lOjpJc0FSSUFUcmVlR3JpZFJvdyk7IH0KKyAgICBib29sIGlzTWVudUxpc3QoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzTWVu
dUxpc3QpOyB9CisgICAgYm9vbCBpc01lbnVMaXN0UG9wdXAoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzTWVudUxpc3RQb3B1cCk7
IH0KKyAgICBib29sIGlzTWVudUxpc3RPcHRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBi
b29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzTWVudUxpc3RPcHRpb24pOyB9Cisg
ICAgYm9vbCBpc1RleHRDb250cm9sKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJp
YnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc1RleHRDb250cm9sKTsgfQorICAgIGJvb2wgaXNC
dXR0b24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9w
ZXJ0eU5hbWU6OklzQnV0dG9uKTsgfQorICAgIGJvb2wgaXNSYW5nZUNvbnRyb2woKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzUmFu
Z2VDb250cm9sKTsgfQorICAgIGJvb2wgaXNNZXRlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNNZXRlcik7IH0KKyAgICBib29s
IGlzU3R5bGVGb3JtYXRHcm91cCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1
dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNTdHlsZUZvcm1hdEdyb3VwKTsgfQorICAgIGJvb2wg
aXNPdXRwdXQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQ
cm9wZXJ0eU5hbWU6OklzT3V0cHV0KTsgfQorICAgIGJvb2wgaXNDaGVja2VkKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc0NoZWNr
ZWQpOyB9CisgICAgYm9vbCBpc0VuYWJsZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29s
QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzRW5hYmxlZCk7IH0KKyAgICBib29sIGlz
U2VsZWN0ZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQ
cm9wZXJ0eU5hbWU6OklzU2VsZWN0ZWQpOyB9CisgICAgYm9vbCBpc0ZvY3VzZWQoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzRm9j
dXNlZCk7IH0KKyAgICBib29sIGlzTXVsdGlTZWxlY3RhYmxlKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc011bHRpU2VsZWN0YWJs
ZSk7IH0KKyAgICBib29sIGlzVmlzaXRlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xB
dHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNWaXNpdGVkKTsgfQorICAgIGJvb2wgaXNS
ZXF1aXJlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFBy
b3BlcnR5TmFtZTo6SXNSZXF1aXJlZCk7IH0KKyAgICBib29sIHN1cHBvcnRzUmVxdWlyZWRBdHRy
aWJ1dGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9w
ZXJ0eU5hbWU6OlN1cHBvcnRzUmVxdWlyZWRBdHRyaWJ1dGUpOyB9CisgICAgYm9vbCBpc0V4cGFu
ZGVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVy
dHlOYW1lOjpJc0V4cGFuZGVkKTsgfQorICAgIEZsb2F0UmVjdCByZWxhdGl2ZUZyYW1lKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gcmVjdEF0dHJpYnV0ZVZhbHVlPEZsb2F0UmVjdD4oQVhQcm9w
ZXJ0eU5hbWU6OlJlbGF0aXZlRnJhbWUpOyB9CisgICAgYm9vbCBzdXBwb3J0c0RhdGV0aW1lQXR0
cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJv
cGVydHlOYW1lOjpTdXBwb3J0c0RhdGV0aW1lQXR0cmlidXRlKTsgfQorICAgIFN0cmluZyBkYXRl
dGltZUF0dHJpYnV0ZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RyaW5nQXR0cmli
dXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkRhdGV0aW1lQXR0cmlidXRlVmFsdWUpOyB9CisgICAg
Ym9vbCBjYW5TZXRGb2N1c0F0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xB
dHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6Q2FuU2V0Rm9jdXNBdHRyaWJ1dGUpOyB9Cisg
ICAgYm9vbCBjYW5TZXRUZXh0UmFuZ2VBdHRyaWJ1dGVzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpDYW5TZXRUZXh0UmFuZ2VBdHRy
aWJ1dGVzKTsgfQorICAgIGJvb2wgY2FuU2V0VmFsdWVBdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkNhblNldFZhbHVl
QXR0cmlidXRlKTsgfQorICAgIGJvb2wgY2FuU2V0TnVtZXJpY1ZhbHVlKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpDYW5TZXROdW1l
cmljVmFsdWUpOyB9CisgICAgYm9vbCBjYW5TZXRTZWxlY3RlZEF0dHJpYnV0ZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6Q2FuU2V0
U2VsZWN0ZWRBdHRyaWJ1dGUpOyB9CisgICAgYm9vbCBjYW5TZXRTZWxlY3RlZENoaWxkcmVuQXR0
cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJv
cGVydHlOYW1lOjpDYW5TZXRTZWxlY3RlZENoaWxkcmVuQXR0cmlidXRlKTsgfQorICAgIGJvb2wg
Y2FuU2V0RXhwYW5kZWRBdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0
cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkNhblNldEV4cGFuZGVkQXR0cmlidXRlKTsgfQor
ICAgIGJvb2wgYWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNBY2Nlc3NpYmlsaXR5SWdub3Jl
ZCk7IH0KKyAgICBib29sIGlzU2hvd2luZ1ZhbGlkYXRpb25NZXNzYWdlKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc1Nob3dpbmdW
YWxpZGF0aW9uTWVzc2FnZSk7IH0KKyAgICBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2UoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6
VmFsaWRhdGlvbk1lc3NhZ2UpOyB9CisgICAgdW5zaWduZWQgYmxvY2txdW90ZUxldmVsKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdW5zaWduZWRBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFt
ZTo6QmxvY2txdW90ZUxldmVsKTsgfQorICAgIGludCBoZWFkaW5nTGV2ZWwoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBpbnRBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SGVhZGluZ0xl
dmVsKTsgfQorICAgIGludCB0YWJsZUxldmVsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gaW50
QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OlRhYmxlTGV2ZWwpOyB9CisgICAgQWNjZXNz
aWJpbGl0eUJ1dHRvblN0YXRlIGNoZWNrYm94T3JSYWRpb1ZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRlPihpbnRBdHRyaWJ1
dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6QWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRlKSk7IH0KKyAg
ICBTdHJpbmcgdmFsdWVEZXNjcmlwdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0cmlu
Z0F0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpWYWx1ZURlc2NyaXB0aW9uKTsgfQorICAg
IGZsb2F0IHZhbHVlRm9yUmFuZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmbG9hdEF0dHJp
YnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpWYWx1ZUZvclJhbmdlKTsgfQorICAgIGZsb2F0IG1h
eFZhbHVlRm9yUmFuZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmbG9hdEF0dHJpYnV0ZVZh
bHVlKEFYUHJvcGVydHlOYW1lOjpNYXhWYWx1ZUZvclJhbmdlKTsgfQorICAgIGZsb2F0IG1pblZh
bHVlRm9yUmFuZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmbG9hdEF0dHJpYnV0ZVZhbHVl
KEFYUHJvcGVydHlOYW1lOjpNaW5WYWx1ZUZvclJhbmdlKTsgfQorICAgIEFYQ29yZU9iamVjdCog
c2VsZWN0ZWRSYWRpb0J1dHRvbigpIG92ZXJyaWRlIHsgcmV0dXJuIG9iamVjdEF0dHJpYnV0ZVZh
bHVlKEFYUHJvcGVydHlOYW1lOjpTZWxlY3RlZFJhZGlvQnV0dG9uKTsgfQorICAgIEFYQ29yZU9i
amVjdCogc2VsZWN0ZWRUYWJJdGVtKCkgb3ZlcnJpZGUgeyByZXR1cm4gb2JqZWN0QXR0cmlidXRl
VmFsdWUoQVhQcm9wZXJ0eU5hbWU6OlNlbGVjdGVkVGFiSXRlbSk7IH0KKyAgICBpbnQgbGF5b3V0
Q291bnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBpbnRBdHRyaWJ1dGVWYWx1ZShBWFByb3Bl
cnR5TmFtZTo6TGF5b3V0Q291bnQpOyB9CisgICAgZG91YmxlIGVzdGltYXRlZExvYWRpbmdQcm9n
cmVzcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGRvdWJsZUF0dHJpYnV0ZVZhbHVlKEFYUHJv
cGVydHlOYW1lOjpFc3RpbWF0ZWRMb2FkaW5nUHJvZ3Jlc3MpOyB9CisgICAgYm9vbCBzdXBwb3J0
c0FSSUFPd25zKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFY
UHJvcGVydHlOYW1lOjpTdXBwb3J0c0FSSUFPd25zKTsgfQorICAgIGJvb2wgaXNBY3RpdmVEZXNj
ZW5kYW50T2ZGb2N1c2VkQ29udGFpbmVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0
dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc0FjdGl2ZURlc2NlbmRhbnRPZkZvY3VzZWRD
b250YWluZXIpOyB9CisgICAgdm9pZCBhcmlhQ29udHJvbHNFbGVtZW50cyhBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5WZWN0b3ImIGNoaWxkcmVuKSBjb25zdCBvdmVycmlkZSB7IGZpbGxDaGlsZHJlblZl
Y3RvckZvclByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpBUklBQ29udHJvbHNFbGVtZW50cywgY2hp
bGRyZW4pOyB9CisgICAgdm9pZCBhcmlhRGV0YWlsc0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciYgY2hpbGRyZW4pIGNvbnN0IG92ZXJyaWRlIHsgZmlsbENoaWxkcmVuVmVjdG9y
Rm9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkFSSUFEZXRhaWxzRWxlbWVudHMsIGNoaWxkcmVu
KTsgfQorICAgIHZvaWQgYXJpYUVycm9yTWVzc2FnZUVsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciYgY2hpbGRyZW4pIGNvbnN0IG92ZXJyaWRlIHsgZmlsbENoaWxkcmVuVmVjdG9y
Rm9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkFSSUFFcnJvck1lc3NhZ2VFbGVtZW50cywgY2hp
bGRyZW4pOyB9CisgICAgdm9pZCBhcmlhRmxvd1RvRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yJiBjaGlsZHJlbikgY29uc3Qgb3ZlcnJpZGUgeyBmaWxsQ2hpbGRyZW5WZWN0b3JG
b3JQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6QVJJQUZsb3dUb0VsZW1lbnRzLCBjaGlsZHJlbik7
IH0KKyAgICB2b2lkIGFyaWFPd25zRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
JiBjaGlsZHJlbikgY29uc3Qgb3ZlcnJpZGUgeyBmaWxsQ2hpbGRyZW5WZWN0b3JGb3JQcm9wZXJ0
eShBWFByb3BlcnR5TmFtZTo6QVJJQU93bnNFbGVtZW50cywgY2hpbGRyZW4pOyB9CisgICAgYm9v
bCBoYXNQb3B1cCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShB
WFByb3BlcnR5TmFtZTo6SGFzUG9wdXApOyB9CisgICAgU3RyaW5nIHBvcHVwVmFsdWUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6
UG9wdXBWYWx1ZSk7IH0KKyAgICBib29sIHByZXNzZWRJc1ByZXNlbnQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OlByZXNzZWRJc1By
ZXNlbnQpOyB9CisgICAgYm9vbCBhcmlhSXNNdWx0aWxpbmUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkFSSUFJc011bHRpbGluZSk7
IH0KKyAgICBTdHJpbmcgaW52YWxpZFN0YXR1cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0
cmluZ0F0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJbnZhbGlkU3RhdHVzKTsgfQorICAg
IGJvb2wgc3VwcG9ydHNFeHBhbmRlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRy
aWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6U3VwcG9ydHNFeHBhbmRlZCk7IH0KKyAgICBBY2Nl
c3NpYmlsaXR5U29ydERpcmVjdGlvbiBzb3J0RGlyZWN0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eVNvcnREaXJlY3Rpb24+KGludEF0dHJpYnV0
ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpTb3J0RGlyZWN0aW9uKSk7IH0KKyAgICBib29sIGNhbnZh
c0hhc0ZhbGxiYWNrQ29udGVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1
dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6Q2FudmFzSGFzRmFsbGJhY2tDb250ZW50KTsgfQorICAg
IGJvb2wgc3VwcG9ydHNSYW5nZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0
dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpTdXBwb3J0c1JhbmdlVmFsdWUpOyB9CisgICAg
U3RyaW5nIGlkZW50aWZpZXJBdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdHJp
bmdBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SWRlbnRpZmllckF0dHJpYnV0ZSk7IH0K
KyAgICBTdHJpbmcgbGlua1JlbFZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RyaW5n
QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkxpbmtSZWxWYWx1ZSk7IH0KKyAgICB2b2lk
IGNsYXNzTGlzdChWZWN0b3I8U3RyaW5nPiYpIGNvbnN0IG92ZXJyaWRlOworICAgIEFjY2Vzc2li
aWxpdHlDdXJyZW50U3RhdGUgY3VycmVudFN0YXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eUN1cnJlbnRTdGF0ZT4oaW50QXR0cmlidXRlVmFsdWUo
QVhQcm9wZXJ0eU5hbWU6OkN1cnJlbnRTdGF0ZSkpOyB9CisgICAgU3RyaW5nIGN1cnJlbnRWYWx1
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0cmluZ0F0dHJpYnV0ZVZhbHVlKEFYUHJvcGVy
dHlOYW1lOjpDdXJyZW50VmFsdWUpOyB9CisgICAgYm9vbCBzdXBwb3J0c0N1cnJlbnQoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OlN1
cHBvcnRzQ3VycmVudCk7IH0KKyAgICBjb25zdCBTdHJpbmcga2V5U2hvcnRjdXRzVmFsdWUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFt
ZTo6S2V5U2hvcnRjdXRzVmFsdWUpOyB9CisgICAgYm9vbCBzdXBwb3J0c1NldFNpemUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OlN1
cHBvcnRzU2V0U2l6ZSk7IH0KKyAgICBib29sIHN1cHBvcnRzUG9zSW5TZXQoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OlN1cHBvcnRz
UG9zSW5TZXQpOyB9CisgICAgaW50IHNldFNpemUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBp
bnRBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6U2V0U2l6ZSk7IH0KKyAgICBpbnQgcG9z
SW5TZXQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBpbnRBdHRyaWJ1dGVWYWx1ZShBWFByb3Bl
cnR5TmFtZTo6UG9zSW5TZXQpOyB9CisgICAgYm9vbCBzdXBwb3J0c0FSSUFEcm9wcGluZygpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6
U3VwcG9ydHNBUklBRHJvcHBpbmcpOyB9CisgICAgYm9vbCBzdXBwb3J0c0FSSUFEcmFnZ2luZygp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFt
ZTo6U3VwcG9ydHNBUklBRHJhZ2dpbmcpOyB9CisgICAgYm9vbCBpc0FSSUFHcmFiYmVkKCkgb3Zl
cnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc0FSSUFH
cmFiYmVkKTsgfQorICAgIFZlY3RvcjxTdHJpbmc+IGRldGVybWluZUFSSUFEcm9wRWZmZWN0cygp
IG92ZXJyaWRlIHsgcmV0dXJuIHZlY3RvckF0dHJpYnV0ZVZhbHVlPFN0cmluZz4oQVhQcm9wZXJ0
eU5hbWU6OkFSSUFEcm9wRWZmZWN0cyk7IH0KKyAgICBBWENvcmVPYmplY3QqIGFjY2Vzc2liaWxp
dHlIaXRUZXN0KGNvbnN0IEludFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgQVhDb3JlT2Jq
ZWN0KiBmb2N1c2VkVUlFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQVhDb3JlT2JqZWN0
KiBwYXJlbnRPYmplY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBwYXJlbnRPYmplY3RVbmln
bm9yZWQoKTsgfQorICAgIEFYQ29yZU9iamVjdCogcGFyZW50T2JqZWN0VW5pZ25vcmVkKCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBsaW5rZWRVSUVsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciYgY2hpbGRyZW4pIGNvbnN0IG92ZXJyaWRlIHsgZmlsbENoaWxkcmVuVmVjdG9y
Rm9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkxpbmtlZFVJRWxlbWVudHMsIGNoaWxkcmVuKTsg
fQorICAgIEFYQ29yZU9iamVjdCogdGl0bGVVSUVsZW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBvYmplY3RBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6VGl0bGVVSUVsZW1lbnQp
OyB9CisgICAgYm9vbCBleHBvc2VzVGl0bGVVSUVsZW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkV4cG9zZXNUaXRsZVVJRWxl
bWVudCk7IH0KKyAgICBBWENvcmVPYmplY3QqIHNjcm9sbEJhcihBY2Nlc3NpYmlsaXR5T3JpZW50
YXRpb24pIG92ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlSb2xlIGFyaWFSb2xlQXR0cmlidXRl
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eVJvbGU+
KGludEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpBUklBUm9sZUF0dHJpYnV0ZSkpOyB9
CisgICAgU3RyaW5nIGNvbXB1dGVkTGFiZWwoKSBvdmVycmlkZSB7IHJldHVybiBzdHJpbmdBdHRy
aWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6Q29tcHV0ZWRMYWJlbCk7IH0KKyAgICBpbnQgdGV4
dExlbmd0aCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGludEF0dHJpYnV0ZVZhbHVlKEFYUHJv
cGVydHlOYW1lOjpUZXh0TGVuZ3RoKTsgfQorICAgIGNvbnN0IFN0cmluZyBwbGFjZWhvbGRlclZh
bHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9w
ZXJ0eU5hbWU6OlBsYWNlaG9sZGVyVmFsdWUpOyB9CisgICAgU3RyaW5nIGV4cGFuZGVkVGV4dFZh
bHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9w
ZXJ0eU5hbWU6OkV4cGFuZGVkVGV4dFZhbHVlKTsgfQorICAgIGJvb2wgc3VwcG9ydHNFeHBhbmRl
ZFRleHRWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShB
WFByb3BlcnR5TmFtZTo6U3VwcG9ydHNFeHBhbmRlZFRleHRWYWx1ZSk7IH0KKyAgICB2b2lkIGNv
bG9yVmFsdWUoaW50JiwgaW50JiwgaW50JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgQWNjZXNzaWJp
bGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
QWNjZXNzaWJpbGl0eVJvbGU+KGludEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpSb2xl
VmFsdWUpKTsgfQorICAgIFN0cmluZyByb2xlUGxhdGZvcm1TdHJpbmcoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6Um9sZVBsYXRm
b3JtU3RyaW5nKTsgfQorICAgIFN0cmluZyByb2xlRGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6Um9sZURlc2Ny
aXB0aW9uKTsgfQorICAgIFN0cmluZyBhcmlhTGFuZG1hcmtSb2xlRGVzY3JpcHRpb24oKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6
QVJJQUxhbmRtYXJrUm9sZURlc2NyaXB0aW9uKTsgfQorICAgIGJvb2wgc3VwcG9ydHNQcmVzc0Fj
dGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3Bl
cnR5TmFtZTo6U3VwcG9ydHNQcmVzc0FjdGlvbik7IH0KKyAgICBMYXlvdXRSZWN0IGJvdW5kaW5n
Qm94UmVjdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJlY3RBdHRyaWJ1dGVWYWx1ZTxMYXlv
dXRSZWN0PihBWFByb3BlcnR5TmFtZTo6Qm91bmRpbmdCb3hSZWN0KTsgfQorICAgIExheW91dFJl
Y3QgZWxlbWVudFJlY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiByZWN0QXR0cmlidXRlVmFs
dWU8TGF5b3V0UmVjdD4oQVhQcm9wZXJ0eU5hbWU6OkVsZW1lbnRSZWN0KTsgfQorICAgIEludFBv
aW50IGNsaWNrUG9pbnQoKSBvdmVycmlkZSB7IHJldHVybiBpbnRQb2ludEF0dHJpYnV0ZVZhbHVl
KEFYUHJvcGVydHlOYW1lOjpDbGlja1BvaW50KTsgfQorICAgIHZvaWQgYWNjZXNzaWJpbGl0eVRl
eHQoVmVjdG9yPEFjY2Vzc2liaWxpdHlUZXh0PiYgdGV4dHMpIGNvbnN0IG92ZXJyaWRlOworICAg
IFN0cmluZyBjb21wdXRlZFJvbGVTdHJpbmcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdHJp
bmdBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6Q29tcHV0ZWRSb2xlU3RyaW5nKTsgfQor
ICAgIGJvb2wgaXNWYWx1ZUF1dG9maWxsZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29s
QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzVmFsdWVBdXRvZmlsbGVkKTsgfQorICAg
IGJvb2wgaXNWYWx1ZUF1dG9maWxsQXZhaWxhYmxlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
Ym9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc1ZhbHVlQXV0b2ZpbGxBdmFpbGFi
bGUpOyB9CisgICAgQXV0b0ZpbGxCdXR0b25UeXBlIHZhbHVlQXV0b2ZpbGxCdXR0b25UeXBlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QXV0b0ZpbGxCdXR0b25UeXBlPihp
bnRBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6VmFsdWVBdXRvZmlsbEJ1dHRvblR5cGUp
KTsgfQorICAgIHZvaWQgYXJpYVRyZWVSb3dzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYg
Y2hpbGRyZW4pIG92ZXJyaWRlIHsgZmlsbENoaWxkcmVuVmVjdG9yRm9yUHJvcGVydHkoQVhQcm9w
ZXJ0eU5hbWU6OkFSSUFUcmVlUm93cywgY2hpbGRyZW4pOyB9CisgICAgdm9pZCBhcmlhVHJlZUl0
ZW1EaXNjbG9zZWRSb3dzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgY2hpbGRyZW4pIG92
ZXJyaWRlIHsgZmlsbENoaWxkcmVuVmVjdG9yRm9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkFS
SUFUcmVlSXRlbURpc2Nsb3NlZFJvd3MsIGNoaWxkcmVuKTsgfQorICAgIHZvaWQgYXJpYVRyZWVJ
dGVtQ29udGVudChBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGNoaWxkcmVuKSBvdmVycmlk
ZSB7IGZpbGxDaGlsZHJlblZlY3RvckZvclByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpBUklBVHJl
ZUl0ZW1Db250ZW50LCBjaGlsZHJlbik7IH0KKyAgICBVUkwgdXJsKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gdXJsQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OlVSTCk7IH0KKyAgICBT
dHJpbmcgYWNjZXNzS2V5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RyaW5nQXR0cmlidXRl
VmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkFjY2Vzc0tleSk7IH0KKyAgICBTdHJpbmcgYWN0aW9uVmVy
YigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0cmluZ0F0dHJpYnV0ZVZhbHVlKEFYUHJvcGVy
dHlOYW1lOjpBY3Rpb25WZXJiKTsgfQorICAgIFN0cmluZyByZWFkT25seVZhbHVlKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OlJl
YWRPbmx5VmFsdWUpOyB9CisgICAgU3RyaW5nIGF1dG9Db21wbGV0ZVZhbHVlKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkF1dG9D
b21wbGV0ZVZhbHVlKTsgfQorICAgIE9wdGlvblNldDxTcGVha0FzPiBzcGVha0FzUHJvcGVydHko
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBvcHRpb25TZXRBdHRyaWJ1dGVWYWx1ZTxTcGVha0Fz
PihBWFByb3BlcnR5TmFtZTo6U3BlYWtBcyk7IH0KKyAgICBib29sIGlzTWF0aEVsZW1lbnQoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6
OklzTWF0aEVsZW1lbnQpOyB9CisgICAgYm9vbCBpc01hdGhGcmFjdGlvbigpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNNYXRoRnJh
Y3Rpb24pOyB9CisgICAgYm9vbCBpc01hdGhGZW5jZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzTWF0aEZlbmNlZCk7IH0KKyAg
ICBib29sIGlzTWF0aFN1YnNjcmlwdFN1cGVyc2NyaXB0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc01hdGhTdWJzY3JpcHRTdXBl
cnNjcmlwdCk7IH0KKyAgICBib29sIGlzTWF0aFJvdygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNNYXRoUm93KTsgfQorICAgIGJv
b2wgaXNNYXRoVW5kZXJPdmVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0
ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc01hdGhVbmRlck92ZXIpOyB9CisgICAgYm9vbCBpc01h
dGhSb290KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJv
cGVydHlOYW1lOjpJc01hdGhSb290KTsgfQorICAgIGJvb2wgaXNNYXRoU3F1YXJlUm9vdCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6
SXNNYXRoU3F1YXJlUm9vdCk7IH0KKyAgICBib29sIGlzTWF0aFRleHQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzTWF0aFRleHQp
OyB9CisgICAgYm9vbCBpc01hdGhOdW1iZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29s
QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzTWF0aE51bWJlcik7IH0KKyAgICBib29s
IGlzTWF0aE9wZXJhdG9yKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZh
bHVlKEFYUHJvcGVydHlOYW1lOjpJc01hdGhPcGVyYXRvcik7IH0KKyAgICBib29sIGlzTWF0aEZl
bmNlT3BlcmF0b3IoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUo
QVhQcm9wZXJ0eU5hbWU6OklzTWF0aEZlbmNlT3BlcmF0b3IpOyB9CisgICAgYm9vbCBpc01hdGhT
ZXBhcmF0b3JPcGVyYXRvcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVW
YWx1ZShBWFByb3BlcnR5TmFtZTo6SXNNYXRoU2VwYXJhdG9yT3BlcmF0b3IpOyB9CisgICAgYm9v
bCBpc01hdGhJZGVudGlmaWVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0
ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc01hdGhJZGVudGlmaWVyKTsgfQorICAgIGJvb2wgaXNN
YXRoVGFibGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQ
cm9wZXJ0eU5hbWU6OklzTWF0aFRhYmxlKTsgfQorICAgIGJvb2wgaXNNYXRoVGFibGVSb3coKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6
OklzTWF0aFRhYmxlUm93KTsgfQorICAgIGJvb2wgaXNNYXRoVGFibGVDZWxsKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc01hdGhU
YWJsZUNlbGwpOyB9CisgICAgYm9vbCBpc01hdGhNdWx0aXNjcmlwdCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNNYXRoTXVsdGlz
Y3JpcHQpOyB9CisgICAgYm9vbCBpc01hdGhUb2tlbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNNYXRoVG9rZW4pOyB9CisgICAg
QVhDb3JlT2JqZWN0KiBtYXRoUmFkaWNhbmRPYmplY3QoKSBvdmVycmlkZSB7IHJldHVybiBvYmpl
Y3RBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6TWF0aFJhZGljYW5kT2JqZWN0KTsgfQor
ICAgIEFYQ29yZU9iamVjdCogbWF0aFJvb3RJbmRleE9iamVjdCgpIG92ZXJyaWRlIHsgcmV0dXJu
IG9iamVjdEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpNYXRoUm9vdEluZGV4T2JqZWN0
KTsgfQorICAgIEFYQ29yZU9iamVjdCogbWF0aFVuZGVyT2JqZWN0KCkgb3ZlcnJpZGUgeyByZXR1
cm4gb2JqZWN0QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6Ok1hdGhVbmRlck9iamVjdCk7
IH0KKyAgICBBWENvcmVPYmplY3QqIG1hdGhPdmVyT2JqZWN0KCkgb3ZlcnJpZGUgeyByZXR1cm4g
b2JqZWN0QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6Ok1hdGhPdmVyT2JqZWN0KTsgfQor
ICAgIEFYQ29yZU9iamVjdCogbWF0aE51bWVyYXRvck9iamVjdCgpIG92ZXJyaWRlIHsgcmV0dXJu
IG9iamVjdEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpNYXRoTnVtZXJhdG9yT2JqZWN0
KTsgfQorICAgIEFYQ29yZU9iamVjdCogbWF0aERlbm9taW5hdG9yT2JqZWN0KCkgb3ZlcnJpZGUg
eyByZXR1cm4gb2JqZWN0QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6Ok1hdGhEZW5vbWlu
YXRvck9iamVjdCk7IH0KKyAgICBBWENvcmVPYmplY3QqIG1hdGhCYXNlT2JqZWN0KCkgb3ZlcnJp
ZGUgeyByZXR1cm4gb2JqZWN0QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6Ok1hdGhCYXNl
T2JqZWN0KTsgfQorICAgIEFYQ29yZU9iamVjdCogbWF0aFN1YnNjcmlwdE9iamVjdCgpIG92ZXJy
aWRlIHsgcmV0dXJuIG9iamVjdEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpNYXRoU3Vi
c2NyaXB0T2JqZWN0KTsgfQorICAgIEFYQ29yZU9iamVjdCogbWF0aFN1cGVyc2NyaXB0T2JqZWN0
KCkgb3ZlcnJpZGUgeyByZXR1cm4gb2JqZWN0QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6
Ok1hdGhTdXBlcnNjcmlwdE9iamVjdCk7IH0KKyAgICBTdHJpbmcgbWF0aEZlbmNlZE9wZW5TdHJp
bmcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShBWFByb3Bl
cnR5TmFtZTo6TWF0aEZlbmNlZE9wZW5TdHJpbmcpOyB9CisgICAgU3RyaW5nIG1hdGhGZW5jZWRD
bG9zZVN0cmluZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0cmluZ0F0dHJpYnV0ZVZhbHVl
KEFYUHJvcGVydHlOYW1lOjpNYXRoRmVuY2VkQ2xvc2VTdHJpbmcpOyB9CisgICAgaW50IG1hdGhM
aW5lVGhpY2tuZXNzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gaW50QXR0cmlidXRlVmFsdWUo
QVhQcm9wZXJ0eU5hbWU6Ok1hdGhMaW5lVGhpY2tuZXNzKTsgfQorICAgIGJvb2wgaXNBbm9ueW1v
dXNNYXRoT3BlcmF0b3IoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFs
dWUoQVhQcm9wZXJ0eU5hbWU6OklzQW5vbnltb3VzTWF0aE9wZXJhdG9yKTsgfQorICAgIHZvaWQg
bWF0aFByZXNjcmlwdHMoQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdFBhaXJzJikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBtYXRoUG9zdHNjcmlwdHMoQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlw
dFBhaXJzJikgb3ZlcnJpZGU7CisgICAgYm9vbCBmaWxlVXBsb2FkQnV0dG9uUmV0dXJuc1ZhbHVl
SW5UaXRsZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFBy
b3BlcnR5TmFtZTo6RmlsZVVwbG9hZEJ1dHRvblJldHVybnNWYWx1ZUluVGl0bGUpOyB9CisgICAg
U3RyaW5nIHNwZWVjaEhpbnRBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHN0cmluZ0F0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpTcGVlY2hIaW50KTsgfQorICAg
IFN0cmluZyBkZXNjcmlwdGlvbkF0dHJpYnV0ZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkRlc2NyaXB0aW9uKTsgfQor
ICAgIFN0cmluZyBoZWxwVGV4dEF0dHJpYnV0ZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkhlbHBUZXh0KTsgfQorICAg
IFN0cmluZyB0aXRsZUF0dHJpYnV0ZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3Ry
aW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OlRpdGxlKTsgfQorICAgIGJvb2wgY2Fy
ZXRCcm93c2luZ0VuYWJsZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRl
VmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkNhcmV0QnJvd3NpbmdFbmFibGVkKTsgfQorICAgIEFYQ29y
ZU9iamVjdCogZm9jdXNhYmxlQW5jZXN0b3IoKSBvdmVycmlkZSB7IHJldHVybiBvYmplY3RBdHRy
aWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6Rm9jdXNhYmxlQW5jZXN0b3IpOyB9CisgICAgQVhD
b3JlT2JqZWN0KiBlZGl0YWJsZUFuY2VzdG9yKCkgb3ZlcnJpZGUgeyByZXR1cm4gb2JqZWN0QXR0
cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkVkaXRhYmxlQW5jZXN0b3IpOyB9CisgICAgQVhD
b3JlT2JqZWN0KiBoaWdoZXN0RWRpdGFibGVBbmNlc3RvcigpIG92ZXJyaWRlIHsgcmV0dXJuIG9i
amVjdEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpIaWdoZXN0RWRpdGFibGVBbmNlc3Rv
cik7IH0KKyAgICBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb24gb3JpZW50YXRpb24oKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb24+KGlu
dEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpPcmllbnRhdGlvbikpOyB9CisgICAgdW5z
aWduZWQgaGllcmFyY2hpY2FsTGV2ZWwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB1bnNpZ25l
ZEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpIaWVyYXJjaGljYWxMZXZlbCk7IH0KKyAg
ICBTdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdHJpbmdBdHRyaWJ1
dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6TGFuZ3VhZ2UpOyB9CisgICAgYm9vbCBjYW5IYXZlU2Vs
ZWN0ZWRDaGlsZHJlbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1
ZShBWFByb3BlcnR5TmFtZTo6Q2FuSGF2ZVNlbGVjdGVkQ2hpbGRyZW4pOyB9CisgICAgdm9pZCBz
ZWxlY3RlZENoaWxkcmVuKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgY2hpbGRyZW4pIG92
ZXJyaWRlIHsgZmlsbENoaWxkcmVuVmVjdG9yRm9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OlNl
bGVjdGVkQ2hpbGRyZW4sIGNoaWxkcmVuKTsgfQorICAgIHZvaWQgdmlzaWJsZUNoaWxkcmVuKEFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgY2hpbGRyZW4pIG92ZXJyaWRlIHsgZmlsbENoaWxk
cmVuVmVjdG9yRm9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OlZpc2libGVDaGlsZHJlbiwgY2hp
bGRyZW4pOyB9CisgICAgdm9pZCB0YWJDaGlsZHJlbihBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3ImIGNoaWxkcmVuKSBvdmVycmlkZSB7IGZpbGxDaGlsZHJlblZlY3RvckZvclByb3BlcnR5KEFY
UHJvcGVydHlOYW1lOjpUYWJDaGlsZHJlbiwgY2hpbGRyZW4pOyB9CisgICAgYm9vbCBoYXNBUklB
VmFsdWVOb3coKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQ
cm9wZXJ0eU5hbWU6Okhhc0FSSUFWYWx1ZU5vdyk7IH0KKyAgICBTdHJpbmcgdGFnTmFtZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0cmluZ0F0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1l
OjpUYWdOYW1lKTsgfQorICAgIGNvbnN0IEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgY2hp
bGRyZW4oYm9vbCB1cGRhdGVDaGlsZHJlbklmTmVlZGVkID0gdHJ1ZSkgb3ZlcnJpZGU7CisgICAg
dm9pZCB1cGRhdGVDaGlsZHJlbklmTmVjZXNzYXJ5KCkgb3ZlcnJpZGUgeyB9CisgICAgYm9vbCBp
c0RldGFjaGVkRnJvbVBhcmVudCgpIG92ZXJyaWRlOworICAgIGJvb2wgc3VwcG9ydHNMaXZlUmVn
aW9uKGJvb2wgPSB0cnVlKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFs
dWUoQVhQcm9wZXJ0eU5hbWU6OlN1cHBvcnRzTGl2ZVJlZ2lvbik7IH0KKyAgICBib29sIGlzSW5z
aWRlTGl2ZVJlZ2lvbihib29sID0gdHJ1ZSkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0
dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc0luc2lkZUxpdmVSZWdpb24pOyB9CisgICAg
Y29uc3QgU3RyaW5nIGxpdmVSZWdpb25TdGF0dXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBz
dHJpbmdBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6TGl2ZVJlZ2lvblN0YXR1cyk7IH0K
KyAgICBjb25zdCBTdHJpbmcgbGl2ZVJlZ2lvblJlbGV2YW50KCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkxpdmVSZWdpb25SZWxl
dmFudCk7IH0KKyAgICBib29sIGxpdmVSZWdpb25BdG9taWMoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkxpdmVSZWdpb25BdG9taWMp
OyB9CisgICAgYm9vbCBpc0J1c3koKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmli
dXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzQnVzeSk7IH0KKyAgICBib29sIGlzSW5saW5lVGV4
dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5
TmFtZTo6SXNJbmxpbmVUZXh0KTsgfQorCisgICAgLy8gQXR0cmlidXRlcyByZXRyaWV2ZWQgZnJv
bSB0aGUgcm9vdCBub2RlIG9ubHkgc28gdGhhdCB0aGUgZGF0YSBpc24ndCBkdXBsaWNhdGVkIG9u
IGVhY2ggbm9kZS4KKyAgICB1aW50NjRfdCBzZXNzaW9uSUQoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBTdHJpbmcgZG9jdW1lbnRVUkkoKSBjb25zdCBvdmVycmlkZTsKKyAgICBTdHJpbmcgZG9jdW1l
bnRFbmNvZGluZygpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgcHJldmVudEtleWJvYXJkRE9N
RXZlbnREaXNwYXRjaCgpIGNvbnN0IG92ZXJyaWRlOworCisgICAgLy8gVE9ETzogVGV4dCByYW5n
ZXMgYW5kIHNlbGVjdGlvbi4KKyAgICBQbGFpblRleHRSYW5nZSBzZWxlY3RlZFRleHRSYW5nZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFBsYWluVGV4dFJhbmdlKCk7IH0KKyAgICB1bnNpZ25l
ZCBzZWxlY3Rpb25TdGFydCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KKyAgICB1bnNp
Z25lZCBzZWxlY3Rpb25FbmQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CisgICAgVmlz
aWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBWaXNpYmxl
U2VsZWN0aW9uKCk7IH0KKyAgICBTdHJpbmcgc2VsZWN0ZWRUZXh0KCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gU3RyaW5nKCk7IH0KKyAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSB2aXNpYmxlUG9z
aXRpb25SYW5nZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFZpc2libGVQb3NpdGlvblJhbmdl
KCk7IH0KKyAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSB2aXNpYmxlUG9zaXRpb25SYW5nZUZvckxp
bmUodW5zaWduZWQpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFZpc2libGVQb3NpdGlvblJhbmdl
KCk7IH0KKyAgICBSZWZQdHI8UmFuZ2U+IGVsZW1lbnRSYW5nZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG51bGxwdHI7IH0KKyAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSB2aXNpYmxlUG9zaXRp
b25SYW5nZUZvclVub3JkZXJlZFBvc2l0aW9ucyhjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBjb25z
dCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBWaXNpYmxlUG9zaXRp
b25SYW5nZSgpOyB9CisgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgcG9zaXRpb25PZkxlZnRXb3Jk
KGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFZpc2libGVQ
b3NpdGlvblJhbmdlKCk7IH0KKyAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSBwb3NpdGlvbk9mUmln
aHRXb3JkKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFZp
c2libGVQb3NpdGlvblJhbmdlKCk7IH0KKyAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSBsZWZ0TGlu
ZVZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIFZpc2libGVQb3NpdGlvblJhbmdlKCk7IH0KKyAgICBWaXNpYmxlUG9zaXRp
b25SYW5nZSByaWdodExpbmVWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRp
b24mKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBWaXNpYmxlUG9zaXRpb25SYW5nZSgpOyB9Cisg
ICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2Ugc2VudGVuY2VGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxl
UG9zaXRpb24mKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBWaXNpYmxlUG9zaXRpb25SYW5nZSgp
OyB9CisgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgcGFyYWdyYXBoRm9yUG9zaXRpb24oY29uc3Qg
VmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVmlzaWJsZVBvc2l0aW9u
UmFuZ2UoKTsgfQorICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHN0eWxlUmFuZ2VGb3JQb3NpdGlv
bihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBWaXNpYmxl
UG9zaXRpb25SYW5nZSgpOyB9CisgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgdmlzaWJsZVBvc2l0
aW9uUmFuZ2VGb3JSYW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIFZpc2libGVQb3NpdGlvblJhbmdlKCk7IH0KKyAgICBWaXNpYmxlUG9zaXRpb25SYW5n
ZSBsaW5lUmFuZ2VGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBWaXNpYmxlUG9zaXRpb25SYW5nZSgpOyB9CisgICAgUmVmUHRyPFJhbmdl
PiByYW5nZUZvclBsYWluVGV4dFJhbmdlKGNvbnN0IFBsYWluVGV4dFJhbmdlJikgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIFN0cmluZyBzdHJpbmdGb3JSYW5nZShSZWZQ
dHI8UmFuZ2U+KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJpbmcoKTsgfQorICAgIEludFJl
Y3QgYm91bmRzRm9yVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uUmFu
Z2UmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBJbnRSZWN0KCk7IH0KKyAgICBJbnRSZWN0IGJv
dW5kc0ZvclJhbmdlKGNvbnN0IFJlZlB0cjxSYW5nZT4pIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IEludFJlY3QoKTsgfQorICAgIGludCBsZW5ndGhGb3JWaXNpYmxlUG9zaXRpb25SYW5nZShjb25z
dCBWaXNpYmxlUG9zaXRpb25SYW5nZSYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KKyAg
ICB2b2lkIHNldFNlbGVjdGVkVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0
aW9uUmFuZ2UmKSBjb25zdCBvdmVycmlkZSB7IH0KKyAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJs
ZVBvc2l0aW9uRm9yQm91bmRzKGNvbnN0IEludFJlY3QmLCBBY2Nlc3NpYmlsaXR5VmlzaWJsZVBv
c2l0aW9uRm9yQm91bmRzKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBWaXNpYmxlUG9zaXRpb24o
KTsgfQorICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JQb2ludChjb25zdCBJ
bnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOyB9Cisg
ICAgVmlzaWJsZVBvc2l0aW9uIG5leHRWaXNpYmxlUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0
aW9uJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7IH0KKyAgICBW
aXNpYmxlUG9zaXRpb24gcHJldmlvdXNWaXNpYmxlUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0
aW9uJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7IH0KKyAgICBW
aXNpYmxlUG9zaXRpb24gbmV4dFdvcmRFbmQoY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7IH0KKyAgICBWaXNpYmxlUG9zaXRp
b24gcHJldmlvdXNXb3JkU3RhcnQoY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7IH0KKyAgICBWaXNpYmxlUG9zaXRpb24gbmV4
dExpbmVFbmRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsgfQorICAgIFZpc2libGVQb3NpdGlvbiBwcmV2aW91
c0xpbmVTdGFydFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOyB9CisgICAgVmlzaWJsZVBvc2l0aW9uIG5leHRT
ZW50ZW5jZUVuZFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOyB9CisgICAgVmlzaWJsZVBvc2l0aW9uIHByZXZp
b3VzU2VudGVuY2VTdGFydFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOyB9CisgICAgVmlzaWJsZVBvc2l0aW9u
IG5leHRQYXJhZ3JhcGhFbmRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsgfQorICAgIFZpc2libGVQb3NpdGlv
biBwcmV2aW91c1BhcmFncmFwaFN0YXJ0UG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7IH0KKyAgICBWaXNpYmxl
UG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgodW5zaWduZWQsIGJvb2wgLypsYXN0SW5k
ZXhPSyAqLykgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7IH0KKyAg
ICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgoaW50KSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsgfQorICAgIGludCBpbmRleEZvclZpc2li
bGVQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biAwOyB9CisgICAgQVhDb3JlT2JqZWN0KiBhY2Nlc3NpYmlsaXR5T2JqZWN0Rm9yUG9zaXRpb24o
Y29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsg
fQorICAgIGludCBsaW5lRm9yUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gMDsgfQorICAgIFBsYWluVGV4dFJhbmdlIHBsYWluVGV4dFJhbmdl
Rm9yVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uUmFuZ2UmKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBQbGFpblRleHRSYW5nZSgpOyB9CisgICAgaW50IGluZGV4KGNv
bnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KKyAgICB2
b2lkIGxpbmVCcmVha3MoVmVjdG9yPGludD4mKSBjb25zdCBvdmVycmlkZSB7IH0KKyAgICBQbGFp
blRleHRSYW5nZSBkb0FYUmFuZ2VGb3JMaW5lKHVuc2lnbmVkKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBQbGFpblRleHRSYW5nZSgpOyB9CisgICAgUGxhaW5UZXh0UmFuZ2UgZG9BWFJhbmdlRm9y
UG9zaXRpb24oY29uc3QgSW50UG9pbnQmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBQbGFpblRl
eHRSYW5nZSgpOyB9CisgICAgUGxhaW5UZXh0UmFuZ2UgZG9BWFJhbmdlRm9ySW5kZXgodW5zaWdu
ZWQpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFBsYWluVGV4dFJhbmdlKCk7IH0KKyAgICBQbGFp
blRleHRSYW5nZSBkb0FYU3R5bGVSYW5nZUZvckluZGV4KHVuc2lnbmVkKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBQbGFpblRleHRSYW5nZSgpOyB9CisgICAgU3RyaW5nIGRvQVhTdHJpbmdGb3JS
YW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmlu
ZygpOyB9CisgICAgSW50UmVjdCBkb0FYQm91bmRzRm9yUmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFu
Z2UmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBJbnRSZWN0KCk7IH0KKyAgICBJbnRSZWN0IGRv
QVhCb3VuZHNGb3JSYW5nZVVzaW5nQ2hhcmFjdGVyT2Zmc2V0KGNvbnN0IFBsYWluVGV4dFJhbmdl
JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gSW50UmVjdCgpOyB9CisgICAgdW5zaWduZWQgZG9B
WExpbmVGb3JJbmRleCh1bnNpZ25lZCkgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQorCisgICAgLy8g
VE9ETzogQXR0cmlidXRlIHNldHRlcnMuCisgICAgdm9pZCBzZXRBUklBR3JhYmJlZChib29sKSBv
dmVycmlkZSB7IH0KKyAgICB2b2lkIHNldElzRXhwYW5kZWQoYm9vbCkgb3ZlcnJpZGUgeyB9Cisg
ICAgdm9pZCBzZXRWYWx1ZShmbG9hdCkgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBzZXRTZWxlY3Rl
ZChib29sKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIHNldFNlbGVjdGVkUm93cyhBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3ImKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIHNldEZvY3VzZWQoYm9v
bCkgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBzZXRTZWxlY3RlZFRleHQoY29uc3QgU3RyaW5nJikg
b3ZlcnJpZGUgeyB9CisgICAgdm9pZCBzZXRTZWxlY3RlZFRleHRSYW5nZShjb25zdCBQbGFpblRl
eHRSYW5nZSYpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgc2V0VmFsdWUoY29uc3QgU3RyaW5nJikg
b3ZlcnJpZGUgeyB9CisgICAgdm9pZCBzZXRDYXJldEJyb3dzaW5nRW5hYmxlZChib29sKSBvdmVy
cmlkZSB7IH0KKyAgICB2b2lkIHNldFByZXZlbnRLZXlib2FyZERPTUV2ZW50RGlzcGF0Y2goYm9v
bCkgb3ZlcnJpZGUgeyB9CisKKyAgICAvLyBUT0RPOiBGdW5jdGlvbnMKKyAgICBTdHJpbmcgdGV4
dFVuZGVyRWxlbWVudChBY2Nlc3NpYmlsaXR5VGV4dFVuZGVyRWxlbWVudE1vZGUgPSBBY2Nlc3Np
YmlsaXR5VGV4dFVuZGVyRWxlbWVudE1vZGUoKSkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3Ry
aW5nKCk7IH0KKyAgICBSZWZQdHI8UmFuZ2U+IGdldE1pc3NwZWxsaW5nUmFuZ2UoUmVmUHRyPFJh
bmdlPiBjb25zdCYsIEFjY2Vzc2liaWxpdHlTZWFyY2hEaXJlY3Rpb24pIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2b2lkIGZpbmRNYXRjaGluZ09iamVjdHMoQWNjZXNz
aWJpbGl0eVNlYXJjaENyaXRlcmlhKiwgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgb3Zl
cnJpZGUgeyB9CisgICAgVmVjdG9yPFJlZlB0cjxSYW5nZT4+IGZpbmRUZXh0UmFuZ2VzKEFjY2Vz
c2liaWxpdHlTZWFyY2hUZXh0Q3JpdGVyaWEgY29uc3QmKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBWZWN0b3I8UmVmUHRyPFJhbmdlPj4oKTsgfQorICAgIFZlY3RvcjxTdHJpbmc+IHBlcmZvcm1U
ZXh0T3BlcmF0aW9uKEFjY2Vzc2liaWxpdHlUZXh0T3BlcmF0aW9uIGNvbnN0Jikgb3ZlcnJpZGUg
eyByZXR1cm4gVmVjdG9yPFN0cmluZz4oKTsgfQorICAgIEZsb2F0UmVjdCBjb252ZXJ0RnJhbWVU
b1NwYWNlKGNvbnN0IEZsb2F0UmVjdCYsIEFjY2Vzc2liaWxpdHlDb252ZXJzaW9uU3BhY2UpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIEZsb2F0UmVjdCgpOyB9CisgICAgdm9pZCBpbmNyZW1lbnQo
KSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIGRlY3JlbWVudCgpIG92ZXJyaWRlIHsgfQorICAgIHZv
aWQgc2Nyb2xsVG9NYWtlVmlzaWJsZSgpIGNvbnN0IG92ZXJyaWRlIHsgfQorICAgIHZvaWQgc2Ny
b2xsVG9NYWtlVmlzaWJsZVdpdGhTdWJGb2N1cyhjb25zdCBJbnRSZWN0JikgY29uc3Qgb3ZlcnJp
ZGUgeyB9CisgICAgdm9pZCBzY3JvbGxUb0dsb2JhbFBvaW50KGNvbnN0IEludFBvaW50JikgY29u
c3Qgb3ZlcnJpZGUgeyB9CisgICAgYm9vbCByZXBsYWNlVGV4dEluUmFuZ2UoY29uc3QgU3RyaW5n
JiwgY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSBvdmVycmlkZTsKKyAgICBib29sIGluc2VydFRleHQo
Y29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgdm9pZCBtYWtlUmFuZ2VWaXNpYmxlKGNvbnN0
IFBsYWluVGV4dFJhbmdlJikgb3ZlcnJpZGUgeyB9CisgICAgYm9vbCBwcmVzcygpIG92ZXJyaWRl
OworICAgIGJvb2wgcGVyZm9ybURlZmF1bHRBY3Rpb24oKSBvdmVycmlkZTsKKworICAgIC8vIEZ1
bmN0aW9ucyB0aGF0IHNob3VsZCBuZXZlciBiZSBjYWxsZWQgb24gYW4gaXNvbGF0ZWQgdHJlZSBv
YmplY3QuIEFTU0VSVCB0aGF0IHRoZXNlIGFyZSBub3QgcmVhY2hlZDsKKyAgICBib29sIGlzQWNj
ZXNzaWJpbGl0eU9iamVjdCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNBY2Nlc3NpYmls
aXR5Tm9kZU9iamVjdCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0FjY2Vzc2liaWxpdHlT
Y3JvbGxiYXIoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzQWNjZXNzaWJpbGl0eVNjcm9s
bFZpZXcoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzQWNjZXNzaWJpbGl0eVNWR1Jvb3Qo
KSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzQWNjZXNzaWJpbGl0eVNWR0VsZW1lbnQoKSBj
b25zdCBvdmVycmlkZTsKKyAgICBib29sIGNvbnRhaW5zVGV4dChTdHJpbmcqKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBib29sIGlzQXR0YWNobWVudEVsZW1lbnQoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBib29sIGlzTmF0aXZlSW1hZ2UoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzSW1hZ2VC
dXR0b24oKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzQ29udGFpbmVkQnlQYXNzd29yZEZp
ZWxkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQVhDb3JlT2JqZWN0KiBwYXNzd29yZEZpZWxkT3JD
b250YWluaW5nUGFzc3dvcmRGaWVsZCgpIG92ZXJyaWRlOworICAgIGJvb2wgaXNOYXRpdmVUZXh0
Q29udHJvbCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNOYXRpdmVMaXN0Qm94KCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0xpc3RCb3hPcHRpb24oKSBjb25zdCBvdmVycmlkZTsK
KyAgICBib29sIGlzU2xpZGVyVGh1bWIoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzSW5w
dXRTbGlkZXIoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzTGFiZWwoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBib29sIGlzRGF0YVRhYmxlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBp
c0ltYWdlTWFwTGluaygpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNOYXRpdmVTcGluQnV0
dG9uKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1NwaW5CdXR0b25QYXJ0KCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgYm9vbCBpc01vY2tPYmplY3QoKSBjb25zdCBvdmVycmlkZTsKKyAgICBi
b29sIGlzTWVkaWFPYmplY3QoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzQVJJQVRleHRD
b250cm9sKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc05vbk5hdGl2ZVRleHRDb250cm9s
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0Jsb2NrcXVvdGUoKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBib29sIGlzTGFuZG1hcmsoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzRmln
dXJlRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNLZXlib2FyZEZvY3VzYWJs
ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNIb3ZlcmVkKCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgYm9vbCBpc0luZGV0ZXJtaW5hdGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlz
TG9hZGVkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc09uU2NyZWVuKCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgYm9vbCBpc09mZlNjcmVlbigpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wg
aXNQcmVzc2VkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1VudmlzaXRlZCgpIGNvbnN0
IG92ZXJyaWRlOworICAgIGJvb2wgaXNMaW5rZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29s
IGlzVmlzaWJsZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNDb2xsYXBzZWQoKSBjb25z
dCBvdmVycmlkZTsKKyAgICBib29sIGlzU2VsZWN0ZWRPcHRpb25BY3RpdmUoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBib29sIGhhc0JvbGRGb250KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBo
YXNJdGFsaWNGb250KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBoYXNNaXNzcGVsbGluZygp
IGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaGFzUGxhaW5UZXh0KCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgYm9vbCBoYXNTYW1lRm9udChSZW5kZXJPYmplY3QqKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBib29sIGhhc1NhbWVGb250Q29sb3IoUmVuZGVyT2JqZWN0KikgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgYm9vbCBoYXNTYW1lU3R5bGUoUmVuZGVyT2JqZWN0KikgY29uc3Qgb3ZlcnJpZGU7CisgICAg
Ym9vbCBpc1N0YXRpY1RleHQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGhhc1VuZGVybGlu
ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaGFzSGlnaGxpZ2h0aW5nKCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgRWxlbWVudCogZWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlOworICAgIE5vZGUq
IG5vZGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiBkZWZhdWx0T2Jq
ZWN0SW5jbHVzaW9uKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBhY2Nlc3NpYmlsaXR5SXNJ
Z25vcmVkQnlEZWZhdWx0KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgZmxvYXQgc3RlcFZhbHVlRm9y
UmFuZ2UoKSBjb25zdCBvdmVycmlkZTsKKyAgICBBWENvcmVPYmplY3QqIHNlbGVjdGVkTGlzdEl0
ZW0oKSBvdmVycmlkZTsKKyAgICB2b2lkIGFyaWFBY3RpdmVEZXNjZW5kYW50UmVmZXJlbmNpbmdF
bGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZTsKKyAg
ICB2b2lkIGFyaWFDb250cm9sc1JlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBhcmlhRGVzY3JpYmVkQnlFbGVt
ZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZTsKKyAgICB2
b2lkIGFyaWFEZXNjcmliZWRCeVJlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBhcmlhRGV0YWlsc1JlZmVyZW5j
aW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7
CisgICAgdm9pZCBhcmlhRXJyb3JNZXNzYWdlUmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGFyaWFGbG93VG9S
ZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92
ZXJyaWRlOworICAgIHZvaWQgYXJpYUxhYmVsbGVkQnlFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGFyaWFMYWJlbGxlZEJ5UmVm
ZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVy
cmlkZTsKKyAgICB2b2lkIGFyaWFPd25zUmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGhhc0RhdGFsaXN0KCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBzdXBwb3J0c0hhc1BvcHVwKCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgYm9vbCBzdXBwb3J0c1ByZXNzZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29s
IHN1cHBvcnRzQ2hlY2tlZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaWdub3JlZEZyb21N
b2RhbFByZXNlbmNlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc01vZGFsRGVzY2VuZGFu
dChOb2RlKikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc01vZGFsTm9kZSgpIGNvbnN0IG92
ZXJyaWRlOworICAgIEFYQ29yZU9iamVjdCogZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KGNv
bnN0IEludFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgQVhDb3JlT2JqZWN0KiBmaXJzdENo
aWxkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQVhDb3JlT2JqZWN0KiBsYXN0Q2hpbGQoKSBjb25z
dCBvdmVycmlkZTsKKyAgICBBWENvcmVPYmplY3QqIHByZXZpb3VzU2libGluZygpIGNvbnN0IG92
ZXJyaWRlOworICAgIEFYQ29yZU9iamVjdCogbmV4dFNpYmxpbmcoKSBjb25zdCBvdmVycmlkZTsK
KyAgICBBWENvcmVPYmplY3QqIG5leHRTaWJsaW5nVW5pZ25vcmVkKGludCBsaW1pdCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgQVhDb3JlT2JqZWN0KiBwcmV2aW91c1NpYmxpbmdVbmlnbm9yZWQoaW50
IGxpbWl0KSBjb25zdCBvdmVycmlkZTsKKyAgICBBWENvcmVPYmplY3QqIHBhcmVudE9iamVjdElm
RXhpc3RzKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0Rlc2NlbmRhbnRPZkJhcnJlblBh
cmVudCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNEZXNjZW5kYW50T2ZSb2xlKEFjY2Vz
c2liaWxpdHlSb2xlKSBjb25zdCBvdmVycmlkZTsKKyAgICBBWENvcmVPYmplY3QqIG9ic2VydmFi
bGVPYmplY3QoKSBjb25zdCBvdmVycmlkZTsKKyAgICBBWENvcmVPYmplY3QqIGNvcnJlc3BvbmRp
bmdMYWJlbEZvckNvbnRyb2xFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQVhDb3JlT2Jq
ZWN0KiBjb3JyZXNwb25kaW5nQ29udHJvbEZvckxhYmVsRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRl
OworICAgIGJvb2wgaXNQcmVzZW50YXRpb25hbENoaWxkT2ZBcmlhUm9sZSgpIGNvbnN0IG92ZXJy
aWRlOworICAgIGJvb2wgYXJpYVJvbGVIYXNQcmVzZW50YXRpb25hbENoaWxkcmVuKCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgYm9vbCBpbmhlcml0c1ByZXNlbnRhdGlvbmFsUm9sZSgpIGNvbnN0IG92
ZXJyaWRlOworICAgIHZvaWQgc2V0QWNjZXNzaWJsZU5hbWUoY29uc3QgQXRvbVN0cmluZyYpIG92
ZXJyaWRlOworICAgIGJvb2wgaGFzQXR0cmlidXRlc1JlcXVpcmVkRm9ySW5jbHVzaW9uKCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgU3RyaW5nIGFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbigpIGNvbnN0
IG92ZXJyaWRlOworICAgIFN0cmluZyB0aXRsZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFN0cmlu
ZyBoZWxwVGV4dCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNBUklBU3RhdGljVGV4dCgp
IGNvbnN0IG92ZXJyaWRlOworICAgIFN0cmluZyBzdHJpbmdWYWx1ZSgpIGNvbnN0IG92ZXJyaWRl
OworICAgIFN0cmluZyB0ZXh0KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgU3RyaW5nIGFyaWFMYWJl
bGVkQnlBdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBTdHJpbmcgYXJpYURlc2NyaWJl
ZEJ5QXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBhY2Nlc3NpYmxlTmFtZURl
cml2ZXNGcm9tQ29udGVudCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgZWxlbWVudHNGcm9t
QXR0cmlidXRlKFZlY3RvcjxFbGVtZW50Kj4mLCBjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Qg
b3ZlcnJpZGU7CisgICAgQVhPYmplY3RDYWNoZSogYXhPYmplY3RDYWNoZSgpIGNvbnN0IG92ZXJy
aWRlOworICAgIEVsZW1lbnQqIGFuY2hvckVsZW1lbnQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBF
bGVtZW50KiBhY3Rpb25FbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUGF0aCBlbGVtZW50
UGF0aCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgc3VwcG9ydHNQYXRoKCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgdGV4dEl0ZXJhdG9yQmVoYXZpb3JGb3JU
ZXh0UmFuZ2UoKSBjb25zdCBvdmVycmlkZTsKKyAgICBXaWRnZXQqIHdpZGdldCgpIGNvbnN0IG92
ZXJyaWRlOworICAgIFdpZGdldCogd2lkZ2V0Rm9yQXR0YWNobWVudFZpZXcoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBQYWdlKiBwYWdlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgRG9jdW1lbnQqIGRv
Y3VtZW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgRnJhbWVWaWV3KiBkb2N1bWVudEZyYW1lVmll
dygpIGNvbnN0IG92ZXJyaWRlOworICAgIEZyYW1lKiBmcmFtZSgpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIEZyYW1lKiBtYWluRnJhbWUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBEb2N1bWVudCogdG9w
RG9jdW1lbnQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBTY3JvbGxWaWV3KiBzY3JvbGxWaWV3QW5j
ZXN0b3IoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGNoaWxkcmVuQ2hhbmdlZCgpIG92ZXJy
aWRlOworICAgIHZvaWQgdGV4dENoYW5nZWQoKSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZUFj
Y2Vzc2liaWxpdHlSb2xlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBhZGRDaGlsZHJlbigpIG92ZXJy
aWRlOworICAgIHZvaWQgYWRkQ2hpbGQoQVhDb3JlT2JqZWN0Kikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBpbnNlcnRDaGlsZChBWENvcmVPYmplY3QqLCB1bnNpZ25lZCkgb3ZlcnJpZGU7CisgICAgYm9v
bCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVSb2xlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBj
YW5IYXZlQ2hpbGRyZW4oKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGhhc0NoaWxkcmVuKCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXROZWVkc1RvVXBkYXRlQ2hpbGRyZW4oKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHNldE5lZWRzVG9VcGRhdGVTdWJ0cmVlKCkgb3ZlcnJpZGU7CisgICAg
dm9pZCBjbGVhckNoaWxkcmVuKCkgb3ZlcnJpZGU7CisgICAgYm9vbCBuZWVkc1RvVXBkYXRlQ2hp
bGRyZW4oKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGRldGFjaEZyb21QYXJlbnQoKSBvdmVy
cmlkZTsKKyAgICBib29sIHNob3VsZEZvY3VzQWN0aXZlRGVzY2VuZGFudCgpIGNvbnN0IG92ZXJy
aWRlOworICAgIEFYQ29yZU9iamVjdCogYWN0aXZlRGVzY2VuZGFudCgpIGNvbnN0IG92ZXJyaWRl
OworICAgIHZvaWQgaGFuZGxlQWN0aXZlRGVzY2VuZGFudENoYW5nZWQoKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGhhbmRsZUFyaWFFeHBhbmRlZENoYW5nZWQoKSBvdmVycmlkZTsKKyAgICBib29sIGlz
RGVzY2VuZGFudE9mT2JqZWN0KGNvbnN0IEFYQ29yZU9iamVjdCopIGNvbnN0IG92ZXJyaWRlOwor
ICAgIGJvb2wgaXNBbmNlc3Rvck9mT2JqZWN0KGNvbnN0IEFYQ29yZU9iamVjdCopIGNvbnN0IG92
ZXJyaWRlOworICAgIEFYQ29yZU9iamVjdCogZmlyc3RBbm9ueW1vdXNCbG9ja0NoaWxkKCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBoYXNBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYp
IGNvbnN0IG92ZXJyaWRlOworICAgIGNvbnN0IEF0b21TdHJpbmcmIGdldEF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBoYXNUYWdOYW1lKGNv
bnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdCBvdmVycmlkZTsKKyAgICBTdHJpbmcgc3RyaW5nVmFs
dWVGb3JNU0FBKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgU3RyaW5nIHN0cmluZ1JvbGVGb3JNU0FB
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgU3RyaW5nIG5hbWVGb3JNU0FBKCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgU3RyaW5nIGRlc2NyaXB0aW9uRm9yTVNBQSgpIGNvbnN0IG92ZXJyaWRlOworICAg
IEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZUZvck1TQUEoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBTdHJpbmcgcGFzc3dvcmRGaWVsZFZhbHVlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQVhDb3Jl
T2JqZWN0KiBsaXZlUmVnaW9uQW5jZXN0b3IoYm9vbCBleGNsdWRlSWZPZmYgPSB0cnVlKSBjb25z
dCBvdmVycmlkZTsKKyAgICBib29sIGhhc0NvbnRlbnRFZGl0YWJsZUF0dHJpYnV0ZVNldCgpIGNv
bnN0IG92ZXJyaWRlOworICAgIGJvb2wgc3VwcG9ydHNSZWFkT25seSgpIGNvbnN0IG92ZXJyaWRl
OworICAgIGJvb2wgc3VwcG9ydHNBdXRvQ29tcGxldGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBi
b29sIHN1cHBvcnRzQVJJQUF0dHJpYnV0ZXMoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHNj
cm9sbEJ5UGFnZShTY3JvbGxCeVBhZ2VEaXJlY3Rpb24pIGNvbnN0IG92ZXJyaWRlOworICAgIElu
dFBvaW50IHNjcm9sbFBvc2l0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgSW50U2l6ZSBzY3Jv
bGxDb250ZW50c1NpemUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBJbnRSZWN0IHNjcm9sbFZpc2li
bGVDb250ZW50UmVjdCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgc2Nyb2xsVG9NYWtlVmlz
aWJsZShjb25zdCBTY3JvbGxSZWN0VG9WaXNpYmxlT3B0aW9ucyYpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIGJvb2wgbGFzdEtub3duSXNJZ25vcmVkVmFsdWUoKSBvdmVycmlkZTsKKyAgICB2b2lkIHNl
dExhc3RLbm93bklzSWdub3JlZFZhbHVlKGJvb2wpIG92ZXJyaWRlOworICAgIHZvaWQgbm90aWZ5
SWZJZ25vcmVkVmFsdWVDaGFuZ2VkKCkgb3ZlcnJpZGU7CisgICAgYm9vbCBpc01hdGhTY3JpcHRP
YmplY3QoQWNjZXNzaWJpbGl0eU1hdGhTY3JpcHRPYmplY3RUeXBlKSBjb25zdCBvdmVycmlkZTsK
KyAgICBib29sIGlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlNYXRoTXVsdGlz
Y3JpcHRPYmplY3RUeXBlKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzQVhIaWRkZW4oKSBj
b25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzRE9NSGlkZGVuKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgYm9vbCBpc0hpZGRlbigpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgb3ZlcnJpZGVBdHRh
Y2htZW50UGFyZW50KEFYQ29yZU9iamVjdCogcGFyZW50KSBvdmVycmlkZTsKKyAgICBib29sIGFj
Y2Vzc2liaWxpdHlJZ25vcmVBdHRhY2htZW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQWNjZXNz
aWJpbGl0eU9iamVjdEluY2x1c2lvbiBhY2Nlc3NpYmlsaXR5UGxhdGZvcm1JbmNsdWRlc09iamVj
dCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaGFzQXBwbGVQREZBbm5vdGF0aW9uQXR0cmli
dXRlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgY29uc3QgQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcq
IGFuY2VzdG9yQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcoYm9vbCBpbmNsdWRlU2VsZikgY29uc3Qg
b3ZlcnJpZGU7CisgICAgdm9pZCBzZXRJc0lnbm9yZWRGcm9tUGFyZW50RGF0YShBY2Nlc3NpYmls
aXR5SXNJZ25vcmVkRnJvbVBhcmVudERhdGEmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNsZWFySXNJ
Z25vcmVkRnJvbVBhcmVudERhdGEoKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldElzSWdub3JlZEZy
b21QYXJlbnREYXRhRm9yQ2hpbGQoQVhDb3JlT2JqZWN0Kikgb3ZlcnJpZGU7CisKKyAgICB2b2lk
IHVwZGF0ZUJhY2tpbmdTdG9yZSgpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0V3JhcHBlcihBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlciogd3JhcHBlcikgb3ZlcnJpZGUgeyBtX3dyYXBwZXIgPSB3
cmFwcGVyOyB9CisgICAgCiAgICAgQVhJRCBtX3BhcmVudDsKICAgICBBWElEIG1faWQ7CiAgICAg
Ym9vbCBtX2luaXRpYWxpemVkIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXJNYWMubW0KaW5kZXggODNiODU0MzBhZTAzMDRmNzE5MzVmYTgxOWNiMWIyM2M5YjhiNmI5
ZC4uNjY5MzJkNDQ4Y2FjZTBkNDcxMzBhNDg3MGRlOGU5OThkM2M2ZTI1MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KQEAgLTU1NSwxMyArNTU1LDM4IEBAIGV4dGVy
biAiQyIgQVhVSUVsZW1lbnRSZWYgTlNBY2Nlc3NpYmlsaXR5Q3JlYXRlQVhVSUVsZW1lbnRSZWYo
aWQgZWxlbWVudCk7CiAgICAgW3N1cGVyIGRldGFjaF07CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1l
IFU+IGlubGluZSB2b2lkIHBlcmZvcm1BY2Nlc3NpYmlsaXR5RnVuY3Rpb25Pbk1haW5UaHJlYWQo
VSYmIGxhbWJkYSkKK3sKKyAgICBpZiAoaXNNYWluVGhyZWFkKCkpCisgICAgICAgIHJldHVybiBs
YW1iZGEoKTsKKworICAgIGNhbGxPbk1haW5UaHJlYWQoWyZsYW1iZGFdIHsKKyAgICAgICAgbGFt
YmRhKCk7CisgICAgfSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlu
bGluZSBUIHJldHJpZXZlQWNjZXNzaWJpbGl0eVZhbHVlRnJvbU1haW5UaHJlYWQoVSYmIGxhbWJk
YSkKK3sKKyAgICBpZiAoaXNNYWluVGhyZWFkKCkpCisgICAgICAgIHJldHVybiBsYW1iZGEoKTsK
KyAgICAKKyAgICBUIHZhbHVlOworICAgIGNhbGxPbk1haW5UaHJlYWRBbmRXYWl0KFsmdmFsdWUs
ICZsYW1iZGFdIHsKKyAgICAgICAgdmFsdWUgPSBsYW1iZGEoKTsKKyAgICB9KTsKKyAgICByZXR1
cm4gdmFsdWU7Cit9CisKIC0gKGlkKWF0dGFjaG1lbnRWaWV3CiB7CiAgICAgQVNTRVJUKG1fb2Jq
ZWN0LT5pc0F0dGFjaG1lbnQoKSk7Ci0gICAgV2lkZ2V0KiB3aWRnZXQgPSBtX29iamVjdC0+d2lk
Z2V0Rm9yQXR0YWNobWVudFZpZXcoKTsKLSAgICBpZiAoIXdpZGdldCkKLSAgICAgICAgcmV0dXJu
IG5pbDsKLSAgICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5VW5pZ25vcmVkRGVzY2VuZGFudCh3aWRn
ZXQtPnBsYXRmb3JtV2lkZ2V0KCkpOworCisgICAgcmV0dXJuIHJldHJpZXZlQWNjZXNzaWJpbGl0
eVZhbHVlRnJvbU1haW5UaHJlYWQ8aWQ+KFtwcm90ZWN0ZWRTZWxmID0gUmV0YWluUHRyPFdlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyPihzZWxmKV0gKCkgLT4gaWQgeworICAgICAgICBhdXRv
KiB3aWRnZXQgPSBwcm90ZWN0ZWRTZWxmLT5tX29iamVjdC0+d2lkZ2V0Rm9yQXR0YWNobWVudFZp
ZXcoKTsKKyAgICAgICAgaWYgKCF3aWRnZXQpCisgICAgICAgICAgICByZXR1cm4gbmlsOworICAg
ICAgICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5VW5pZ25vcmVkRGVzY2VuZGFudCh3aWRnZXQtPnBs
YXRmb3JtV2lkZ2V0KCkpOworICAgIH0pOwogfQogCiAjcHJhZ21hIG1hcmsgU3lzdGVtSW50ZXJm
YWNlIHdyYXBwZXJzCkBAIC02MDMsNyArNjI4LDkgQEAgc3RhdGljIGlkIEFYVGV4dE1hcmtlclJh
bmdlRW5kKGlkIHJhbmdlKQogCiAtIChJbnRSZWN0KXNjcmVlblRvQ29udGVudHM6KGNvbnN0IElu
dFJlY3QmKXJlY3QKIHsKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX29iamVjdC0+ZG9jdW1l
bnQoKTsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgRG9jdW1lbnQqIGRvY3Vt
ZW50ID0gX2F4QmFja2luZ09iamVjdC0+ZG9jdW1lbnQoKTsKICAgICBpZiAoIWRvY3VtZW50KQog
ICAgICAgICByZXR1cm4gSW50UmVjdCgpOwogICAgIApAQCAtMTg5MywyOCArMTkyMCwyOCBAQCBB
TExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKIAogLSAoTlNBcnJheSopcmVuZGVy
V2lkZ2V0Q2hpbGRyZW4KIHsKLSAgICBXaWRnZXQqIHdpZGdldCA9IG1fb2JqZWN0LT53aWRnZXQo
KTsKLSAgICBpZiAoIXdpZGdldCkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBBTExPV19ERVBS
RUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgIHJldHVybiBbKHdpZGdldC0+cGxhdGZvcm1X
aWRnZXQoKSkgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOiBOU0FjY2Vzc2liaWxpdHlDaGls
ZHJlbkF0dHJpYnV0ZV07Ci0gICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECisg
ICAgcmV0dXJuIHJldHJpZXZlQWNjZXNzaWJpbGl0eVZhbHVlRnJvbU1haW5UaHJlYWQ8TlNBcnJh
eSAqPihbcHJvdGVjdGVkU2VsZiA9IFJldGFpblB0cjxXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlcj4oc2VsZildICgpIC0+IE5TQXJyYXkgKiB7CisgICAgICAgIFdpZGdldCogd2lkZ2V0ID0g
cHJvdGVjdGVkU2VsZi0+bV9vYmplY3QtPndpZGdldCgpOworICAgICAgICBpZiAoIXdpZGdldCkK
KyAgICAgICAgICAgIHJldHVybiBuaWw7CisgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFS
QVRJT05TX0JFR0lOCisgICAgICAgIHJldHVybiBbKHdpZGdldC0+cGxhdGZvcm1XaWRnZXQoKSkg
YWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmli
dXRlXTsKKyAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECisgICAgfSk7
CiB9CiAKIC0gKGlkKXJlbW90ZUFjY2Vzc2liaWxpdHlQYXJlbnRPYmplY3QKIHsKKyAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGlmICghbV9vYmplY3QpCiAgICAgICAgIHJldHVybiBu
aWw7Ci0gICAgCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9vYmplY3QtPmRvY3VtZW50KCk7
Ci0gICAgaWYgKCFkb2N1bWVudCkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBGcmFt
ZSogZnJhbWUgPSBkb2N1bWVudC0+ZnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lKQotICAgICAgICBy
ZXR1cm4gbmlsOwotICAgIAotICAgIHJldHVybiBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuYWNj
ZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpOworCisgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gX2F4
QmFja2luZ09iamVjdC0+ZG9jdW1lbnQoKSkgeworICAgICAgICBpZiAoYXV0byogZnJhbWUgPSBk
b2N1bWVudC0+ZnJhbWUoKSkKKyAgICAgICAgICAgIHJldHVybiBmcmFtZS0+bG9hZGVyKCkuY2xp
ZW50KCkuYWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpOworICAgIH0KKworICAgIHJldHVybiBu
aWw7CiB9CiAKIHN0YXRpYyB2b2lkIGNvbnZlcnRUb1ZlY3RvcihOU0FycmF5KiBhcnJheSwgQWNj
ZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiB2ZWN0b3IpCkBA
IC0xOTQ2LDE3ICsxOTczLDE5IEBAIHN0YXRpYyBOU011dGFibGVBcnJheSAqY29udmVydFN0cmlu
Z3NUb05TQXJyYXkoY29uc3QgVmVjdG9yPFN0cmluZz4mIHZlY3RvcikKIAogLSAoaWQpYXNzb2Np
YXRlZFBsdWdpblBhcmVudAogewotICAgIGlmICghbV9vYmplY3QgfHwgIW1fb2JqZWN0LT5oYXNB
dHRyaWJ1dGUoeF9hcHBsZV9wZGZfYW5ub3RhdGlvbkF0dHIpKQotICAgICAgICByZXR1cm4gbmls
OworICAgIHJldHVybiByZXRyaWV2ZUFjY2Vzc2liaWxpdHlWYWx1ZUZyb21NYWluVGhyZWFkPGlk
PihbcHJvdGVjdGVkU2VsZiA9IFJldGFpblB0cjxXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
cj4oc2VsZildICgpIC0+IGlkIHsKKyAgICAgICAgaWYgKCFwcm90ZWN0ZWRTZWxmLT5tX29iamVj
dCB8fCAhcHJvdGVjdGVkU2VsZi0+bV9vYmplY3QtPmhhc0FwcGxlUERGQW5ub3RhdGlvbkF0dHJp
YnV0ZSgpKQorICAgICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAKLSAgICBpZiAoIW1fb2JqZWN0
LT5kb2N1bWVudCgpLT5pc1BsdWdpbkRvY3VtZW50KCkpCi0gICAgICAgIHJldHVybiBuaWw7Cisg
ICAgICAgIGlmICghcHJvdGVjdGVkU2VsZi0+bV9vYmplY3QtPmRvY3VtZW50KCktPmlzUGx1Z2lu
RG9jdW1lbnQoKSkKKyAgICAgICAgICAgIHJldHVybiBuaWw7CiAgICAgICAgIAotICAgIFdpZGdl
dCogcGx1Z2luV2lkZ2V0ID0gc3RhdGljX2Nhc3Q8UGx1Z2luRG9jdW1lbnQqPihtX29iamVjdC0+
ZG9jdW1lbnQoKSktPnBsdWdpbldpZGdldCgpOwotICAgIGlmICghcGx1Z2luV2lkZ2V0IHx8ICFw
bHVnaW5XaWRnZXQtPmlzUGx1Z2luVmlld0Jhc2UoKSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLQot
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxQbHVnaW5WaWV3QmFzZSo+KHBsdWdpbldpZGdldCktPmFj
Y2Vzc2liaWxpdHlBc3NvY2lhdGVkUGx1Z2luUGFyZW50Rm9yRWxlbWVudChtX29iamVjdC0+ZWxl
bWVudCgpKTsKKyAgICAgICAgV2lkZ2V0KiBwbHVnaW5XaWRnZXQgPSBzdGF0aWNfY2FzdDxQbHVn
aW5Eb2N1bWVudCo+KHByb3RlY3RlZFNlbGYtPm1fb2JqZWN0LT5kb2N1bWVudCgpKS0+cGx1Z2lu
V2lkZ2V0KCk7CisgICAgICAgIGlmICghcGx1Z2luV2lkZ2V0IHx8ICFwbHVnaW5XaWRnZXQtPmlz
UGx1Z2luVmlld0Jhc2UoKSkKKyAgICAgICAgICAgIHJldHVybiBuaWw7CisgICAgICAgIAorICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UGx1Z2luVmlld0Jhc2UqPihwbHVnaW5XaWRnZXQpLT5h
Y2Nlc3NpYmlsaXR5QXNzb2NpYXRlZFBsdWdpblBhcmVudEZvckVsZW1lbnQocHJvdGVjdGVkU2Vs
Zi0+bV9vYmplY3QtPmVsZW1lbnQoKSk7CisgICAgfSk7CiB9CiAKIHN0YXRpYyB2b2lkIFdlYlRy
YW5zZm9ybUNHUGF0aFRvTlNCZXppZXJQYXRoKHZvaWQqIGluZm8sIGNvbnN0IENHUGF0aEVsZW1l
bnQgKmVsZW1lbnQpCkBAIC0yMjIwLDIwICsyMjQ5LDIwIEBAIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0JFR0lOCiAgICAgICAgIHJldHVybiBAIkFYU3Vic2NyaXB0U3R5bGVHcm91cCI7
CiAKICAgICBpZiAobV9vYmplY3QtPmlzU3R5bGVGb3JtYXRHcm91cCgpKSB7Ci0gICAgICAgIGlm
IChOb2RlKiBub2RlID0gbV9vYmplY3QtPm5vZGUoKSkgewotICAgICAgICAgICAgaWYgKG5vZGUt
Pmhhc1RhZ05hbWUoa2JkVGFnKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gQCJBWEtleWJvYXJk
SW5wdXRTdHlsZUdyb3VwIjsKLSAgICAgICAgICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKGNvZGVU
YWcpKQotICAgICAgICAgICAgICAgIHJldHVybiBAIkFYQ29kZVN0eWxlR3JvdXAiOwotICAgICAg
ICAgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUocHJlVGFnKSkKLSAgICAgICAgICAgICAgICByZXR1
cm4gQCJBWFByZWZvcm1hdHRlZFN0eWxlR3JvdXAiOwotICAgICAgICAgICAgaWYgKG5vZGUtPmhh
c1RhZ05hbWUoc2FtcFRhZykpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEAiQVhTYW1wbGVTdHls
ZUdyb3VwIjsKLSAgICAgICAgICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKHZhclRhZykpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIEAiQVhWYXJpYWJsZVN0eWxlR3JvdXAiOwotICAgICAgICAgICAg
aWYgKG5vZGUtPmhhc1RhZ05hbWUoY2l0ZVRhZykpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEAi
QVhDaXRlU3R5bGVHcm91cCI7Ci0gICAgICAgIH0KKyAgICAgICAgYXV0byB0YWdOYW1lID0gbV9v
YmplY3QtPnRhZ05hbWUoKTsKKyAgICAgICAgaWYgKHRhZ05hbWUgPT0ga2JkVGFnKQorICAgICAg
ICAgICAgcmV0dXJuIEAiQVhLZXlib2FyZElucHV0U3R5bGVHcm91cCI7CisgICAgICAgIGlmICh0
YWdOYW1lID09IGNvZGVUYWcpCisgICAgICAgICAgICByZXR1cm4gQCJBWENvZGVTdHlsZUdyb3Vw
IjsKKyAgICAgICAgaWYgKHRhZ05hbWUgPT0gcHJlVGFnKQorICAgICAgICAgICAgcmV0dXJuIEAi
QVhQcmVmb3JtYXR0ZWRTdHlsZUdyb3VwIjsKKyAgICAgICAgaWYgKHRhZ05hbWUgPT0gc2FtcFRh
ZykKKyAgICAgICAgICAgIHJldHVybiBAIkFYU2FtcGxlU3R5bGVHcm91cCI7CisgICAgICAgIGlm
ICh0YWdOYW1lID09IHZhclRhZykKKyAgICAgICAgICAgIHJldHVybiBAIkFYVmFyaWFibGVTdHls
ZUdyb3VwIjsKKyAgICAgICAgaWYgKHRhZ05hbWUgPT0gY2l0ZVRhZykKKyAgICAgICAgICAgIHJl
dHVybiBAIkFYQ2l0ZVN0eWxlR3JvdXAiOworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICB9CiAgICAgCiAgICAgLy8gUnVieSBzdWJyb2xlcwpAQCAtMjI5NywyMiArMjMyNiwyNCBA
QCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogLSAoaWQpc2Nyb2xsVmlld1Bh
cmVudAogewotICAgIGlmICghaXM8QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc+KG1fb2JqZWN0KSkK
LSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICAvLyBJZiB0aGlzIHNjcm9sbCB2aWV3IHBy
b3ZpZGVzIGl0J3MgcGFyZW50IG9iamVjdCAoYmVjYXVzZSBpdCdzIGEgc3ViLWZyYW1lKSwgdGhl
bgotICAgIC8vIHdlIHNob3VsZCBub3QgZmluZCB0aGUgcmVtb3RlQWNjZXNzaWJpbGl0eVBhcmVu
dC4KLSAgICBpZiAobV9vYmplY3QtPnBhcmVudE9iamVjdCgpKQotICAgICAgICByZXR1cm4gbmls
OwotICAgIAotICAgIFNjcm9sbFZpZXcqIHNjcm9sbCA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlT
Y3JvbGxWaWV3PigqbV9vYmplY3QpLnNjcm9sbFZpZXcoKTsKLSAgICBpZiAoIXNjcm9sbCkKLSAg
ICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBpZiAoc2Nyb2xsLT5wbGF0Zm9ybVdpZGdldCgp
KQotICAgICAgICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5VW5pZ25vcmVkQW5jZXN0b3Ioc2Nyb2xs
LT5wbGF0Zm9ybVdpZGdldCgpKTsKLSAgICAKLSAgICByZXR1cm4gW3NlbGYgcmVtb3RlQWNjZXNz
aWJpbGl0eVBhcmVudE9iamVjdF07CisgICAgcmV0dXJuIHJldHJpZXZlQWNjZXNzaWJpbGl0eVZh
bHVlRnJvbU1haW5UaHJlYWQ8aWQ+KFtwcm90ZWN0ZWRTZWxmID0gUmV0YWluUHRyPFdlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyPihzZWxmKV0gKCkgLT4gaWQgeworICAgICAgICBpZiAoIWlz
PEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Pihwcm90ZWN0ZWRTZWxmLT5tX29iamVjdCkpCisgICAg
ICAgICAgICByZXR1cm4gbmlsOworCisgICAgICAgIC8vIElmIHRoaXMgc2Nyb2xsIHZpZXcgcHJv
dmlkZXMgaXQncyBwYXJlbnQgb2JqZWN0IChiZWNhdXNlIGl0J3MgYSBzdWItZnJhbWUpLCB0aGVu
CisgICAgICAgIC8vIHdlIHNob3VsZCBub3QgZmluZCB0aGUgcmVtb3RlQWNjZXNzaWJpbGl0eVBh
cmVudC4KKyAgICAgICAgaWYgKHByb3RlY3RlZFNlbGYtPm1fb2JqZWN0LT5wYXJlbnRPYmplY3Qo
KSkKKyAgICAgICAgICAgIHJldHVybiBuaWw7CisKKyAgICAgICAgU2Nyb2xsVmlldyogc2Nyb2xs
ID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc+KCpwcm90ZWN0ZWRTZWxmLT5tX29i
amVjdCkuc2Nyb2xsVmlldygpOworICAgICAgICBpZiAoIXNjcm9sbCkKKyAgICAgICAgICAgIHJl
dHVybiBuaWw7CisKKyAgICAgICAgaWYgKHNjcm9sbC0+cGxhdGZvcm1XaWRnZXQoKSkKKyAgICAg
ICAgICAgIHJldHVybiBOU0FjY2Vzc2liaWxpdHlVbmlnbm9yZWRBbmNlc3RvcihzY3JvbGwtPnBs
YXRmb3JtV2lkZ2V0KCkpOworCisgICAgICAgIHJldHVybiBbcHJvdGVjdGVkU2VsZiByZW1vdGVB
Y2Nlc3NpYmlsaXR5UGFyZW50T2JqZWN0XTsKKyAgICB9KTsKIH0KIAogLSAoTlNTdHJpbmcgKil2
YWx1ZURlc2NyaXB0aW9uRm9yTWV0ZXIKQEAgLTIzMzgsNiArMjM2OSwyMyBAQCBBTExPV19ERVBS
RUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICByZXR1cm4gdmFsdWVEZXNjcmlwdGlvbjsKIH0K
IAorLSAoaWQpd2luZG93RWxlbWVudDooTlNTdHJpbmcqKWF0dHJpYnV0ZU5hbWUKK3sKKyAgICBy
ZXR1cm4gcmV0cmlldmVBY2Nlc3NpYmlsaXR5VmFsdWVGcm9tTWFpblRocmVhZDxpZD4oW2F0dHJp
YnV0ZU5hbWUsIHByb3RlY3RlZFNlbGYgPSBSZXRhaW5QdHI8V2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXI+KHNlbGYpXSAoKSAtPiBpZCB7CisgICAgICAgIGlkIHJlbW90ZVBhcmVudCA9IFtw
cm90ZWN0ZWRTZWxmIHJlbW90ZUFjY2Vzc2liaWxpdHlQYXJlbnRPYmplY3RdOworICAgICAgICBp
ZiAocmVtb3RlUGFyZW50KSB7CisgICAgICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19CRUdJTgorICAgICAgICAgICAgcmV0dXJuIFtyZW1vdGVQYXJlbnQgYWNjZXNzaWJpbGl0
eUF0dHJpYnV0ZVZhbHVlOmF0dHJpYnV0ZU5hbWVdOworICAgICAgICAgICAgQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfRU5ECisgICAgICAgIH0KKworICAgICAgICBpZiAoYXV0byogZnYg
PSBwcm90ZWN0ZWRTZWxmLT5tX29iamVjdC0+ZG9jdW1lbnRGcmFtZVZpZXcoKSkKKyAgICAgICAg
ICAgIHJldHVybiBbZnYtPnBsYXRmb3JtV2lkZ2V0KCkgd2luZG93XTsKKworICAgICAgICByZXR1
cm4gbmlsOworICAgIH0pOworfQorCiAvLyBGSVhNRTogc3BsaXQgdXAgdGhpcyBmdW5jdGlvbiBp
biBhIGJldHRlciB3YXkuCiAvLyBzdWdnZXN0aW9uczogVXNlIGEgaGFzaCB0YWJsZSB0aGF0IG1h
cHMgYXR0cmlidXRlIG5hbWVzIHRvIGZ1bmN0aW9uIGNhbGxzLAogLy8gb3IgbWF5YmUgcG9pbnRl
cnMgdG8gbWVtYmVyIGZ1bmN0aW9ucwpAQCAtMjQ1MywxMiArMjUwMSw4IEBAIEFMTE9XX0RFUFJF
Q0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICAgICAgcmV0dXJuIFtOU051bWJlciBu
dW1iZXJXaXRoQm9vbDptX29iamVjdC0+cHJldmVudEtleWJvYXJkRE9NRXZlbnREaXNwYXRjaCgp
XTsKICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2li
aWxpdHlDYXJldEJyb3dzaW5nRW5hYmxlZEF0dHJpYnV0ZV0pCiAgICAgICAgICAgICByZXR1cm4g
W05TTnVtYmVyIG51bWJlcldpdGhCb29sOm1fb2JqZWN0LT5jYXJldEJyb3dzaW5nRW5hYmxlZCgp
XTsKLSAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2li
aWxpdHlXZWJTZXNzaW9uSURBdHRyaWJ1dGVdKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byogZG9j
dW1lbnQgPSBtX29iamVjdC0+dG9wRG9jdW1lbnQoKSkgewotICAgICAgICAgICAgICAgIGlmIChh
dXRvKiBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IFtOU051bWJlciBudW1iZXJXaXRoVW5zaWduZWRMb25nTG9uZzpwYWdlLT5zZXNzaW9uSUQoKS50
b1VJbnQ2NCgpXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAgICAgICBpZiAoW2F0dHJp
YnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVdlYlNlc3Npb25JREF0dHJp
YnV0ZV0pCisgICAgICAgICAgICByZXR1cm4gQChtX29iamVjdC0+c2Vzc2lvbklEKCkpOwogICAg
IH0KICAgICAKICAgICBpZiAobV9vYmplY3QtPmlzVGV4dENvbnRyb2woKSkgewpAQCAtMjU5OSwx
NCArMjY0MywxNCBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAK
ICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlN
aW5WYWx1ZUF0dHJpYnV0ZV0pIHsKICAgICAgICAgLy8gSW5kZXRlcm1pbmF0ZSBwcm9ncmVzcyBp
bmRpY2F0b3Igc2hvdWxkIHJldHVybiAwLgotICAgICAgICBpZiAobV9vYmplY3QtPmFyaWFSb2xl
QXR0cmlidXRlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlByb2dyZXNzSW5kaWNhdG9yICYmICFt
X29iamVjdC0+aGFzQXR0cmlidXRlKGFyaWFfdmFsdWVub3dBdHRyKSkKKyAgICAgICAgaWYgKG1f
b2JqZWN0LT5hcmlhUm9sZUF0dHJpYnV0ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpQcm9ncmVz
c0luZGljYXRvciAmJiAhbV9vYmplY3QtPmhhc0FSSUFWYWx1ZU5vdygpKQogICAgICAgICAgICAg
cmV0dXJuIEAwOwogICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhGbG9hdDptX29i
amVjdC0+bWluVmFsdWVGb3JSYW5nZSgpXTsKICAgICB9CiAgICAgCiAgICAgaWYgKFthdHRyaWJ1
dGVOYW1lIGlzRXF1YWxUb1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5TWF4VmFsdWVBdHRyaWJ1dGVd
KSB7CiAgICAgICAgIC8vIEluZGV0ZXJtaW5hdGUgcHJvZ3Jlc3MgaW5kaWNhdG9yIHNob3VsZCBy
ZXR1cm4gMC4KLSAgICAgICAgaWYgKG1fb2JqZWN0LT5hcmlhUm9sZUF0dHJpYnV0ZSgpID09IEFj
Y2Vzc2liaWxpdHlSb2xlOjpQcm9ncmVzc0luZGljYXRvciAmJiAhbV9vYmplY3QtPmhhc0F0dHJp
YnV0ZShhcmlhX3ZhbHVlbm93QXR0cikpCisgICAgICAgIGlmIChtX29iamVjdC0+YXJpYVJvbGVB
dHRyaWJ1dGUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6UHJvZ3Jlc3NJbmRpY2F0b3IgJiYgIW1f
b2JqZWN0LT5oYXNBUklBVmFsdWVOb3coKSkKICAgICAgICAgICAgIHJldHVybiBAMDsKICAgICAg
ICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoRmxvYXQ6bV9vYmplY3QtPm1heFZhbHVlRm9y
UmFuZ2UoKV07CiAgICAgfQpAQCAtMjYzMSwyMCArMjY3NSwxMSBAQCBBTExPV19ERVBSRUNBVEVE
X0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgcmV0dXJuIFtzZWxmIHBvc2l0aW9uXTsKICAg
ICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVBhdGhB
dHRyaWJ1dGVdKQogICAgICAgICByZXR1cm4gW3NlbGYgcGF0aF07Ci0gICAgCi0gICAgaWYgKFth
dHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5V2luZG93QXR0cmli
dXRlXSB8fAotICAgICAgICBbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNz
aWJpbGl0eVRvcExldmVsVUlFbGVtZW50QXR0cmlidXRlXSkgewotICAgICAgICAKLSAgICAgICAg
aWQgcmVtb3RlUGFyZW50ID0gW3NlbGYgcmVtb3RlQWNjZXNzaWJpbGl0eVBhcmVudE9iamVjdF07
Ci0gICAgICAgIGlmIChyZW1vdGVQYXJlbnQpCi0gICAgICAgICAgICByZXR1cm4gW3JlbW90ZVBh
cmVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6YXR0cmlidXRlTmFtZV07Ci0gICAgICAg
IAotICAgICAgICBGcmFtZVZpZXcqIGZ2ID0gbV9vYmplY3QtPmRvY3VtZW50RnJhbWVWaWV3KCk7
Ci0gICAgICAgIGlmIChmdikKLSAgICAgICAgICAgIHJldHVybiBbZnYtPnBsYXRmb3JtV2lkZ2V0
KCkgd2luZG93XTsKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICB9Ci0gICAgCisKKyAgICBpZiAo
W2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVdpbmRvd0F0dHJp
YnV0ZV0KKyAgICAgICAgfHwgW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNz
aWJpbGl0eVRvcExldmVsVUlFbGVtZW50QXR0cmlidXRlXSkKKyAgICAgICAgcmV0dXJuIFtzZWxm
IHdpbmRvd0VsZW1lbnQ6YXR0cmlidXRlTmFtZV07CisKICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUg
aXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUFjY2Vzc0tleUF0dHJpYnV0ZV0pIHsKICAg
ICAgICAgQXRvbVN0cmluZyBhY2Nlc3NLZXkgPSBtX29iamVjdC0+YWNjZXNzS2V5KCk7CiAgICAg
ICAgIGlmIChhY2Nlc3NLZXkuaXNOdWxsKCkpCkBAIC0yODk3LDEyICsyOTMyLDEwIEBAIEFMTE9X
X0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgIGlmIChbYXR0cmlidXRlTmFtZSBp
c0VxdWFsVG9TdHJpbmc6IEAiQVhTZWxlY3RlZFRleHRNYXJrZXJSYW5nZSJdKQogICAgICAgICBy
ZXR1cm4gW3NlbGYgdGV4dE1hcmtlclJhbmdlRm9yU2VsZWN0aW9uXTsKICAgICAKLSAgICBpZiAo
bV9vYmplY3QtPnJlbmRlcmVyKCkpIHsKLSAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1
YWxUb1N0cmluZzogQCJBWFN0YXJ0VGV4dE1hcmtlciJdKQotICAgICAgICAgICAgcmV0dXJuIFtz
ZWxmIHRleHRNYXJrZXJGb3JWaXNpYmxlUG9zaXRpb246c3RhcnRPZkRvY3VtZW50KCZtX29iamVj
dC0+cmVuZGVyZXIoKS0+ZG9jdW1lbnQoKSldOwotICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUg
aXNFcXVhbFRvU3RyaW5nOiBAIkFYRW5kVGV4dE1hcmtlciJdKQotICAgICAgICAgICAgcmV0dXJu
IFtzZWxmIHRleHRNYXJrZXJGb3JWaXNpYmxlUG9zaXRpb246ZW5kT2ZEb2N1bWVudCgmbV9vYmpl
Y3QtPnJlbmRlcmVyKCktPmRvY3VtZW50KCkpXTsKLSAgICB9CisgICAgaWYgKFthdHRyaWJ1dGVO
YW1lIGlzRXF1YWxUb1N0cmluZzogQCJBWFN0YXJ0VGV4dE1hcmtlciJdKQorICAgICAgICByZXR1
cm4gW3NlbGYgdGV4dE1hcmtlckZvclZpc2libGVQb3NpdGlvbjpzdGFydE9mRG9jdW1lbnQoX2F4
QmFja2luZ09iamVjdC0+ZG9jdW1lbnQoKSldOworICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0Vx
dWFsVG9TdHJpbmc6IEAiQVhFbmRUZXh0TWFya2VyIl0pCisgICAgICAgIHJldHVybiBbc2VsZiB0
ZXh0TWFya2VyRm9yVmlzaWJsZVBvc2l0aW9uOmVuZE9mRG9jdW1lbnQoX2F4QmFja2luZ09iamVj
dC0+ZG9jdW1lbnQoKSldOwogICAgIAogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9T
dHJpbmc6TlNBY2Nlc3NpYmlsaXR5QmxvY2tRdW90ZUxldmVsQXR0cmlidXRlXSkKICAgICAgICAg
cmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnQ6bV9vYmplY3QtPmJsb2NrcXVv
dGVMZXZlbCgpXTsKQEAgLTMwNDAsNyArMzA3Myw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVN
RU5UQVRJT05TX0VORAogICAgICAgICByZXR1cm4gbV9vYmplY3QtPmRhdGV0aW1lQXR0cmlidXRl
VmFsdWUoKTsKICAgICAKICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5T
QWNjZXNzaWJpbGl0eUlubGluZVRleHRBdHRyaWJ1dGVdKQotICAgICAgICByZXR1cm4gQChtX29i
amVjdC0+cmVuZGVyZXIoKSAmJiBpczxSZW5kZXJJbmxpbmU+KG1fb2JqZWN0LT5yZW5kZXJlcigp
KSk7CisgICAgICAgIHJldHVybiBAKF9heEJhY2tpbmdPYmplY3QtPmlzSW5saW5lVGV4dCgpKTsK
ICAgICAKICAgICAvLyBBUklBIExpdmUgcmVnaW9uIGF0dHJpYnV0ZXMuCiAgICAgaWYgKFthdHRy
aWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlBUklBTGl2ZUF0dHJpYnV0
ZV0pCkBAIC0zMTA5LDcgKzMxNDIsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9O
U19FTkQKICAgICAKICAgICAvLyBVc2VkIGJ5IERSVCB0byBmaW5kIGFuIGFjY2Vzc2libGUgbm9k
ZSBieSBpdHMgZWxlbWVudCBpZC4KICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3Ry
aW5nOkAiQVhEUlRFbGVtZW50SWRBdHRyaWJ1dGUiXSkKLSAgICAgICAgcmV0dXJuIG1fb2JqZWN0
LT5nZXRBdHRyaWJ1dGUoaWRBdHRyKTsKKyAgICAgICAgcmV0dXJuIG1fb2JqZWN0LT5pZGVudGlm
aWVyQXR0cmlidXRlKCk7CiAgICAgCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0
cmluZzpAIkFYQXV0b2NvbXBsZXRlVmFsdWUiXSkKICAgICAgICAgcmV0dXJuIG1fb2JqZWN0LT5h
dXRvQ29tcGxldGVWYWx1ZSgpOwpAQCAtMzE1MiwxNyArMzE4NSwxMSBAQCBBTExPV19ERVBSRUNB
VEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJX
aXRoQm9vbDptX29iamVjdC0+aXNNdWx0aVNlbGVjdGFibGUoKV07CiAgICAgCiAgICAgLy8gRG9j
dW1lbnQgYXR0cmlidXRlcwotICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6
TlNBY2Nlc3NpYmlsaXR5RG9jdW1lbnRVUklBdHRyaWJ1dGVdKSB7Ci0gICAgICAgIGlmIChEb2N1
bWVudCogZG9jdW1lbnQgPSBtX29iamVjdC0+ZG9jdW1lbnQoKSkKLSAgICAgICAgICAgIHJldHVy
biBkb2N1bWVudC0+ZG9jdW1lbnRVUkkoKTsKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICB9Cisg
ICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlEb2N1
bWVudFVSSUF0dHJpYnV0ZV0pCisgICAgICAgIHJldHVybiBtX29iamVjdC0+ZG9jdW1lbnRVUkko
KTsKICAgICAKLSAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNz
aWJpbGl0eURvY3VtZW50RW5jb2RpbmdBdHRyaWJ1dGVdKSB7Ci0gICAgICAgIGlmIChEb2N1bWVu
dCogZG9jdW1lbnQgPSBtX29iamVjdC0+ZG9jdW1lbnQoKSkKLSAgICAgICAgICAgIHJldHVybiBk
b2N1bWVudC0+ZW5jb2RpbmcoKTsKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICB9CisgICAgaWYg
KFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlEb2N1bWVudEVu
Y29kaW5nQXR0cmlidXRlXSkKKyAgICAgICAgcmV0dXJuIG1fb2JqZWN0LT5kb2N1bWVudEVuY29k
aW5nKCk7CiAgICAgCiAgICAgLy8gQXJpYSBjb250cm9scyBlbGVtZW50CiAgICAgaWYgKFthdHRy
aWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlBcmlhQ29udHJvbHNBdHRy
aWJ1dGVdKSB7CkBAIC0zMzgyLDkgKzM0MDksNiBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVO
VEFUSU9OU19FTkQKICAgICBpZiAobV9vYmplY3QtPmlzUGFzc3dvcmRGaWVsZCgpKQogICAgICAg
ICByZXR1cm4gQFsgTlNBY2Nlc3NpYmlsaXR5VUlFbGVtZW50c0ZvclNlYXJjaFByZWRpY2F0ZVBh
cmFtZXRlcml6ZWRBdHRyaWJ1dGUgXTsKICAgICAKLSAgICBpZiAoIW1fb2JqZWN0LT5pc0FjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHBhcmFtQXR0cnM7Ci0gICAg
CiAgICAgaWYgKG1fb2JqZWN0LT5pc1RleHRDb250cm9sKCkpCiAgICAgICAgIHJldHVybiB0ZXh0
UGFyYW1BdHRyczsKICAgICAKQEAgLTM0NzMsMjEgKzM0OTcsMzAgQEAgQUxMT1dfREVQUkVDQVRF
RF9ERUNMQVJBVElPTlNfRU5ECiAKIC0gKHZvaWQpYWNjZXNzaWJpbGl0eVNob3dDb250ZXh0TWVu
dQogewotICAgIGlmICghbV9vYmplY3QpCisgICAgcGVyZm9ybUFjY2Vzc2liaWxpdHlGdW5jdGlv
bk9uTWFpblRocmVhZChbcHJvdGVjdGVkU2VsZiA9IFJldGFpblB0cjxXZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlcj4oc2VsZildIHsKKyAgICAgICAgW3Byb3RlY3RlZFNlbGYgX2FjY2Vzc2li
aWxpdHlTaG93Q29udGV4dE1lbnVdOworICAgIH0pOworfQorCistICh2b2lkKV9hY2Nlc3NpYmls
aXR5U2hvd0NvbnRleHRNZW51Cit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICAK
KyAgICBpZiAoIV9heEJhY2tpbmdPYmplY3QpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBQ
YWdlKiBwYWdlID0gbV9vYmplY3QtPnBhZ2UoKTsKKyAgICBQYWdlKiBwYWdlID0gX2F4QmFja2lu
Z09iamVjdC0+cGFnZSgpOwogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuOwogICAgIAot
ICAgIEludFJlY3QgcmVjdCA9IHNuYXBwZWRJbnRSZWN0KG1fb2JqZWN0LT5lbGVtZW50UmVjdCgp
KTsKLSAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IG1fb2JqZWN0LT5kb2N1bWVudEZyYW1lVmll
dygpOworICAgIEludFJlY3QgcmVjdCA9IHNuYXBwZWRJbnRSZWN0KF9heEJhY2tpbmdPYmplY3Qt
PmVsZW1lbnRSZWN0KCkpOworICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gX2F4QmFja2luZ09i
amVjdC0+ZG9jdW1lbnRGcmFtZVZpZXcoKTsKICAgICAKICAgICAvLyBPbiBXSzIsIHdlIG5lZWQg
dG8gYWNjb3VudCBmb3IgdGhlIHNjcm9sbCBwb3NpdGlvbiB3aXRoIHJlZ2FyZHMgdG8gcm9vdCB2
aWV3LgogICAgIC8vIE9uIFdLMSwgd2UgbmVlZCB0byBjb252ZXJ0IHJlY3QgdG8gd2luZG93IHNw
YWNlIHRvIG1hdGNoIG1vdXNlIGNsaWNraW5nLgogICAgIGlmIChmcmFtZVZpZXcpIHsKICAgICAg
ICAgLy8gRmluZCB0aGUgYXBwcm9wcmlhdGUgc2Nyb2xsIHZpZXcgdG8gdXNlIHRvIGNvbnZlcnQg
dGhlIGNvbnRlbnRzIHRvIHRoZSB3aW5kb3cuCi0gICAgICAgIGZvciAoYXV0byogcGFyZW50ID0g
bV9vYmplY3QtPnBhcmVudE9iamVjdCgpOyBwYXJlbnQ7IHBhcmVudCA9IHBhcmVudC0+cGFyZW50
T2JqZWN0KCkpIHsKKyAgICAgICAgZm9yIChhdXRvKiBwYXJlbnQgPSBfYXhCYWNraW5nT2JqZWN0
LT5wYXJlbnRPYmplY3QoKTsgcGFyZW50OyBwYXJlbnQgPSBwYXJlbnQtPnBhcmVudE9iamVjdCgp
KSB7CiAgICAgICAgICAgICBpZiAoaXM8QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc+KCpwYXJlbnQp
KSB7CiAgICAgICAgICAgICAgICAgaWYgKGF1dG8gc2Nyb2xsVmlldyA9IGRvd25jYXN0PEFjY2Vz
c2liaWxpdHlTY3JvbGxWaWV3PigqcGFyZW50KS5zY3JvbGxWaWV3KCkpIHsKICAgICAgICAgICAg
ICAgICAgICAgaWYgKCFmcmFtZVZpZXctPnBsYXRmb3JtV2lkZ2V0KCkpCkBAIC0zNzExLDExICsz
NzQ0LDEzIEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogCiAtIChOU1Jh
bmdlKV9jb252ZXJ0VG9OU1JhbmdlOihSYW5nZSopcmFuZ2UKIHsKKyAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOworICAgIAogICAgIE5TUmFuZ2UgcmVzdWx0ID0gTlNNYWtlUmFuZ2UoTlNOb3RG
b3VuZCwgMCk7CiAgICAgaWYgKCFyYW5nZSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAK
LSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX29iamVjdC0+ZG9jdW1lbnQoKTsKKyAgICBEb2N1
bWVudCogZG9jdW1lbnQgPSBfYXhCYWNraW5nT2JqZWN0LT5kb2N1bWVudCgpOwogICAgIGlmICgh
ZG9jdW1lbnQpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgCkBAIC0zNzQ0LDcgKzM3Nzks
OSBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKIAogLSAoaWQpX3RleHRN
YXJrZXJGb3JJbmRleDooTlNJbnRlZ2VyKXRleHRJbmRleAogewotICAgIERvY3VtZW50KiBkb2N1
bWVudCA9IG1fb2JqZWN0LT5kb2N1bWVudCgpOworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CisKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBfYXhCYWNraW5nT2JqZWN0LT5kb2N1bWVudCgp
OwogICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
MWFkNmU1YzU4NjBhM2NiY2RhNjA3YTVjMGJlMzM5MjMxODUxODhmMi4uZmQ0NjA1Nzg4YWZmMDUz
NTE3NDFjMGU0ZjUyODJhNTZjY2ZlYTRhYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE5LTEy
LTA1ICBBbmRyZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KKworICAgICAgICBJ
bXBsZW1lbnRhdGlvbiBvZiBhZGRpdGlvbmFsIGF0dHJpYnV0ZSBjYWNoaW5nIGluIHRoZSBJc29s
YXRlZFRyZWUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDQ5MTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGUgQVhTdGFydC9FbmRUZXh0TWFya2VyIGF0dHJpYnV0ZXMgd2VyZSBiZWluZyBjb21wdXRl
ZCBmb3IKKyAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdHMgdGhhdCBoYWQgYSByZW5kZXJlciBv
YmplY3QuIFdpdGggdGhpcyBjaGFuZ2UsCisgICAgICAgIEFYU3RhcnQvRW5kVGV4dE1hcmtlciBh
cmUgY29tcHV0ZWQgZm9yIGFsbCBBY2Nlc3NpYmlsaXR5T2JqZWN0cy4gVGh1cworICAgICAgICB0
aGUgZXhwZWN0ZWQgb3V0cHV0IGZvciB0aGUgZm9sbG93aW5nIHRlc3RzIGNoYW5nZWQgZnJvbSBu
dWxsIHZhbHVlIGZvcgorICAgICAgICB0aGVzZSBhdHRyaWJ1dGVzIHRvIHZhbGlkIG9iamVjdCB2
YWx1ZXMuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2ltYWdlLW1hcDItZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL2RvY3VtZW50LWxpbmtzLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L3RhYmxlLWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvdGFibGUtc2VjdGlvbnMtZXhwZWN0ZWQudHh0Ogor
CiAyMDE5LTEyLTA0ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBBZGQgc3VwcG9ydCBmb3IgV2ViSURMIHNldGxpa2UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkvaW1hZ2UtbWFwMi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L2ltYWdlLW1hcDItZXhwZWN0ZWQudHh0CmluZGV4IDA2MDdiYmQ3OThhZmZiZTNl
YTlkNGU4ODA1NWQ1ZDdkNGUwYjNjZmQuLjRjZTQ2OTAxNjgwOTg4MTMwNzkwNDIyMjEyNDI1YmQw
OGZhYzZlMmQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaW1hZ2UtbWFw
Mi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pbWFnZS1tYXAy
LWV4cGVjdGVkLnR4dApAQCAtNDQsOCArNDQsOCBAQCBBWEZvY3VzZWQ6IDAKIEFYRW5hYmxlZDog
MQogQVhXaW5kb3c6IDxBWExpbms+CiBBWFNlbGVjdGVkVGV4dE1hcmtlclJhbmdlOiAobnVsbCkK
LUFYU3RhcnRUZXh0TWFya2VyOiAobnVsbCkKLUFYRW5kVGV4dE1hcmtlcjogKG51bGwpCitBWFN0
YXJ0VGV4dE1hcmtlcjogPEFYTGluaz4KK0FYRW5kVGV4dE1hcmtlcjogPEFYTGluaz4KIEFYVmlz
aXRlZDogMAogQVhMaW5rZWRVSUVsZW1lbnRzOiA8YXJyYXkgb2Ygc2l6ZSAwPgogQVhTZWxlY3Rl
ZDogMApAQCAtNzgsOCArNzgsOCBAQCBBWEZvY3VzZWQ6IDAKIEFYRW5hYmxlZDogMQogQVhXaW5k
b3c6IDxBWExpbms+CiBBWFNlbGVjdGVkVGV4dE1hcmtlclJhbmdlOiAobnVsbCkKLUFYU3RhcnRU
ZXh0TWFya2VyOiAobnVsbCkKLUFYRW5kVGV4dE1hcmtlcjogKG51bGwpCitBWFN0YXJ0VGV4dE1h
cmtlcjogPEFYTGluaz4KK0FYRW5kVGV4dE1hcmtlcjogPEFYTGluaz4KIEFYVmlzaXRlZDogMAog
QVhMaW5rZWRVSUVsZW1lbnRzOiA8YXJyYXkgb2Ygc2l6ZSAwPgogQVhTZWxlY3RlZDogMApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZG9jdW1lbnQtbGlua3MtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZG9jdW1lbnQtbGlua3Mt
ZXhwZWN0ZWQudHh0CmluZGV4IGJjOWI1ZDZkYWQ0MTM0MWRkZDg4YzM5YzJkN2I2MTBhOTBlZmEw
NDIuLmJkYmU2MGJiZjJiMzVlOTNhYTc3YjJmMjM1ZTk3NGM1MzMzMzNiNGQgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2RvY3VtZW50LWxpbmtzLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kb2N1bWVudC1saW5rcy1leHBl
Y3RlZC50eHQKQEAgLTE0LDggKzE0LDggQEAgQVhGb2N1c2VkOiAwCiBBWEVuYWJsZWQ6IDEKIEFY
V2luZG93OiA8QVhMaW5rPgogQVhTZWxlY3RlZFRleHRNYXJrZXJSYW5nZTogKG51bGwpCi1BWFN0
YXJ0VGV4dE1hcmtlcjogKG51bGwpCi1BWEVuZFRleHRNYXJrZXI6IChudWxsKQorQVhTdGFydFRl
eHRNYXJrZXI6IDxBWExpbms+CitBWEVuZFRleHRNYXJrZXI6IDxBWExpbms+CiBBWFZpc2l0ZWQ6
IDAKIEFYTGlua2VkVUlFbGVtZW50czogPGFycmF5IG9mIHNpemUgMD4KIEFYU2VsZWN0ZWQ6IDAK
QEAgLTQ4LDggKzQ4LDggQEAgQVhGb2N1c2VkOiAwCiBBWEVuYWJsZWQ6IDEKIEFYV2luZG93OiA8
QVhMaW5rPgogQVhTZWxlY3RlZFRleHRNYXJrZXJSYW5nZTogKG51bGwpCi1BWFN0YXJ0VGV4dE1h
cmtlcjogKG51bGwpCi1BWEVuZFRleHRNYXJrZXI6IChudWxsKQorQVhTdGFydFRleHRNYXJrZXI6
IDxBWExpbms+CitBWEVuZFRleHRNYXJrZXI6IDxBWExpbms+CiBBWFZpc2l0ZWQ6IDAKIEFYTGlu
a2VkVUlFbGVtZW50czogPGFycmF5IG9mIHNpemUgMD4KIEFYU2VsZWN0ZWQ6IDAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGFibGUtYXR0cmlidXRlcy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RhYmxlLWF0dHJpYnV0ZXMtZXhwZWN0ZWQu
dHh0CmluZGV4IGIxODY4NWM4M2E1Y2RjOWE4ODAwMzAwNjk2NWQ4ODFhMzRjZTI3YjEuLmQxNTM4
ZWUyM2E0OWI5OWM3MGFkMmVhMDk1MTVhNTI4MWRjZDQ1M2UgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvdGFibGUtYXR0cmlidXRlcy1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90YWJsZS1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dApAQCAt
Mjg5LDggKzI4OSw4IEBAIEFYRm9jdXNlZDogMAogQVhFbmFibGVkOiAxCiBBWFdpbmRvdzogPEFY
Q29sdW1uPgogQVhTZWxlY3RlZFRleHRNYXJrZXJSYW5nZTogKG51bGwpCi1BWFN0YXJ0VGV4dE1h
cmtlcjogKG51bGwpCi1BWEVuZFRleHRNYXJrZXI6IChudWxsKQorQVhTdGFydFRleHRNYXJrZXI6
IDxBWENvbHVtbj4KK0FYRW5kVGV4dE1hcmtlcjogPEFYQ29sdW1uPgogQVhWaXNpdGVkOiAwCiBB
WExpbmtlZFVJRWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDA+CiBBWFNlbGVjdGVkOiAwCkBAIC0z
MjMsOCArMzIzLDggQEAgQVhGb2N1c2VkOiAwCiBBWEVuYWJsZWQ6IDEKIEFYV2luZG93OiA8QVhD
b2x1bW4+CiBBWFNlbGVjdGVkVGV4dE1hcmtlclJhbmdlOiAobnVsbCkKLUFYU3RhcnRUZXh0TWFy
a2VyOiAobnVsbCkKLUFYRW5kVGV4dE1hcmtlcjogKG51bGwpCitBWFN0YXJ0VGV4dE1hcmtlcjog
PEFYQ29sdW1uPgorQVhFbmRUZXh0TWFya2VyOiA8QVhDb2x1bW4+CiBBWFZpc2l0ZWQ6IDAKIEFY
TGlua2VkVUlFbGVtZW50czogPGFycmF5IG9mIHNpemUgMD4KIEFYU2VsZWN0ZWQ6IDAKQEAgLTM1
Nyw4ICszNTcsOCBAQCBBWEZvY3VzZWQ6IDAKIEFYRW5hYmxlZDogMQogQVhXaW5kb3c6IDxBWENv
bHVtbj4KIEFYU2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2U6IChudWxsKQotQVhTdGFydFRleHRNYXJr
ZXI6IChudWxsKQotQVhFbmRUZXh0TWFya2VyOiAobnVsbCkKK0FYU3RhcnRUZXh0TWFya2VyOiA8
QVhDb2x1bW4+CitBWEVuZFRleHRNYXJrZXI6IDxBWENvbHVtbj4KIEFYVmlzaXRlZDogMAogQVhM
aW5rZWRVSUVsZW1lbnRzOiA8YXJyYXkgb2Ygc2l6ZSAwPgogQVhTZWxlY3RlZDogMApAQCAtMzkx
LDggKzM5MSw4IEBAIEFYRm9jdXNlZDogMAogQVhFbmFibGVkOiAxCiBBWFdpbmRvdzogPEFYQ29s
dW1uPgogQVhTZWxlY3RlZFRleHRNYXJrZXJSYW5nZTogKG51bGwpCi1BWFN0YXJ0VGV4dE1hcmtl
cjogKG51bGwpCi1BWEVuZFRleHRNYXJrZXI6IChudWxsKQorQVhTdGFydFRleHRNYXJrZXI6IDxB
WENvbHVtbj4KK0FYRW5kVGV4dE1hcmtlcjogPEFYQ29sdW1uPgogQVhWaXNpdGVkOiAwCiBBWExp
bmtlZFVJRWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDA+CiBBWFNlbGVjdGVkOiAwCkBAIC00MjUs
OCArNDI1LDggQEAgQVhGb2N1c2VkOiAwCiBBWEVuYWJsZWQ6IDEKIEFYV2luZG93OiA8QVhDb2x1
bW4+CiBBWFNlbGVjdGVkVGV4dE1hcmtlclJhbmdlOiAobnVsbCkKLUFYU3RhcnRUZXh0TWFya2Vy
OiAobnVsbCkKLUFYRW5kVGV4dE1hcmtlcjogKG51bGwpCitBWFN0YXJ0VGV4dE1hcmtlcjogPEFY
Q29sdW1uPgorQVhFbmRUZXh0TWFya2VyOiA8QVhDb2x1bW4+CiBBWFZpc2l0ZWQ6IDAKIEFYTGlu
a2VkVUlFbGVtZW50czogPGFycmF5IG9mIHNpemUgMD4KIEFYU2VsZWN0ZWQ6IDAKQEAgLTExMTMs
OCArMTExMyw4IEBAIEFYRm9jdXNlZDogMAogQVhFbmFibGVkOiAxCiBBWFdpbmRvdzogPEFYR3Jv
dXA+CiBBWFNlbGVjdGVkVGV4dE1hcmtlclJhbmdlOiAobnVsbCkKLUFYU3RhcnRUZXh0TWFya2Vy
OiAobnVsbCkKLUFYRW5kVGV4dE1hcmtlcjogKG51bGwpCitBWFN0YXJ0VGV4dE1hcmtlcjogPEFY
R3JvdXA+CitBWEVuZFRleHRNYXJrZXI6IDxBWEdyb3VwPgogQVhWaXNpdGVkOiAwCiBBWExpbmtl
ZFVJRWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDA+CiBBWFNlbGVjdGVkOiAwCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RhYmxlLXNlY3Rpb25zLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGFibGUtc2VjdGlvbnMtZXhwZWN0ZWQudHh0Cmlu
ZGV4IDRjNTVkYjBmNTViYzE4MzlmMzdhNTBkNjFjODhmOTNhYjhmZDUwYWUuLmMzMWU0ZmRmNjM3
YzBmZjM2ZDAxYjQzNTk1MzM0NDRhOGU4ZTRiN2EgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvdGFibGUtc2VjdGlvbnMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkvdGFibGUtc2VjdGlvbnMtZXhwZWN0ZWQudHh0CkBAIC0yNjEsOCArMjYx
LDggQEAgQVhGb2N1c2VkOiAwCiBBWEVuYWJsZWQ6IDEKIEFYV2luZG93OiA8QVhDb2x1bW4+CiBB
WFNlbGVjdGVkVGV4dE1hcmtlclJhbmdlOiAobnVsbCkKLUFYU3RhcnRUZXh0TWFya2VyOiAobnVs
bCkKLUFYRW5kVGV4dE1hcmtlcjogKG51bGwpCitBWFN0YXJ0VGV4dE1hcmtlcjogPEFYQ29sdW1u
PgorQVhFbmRUZXh0TWFya2VyOiA8QVhDb2x1bW4+CiBBWFZpc2l0ZWQ6IDAKIEFYTGlua2VkVUlF
bGVtZW50czogPGFycmF5IG9mIHNpemUgMD4KIEFYU2VsZWN0ZWQ6IDAKQEAgLTI5NSw4ICsyOTUs
OCBAQCBBWEZvY3VzZWQ6IDAKIEFYRW5hYmxlZDogMQogQVhXaW5kb3c6IDxBWENvbHVtbj4KIEFY
U2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2U6IChudWxsKQotQVhTdGFydFRleHRNYXJrZXI6IChudWxs
KQotQVhFbmRUZXh0TWFya2VyOiAobnVsbCkKK0FYU3RhcnRUZXh0TWFya2VyOiA8QVhDb2x1bW4+
CitBWEVuZFRleHRNYXJrZXI6IDxBWENvbHVtbj4KIEFYVmlzaXRlZDogMAogQVhMaW5rZWRVSUVs
ZW1lbnRzOiA8YXJyYXkgb2Ygc2l6ZSAwPgogQVhTZWxlY3RlZDogMApAQCAtMzI5LDggKzMyOSw4
IEBAIEFYRm9jdXNlZDogMAogQVhFbmFibGVkOiAxCiBBWFdpbmRvdzogPEFYQ29sdW1uPgogQVhT
ZWxlY3RlZFRleHRNYXJrZXJSYW5nZTogKG51bGwpCi1BWFN0YXJ0VGV4dE1hcmtlcjogKG51bGwp
Ci1BWEVuZFRleHRNYXJrZXI6IChudWxsKQorQVhTdGFydFRleHRNYXJrZXI6IDxBWENvbHVtbj4K
K0FYRW5kVGV4dE1hcmtlcjogPEFYQ29sdW1uPgogQVhWaXNpdGVkOiAwCiBBWExpbmtlZFVJRWxl
bWVudHM6IDxhcnJheSBvZiBzaXplIDA+CiBBWFNlbGVjdGVkOiAwCkBAIC05NDMsOCArOTQzLDgg
QEAgQVhGb2N1c2VkOiAwCiBBWEVuYWJsZWQ6IDEKIEFYV2luZG93OiA8QVhHcm91cD4KIEFYU2Vs
ZWN0ZWRUZXh0TWFya2VyUmFuZ2U6IChudWxsKQotQVhTdGFydFRleHRNYXJrZXI6IChudWxsKQot
QVhFbmRUZXh0TWFya2VyOiAobnVsbCkKK0FYU3RhcnRUZXh0TWFya2VyOiA8QVhHcm91cD4KK0FY
RW5kVGV4dE1hcmtlcjogPEFYR3JvdXA+CiBBWFZpc2l0ZWQ6IDAKIEFYTGlua2VkVUlFbGVtZW50
czogPGFycmF5IG9mIHNpemUgMD4KIEFYU2VsZWN0ZWQ6IDAKQEAgLTEyMTEsOCArMTIxMSw4IEBA
IEFYRm9jdXNlZDogMAogQVhFbmFibGVkOiAxCiBBWFdpbmRvdzogPEFYQ29sdW1uPgogQVhTZWxl
Y3RlZFRleHRNYXJrZXJSYW5nZTogKG51bGwpCi1BWFN0YXJ0VGV4dE1hcmtlcjogKG51bGwpCi1B
WEVuZFRleHRNYXJrZXI6IChudWxsKQorQVhTdGFydFRleHRNYXJrZXI6IDxBWENvbHVtbj4KK0FY
RW5kVGV4dE1hcmtlcjogPEFYQ29sdW1uPgogQVhWaXNpdGVkOiAwCiBBWExpbmtlZFVJRWxlbWVu
dHM6IDxhcnJheSBvZiBzaXplIDA+CiBBWFNlbGVjdGVkOiAwCkBAIC0xMjQ1LDggKzEyNDUsOCBA
QCBBWEZvY3VzZWQ6IDAKIEFYRW5hYmxlZDogMQogQVhXaW5kb3c6IDxBWENvbHVtbj4KIEFYU2Vs
ZWN0ZWRUZXh0TWFya2VyUmFuZ2U6IChudWxsKQotQVhTdGFydFRleHRNYXJrZXI6IChudWxsKQot
QVhFbmRUZXh0TWFya2VyOiAobnVsbCkKK0FYU3RhcnRUZXh0TWFya2VyOiA8QVhDb2x1bW4+CitB
WEVuZFRleHRNYXJrZXI6IDxBWENvbHVtbj4KIEFYVmlzaXRlZDogMAogQVhMaW5rZWRVSUVsZW1l
bnRzOiA8YXJyYXkgb2Ygc2l6ZSAwPgogQVhTZWxlY3RlZDogMApAQCAtMTI3OSw4ICsxMjc5LDgg
QEAgQVhGb2N1c2VkOiAwCiBBWEVuYWJsZWQ6IDEKIEFYV2luZG93OiA8QVhDb2x1bW4+CiBBWFNl
bGVjdGVkVGV4dE1hcmtlclJhbmdlOiAobnVsbCkKLUFYU3RhcnRUZXh0TWFya2VyOiAobnVsbCkK
LUFYRW5kVGV4dE1hcmtlcjogKG51bGwpCitBWFN0YXJ0VGV4dE1hcmtlcjogPEFYQ29sdW1uPgor
QVhFbmRUZXh0TWFya2VyOiA8QVhDb2x1bW4+CiBBWFZpc2l0ZWQ6IDAKIEFYTGlua2VkVUlFbGVt
ZW50czogPGFycmF5IG9mIHNpemUgMD4KIEFYU2VsZWN0ZWQ6IDAKQEAgLTE4OTMsOCArMTg5Myw4
IEBAIEFYRm9jdXNlZDogMAogQVhFbmFibGVkOiAxCiBBWFdpbmRvdzogPEFYR3JvdXA+CiBBWFNl
bGVjdGVkVGV4dE1hcmtlclJhbmdlOiAobnVsbCkKLUFYU3RhcnRUZXh0TWFya2VyOiAobnVsbCkK
LUFYRW5kVGV4dE1hcmtlcjogKG51bGwpCitBWFN0YXJ0VGV4dE1hcmtlcjogPEFYR3JvdXA+CitB
WEVuZFRleHRNYXJrZXI6IDxBWEdyb3VwPgogQVhWaXNpdGVkOiAwCiBBWExpbmtlZFVJRWxlbWVu
dHM6IDxhcnJheSBvZiBzaXplIDA+CiBBWFNlbGVjdGVkOiAwCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>