<?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>29672</bug_id>
          
          <creation_ts>2009-09-23 00:30:30 -0700</creation_ts>
          <short_desc>fix accessibility webkit-style-check errors</short_desc>
          <delta_ts>2009-11-02 23:01:39 -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>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="chris fleizach">cfleizach</reporter>
          <assigned_to name="chris fleizach">cfleizach</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>149331</commentid>
    <comment_count>0</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-09-23 00:30:30 -0700</bug_when>
    <thetext>looks like there&apos;s probably quite a few</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159978</commentid>
    <comment_count>1</comment_count>
      <attachid>42358</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-11-02 20:51:11 -0800</bug_when>
    <thetext>Created attachment 42358
patch

Just fixing webkit-style errors</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159990</commentid>
    <comment_count>2</comment_count>
      <attachid>42358</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-11-02 22:13:42 -0800</bug_when>
    <thetext>Comment on attachment 42358
patch

I know there are mixed feelings about style clean up, but I think it is nice to have a consistent style in the code, so I&apos;ll review it.

It would be nice to fix up a few nits before check-in.

&gt; Index: WebCore/accessibility/AXObjectCache.h

&gt; +struct TextMarkerData  {

Might as well fix the two spaces before the {. (Make it one space.)

&gt; +    bool nodeIsAriaType(Node* node, String role);

No need for the param name &quot;node&quot; here.

&gt; Index: WebCore/accessibility/AccessibilityObject.cpp
&gt;      for (parent = parentObject(); parent &amp;&amp; parent-&gt;accessibilityIsIgnored(); parent = parent-&gt;parentObject())
&gt; +    { }

The preferred style would be to have the open { right after the ) of the for statement. I would think the close brace would go on the next line.


&gt; Index: WebCore/accessibility/AccessibilityRenderObject.cpp

&gt; @@ -296,10 +296,10 @@ bool AccessibilityRenderObject::isSlider
&gt;  bool AccessibilityRenderObject::isMenuRelated() const
&gt;  {
&gt;      AccessibilityRole role = roleValue();
&gt; -    return  role == MenuRole ||
&gt; -            role == MenuBarRole ||
&gt; -            role == MenuButtonRole ||
&gt; -            role == MenuItemRole;
&gt; +    return  role == MenuRole 
&gt; +            || role == MenuBarRole
&gt; +            || role == MenuButtonRole
&gt; +            || role == MenuItemRole;

There are two spaces after the return. Also, if you only indent the subsequent lines by 4 spaces, things line up nicely (much like before):

return role == MenuRole 
    || role == MenuBarRole
    || role == MenuButtonRole
    || role == MenuItemRole;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159995</commentid>
    <comment_count>3</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-11-02 23:01:39 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/50444</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42358</attachid>
            <date>2009-11-02 20:51:11 -0800</date>
            <delta_ts>2009-11-02 22:13:42 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>62578</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MDQzOCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTQ4IEBACisyMDA5LTExLTAyICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBh
cHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgZml4IGFjY2Vzc2liaWxpdHkgd2Via2l0LXN0eWxlLWNoZWNrIGVycm9ycworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjk2NzIKKworICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBWE9i
amVjdENhY2hlOjpnZXRPckNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hl
OjpyZW1vdmUpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6cGxhdGZvcm1HZW5l
cmF0ZUFYSUQpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6cmVtb3ZlQVhJRCk6
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmg6CisgICAgICAgIChXZWJD
b3JlOjpBWE9iamVjdENhY2hlOjplbmFibGVBY2Nlc3NpYmlsaXR5KToKKyAgICAgICAgKFdlYkNv
cmU6OkFYT2JqZWN0Q2FjaGU6OmVuYWJsZUVuaGFuY2VkVXNlckludGVyZmFjZUFjY2Vzc2liaWxp
dHkpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0eUVuYWJs
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0eUVuaGFu
Y2VkVXNlckludGVyZmFjZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNo
ZTo6aXNJRGluVXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6Om9iamVjdEZy
b21BWElEKToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6Oik6CisgICAgICAgIChX
ZWJDb3JlOjpBWE9iamVjdENhY2hlOjpoYW5kbGVBY3RpdmVEZXNjZW5kYW50Q2hhbmdlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpoYW5kbGVBcmlhUm9sZUNoYW5nZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6ZGV0YWNoV3JhcHBlcik6CisgICAgICAg
IChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjphdHRhY2hXcmFwcGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkFYT2JqZWN0Q2FjaGU6OnNlbGVjdGVkQ2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKFdl
YkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnBvc3ROb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6QVhPYmplY3RDYWNoZTo6cG9zdFBsYXRmb3JtTm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmhhbmRsZUZvY3VzZWRVSUVsZW1lbnRDaGFuZ2VkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmhhbmRsZVNjcm9sbGVkVG9BbmNob3IpOgor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlBUklBR3JpZDo6Y2VsbEZvckNvbHVtbkFuZFJvdyk6
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QWxsSW5PbmUuY3BwOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluay5jcHA6CisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdC5oOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eUxpc3Q6OmlzTGlzdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5TGlzdEJveC5jcHA6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5TGlzdEJveC5oOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUxpc3RCb3g6
OmlzTGlzdEJveCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJv
eE9wdGlvbi5jcHA6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJv
eE9wdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb246
OmlzTGlzdEJveE9wdGlvbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
TWVkaWFDb250cm9scy5oOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1lZGlhQ29u
dHJvbDo6fkFjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2wpOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU1lZGlhVGltZWxpbmU6On5BY2Nlc3NpYmlsaXR5TWVkaWFUaW1lbGluZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWVkaWFUaW1lbGluZTo6aXNNZWRpYVRpbWVs
aW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xzQ29udGFp
bmVyOjp+QWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHNDb250YWluZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHNDb250YWluZXI6OnJvbGVWYWx1ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9sc0NvbnRhaW5lcjo6YWNj
ZXNzaWJpbGl0eUlzSWdub3JlZCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWVk
aWFUaW1lRGlzcGxheTo6fkFjY2Vzc2liaWxpdHlNZWRpYVRpbWVEaXNwbGF5KToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlNZWRpYVRpbWVEaXNwbGF5Ojpyb2xlVmFsdWUpOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpwYXJlbnRPYmplY3RVbmlnbm9yZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6cmlnaHRMaW5lVmlzaWJsZVBvc2l0
aW9uUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6cmVwbGFjZWROb2RlTmVlZHNDaGFyYWN0ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c3RyaW5nRm9yVmlzaWJs
ZVBvc2l0aW9uUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
bGVuZ3RoRm9yVmlzaWJsZVBvc2l0aW9uUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6YWN0aW9uVmVyYik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5T2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpQbGFpblRleHRSYW5nZTo6aXNO
dWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
Ojppc0FuY2hvcik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0F0
dGFjaG1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNIZWFk
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTGluayk6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0ltYWdlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTmF0aXZlSW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNJbWFnZUJ1dHRvbik6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1Bhc3N3b3JkRmllbGQpOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNUZXh0Q29udHJvbCk6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc05hdGl2ZVRleHRDb250cm9sKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzV2ViQXJlYSk6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0NoZWNrYm94T3JSYWRpbyk6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0xpc3RCb3gpOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNGaWxlVXBsb2FkQnV0dG9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzUHJvZ3Jlc3NJbmRpY2F0b3IpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNTbGlkZXIpOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNDb250cm9sKToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0Ojppc0RhdGFUYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0Ojppc1RhYmxlUm93KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OmlzVGFibGVDb2x1bW4pOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6aXNUYWJsZUNlbGwpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6aXNGaWVsZHNldCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
Ojppc0dyb3VwKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQ2hl
Y2tlZCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0VuYWJsZWQp
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNTZWxlY3RlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0ZvY3VzZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNIb3ZlcmVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzSW5kZXRlcm1pbmF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0xvYWRlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc011bHRpU2VsZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzT2ZmU2NyZWVuKToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OmlzUHJlc3NlZCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0Ojppc1JlYWRPbmx5KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OmlzVmlzaXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0Ojppc1JlcXVpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6
OmNhblNldEZvY3VzQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmNhblNldFRleHRSYW5nZUF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU9iamVjdDo6Y2FuU2V0VmFsdWVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aGFzSW50VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJpbGl0eVNob3VsZFVzZVVuaXF1ZUlkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vzc2liaWxpdHlJc0lnbm9y
ZWQpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpwYXJlbnRP
YmplY3RJZkV4aXN0cyk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0OjpwYXJlbnRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6aXNNZW51UmVsYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0OjphY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWNjZXNzaWJpbGl0eUlzSWdub3JlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc0ZvY3VzZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dmlzaWJsZVBvc2l0
aW9uUmFuZ2VGb3JMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3Q6OnNldFNlbGVjdGVkVmlzaWJsZVBvc2l0aW9uUmFuZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6ZG9BWFJhbmdlRm9yTGluZSk6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpkb0FYU3RyaW5nRm9yUmFuZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWNjZXNzaWJp
bGl0eUltYWdlTWFwSGl0VGVzdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0OjpkZXRlcm1pbmVBcmlhUm9sZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSk6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc1ByZXNlbnRh
dGlvbmFsQ2hpbGRPZkFyaWFSb2xlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3Q6OmNhblNldEZvY3VzQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmNhbkhhdmVDaGlsZHJlbik6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphY3Rpb25WZXJiKToKKyAgICAgICAgKFdl
YkNvcmU6OnNob3VsZFJldHVyblRhZ05hbWVBc1JvbGVGb3JNU0FBKToKKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCk6
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTbGlkZXI6Om9yaWVudGF0aW9uKToKKyAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlTbGlkZXI6On5BY2Nlc3NpYmlsaXR5U2xpZGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlTbGlkZXI6OnJvbGVWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5U2xpZGVyOjphY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTbGlkZXI6OmlzU2xpZGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlTbGlkZXI6OmNhblNldFZhbHVlQXR0cmlidXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTbGlkZXJUaHVtYjo6fkFjY2Vzc2liaWxpdHlTbGlkZXJU
aHVtYik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2xpZGVyVGh1bWI6OnJvbGVW
YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2xpZGVyVGh1bWI6OmFjY2Vz
c2liaWxpdHlJc0lnbm9yZWQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNsaWRl
clRodW1iOjpzZXRQYXJlbnRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eVNsaWRlclRodW1iOjpwYXJlbnRPYmplY3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVRhYmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJs
ZTo6aXNUYWJsZUV4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KToKKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5jcHA6CisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVIZWFkZXJDb250YWluZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyOjphZGRDaGlsZHJlbik6
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuY3BwOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLmg6CisK
IDIwMDktMTEtMDIgIExhc3psbyBHb21ib3MgIDxsYXN6bG8uMS5nb21ib3NAbm9raWEuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BWE9iamVjdENhY2hlLmNwcAkocmV2aXNpb24gNTA0MDkpCisrKyBXZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDEyICszMCwx
MiBAQAogI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKIAogI2luY2x1ZGUgIkFjY2Vzc2liaWxp
dHlBUklBR3JpZC5oIgotI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5oIgogI2lu
Y2x1ZGUgIkFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuaCIKKyNpbmNsdWRlICJBY2Nlc3NpYmls
aXR5QVJJQUdyaWRSb3cuaCIKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmgi
CiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eUxpc3QuaCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5
TGlzdEJveC5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmgiCi0jaW5j
bHVkZSAiQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluay5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxp
dHlNZWRpYUNvbnRyb2xzLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5o
IgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlTbGlkZXIuaCIKQEAgLTE5NCwyMyArMTk0LDIzIEBA
IEFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6OmdldE8KICAgICAKICAgICAvLyB3
aWxsIGJlIGZpbGxlZCBpbi4uLgogICAgIHN3aXRjaCAocm9sZSkgewotICAgICAgICBjYXNlIExp
c3RCb3hPcHRpb25Sb2xlOgotICAgICAgICAgICAgb2JqID0gQWNjZXNzaWJpbGl0eUxpc3RCb3hP
cHRpb246OmNyZWF0ZSgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgSW1hZ2VN
YXBMaW5rUm9sZToKLSAgICAgICAgICAgIG9iaiA9IEFjY2Vzc2liaWxpdHlJbWFnZU1hcExpbms6
OmNyZWF0ZSgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ29sdW1uUm9sZToK
LSAgICAgICAgICAgIG9iaiA9IEFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbjo6Y3JlYXRlKCk7Ci0g
ICAgICAgICAgICBicmVhazsgICAgICAgICAgICAKLSAgICAgICAgY2FzZSBUYWJsZUhlYWRlckNv
bnRhaW5lclJvbGU6Ci0gICAgICAgICAgICBvYmogPSBBY2Nlc3NpYmlsaXR5VGFibGVIZWFkZXJD
b250YWluZXI6OmNyZWF0ZSgpOwotICAgICAgICAgICAgYnJlYWs7ICAgCi0gICAgICAgIGNhc2Ug
U2xpZGVyVGh1bWJSb2xlOgotICAgICAgICAgICAgb2JqID0gQWNjZXNzaWJpbGl0eVNsaWRlclRo
dW1iOjpjcmVhdGUoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAg
ICAgICAgICAgb2JqID0gMDsKKyAgICBjYXNlIExpc3RCb3hPcHRpb25Sb2xlOgorICAgICAgICBv
YmogPSBBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbjo6Y3JlYXRlKCk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgSW1hZ2VNYXBMaW5rUm9sZToKKyAgICAgICAgb2JqID0gQWNjZXNzaWJpbGl0
eUltYWdlTWFwTGluazo6Y3JlYXRlKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ29sdW1u
Um9sZToKKyAgICAgICAgb2JqID0gQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uOjpjcmVhdGUoKTsK
KyAgICAgICAgYnJlYWs7ICAgICAgICAgICAgCisgICAgY2FzZSBUYWJsZUhlYWRlckNvbnRhaW5l
clJvbGU6CisgICAgICAgIG9iaiA9IEFjY2Vzc2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lcjo6
Y3JlYXRlKCk7CisgICAgICAgIGJyZWFrOyAgIAorICAgIGNhc2UgU2xpZGVyVGh1bWJSb2xlOgor
ICAgICAgICBvYmogPSBBY2Nlc3NpYmlsaXR5U2xpZGVyVGh1bWI6OmNyZWF0ZSgpOworICAgICAg
ICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBvYmogPSAwOwogICAgIH0KICAgICAKICAg
ICBpZiAob2JqKQpAQCAtMjM4LDkgKzIzOCw4IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6cmVtb3Zl
KEFYSUQgYXhJRCkKICAgICByZW1vdmVBWElEKG9iaik7CiAgICAgCiAgICAgLy8gZmluYWxseSBy
ZW1vdmUgdGhlIG9iamVjdAotICAgIGlmICghbV9vYmplY3RzLnRha2UoYXhJRCkpIHsKKyAgICBp
ZiAoIW1fb2JqZWN0cy50YWtlKGF4SUQpKQogICAgICAgICByZXR1cm47Ci0gICAgfQogICAgIAog
ICAgIEFTU0VSVChtX29iamVjdHMuc2l6ZSgpID49IG1faWRzSW5Vc2Uuc2l6ZSgpKTsgICAgCiB9
CkBAIC0yNjQsNyArMjYzLDcgQEAgQVhJRCBBWE9iamVjdENhY2hlOjpwbGF0Zm9ybUdlbmVyYXRl
QVhJRAogICAgIEFYSUQgb2JqSUQgPSBsYXN0VXNlZElEOwogICAgIGRvIHsKICAgICAgICAgKytv
YmpJRDsKLSAgICB9IHdoaWxlIChvYmpJRCA9PSAwIHx8IEhhc2hUcmFpdHM8QVhJRD46OmlzRGVs
ZXRlZFZhbHVlKG9iaklEKSB8fCBtX2lkc0luVXNlLmNvbnRhaW5zKG9iaklEKSk7CisgICAgfSB3
aGlsZSAoIW9iaklEIHx8IEhhc2hUcmFpdHM8QVhJRD46OmlzRGVsZXRlZFZhbHVlKG9iaklEKSB8
fCBtX2lkc0luVXNlLmNvbnRhaW5zKG9iaklEKSk7CiAKICAgICBsYXN0VXNlZElEID0gb2JqSUQ7
CiAKQEAgLTI5NSw3ICsyOTQsNyBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnJlbW92ZUFYSUQoQWNj
ZXNzaWJpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBBWElEIG9iaklEID0gb2JqLT5heE9i
amVjdElEKCk7Ci0gICAgaWYgKG9iaklEID09IDApCisgICAgaWYgKCFvYmpJRCkKICAgICAgICAg
cmV0dXJuOwogICAgIEFTU0VSVCghSGFzaFRyYWl0czxBWElEPjo6aXNEZWxldGVkVmFsdWUob2Jq
SUQpKTsKICAgICBBU1NFUlQobV9pZHNJblVzZS5jb250YWlucyhvYmpJRCkpOwpJbmRleDogV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCShyZXZpc2lvbiA1MDQwOCkKKysrIFdlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDEw
NCArNDIsMTA0IEBAIGNsYXNzIFdlYkNvcmVUZXh0TWFya2VyOwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLSAgICBjbGFzcyBOb2RlOwotICAgIGNsYXNzIFBhZ2U7Ci0gICAgY2xhc3MgUmVuZGVy
T2JqZWN0OwotICAgIGNsYXNzIFN0cmluZzsKLSAgICBjbGFzcyBWaXNpYmxlUG9zaXRpb247Ci0K
LSAgICBzdHJ1Y3QgVGV4dE1hcmtlckRhdGEgIHsKLSAgICAgICAgQVhJRCBheElEOwotICAgICAg
ICBOb2RlKiBub2RlOwotICAgICAgICBpbnQgb2Zmc2V0OwotICAgICAgICBFQWZmaW5pdHkgYWZm
aW5pdHk7CitjbGFzcyBOb2RlOworY2xhc3MgUGFnZTsKK2NsYXNzIFJlbmRlck9iamVjdDsKK2Ns
YXNzIFN0cmluZzsKK2NsYXNzIFZpc2libGVQb3NpdGlvbjsKKworc3RydWN0IFRleHRNYXJrZXJE
YXRhICB7CisgICAgQVhJRCBheElEOworICAgIE5vZGUqIG5vZGU7CisgICAgaW50IG9mZnNldDsK
KyAgICBFQWZmaW5pdHkgYWZmaW5pdHk7Cit9OworCitjbGFzcyBBWE9iamVjdENhY2hlIDogcHVi
bGljIE5vbmNvcHlhYmxlIHsKK3B1YmxpYzoKKyAgICBBWE9iamVjdENhY2hlKCk7CisgICAgfkFY
T2JqZWN0Q2FjaGUoKTsKKworICAgIHN0YXRpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBmb2N1c2Vk
VUlFbGVtZW50Rm9yUGFnZShjb25zdCBQYWdlKik7CisKKyAgICAvLyB0byBiZSB1c2VkIHdpdGgg
cmVuZGVyIG9iamVjdHMKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBnZXRPckNyZWF0ZShSZW5k
ZXJPYmplY3QqKTsKKyAgICAKKyAgICAvLyB1c2VkIGZvciBvYmplY3RzIHdpdGhvdXQgYmFja2lu
ZyBlbGVtZW50cworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGdldE9yQ3JlYXRlKEFjY2Vzc2li
aWxpdHlSb2xlKTsKKyAgICAKKyAgICAvLyB3aWxsIG9ubHkgcmV0dXJuIHRoZSBBY2Nlc3NpYmls
aXR5T2JqZWN0IGlmIGl0IGFscmVhZHkgZXhpc3RzCisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCog
Z2V0KFJlbmRlck9iamVjdCopOworICAgIAorICAgIHZvaWQgcmVtb3ZlKFJlbmRlck9iamVjdCop
OworICAgIHZvaWQgcmVtb3ZlKEFYSUQpOworCisgICAgdm9pZCBkZXRhY2hXcmFwcGVyKEFjY2Vz
c2liaWxpdHlPYmplY3QqKTsKKyAgICB2b2lkIGF0dGFjaFdyYXBwZXIoQWNjZXNzaWJpbGl0eU9i
amVjdCopOworICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKFJlbmRlck9iamVjdCopOworICAgIHZv
aWQgc2VsZWN0ZWRDaGlsZHJlbkNoYW5nZWQoUmVuZGVyT2JqZWN0Kik7CisgICAgdm9pZCBoYW5k
bGVBY3RpdmVEZXNjZW5kYW50Q2hhbmdlZChSZW5kZXJPYmplY3QqKTsKKyAgICB2b2lkIGhhbmRs
ZUFyaWFSb2xlQ2hhbmdlZChSZW5kZXJPYmplY3QqKTsKKyAgICB2b2lkIGhhbmRsZUZvY3VzZWRV
SUVsZW1lbnRDaGFuZ2VkKFJlbmRlck9iamVjdCogb2xkRm9jdXNlZFJlbmRlcmVyLCBSZW5kZXJP
YmplY3QqIG5ld0ZvY3VzZWRSZW5kZXJlcik7CisgICAgdm9pZCBoYW5kbGVTY3JvbGxlZFRvQW5j
aG9yKGNvbnN0IE5vZGUqIGFuY2hvck5vZGUpOworCisgICAgc3RhdGljIHZvaWQgZW5hYmxlQWNj
ZXNzaWJpbGl0eSgpIHsgZ0FjY2Vzc2liaWxpdHlFbmFibGVkID0gdHJ1ZTsgfQorICAgIHN0YXRp
YyB2b2lkIGVuYWJsZUVuaGFuY2VkVXNlckludGVyZmFjZUFjY2Vzc2liaWxpdHkoKSB7IGdBY2Nl
c3NpYmlsaXR5RW5oYW5jZWRVc2VySW50ZXJmYWNlRW5hYmxlZCA9IHRydWU7IH0KKyAgICAKKyAg
ICBzdGF0aWMgYm9vbCBhY2Nlc3NpYmlsaXR5RW5hYmxlZCgpIHsgcmV0dXJuIGdBY2Nlc3NpYmls
aXR5RW5hYmxlZDsgfQorICAgIHN0YXRpYyBib29sIGFjY2Vzc2liaWxpdHlFbmhhbmNlZFVzZXJJ
bnRlcmZhY2VFbmFibGVkKCkgeyByZXR1cm4gZ0FjY2Vzc2liaWxpdHlFbmhhbmNlZFVzZXJJbnRl
cmZhY2VFbmFibGVkOyB9CisKKyAgICB2b2lkIHJlbW92ZUFYSUQoQWNjZXNzaWJpbGl0eU9iamVj
dCopOworICAgIGJvb2wgaXNJRGluVXNlKEFYSUQgaWQpIGNvbnN0IHsgcmV0dXJuIG1faWRzSW5V
c2UuY29udGFpbnMoaWQpOyB9CisgICAgQVhJRCBwbGF0Zm9ybUdlbmVyYXRlQVhJRCgpIGNvbnN0
OworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdEZyb21BWElEKEFYSUQgaWQpIGNvbnN0
IHsgcmV0dXJuIG1fb2JqZWN0cy5nZXQoaWQpLmdldCgpOyB9CisKKyAgICAvLyBUZXh0IG1hcmtl
ciB1dGlsaXRpZXMuCisgICAgc3RhdGljIHZvaWQgdGV4dE1hcmtlckRhdGFGb3JWaXNpYmxlUG9z
aXRpb24oVGV4dE1hcmtlckRhdGEmLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mKTsKKyAgICBzdGF0
aWMgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkZvclRleHRNYXJrZXJEYXRhKFRleHRN
YXJrZXJEYXRhJik7CisKKyAgICBlbnVtIEFYTm90aWZpY2F0aW9uIHsKKyAgICAgICAgQVhDaGVj
a2VkU3RhdGVDaGFuZ2VkLAorICAgICAgICBBWEZvY3VzZWRVSUVsZW1lbnRDaGFuZ2VkLAorICAg
ICAgICBBWExheW91dENvbXBsZXRlLAorICAgICAgICBBWExvYWRDb21wbGV0ZSwKKyAgICAgICAg
QVhTZWxlY3RlZENoaWxkcmVuQ2hhbmdlZCwKKyAgICAgICAgQVhTZWxlY3RlZFRleHRDaGFuZ2Vk
LAorICAgICAgICBBWFZhbHVlQ2hhbmdlZCwKKyAgICAgICAgQVhTY3JvbGxlZFRvQW5jaG9yLAog
ICAgIH07CisgICAgCisgICAgdm9pZCBwb3N0Tm90aWZpY2F0aW9uKFJlbmRlck9iamVjdCosIEFY
Tm90aWZpY2F0aW9uLCBib29sIHBvc3RUb0VsZW1lbnQpOwogCi0gICAgY2xhc3MgQVhPYmplY3RD
YWNoZSA6IHB1YmxpYyBOb25jb3B5YWJsZSB7Ci0gICAgcHVibGljOgotICAgICAgICBBWE9iamVj
dENhY2hlKCk7Ci0gICAgICAgIH5BWE9iamVjdENhY2hlKCk7Ci0KLSAgICAgICAgc3RhdGljIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIGZvY3VzZWRVSUVsZW1lbnRGb3JQYWdlKGNvbnN0IFBhZ2UqKTsK
LQotICAgICAgICAvLyB0byBiZSB1c2VkIHdpdGggcmVuZGVyIG9iamVjdHMKLSAgICAgICAgQWNj
ZXNzaWJpbGl0eU9iamVjdCogZ2V0T3JDcmVhdGUoUmVuZGVyT2JqZWN0Kik7Ci0gICAgICAgIAot
ICAgICAgICAvLyB1c2VkIGZvciBvYmplY3RzIHdpdGhvdXQgYmFja2luZyBlbGVtZW50cwotICAg
ICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBnZXRPckNyZWF0ZShBY2Nlc3NpYmlsaXR5Um9sZSk7
Ci0gICAgICAgIAotICAgICAgICAvLyB3aWxsIG9ubHkgcmV0dXJuIHRoZSBBY2Nlc3NpYmlsaXR5
T2JqZWN0IGlmIGl0IGFscmVhZHkgZXhpc3RzCi0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Qq
IGdldChSZW5kZXJPYmplY3QqKTsKLSAgICAgICAgCi0gICAgICAgIHZvaWQgcmVtb3ZlKFJlbmRl
ck9iamVjdCopOwotICAgICAgICB2b2lkIHJlbW92ZShBWElEKTsKLQotICAgICAgICB2b2lkIGRl
dGFjaFdyYXBwZXIoQWNjZXNzaWJpbGl0eU9iamVjdCopOwotICAgICAgICB2b2lkIGF0dGFjaFdy
YXBwZXIoQWNjZXNzaWJpbGl0eU9iamVjdCopOwotICAgICAgICB2b2lkIGNoaWxkcmVuQ2hhbmdl
ZChSZW5kZXJPYmplY3QqKTsKLSAgICAgICAgdm9pZCBzZWxlY3RlZENoaWxkcmVuQ2hhbmdlZChS
ZW5kZXJPYmplY3QqKTsKLSAgICAgICAgdm9pZCBoYW5kbGVBY3RpdmVEZXNjZW5kYW50Q2hhbmdl
ZChSZW5kZXJPYmplY3QqKTsKLSAgICAgICAgdm9pZCBoYW5kbGVBcmlhUm9sZUNoYW5nZWQoUmVu
ZGVyT2JqZWN0Kik7Ci0gICAgICAgIHZvaWQgaGFuZGxlRm9jdXNlZFVJRWxlbWVudENoYW5nZWQo
UmVuZGVyT2JqZWN0KiBvbGRGb2N1c2VkUmVuZGVyZXIsIFJlbmRlck9iamVjdCogbmV3Rm9jdXNl
ZFJlbmRlcmVyKTsKLSAgICAgICAgdm9pZCBoYW5kbGVTY3JvbGxlZFRvQW5jaG9yKGNvbnN0IE5v
ZGUqIGFuY2hvck5vZGUpOwotCi0gICAgICAgIHN0YXRpYyB2b2lkIGVuYWJsZUFjY2Vzc2liaWxp
dHkoKSB7IGdBY2Nlc3NpYmlsaXR5RW5hYmxlZCA9IHRydWU7IH0KLSAgICAgICAgc3RhdGljIHZv
aWQgZW5hYmxlRW5oYW5jZWRVc2VySW50ZXJmYWNlQWNjZXNzaWJpbGl0eSgpIHsgZ0FjY2Vzc2li
aWxpdHlFbmhhbmNlZFVzZXJJbnRlcmZhY2VFbmFibGVkID0gdHJ1ZTsgfQotICAgICAgICAKLSAg
ICAgICAgc3RhdGljIGJvb2wgYWNjZXNzaWJpbGl0eUVuYWJsZWQoKSB7IHJldHVybiBnQWNjZXNz
aWJpbGl0eUVuYWJsZWQ7IH0KLSAgICAgICAgc3RhdGljIGJvb2wgYWNjZXNzaWJpbGl0eUVuaGFu
Y2VkVXNlckludGVyZmFjZUVuYWJsZWQoKSB7IHJldHVybiBnQWNjZXNzaWJpbGl0eUVuaGFuY2Vk
VXNlckludGVyZmFjZUVuYWJsZWQ7IH0KLQotICAgICAgICB2b2lkIHJlbW92ZUFYSUQoQWNjZXNz
aWJpbGl0eU9iamVjdCopOwotICAgICAgICBib29sIGlzSURpblVzZShBWElEIGlkKSBjb25zdCB7
IHJldHVybiBtX2lkc0luVXNlLmNvbnRhaW5zKGlkKTsgfQotICAgICAgICBBWElEIHBsYXRmb3Jt
R2VuZXJhdGVBWElEKCkgY29uc3Q7Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVj
dEZyb21BWElEKEFYSUQgaWQpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0cy5nZXQoaWQpLmdldCgp
OyB9Ci0KLSAgICAgICAgLy8gVGV4dCBtYXJrZXIgdXRpbGl0aWVzLgotICAgICAgICBzdGF0aWMg
dm9pZCB0ZXh0TWFya2VyRGF0YUZvclZpc2libGVQb3NpdGlvbihUZXh0TWFya2VyRGF0YSYsIGNv
bnN0IFZpc2libGVQb3NpdGlvbiYpOwotICAgICAgICBzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIHZp
c2libGVQb3NpdGlvbkZvclRleHRNYXJrZXJEYXRhKFRleHRNYXJrZXJEYXRhJik7Ci0KLSAgICAg
ICAgZW51bSBBWE5vdGlmaWNhdGlvbiB7Ci0gICAgICAgICAgICBBWENoZWNrZWRTdGF0ZUNoYW5n
ZWQsCi0gICAgICAgICAgICBBWEZvY3VzZWRVSUVsZW1lbnRDaGFuZ2VkLAotICAgICAgICAgICAg
QVhMYXlvdXRDb21wbGV0ZSwKLSAgICAgICAgICAgIEFYTG9hZENvbXBsZXRlLAotICAgICAgICAg
ICAgQVhTZWxlY3RlZENoaWxkcmVuQ2hhbmdlZCwKLSAgICAgICAgICAgIEFYU2VsZWN0ZWRUZXh0
Q2hhbmdlZCwKLSAgICAgICAgICAgIEFYVmFsdWVDaGFuZ2VkLAotICAgICAgICAgICAgQVhTY3Jv
bGxlZFRvQW5jaG9yLAotICAgICAgICB9OwotICAgICAgICAKLSAgICAgICAgdm9pZCBwb3N0Tm90
aWZpY2F0aW9uKFJlbmRlck9iamVjdCosIEFYTm90aWZpY2F0aW9uLCBib29sIHBvc3RUb0VsZW1l
bnQpOwotCi0gICAgcHJvdGVjdGVkOgotICAgICAgICB2b2lkIHBvc3RQbGF0Zm9ybU5vdGlmaWNh
dGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgQVhOb3RpZmljYXRpb24pOwotCi0gICAgcHJpdmF0
ZToKLSAgICAgICAgSGFzaE1hcDxBWElELCBSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4gPiBt
X29iamVjdHM7Ci0gICAgICAgIEhhc2hNYXA8UmVuZGVyT2JqZWN0KiwgQVhJRD4gbV9yZW5kZXJP
YmplY3RNYXBwaW5nOwotICAgICAgICBzdGF0aWMgYm9vbCBnQWNjZXNzaWJpbGl0eUVuYWJsZWQ7
Ci0gICAgICAgIHN0YXRpYyBib29sIGdBY2Nlc3NpYmlsaXR5RW5oYW5jZWRVc2VySW50ZXJmYWNl
RW5hYmxlZDsKLSAgICAgICAgCi0gICAgICAgIEhhc2hTZXQ8QVhJRD4gbV9pZHNJblVzZTsKLSAg
ICAgICAgCi0gICAgICAgIFRpbWVyPEFYT2JqZWN0Q2FjaGU+IG1fbm90aWZpY2F0aW9uUG9zdFRp
bWVyOwotICAgICAgICBWZWN0b3I8cGFpcjxSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4sIEFY
Tm90aWZpY2F0aW9uPiA+IG1fbm90aWZpY2F0aW9uc1RvUG9zdDsKLSAgICAgICAgdm9pZCBub3Rp
ZmljYXRpb25Qb3N0VGltZXJGaXJlZChUaW1lcjxBWE9iamVjdENhY2hlPiopOwotICAgICAgICAK
LSAgICAgICAgQVhJRCBnZXRBWElEKEFjY2Vzc2liaWxpdHlPYmplY3QqKTsKLSAgICAgICAgYm9v
bCBub2RlSXNBcmlhVHlwZShOb2RlKiBub2RlLCBTdHJpbmcgcm9sZSk7Ci0gICAgfTsKK3Byb3Rl
Y3RlZDoKKyAgICB2b2lkIHBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiwgQVhOb3RpZmljYXRpb24pOworCitwcml2YXRlOgorICAgIEhhc2hNYXA8QVhJRCwgUmVm
UHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+ID4gbV9vYmplY3RzOworICAgIEhhc2hNYXA8UmVuZGVy
T2JqZWN0KiwgQVhJRD4gbV9yZW5kZXJPYmplY3RNYXBwaW5nOworICAgIHN0YXRpYyBib29sIGdB
Y2Nlc3NpYmlsaXR5RW5hYmxlZDsKKyAgICBzdGF0aWMgYm9vbCBnQWNjZXNzaWJpbGl0eUVuaGFu
Y2VkVXNlckludGVyZmFjZUVuYWJsZWQ7CisgICAgCisgICAgSGFzaFNldDxBWElEPiBtX2lkc0lu
VXNlOworICAgIAorICAgIFRpbWVyPEFYT2JqZWN0Q2FjaGU+IG1fbm90aWZpY2F0aW9uUG9zdFRp
bWVyOworICAgIFZlY3RvcjxwYWlyPFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiwgQVhOb3Rp
ZmljYXRpb24+ID4gbV9ub3RpZmljYXRpb25zVG9Qb3N0OworICAgIHZvaWQgbm90aWZpY2F0aW9u
UG9zdFRpbWVyRmlyZWQoVGltZXI8QVhPYmplY3RDYWNoZT4qKTsKKyAgICAKKyAgICBBWElEIGdl
dEFYSUQoQWNjZXNzaWJpbGl0eU9iamVjdCopOworICAgIGJvb2wgbm9kZUlzQXJpYVR5cGUoTm9k
ZSogbm9kZSwgU3RyaW5nIHJvbGUpOworfTsKIAogI2lmICFIQVZFKEFDQ0VTU0lCSUxJVFkpCi0g
ICAgaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlQWN0aXZlRGVzY2VuZGFudENoYW5n
ZWQoUmVuZGVyT2JqZWN0KikgeyB9Ci0gICAgaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6aGFu
ZGxlQXJpYVJvbGVDaGFuZ2VkKFJlbmRlck9iamVjdCopIHsgfQotICAgIGlubGluZSB2b2lkIEFY
T2JqZWN0Q2FjaGU6OmRldGFjaFdyYXBwZXIoQWNjZXNzaWJpbGl0eU9iamVjdCopIHsgfQotICAg
IGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OmF0dGFjaFdyYXBwZXIoQWNjZXNzaWJpbGl0eU9i
amVjdCopIHsgfQotICAgIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OnNlbGVjdGVkQ2hpbGRy
ZW5DaGFuZ2VkKFJlbmRlck9iamVjdCopIHsgfQotICAgIGlubGluZSB2b2lkIEFYT2JqZWN0Q2Fj
aGU6OnBvc3ROb3RpZmljYXRpb24oUmVuZGVyT2JqZWN0KiwgQVhOb3RpZmljYXRpb24sIGJvb2wg
cG9zdFRvRWxlbWVudCkgeyB9Ci0gICAgaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6cG9zdFBs
YXRmb3JtTm90aWZpY2F0aW9uKEFjY2Vzc2liaWxpdHlPYmplY3QqLCBBWE5vdGlmaWNhdGlvbikg
eyB9Ci0gICAgaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlRm9jdXNlZFVJRWxlbWVu
dENoYW5nZWQoUmVuZGVyT2JqZWN0KiwgUmVuZGVyT2JqZWN0KikgeyB9Ci0gICAgaW5saW5lIHZv
aWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlU2Nyb2xsZWRUb0FuY2hvcihjb25zdCBOb2RlKikgeyB9
CitpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVBY3RpdmVEZXNjZW5kYW50Q2hhbmdl
ZChSZW5kZXJPYmplY3QqKSB7IH0KK2lubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZUFy
aWFSb2xlQ2hhbmdlZChSZW5kZXJPYmplY3QqKSB7IH0KK2lubGluZSB2b2lkIEFYT2JqZWN0Q2Fj
aGU6OmRldGFjaFdyYXBwZXIoQWNjZXNzaWJpbGl0eU9iamVjdCopIHsgfQoraW5saW5lIHZvaWQg
QVhPYmplY3RDYWNoZTo6YXR0YWNoV3JhcHBlcihBY2Nlc3NpYmlsaXR5T2JqZWN0KikgeyB9Citp
bmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpzZWxlY3RlZENoaWxkcmVuQ2hhbmdlZChSZW5kZXJP
YmplY3QqKSB7IH0KK2lubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3ROb3RpZmljYXRpb24o
UmVuZGVyT2JqZWN0KiwgQVhOb3RpZmljYXRpb24sIGJvb2wgcG9zdFRvRWxlbWVudCkgeyB9Citp
bmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0UGxhdGZvcm1Ob3RpZmljYXRpb24oQWNjZXNz
aWJpbGl0eU9iamVjdCosIEFYTm90aWZpY2F0aW9uKSB7IH0KK2lubGluZSB2b2lkIEFYT2JqZWN0
Q2FjaGU6OmhhbmRsZUZvY3VzZWRVSUVsZW1lbnRDaGFuZ2VkKFJlbmRlck9iamVjdCosIFJlbmRl
ck9iamVjdCopIHsgfQoraW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlU2Nyb2xsZWRU
b0FuY2hvcihjb25zdCBOb2RlKikgeyB9CiAjZW5kaWYKIAogfQpJbmRleDogV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAJKHJldmlzaW9uIDUwNDA4
KQorKysgV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI5LDExICsyOSwxMSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIkFjY2Vzc2liaWxpdHlBUklBR3JpZC5oIgogCisjaW5jbHVkZSAiQVhPYmplY3RDYWNo
ZS5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZUNlbGwuaCIKICNpbmNsdWRlICJBY2Nl
c3NpYmlsaXR5VGFibGVDb2x1bW4uaCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VGFibGVIZWFk
ZXJDb250YWluZXIuaCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VGFibGVSb3cuaCIKLSNpbmNs
dWRlICJBWE9iamVjdENhY2hlLmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAKIHVzaW5n
IG5hbWVzcGFjZSBzdGQ7CkBAIC0xMzcsNyArMTM3LDcgQEAgQWNjZXNzaWJpbGl0eVRhYmxlQ2Vs
bCogQWNjZXNzaWJpbGl0eUFSSQogICAgIGlmIChjb2x1bW4gPj0gY29sdW1uQ291bnQoKSB8fCBy
b3cgPj0gcm93Q291bnQoKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgCi0gICAgQWNjZXNzaWJp
bGl0eU9iamVjdCAqdGFibGVSb3cgPSBtX3Jvd3Nbcm93XS5nZXQoKTsKKyAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0KiB0YWJsZVJvdyA9IG1fcm93c1tyb3ddLmdldCgpOwogICAgIGlmICghdGFibGVS
b3cpCiAgICAgICAgIHJldHVybiAwOwogICAgIApJbmRleDogV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlBbGxJbk9uZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlBbGxJbk9uZS5jcHAJKHJldmlzaW9uIDUwNDA4KQorKysgV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBbGxJbk9uZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI1LDYgKzI1LDcgQEAKIA0KIC8vIFRoaXMgYWxsLWluLW9uZSBjcHAgZmlsZSBjdXRz
IGRvd24gb24gdGVtcGxhdGUgYmxvYXQgdG8gYWxsb3cgdXMgdG8gYnVpbGQgb3VyIFdpbmRvd3Mg
cmVsZWFzZSBidWlsZC4NCiANCisjaW5jbHVkZSA8QVhPYmplY3RDYWNoZS5jcHA+DQogI2luY2x1
ZGUgPEFjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHA+DQogI2luY2x1ZGUgPEFjY2Vzc2liaWxpdHlB
UklBR3JpZENlbGwuY3BwPg0KICNpbmNsdWRlIDxBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3cuY3Bw
Pg0KQEAgLTQxLDQgKzQyLDMgQEAKICNpbmNsdWRlIDxBY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4u
Y3BwPg0KICNpbmNsdWRlIDxBY2Nlc3NpYmlsaXR5VGFibGVIZWFkZXJDb250YWluZXIuY3BwPg0K
ICNpbmNsdWRlIDxBY2Nlc3NpYmlsaXR5VGFibGVSb3cuY3BwPg0KLSNpbmNsdWRlIDxBWE9iamVj
dENhY2hlLmNwcD4NCkluZGV4OiBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUlt
YWdlTWFwTGluay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlJbWFnZU1hcExpbmsuY3BwCShyZXZpc2lvbiA1MDQwOCkKKysrIFdlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjksOCArMjksOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFjY2Vzc2li
aWxpdHlJbWFnZU1hcExpbmsuaCIKIAotI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuaCIKICNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5h
bWVzLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgpJbmRleDogV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlMaXN0LmgJKHJldmlzaW9uIDUwNDA4KQorKysgV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlMaXN0PiBjcmVh
dGUoUmVuZGVyT2JqZWN0Kik7CiAgICAgdmlydHVhbCB+QWNjZXNzaWJpbGl0eUxpc3QoKTsKICAg
ICAKLSAgICB2aXJ0dWFsIGJvb2wgaXNMaXN0KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfTsKKyAg
ICB2aXJ0dWFsIGJvb2wgaXNMaXN0KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIGJvb2wg
aXNVbm9yZGVyZWRMaXN0KCkgY29uc3Q7CiAgICAgYm9vbCBpc09yZGVyZWRMaXN0KCkgY29uc3Q7
CiAgICAgYm9vbCBpc0RlZmluaXRpb25MaXN0KCkgY29uc3Q7CkluZGV4OiBXZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAJKHJldmlzaW9uIDUwNDA4KQor
KysgV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzEsOSArMzEsOSBAQAogCiAjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgog
I2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmgiCi0jaW5jbHVkZSAiSGl0VGVz
dFJlc3VsdC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxTZWxlY3RF
bGVtZW50LmgiCisjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIlJlbmRlckxp
c3RCb3guaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKIApJbmRleDogV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmgJKHJldmlzaW9uIDUwNDA4KQorKysg
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkFjY2Vzc2liaWxpdHlM
aXN0Qm94KCk7CiAgICAgCiAgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBkb0FjY2Vz
c2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JikgY29uc3Q7Ci0gICAgdmlydHVhbCBib29s
IGlzTGlzdEJveCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH07CisgICAgdmlydHVhbCBib29sIGlz
TGlzdEJveCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICAKICAgICB2aXJ0dWFsIGJvb2wg
Y2FuU2V0Rm9jdXNBdHRyaWJ1dGUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVh
bCBib29sIGNhblNldFNlbGVjdGVkQ2hpbGRyZW5BdHRyaWJ1dGUoKSBjb25zdDsKSW5kZXg6IFdl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9u
LmNwcAkocmV2aXNpb24gNTA0MDgpCisrKyBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eUxpc3RCb3hPcHRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxMiArMzQsMTIgQEAK
ICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MTmFtZXMuaCIKLSNpbmNsdWRlICJIVE1MT3B0aW9uRWxlbWVudC5oIgogI2luY2x1ZGUg
IkhUTUxPcHRHcm91cEVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MT3B0aW9uRWxlbWVudC5oIgog
I2luY2x1ZGUgIkhUTUxTZWxlY3RFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgotI2lu
Y2x1ZGUgIlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIlJlbmRlckxpc3RCb3guaCIKKyNpbmNs
dWRlICJSZW5kZXJPYmplY3QuaCIKIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIApJbmRleDogV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmgJ
KHJldmlzaW9uIDUwNDA4KQorKysgV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlM
aXN0Qm94T3B0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgSW50UmVjdCBlbGVtZW50UmVjdCgpIGNvbnN0OwogICAgIHZpcnR1YWwgSW50
U2l6ZSBzaXplKCkgY29uc3Q7CiAgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJl
bnRPYmplY3QoKSBjb25zdDsKLSAgICBib29sIGlzTGlzdEJveE9wdGlvbigpIGNvbnN0IHsgcmV0
dXJuIHRydWU7IH07CisgICAgYm9vbCBpc0xpc3RCb3hPcHRpb24oKSBjb25zdCB7IHJldHVybiB0
cnVlOyB9CiAgICAgCiBwcml2YXRlOgogICAgIEhUTUxFbGVtZW50KiBtX29wdGlvbkVsZW1lbnQ7
CkluZGV4OiBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lZGlh
Q29udHJvbHMuaAkocmV2aXNpb24gNTA0MDgpCisrKyBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU1lZGlhQ29udHJvbHMuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNzcgKzM3LDc3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIGNsYXNzIEFjY2Vzc2liaWxpdHlNZWRp
YUNvbnRyb2wgOiBwdWJsaWMgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCB7CitjbGFzcyBBY2Nl
c3NpYmlsaXR5TWVkaWFDb250cm9sIDogcHVibGljIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Qg
ewogCi0gICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5
T2JqZWN0PiBjcmVhdGUoUmVuZGVyT2JqZWN0Kik7Ci0gICAgICAgIHZpcnR1YWwgfkFjY2Vzc2li
aWxpdHlNZWRpYUNvbnRyb2woKSB7IH0KK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxB
Y2Nlc3NpYmlsaXR5T2JqZWN0PiBjcmVhdGUoUmVuZGVyT2JqZWN0Kik7CisgICAgdmlydHVhbCB+
QWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbCgpIHsgfQogCi0gICAgICAgIHZpcnR1YWwgQWNjZXNz
aWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBhY2Nl
c3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3Q7CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Um9s
ZSByb2xlVmFsdWUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgYWNjZXNzaWJpbGl0eUlzSWdu
b3JlZCgpIGNvbnN0OwogCi0gICAgICAgIHZpcnR1YWwgU3RyaW5nIHRpdGxlKCkgY29uc3Q7Ci0g
ICAgICAgIHZpcnR1YWwgU3RyaW5nIGFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbigpIGNvbnN0Owot
ICAgICAgICB2aXJ0dWFsIFN0cmluZyBoZWxwVGV4dCgpIGNvbnN0OworICAgIHZpcnR1YWwgU3Ry
aW5nIHRpdGxlKCkgY29uc3Q7CisgICAgdmlydHVhbCBTdHJpbmcgYWNjZXNzaWJpbGl0eURlc2Ny
aXB0aW9uKCkgY29uc3Q7CisgICAgdmlydHVhbCBTdHJpbmcgaGVscFRleHQoKSBjb25zdDsKIAot
ICAgIHByb3RlY3RlZDoKLSAgICAgICAgQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbChSZW5kZXJP
YmplY3QqKTsKLSAgICAgICAgTWVkaWFDb250cm9sRWxlbWVudFR5cGUgY29udHJvbFR5cGUoKSBj
b25zdDsKLSAgICAgICAgU3RyaW5nIGNvbnRyb2xUeXBlTmFtZSgpIGNvbnN0OwotICAgIH07Citw
cm90ZWN0ZWQ6CisgICAgQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbChSZW5kZXJPYmplY3QqKTsK
KyAgICBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSBjb250cm9sVHlwZSgpIGNvbnN0OworICAgIFN0
cmluZyBjb250cm9sVHlwZU5hbWUoKSBjb25zdDsKK307CiAKIAotICAgIGNsYXNzIEFjY2Vzc2li
aWxpdHlNZWRpYVRpbWVsaW5lIDogcHVibGljIEFjY2Vzc2liaWxpdHlTbGlkZXIgeworY2xhc3Mg
QWNjZXNzaWJpbGl0eU1lZGlhVGltZWxpbmUgOiBwdWJsaWMgQWNjZXNzaWJpbGl0eVNsaWRlciB7
CiAKLSAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlP
YmplY3Q+IGNyZWF0ZShSZW5kZXJPYmplY3QqKTsKLSAgICAgICAgdmlydHVhbCB+QWNjZXNzaWJp
bGl0eU1lZGlhVGltZWxpbmUoKSB7IH0KK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxB
Y2Nlc3NpYmlsaXR5T2JqZWN0PiBjcmVhdGUoUmVuZGVyT2JqZWN0Kik7CisgICAgdmlydHVhbCB+
QWNjZXNzaWJpbGl0eU1lZGlhVGltZWxpbmUoKSB7IH0KIAotICAgICAgICB2aXJ0dWFsIGJvb2wg
aXNNZWRpYVRpbWVsaW5lKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9v
bCBpc01lZGlhVGltZWxpbmUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICAgICAgdmly
dHVhbCBTdHJpbmcgaGVscFRleHQoKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCBTdHJpbmcgdmFs
dWVEZXNjcmlwdGlvbigpIGNvbnN0OwotICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGdldEF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGUpIGNvbnN0OworICAgIHZpcnR1
YWwgU3RyaW5nIGhlbHBUZXh0KCkgY29uc3Q7CisgICAgdmlydHVhbCBTdHJpbmcgdmFsdWVEZXNj
cmlwdGlvbigpIGNvbnN0OworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZ2V0QXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZSkgY29uc3Q7CiAKLSAgICBwcml2YXRlOgotICAg
ICAgICBBY2Nlc3NpYmlsaXR5TWVkaWFUaW1lbGluZShSZW5kZXJPYmplY3QqKTsKLSAgICB9Owor
cHJpdmF0ZToKKyAgICBBY2Nlc3NpYmlsaXR5TWVkaWFUaW1lbGluZShSZW5kZXJPYmplY3QqKTsK
K307CiAKIAotICAgIGNsYXNzIEFjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xzQ29udGFpbmVyIDog
cHVibGljIEFjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2wgeworY2xhc3MgQWNjZXNzaWJpbGl0eU1l
ZGlhQ29udHJvbHNDb250YWluZXIgOiBwdWJsaWMgQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbCB7
CiAKLSAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlP
YmplY3Q+IGNyZWF0ZShSZW5kZXJPYmplY3QqKTsKLSAgICAgICAgdmlydHVhbCB+QWNjZXNzaWJp
bGl0eU1lZGlhQ29udHJvbHNDb250YWluZXIoKSB7IH0KK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiBjcmVhdGUoUmVuZGVyT2JqZWN0Kik7CisgICAg
dmlydHVhbCB+QWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHNDb250YWluZXIoKSB7IH0KIAotICAg
ICAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IHsgcmV0dXJu
IFRvb2xiYXJSb2xlOyB9Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBhY2Nlc3NpYmlsaXR5SXNJZ25v
cmVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlS
b2xlIHJvbGVWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIFRvb2xiYXJSb2xlOyB9CisgICAgdmlydHVh
bCBib29sIGFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
Ci0gICAgICAgIHZpcnR1YWwgU3RyaW5nIGhlbHBUZXh0KCkgY29uc3Q7Ci0gICAgICAgIHZpcnR1
YWwgU3RyaW5nIGFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbigpIGNvbnN0OworICAgIHZpcnR1YWwg
U3RyaW5nIGhlbHBUZXh0KCkgY29uc3Q7CisgICAgdmlydHVhbCBTdHJpbmcgYWNjZXNzaWJpbGl0
eURlc2NyaXB0aW9uKCkgY29uc3Q7CiAKLSAgICBwcml2YXRlOgotICAgICAgICBBY2Nlc3NpYmls
aXR5TWVkaWFDb250cm9sc0NvbnRhaW5lcihSZW5kZXJPYmplY3QqKTsKLSAgICAgICAgYm9vbCBj
b250cm9sbGluZ1ZpZGVvRWxlbWVudCgpIGNvbnN0OwotICAgICAgICBjb25zdCBTdHJpbmcgZWxl
bWVudFR5cGVOYW1lKCkgY29uc3Q7Ci0gICAgfTsKK3ByaXZhdGU6CisgICAgQWNjZXNzaWJpbGl0
eU1lZGlhQ29udHJvbHNDb250YWluZXIoUmVuZGVyT2JqZWN0Kik7CisgICAgYm9vbCBjb250cm9s
bGluZ1ZpZGVvRWxlbWVudCgpIGNvbnN0OworICAgIGNvbnN0IFN0cmluZyBlbGVtZW50VHlwZU5h
bWUoKSBjb25zdDsKK307CiAKIAotICAgIGNsYXNzIEFjY2Vzc2liaWxpdHlNZWRpYVRpbWVEaXNw
bGF5IDogcHVibGljIEFjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2wgeworY2xhc3MgQWNjZXNzaWJp
bGl0eU1lZGlhVGltZURpc3BsYXkgOiBwdWJsaWMgQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbCB7
CiAKLSAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlP
YmplY3Q+IGNyZWF0ZShSZW5kZXJPYmplY3QqKTsKLSAgICAgICAgdmlydHVhbCB+QWNjZXNzaWJp
bGl0eU1lZGlhVGltZURpc3BsYXkoKSB7IH0KK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiBjcmVhdGUoUmVuZGVyT2JqZWN0Kik7CisgICAgdmlydHVh
bCB+QWNjZXNzaWJpbGl0eU1lZGlhVGltZURpc3BsYXkoKSB7IH0KIAotICAgICAgICB2aXJ0dWFs
IEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIFN0YXRpY1RleHRS
b2xlOyB9Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29u
c3Q7CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCB7IHJl
dHVybiBTdGF0aWNUZXh0Um9sZTsgfQorICAgIHZpcnR1YWwgYm9vbCBhY2Nlc3NpYmlsaXR5SXNJ
Z25vcmVkKCkgY29uc3Q7CiAKLSAgICAgICAgdmlydHVhbCBTdHJpbmcgc3RyaW5nVmFsdWUoKSBj
b25zdDsKLSAgICAgICAgdmlydHVhbCBTdHJpbmcgYWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKCkg
Y29uc3Q7CisgICAgdmlydHVhbCBTdHJpbmcgc3RyaW5nVmFsdWUoKSBjb25zdDsKKyAgICB2aXJ0
dWFsIFN0cmluZyBhY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24oKSBjb25zdDsKIAotICAgIHByaXZh
dGU6Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlNZWRpYVRpbWVEaXNwbGF5KFJlbmRlck9iamVjdCop
OwotICAgIH07Citwcml2YXRlOgorICAgIEFjY2Vzc2liaWxpdHlNZWRpYVRpbWVEaXNwbGF5KFJl
bmRlck9iamVjdCopOworfTsKIAogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCShyZXZpc2lvbiA1
MDQwOCkKKysrIFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjksOCArMjksOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIkFjY2Vzc2liaWxpdHlPYmplY3QuaCIKIAotI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCisjaW5jbHVkZSAiQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIkNoYXJhY3Rlck5hbWVzLmgiCiAj
aW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiRm9jdXNDb250cm9sbGVyLmgiCkBAIC04
Niw3ICs4Niw4IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlPYmplY3QKIHsK
ICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQ7CiAgICAgZm9yIChwYXJlbnQgPSBwYXJl
bnRPYmplY3QoKTsgcGFyZW50ICYmIHBhcmVudC0+YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpOyBw
YXJlbnQgPSBwYXJlbnQtPnBhcmVudE9iamVjdCgpKQotICAgICAgICA7CisgICAgeyB9CisgICAg
CiAgICAgcmV0dXJuIHBhcmVudDsKIH0KIApAQCAtMjc1LDcgKzI3Niw3IEBAIFZpc2libGVQb3Np
dGlvblJhbmdlIEFjY2Vzc2liaWxpdHlPYmplY3QKICAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnRQ
b3NpdGlvbiA9IHN0YXJ0T2ZMaW5lKG5leHRWaXNpYmxlUG9zKTsKIAogICAgIC8vIGZldGNoIGZv
ciBhIHZhbGlkIGxpbmUgc3RhcnQgcG9zaXRpb24KLSAgICBpZiAoc3RhcnRQb3NpdGlvbi5pc051
bGwoKSApIHsKKyAgICBpZiAoc3RhcnRQb3NpdGlvbi5pc051bGwoKSkgewogICAgICAgICBzdGFy
dFBvc2l0aW9uID0gdmlzaWJsZVBvczsKICAgICAgICAgbmV4dFZpc2libGVQb3MgPSBuZXh0Vmlz
aWJsZVBvcy5uZXh0KCk7CiAgICAgfSBlbHNlCkBAIC0zODEsOSArMzgyLDggQEAgc3RhdGljIGJv
b2wgcmVwbGFjZWROb2RlTmVlZHNDaGFyYWN0ZXIoTgogewogICAgIC8vIHdlIHNob3VsZCBhbHdh
eXMgYmUgZ2l2ZW4gYSByZW5kZXJlZCBub2RlIGFuZCBhIHJlcGxhY2VkIG5vZGUsIGJ1dCBiZSBz
YWZlCiAgICAgLy8gcmVwbGFjZWQgbm9kZXMgYXJlIGVpdGhlciBhdHRhY2htZW50cyAod2lkZ2V0
cykgb3IgaW1hZ2VzCi0gICAgaWYgKCFyZXBsYWNlZE5vZGUgfHwgIXJlcGxhY2VkTm9kZS0+cmVu
ZGVyZXIoKSB8fCAhcmVwbGFjZWROb2RlLT5yZW5kZXJlcigpLT5pc1JlcGxhY2VkKCkgfHwgcmVw
bGFjZWROb2RlLT5pc1RleHROb2RlKCkpIHsKKyAgICBpZiAoIXJlcGxhY2VkTm9kZSB8fCAhcmVw
bGFjZWROb2RlLT5yZW5kZXJlcigpIHx8ICFyZXBsYWNlZE5vZGUtPnJlbmRlcmVyKCktPmlzUmVw
bGFjZWQoKSB8fCByZXBsYWNlZE5vZGUtPmlzVGV4dE5vZGUoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0KIAogICAgIC8vIGNyZWF0ZSBhbiBBWCBvYmplY3QsIGJ1dCBza2lwIGl0IGlm
IGl0IGlzIG5vdCBzdXBwb3NlZCB0byBiZSBzZWVuCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCog
b2JqZWN0ID0gcmVwbGFjZWROb2RlLT5yZW5kZXJlcigpLT5kb2N1bWVudCgpLT5heE9iamVjdENh
Y2hlKCktPmdldE9yQ3JlYXRlKHJlcGxhY2VkTm9kZS0+cmVuZGVyZXIoKSk7CkBAIC00NDUsNyAr
NDQ1LDcgQEAgU3RyaW5nIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnN0cmluZ0ZvclZpcwogICAgIFJl
ZlB0cjxSYW5nZT4gcmFuZ2UgPSBtYWtlUmFuZ2UodmlzaWJsZVBvc2l0aW9uUmFuZ2Uuc3RhcnQs
IHZpc2libGVQb3NpdGlvblJhbmdlLmVuZCk7CiAgICAgZm9yIChUZXh0SXRlcmF0b3IgaXQocmFu
Z2UuZ2V0KCkpOyAhaXQuYXRFbmQoKTsgaXQuYWR2YW5jZSgpKSB7CiAgICAgICAgIC8vIG5vbi16
ZXJvIGxlbmd0aCBtZWFucyB0ZXh0dWFsIG5vZGUsIHplcm8gbGVuZ3RoIG1lYW5zIHJlcGxhY2Vk
IG5vZGUgKEFLQSAiYXR0YWNobWVudHMiIGluIEFYKQotICAgICAgICBpZiAoaXQubGVuZ3RoKCkg
IT0gMCkgeworICAgICAgICBpZiAoaXQubGVuZ3RoKCkpIHsKICAgICAgICAgICAgIC8vIEFkZCBh
IHRleHR1YWwgcmVwcmVzZW50YXRpb24gZm9yIGxpc3QgbWFya2VyIHRleHQKICAgICAgICAgICAg
IFN0cmluZyBsaXN0TWFya2VyVGV4dCA9IGxpc3RNYXJrZXJUZXh0Rm9yTm9kZUFuZFBvc2l0aW9u
KGl0Lm5vZGUoKSwgdmlzaWJsZVBvc2l0aW9uUmFuZ2Uuc3RhcnQpOwogICAgICAgICAgICAgaWYg
KCFsaXN0TWFya2VyVGV4dC5pc0VtcHR5KCkpCkBAIC00NTksOSArNDU5LDggQEAgU3RyaW5nIEFj
Y2Vzc2liaWxpdHlPYmplY3Q6OnN0cmluZ0ZvclZpcwogICAgICAgICAgICAgQVNTRVJUKG5vZGUg
PT0gaXQucmFuZ2UoKS0+ZW5kQ29udGFpbmVyKGV4Y2VwdGlvbikpOwogICAgICAgICAgICAgaW50
IG9mZnNldCA9IGl0LnJhbmdlKCktPnN0YXJ0T2Zmc2V0KGV4Y2VwdGlvbik7CiAKLSAgICAgICAg
ICAgIGlmIChyZXBsYWNlZE5vZGVOZWVkc0NoYXJhY3Rlcihub2RlLT5jaGlsZE5vZGUob2Zmc2V0
KSkpIHsKKyAgICAgICAgICAgIGlmIChyZXBsYWNlZE5vZGVOZWVkc0NoYXJhY3Rlcihub2RlLT5j
aGlsZE5vZGUob2Zmc2V0KSkpCiAgICAgICAgICAgICAgICAgcmVzdWx0VmVjdG9yLmFwcGVuZChv
YmplY3RSZXBsYWNlbWVudENoYXJhY3Rlcik7Ci0gICAgICAgICAgICB9CiAgICAgICAgIH0KICAg
ICB9CiAKQEAgLTQ3OCw5ICs0NzcsOSBAQCBpbnQgQWNjZXNzaWJpbGl0eU9iamVjdDo6bGVuZ3Ro
Rm9yVmlzaWJsCiAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IG1ha2VSYW5nZSh2aXNpYmxlUG9z
aXRpb25SYW5nZS5zdGFydCwgdmlzaWJsZVBvc2l0aW9uUmFuZ2UuZW5kKTsKICAgICBmb3IgKFRl
eHRJdGVyYXRvciBpdChyYW5nZS5nZXQoKSk7ICFpdC5hdEVuZCgpOyBpdC5hZHZhbmNlKCkpIHsK
ICAgICAgICAgLy8gbm9uLXplcm8gbGVuZ3RoIG1lYW5zIHRleHR1YWwgbm9kZSwgemVybyBsZW5n
dGggbWVhbnMgcmVwbGFjZWQgbm9kZSAoQUtBICJhdHRhY2htZW50cyIgaW4gQVgpCi0gICAgICAg
IGlmIChpdC5sZW5ndGgoKSAhPSAwKSB7CisgICAgICAgIGlmIChpdC5sZW5ndGgoKSkKICAgICAg
ICAgICAgIGxlbmd0aCArPSBpdC5sZW5ndGgoKTsKLSAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ZWxzZSB7CiAgICAgICAgICAgICAvLyBsb2NhdGUgdGhlIG5vZGUgYW5kIHN0YXJ0aW5nIG9mZnNl
dCBmb3IgdGhpcyByZXBsYWNlZCByYW5nZQogICAgICAgICAgICAgaW50IGV4Y2VwdGlvbiA9IDA7
CiAgICAgICAgICAgICBOb2RlKiBub2RlID0gaXQucmFuZ2UoKS0+c3RhcnRDb250YWluZXIoZXhj
ZXB0aW9uKTsKQEAgLTc2NiwyMCArNzY1LDIwIEBAIGNvbnN0IFN0cmluZyYgQWNjZXNzaWJpbGl0
eU9iamVjdDo6YWN0aW8KICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgbm9B
Y3Rpb24sICgpKTsKIAogICAgIHN3aXRjaCAocm9sZVZhbHVlKCkpIHsKLSAgICAgICAgY2FzZSBC
dXR0b25Sb2xlOgotICAgICAgICAgICAgcmV0dXJuIGJ1dHRvbkFjdGlvbjsKLSAgICAgICAgY2Fz
ZSBUZXh0RmllbGRSb2xlOgotICAgICAgICBjYXNlIFRleHRBcmVhUm9sZToKLSAgICAgICAgICAg
IHJldHVybiB0ZXh0RmllbGRBY3Rpb247Ci0gICAgICAgIGNhc2UgUmFkaW9CdXR0b25Sb2xlOgot
ICAgICAgICAgICAgcmV0dXJuIHJhZGlvQnV0dG9uQWN0aW9uOwotICAgICAgICBjYXNlIENoZWNr
Qm94Um9sZToKLSAgICAgICAgICAgIHJldHVybiBpc0NoZWNrZWQoKSA/IGNoZWNrZWRDaGVja0Jv
eEFjdGlvbiA6IHVuY2hlY2tlZENoZWNrQm94QWN0aW9uOwotICAgICAgICBjYXNlIExpbmtSb2xl
OgotICAgICAgICBjYXNlIFdlYkNvcmVMaW5rUm9sZToKLSAgICAgICAgICAgIHJldHVybiBsaW5r
QWN0aW9uOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIG5vQWN0aW9uOwor
ICAgIGNhc2UgQnV0dG9uUm9sZToKKyAgICAgICAgcmV0dXJuIGJ1dHRvbkFjdGlvbjsKKyAgICBj
YXNlIFRleHRGaWVsZFJvbGU6CisgICAgY2FzZSBUZXh0QXJlYVJvbGU6CisgICAgICAgIHJldHVy
biB0ZXh0RmllbGRBY3Rpb247CisgICAgY2FzZSBSYWRpb0J1dHRvblJvbGU6CisgICAgICAgIHJl
dHVybiByYWRpb0J1dHRvbkFjdGlvbjsKKyAgICBjYXNlIENoZWNrQm94Um9sZToKKyAgICAgICAg
cmV0dXJuIGlzQ2hlY2tlZCgpID8gY2hlY2tlZENoZWNrQm94QWN0aW9uIDogdW5jaGVja2VkQ2hl
Y2tCb3hBY3Rpb247CisgICAgY2FzZSBMaW5rUm9sZToKKyAgICBjYXNlIFdlYkNvcmVMaW5rUm9s
ZToKKyAgICAgICAgcmV0dXJuIGxpbmtBY3Rpb247CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0
dXJuIG5vQWN0aW9uOwogICAgIH0KIH0KICAKSW5kZXg6IFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlPYmplY3QuaAkocmV2aXNpb24gNTA0MDkpCisrKyBXZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMjgsNyAr
MjI4LDcgQEAgc3RydWN0IFBsYWluVGV4dFJhbmdlIHsKICAgICAgICAgLCBsZW5ndGgobCkKICAg
ICB7IH0KICAgICAKLSAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIHN0YXJ0ID09IDAg
JiYgbGVuZ3RoID09IDA7IH0KKyAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuICFzdGFy
dCAmJiAhbGVuZ3RoOyB9CiB9OwogCiBjbGFzcyBBY2Nlc3NpYmlsaXR5T2JqZWN0IDogcHVibGlj
IFJlZkNvdW50ZWQ8QWNjZXNzaWJpbGl0eU9iamVjdD4gewpAQCAtMjQwLDY3ICsyNDAsNjcgQEAg
cHVibGljOgogICAgICAgICAKICAgICB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0
eU9iamVjdD4gPiBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3I7CiAgICAgCi0gICAgdmlydHVh
bCBib29sIGlzQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9OwotICAgIHZpcnR1YWwgYm9vbCBpc0FuY2hvcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
OwotICAgIHZpcnR1YWwgYm9vbCBpc0F0dGFjaG1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNIZWFkaW5nKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH07
Ci0gICAgdmlydHVhbCBib29sIGlzTGluaygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9OwotICAg
IHZpcnR1YWwgYm9vbCBpc0ltYWdlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH07Ci0gICAgdmly
dHVhbCBib29sIGlzTmF0aXZlSW1hZ2UoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfTsKLSAgICB2
aXJ0dWFsIGJvb2wgaXNJbWFnZUJ1dHRvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9OwotICAg
IHZpcnR1YWwgYm9vbCBpc1Bhc3N3b3JkRmllbGQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfTsK
LSAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0Q29udHJvbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
OwotICAgIHZpcnR1YWwgYm9vbCBpc05hdGl2ZVRleHRDb250cm9sKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH07Ci0gICAgdmlydHVhbCBib29sIGlzV2ViQXJlYSgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9OwotICAgIHZpcnR1YWwgYm9vbCBpc0NoZWNrYm94T3JSYWRpbygpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9OwotICAgIHZpcnR1YWwgYm9vbCBpc0xpc3RCb3goKSBjb25zdCB7IHJldHVy
biByb2xlVmFsdWUoKSA9PSBMaXN0Qm94Um9sZTsgfTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0
dWFsIGJvb2wgaXNBbmNob3IoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwg
Ym9vbCBpc0F0dGFjaG1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwg
Ym9vbCBpc0hlYWRpbmcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9v
bCBpc0xpbmsoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0lt
YWdlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNOYXRpdmVJ
bWFnZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzSW1hZ2VC
dXR0b24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1Bhc3N3
b3JkRmllbGQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1Rl
eHRDb250cm9sKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNO
YXRpdmVUZXh0Q29udHJvbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBi
b29sIGlzV2ViQXJlYSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29s
IGlzQ2hlY2tib3hPclJhZGlvKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFs
IGJvb2wgaXNMaXN0Qm94KCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gTGlzdEJveFJv
bGU7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNNZWRpYVRpbWVsaW5lKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNNZW51UmVsYXRlZCgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzTWVudSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgdmlydHVhbCBib29sIGlzTWVudUJhcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgdmlydHVhbCBib29sIGlzTWVudUJ1dHRvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgdmlydHVhbCBib29sIGlzTWVudUl0ZW0oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQot
ICAgIHZpcnR1YWwgYm9vbCBpc0ZpbGVVcGxvYWRCdXR0b24oKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNGaWxlVXBsb2FkQnV0dG9uKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNJbnB1dEltYWdlKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNQcm9ncmVzc0luZGljYXRvcigpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9OwotICAgIHZpcnR1YWwgYm9vbCBpc1NsaWRlcigpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9OwotICAgIHZpcnR1YWwgYm9vbCBpc0NvbnRyb2woKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNMaXN0KCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH07Ci0gICAgdmlydHVhbCBib29sIGlzRGF0YVRhYmxlKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH07Ci0gICAgdmlydHVhbCBib29sIGlzVGFibGVSb3coKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNUYWJsZUNvbHVtbigpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9OwotICAgIHZpcnR1YWwgYm9vbCBpc1RhYmxlQ2VsbCgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9OwotICAgIHZpcnR1YWwgYm9vbCBpc0ZpZWxkc2V0KCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH07Ci0gICAgdmlydHVhbCBib29sIGlzR3JvdXAoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNQcm9ncmVzc0luZGljYXRvcigpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzU2xpZGVyKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNDb250cm9sKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNMaXN0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICB2aXJ0dWFsIGJvb2wgaXNEYXRhVGFibGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQor
ICAgIHZpcnR1YWwgYm9vbCBpc1RhYmxlUm93KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICB2aXJ0dWFsIGJvb2wgaXNUYWJsZUNvbHVtbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgdmlydHVhbCBib29sIGlzVGFibGVDZWxsKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICB2aXJ0dWFsIGJvb2wgaXNGaWVsZHNldCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
dmlydHVhbCBib29sIGlzR3JvdXAoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wg
aXNUYWJMaXN0KCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gVGFiTGlzdFJvbGU7IH0K
ICAgICBib29sIGlzVGFiSXRlbSgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IFRhYlJv
bGU7IH0KICAgICBib29sIGlzUmFkaW9Hcm91cCgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgp
ID09IFJhZGlvR3JvdXBSb2xlOyB9CiAgICAgCi0gICAgdmlydHVhbCBib29sIGlzQ2hlY2tlZCgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9OwotICAgIHZpcnR1YWwgYm9vbCBpc0VuYWJsZWQoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNTZWxlY3RlZCgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9OwotICAgIHZpcnR1YWwgYm9vbCBpc0ZvY3VzZWQoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNIb3ZlcmVkKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH07Ci0gICAgdmlydHVhbCBib29sIGlzSW5kZXRlcm1pbmF0ZSgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9OwotICAgIHZpcnR1YWwgYm9vbCBpc0xvYWRlZCgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9OwotICAgIHZpcnR1YWwgYm9vbCBpc011bHRpU2VsZWN0KCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH07Ci0gICAgdmlydHVhbCBib29sIGlzT2ZmU2NyZWVuKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH07Ci0gICAgdmlydHVhbCBib29sIGlzUHJlc3NlZCgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9OwotICAgIHZpcnR1YWwgYm9vbCBpc1JlYWRPbmx5KCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH07Ci0gICAgdmlydHVhbCBib29sIGlzVmlzaXRlZCgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9OwotICAgIHZpcnR1YWwgYm9vbCBpc1JlcXVpcmVkKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH07CisgICAgdmlydHVhbCBib29sIGlzQ2hlY2tlZCgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzU2VsZWN0ZWQoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0ZvY3VzZWQoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0hvdmVyZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQorICAgIHZpcnR1YWwgYm9vbCBpc0luZGV0ZXJtaW5hdGUoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0xvYWRlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgdmlydHVhbCBib29sIGlzTXVsdGlTZWxlY3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQorICAgIHZpcnR1YWwgYm9vbCBpc09mZlNjcmVlbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgdmlydHVhbCBib29sIGlzUHJlc3NlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgdmlydHVhbCBib29sIGlzUmVhZE9ubHkoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAg
IHZpcnR1YWwgYm9vbCBpc1Zpc2l0ZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZp
cnR1YWwgYm9vbCBpc1JlcXVpcmVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0
dWFsIGJvb2wgaXNMaW5rZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgdmlydHVh
bCBib29sIGNhblNldEZvY3VzQXR0cmlidXRlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH07Ci0g
ICAgdmlydHVhbCBib29sIGNhblNldFRleHRSYW5nZUF0dHJpYnV0ZXMoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfTsKLSAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0VmFsdWVBdHRyaWJ1dGUoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfTsKKyAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0Rm9jdXNBdHRyaWJ1
dGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBjYW5TZXRUZXh0
UmFuZ2VBdHRyaWJ1dGVzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgY2FuU2V0VmFsdWVBdHRyaWJ1dGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZp
cnR1YWwgYm9vbCBjYW5TZXRTZWxlY3RlZEF0dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgdmlydHVhbCBib29sIGNhblNldFNlbGVjdGVkQ2hpbGRyZW5BdHRyaWJ1dGUoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIAotICAgIHZpcnR1YWwgYm9vbCBoYXNJbnRWYWx1
ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9OworICAgIHZpcnR1YWwgYm9vbCBoYXNJbnRWYWx1
ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICBib29sIGFjY2Vzc2liaWxpdHlTaG91
bGRVc2VVbmlxdWVJZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH07Ci0gICAgdmlydHVhbCBib29s
IGFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdCAgeyByZXR1cm4gdHJ1ZTsgfTsKKyAgICBi
b29sIGFjY2Vzc2liaWxpdHlTaG91bGRVc2VVbmlxdWVJZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7
IH0KKyAgICB2aXJ0dWFsIGJvb2wgYWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0ICB7IHJl
dHVybiB0cnVlOyB9CiAKICAgICB2aXJ0dWFsIGludCBoZWFkaW5nTGV2ZWwoKSBjb25zdCB7IHJl
dHVybiAwOyB9CiAgICAgdmlydHVhbCBpbnQgaW50VmFsdWUoKSBjb25zdCB7IHJldHVybiAwOyB9
CkluZGV4OiBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3QuY3BwCShyZXZpc2lvbiA1MDQwOSkKKysrIFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsOCArMzAs
OCBAQAogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaCIKIAogI2luY2x1ZGUg
IkFYT2JqZWN0Q2FjaGUuaCIKLSNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5TGlzdEJveC5oIgogI2lu
Y2x1ZGUgIkFjY2Vzc2liaWxpdHlJbWFnZU1hcExpbmsuaCIKKyNpbmNsdWRlICJBY2Nlc3NpYmls
aXR5TGlzdEJveC5oIgogI2luY2x1ZGUgIkNoYXJhY3Rlck5hbWVzLmgiCiAjaW5jbHVkZSAiRXZl
bnROYW1lcy5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgpAQCAtMTY2LDcgKzE2Niw3IEBAIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXIKICAgICBpZiAoIW1fcmVuZGVy
ZXIpCiAgICAgICAgIHJldHVybiAwOwogICAgIAotICAgIFJlbmRlck9iamVjdCAqcGFyZW50ID0g
bV9yZW5kZXJlci0+cGFyZW50KCk7CisgICAgUmVuZGVyT2JqZWN0KiBwYXJlbnQgPSBtX3JlbmRl
cmVyLT5wYXJlbnQoKTsKICAgICBpZiAoIXBhcmVudCkKICAgICAgICAgcmV0dXJuIDA7CiAKQEAg
LTE3OCw3ICsxNzgsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVy
CiAgICAgaWYgKCFtX3JlbmRlcmVyKQogICAgICAgICByZXR1cm4gMDsKICAgICAKLSAgICBSZW5k
ZXJPYmplY3QgKnBhcmVudCA9IG1fcmVuZGVyZXItPnBhcmVudCgpOworICAgIFJlbmRlck9iamVj
dCogcGFyZW50ID0gbV9yZW5kZXJlci0+cGFyZW50KCk7CiAgICAgaWYgKCFwYXJlbnQpCiAgICAg
ICAgIHJldHVybiAwOwogICAgIApAQCAtMjk2LDEwICsyOTYsMTAgQEAgYm9vbCBBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0Ojppc1NsaWRlcgogYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
Ojppc01lbnVSZWxhdGVkKCkgY29uc3QKIHsKICAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlID0g
cm9sZVZhbHVlKCk7Ci0gICAgcmV0dXJuICByb2xlID09IE1lbnVSb2xlIHx8Ci0gICAgICAgICAg
ICByb2xlID09IE1lbnVCYXJSb2xlIHx8Ci0gICAgICAgICAgICByb2xlID09IE1lbnVCdXR0b25S
b2xlIHx8Ci0gICAgICAgICAgICByb2xlID09IE1lbnVJdGVtUm9sZTsKKyAgICByZXR1cm4gIHJv
bGUgPT0gTWVudVJvbGUgCisgICAgICAgICAgICB8fCByb2xlID09IE1lbnVCYXJSb2xlCisgICAg
ICAgICAgICB8fCByb2xlID09IE1lbnVCdXR0b25Sb2xlCisgICAgICAgICAgICB8fCByb2xlID09
IE1lbnVJdGVtUm9sZTsKIH0gICAgCiAKIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
aXNNZW51KCkgY29uc3QKQEAgLTEwNjEsNyArMTA2MSw3IEBAIFN0cmluZyBBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0OjphY2Nlc3MKICAgICB9CiAgICAgCiAgICAgaWYgKGlzV2ViQXJlYSgpKSB7
Ci0gICAgICAgIERvY3VtZW50ICpkb2N1bWVudCA9IG1fcmVuZGVyZXItPmRvY3VtZW50KCk7Cisg
ICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1fcmVuZGVyZXItPmRvY3VtZW50KCk7CiAgICAg
ICAgIE5vZGUqIG93bmVyID0gZG9jdW1lbnQtPm93bmVyRWxlbWVudCgpOwogICAgICAgICBpZiAo
b3duZXIpIHsKICAgICAgICAgICAgIGlmIChvd25lci0+aGFzVGFnTmFtZShmcmFtZVRhZykgfHwg
b3duZXItPmhhc1RhZ05hbWUoaWZyYW1lVGFnKSkgewpAQCAtMTMyOSw4ICsxMzI5LDggQEAgYm9v
bCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphY2Nlc3NpYgogICAgIC8vIE5PVEU6IEJScyBh
bHdheXMgaGF2ZSB0ZXh0IGJveGVzIG5vdywgc28gdGhlIHRleHQgYm94IGNoZWNrIGhlcmUgY2Fu
IGJlIHJlbW92ZWQKICAgICBpZiAobV9yZW5kZXJlci0+aXNUZXh0KCkpIHsKICAgICAgICAgLy8g
c3RhdGljIHRleHQgYmVuZWF0aCBNZW51SXRlbXMgYW5kIE1lbnVCdXR0b25zIGFyZSBqdXN0IHJl
cG9ydGVkIGFsb25nIHdpdGggdGhlIG1lbnUgaXRlbSwgc28gaXQncyBpZ25vcmVkIG9uIGFuIGlu
ZGl2aWR1YWwgbGV2ZWwKLSAgICAgICAgaWYgKHBhcmVudE9iamVjdFVuaWdub3JlZCgpLT5hcmlh
Um9sZUF0dHJpYnV0ZSgpID09IE1lbnVJdGVtUm9sZSB8fAotICAgICAgICAgICAgcGFyZW50T2Jq
ZWN0VW5pZ25vcmVkKCktPmFyaWFSb2xlQXR0cmlidXRlKCkgPT0gTWVudUJ1dHRvblJvbGUpCisg
ICAgICAgIGlmIChwYXJlbnRPYmplY3RVbmlnbm9yZWQoKS0+YXJpYVJvbGVBdHRyaWJ1dGUoKSA9
PSBNZW51SXRlbVJvbGUKKyAgICAgICAgICAgIHx8IHBhcmVudE9iamVjdFVuaWdub3JlZCgpLT5h
cmlhUm9sZUF0dHJpYnV0ZSgpID09IE1lbnVCdXR0b25Sb2xlKQogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgIFJlbmRlclRleHQqIHJlbmRlclRleHQgPSB0b1JlbmRlclRleHQobV9y
ZW5kZXJlcik7CiAgICAgICAgIGlmIChtX3JlbmRlcmVyLT5pc0JSKCkgfHwgIXJlbmRlclRleHQt
PmZpcnN0VGV4dEJveCgpKQpAQCAtMTY1NSw4ICsxNjU1LDggQEAgYm9vbCBBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0Ojppc0ZvY3VzZQogICAgIAogICAgIC8vIEEgd2ViIGFyZWEgaXMgcmVwcmVz
ZW50ZWQgYnkgdGhlIERvY3VtZW50IG5vZGUgaW4gdGhlIERPTSB0cmVlLCB3aGljaCBpc24ndCBm
b2N1c2FibGUuCiAgICAgLy8gQ2hlY2sgaW5zdGVhZCBpZiB0aGUgZnJhbWUncyBzZWxlY3Rpb24g
Y29udHJvbGxlciBpcyBmb2N1c2VkCi0gICAgaWYgKGZvY3VzZWROb2RlID09IG1fcmVuZGVyZXIt
Pm5vZGUoKSB8fCAKLSAgICAgICAgKHJvbGVWYWx1ZSgpID09IFdlYkFyZWFSb2xlICYmIGRvY3Vt
ZW50LT5mcmFtZSgpLT5zZWxlY3Rpb24oKS0+aXNGb2N1c2VkQW5kQWN0aXZlKCkpKQorICAgIGlm
IChmb2N1c2VkTm9kZSA9PSBtX3JlbmRlcmVyLT5ub2RlKCkKKyAgICAgICAgfHwgKHJvbGVWYWx1
ZSgpID09IFdlYkFyZWFSb2xlICYmIGRvY3VtZW50LT5mcmFtZSgpLT5zZWxlY3Rpb24oKS0+aXNG
b2N1c2VkQW5kQWN0aXZlKCkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICByZXR1
cm4gZmFsc2U7CkBAIC0xODUyLDcgKzE4NTIsNyBAQCBWaXNpYmxlUG9zaXRpb25SYW5nZSBBY2Nl
c3NpYmlsaXR5UmVuZGVyCiAKIFZpc2libGVQb3NpdGlvblJhbmdlIEFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3Q6OnZpc2libGVQb3NpdGlvblJhbmdlRm9yTGluZSh1bnNpZ25lZCBsaW5lQ291bnQp
IGNvbnN0CiB7Ci0gICAgaWYgKGxpbmVDb3VudCA9PSAwIHx8ICFtX3JlbmRlcmVyKQorICAgIGlm
ICghbGluZUNvdW50IHx8ICFtX3JlbmRlcmVyKQogICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0
aW9uUmFuZ2UoKTsKICAgICAKICAgICAvLyBpdGVyYXRlIG92ZXIgdGhlIGxpbmVzCkBAIC0xODYw
LDcgKzE4NjAsNyBAQCBWaXNpYmxlUG9zaXRpb25SYW5nZSBBY2Nlc3NpYmlsaXR5UmVuZGVyCiAg
ICAgLy8gbGFzdCBvZmZzZXQgb2YgdGhlIGxhc3QgbGluZQogICAgIFZpc2libGVQb3NpdGlvbiB2
aXNpYmxlUG9zID0gbV9yZW5kZXJlci0+ZG9jdW1lbnQoKS0+cmVuZGVyZXIoKS0+cG9zaXRpb25G
b3JDb29yZGluYXRlcygwLCAwKTsKICAgICBWaXNpYmxlUG9zaXRpb24gc2F2ZWRWaXNpYmxlUG9z
OwotICAgIHdoaWxlICgtLWxpbmVDb3VudCAhPSAwKSB7CisgICAgd2hpbGUgKC0tbGluZUNvdW50
KSB7CiAgICAgICAgIHNhdmVkVmlzaWJsZVBvcyA9IHZpc2libGVQb3M7CiAgICAgICAgIHZpc2li
bGVQb3MgPSBuZXh0TGluZVBvc2l0aW9uKHZpc2libGVQb3MsIDApOwogICAgICAgICBpZiAodmlz
aWJsZVBvcy5pc051bGwoKSB8fCB2aXNpYmxlUG9zID09IHNhdmVkVmlzaWJsZVBvcykKQEAgLTE5
NzUsOSArMTk3NSw4IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c2V0U2VsZWMK
ICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIC8vIG1ha2Ugc2VsZWN0aW9uIGFuZCB0ZWxsIHRo
ZSBkb2N1bWVudCB0byB1c2UgaXQuIGlmIGl0J3MgemVybyBsZW5ndGgsIHRoZW4gbW92ZSB0byB0
aGF0IHBvc2l0aW9uCi0gICAgaWYgKHJhbmdlLnN0YXJ0ID09IHJhbmdlLmVuZCkgeworICAgIGlm
IChyYW5nZS5zdGFydCA9PSByYW5nZS5lbmQpCiAgICAgICAgIG1fcmVuZGVyZXItPmRvY3VtZW50
KCktPmZyYW1lKCktPnNlbGVjdGlvbigpLT5tb3ZlVG8ocmFuZ2Uuc3RhcnQsIHRydWUpOwotICAg
IH0KICAgICBlbHNlIHsKICAgICAgICAgVmlzaWJsZVNlbGVjdGlvbiBuZXdTZWxlY3Rpb24gPSBW
aXNpYmxlU2VsZWN0aW9uKHJhbmdlLnN0YXJ0LCByYW5nZS5lbmQpOwogICAgICAgICBtX3JlbmRl
cmVyLT5kb2N1bWVudCgpLT5mcmFtZSgpLT5zZWxlY3Rpb24oKS0+c2V0U2VsZWN0aW9uKG5ld1Nl
bGVjdGlvbik7CkBAIC0yMDczLDcgKzIwNzIsNyBAQCBQbGFpblRleHRSYW5nZSBBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0CiAgICAgLy8gaXRlcmF0ZSB0byB0aGUgc3BlY2lmaWVkIGxpbmUKICAg
ICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvcyA9IHZpc2libGVQb3NpdGlvbkZvckluZGV4KDAp
OwogICAgIFZpc2libGVQb3NpdGlvbiBzYXZlZFZpc2libGVQb3M7Ci0gICAgZm9yICh1bnNpZ25l
ZCBsaW5lQ291bnQgPSBsaW5lTnVtYmVyOyBsaW5lQ291bnQgIT0gMDsgbGluZUNvdW50IC09IDEp
IHsKKyAgICBmb3IgKHVuc2lnbmVkIGxpbmVDb3VudCA9IGxpbmVOdW1iZXI7IGxpbmVDb3VudDsg
bGluZUNvdW50IC09IDEpIHsKICAgICAgICAgc2F2ZWRWaXNpYmxlUG9zID0gdmlzaWJsZVBvczsK
ICAgICAgICAgdmlzaWJsZVBvcyA9IG5leHRMaW5lUG9zaXRpb24odmlzaWJsZVBvcywgMCk7CiAg
ICAgICAgIGlmICh2aXNpYmxlUG9zLmlzTnVsbCgpIHx8IHZpc2libGVQb3MgPT0gc2F2ZWRWaXNp
YmxlUG9zKQpAQCAtMjEyOCw4ICsyMTI3LDggQEAgU3RyaW5nIEFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3Q6OmRvQVhTdAogICAgIGlmIChpc1Bhc3N3b3JkRmllbGQoKSkKICAgICAgICAgcmV0dXJu
IFN0cmluZygpOwogICAgIAotICAgIGlmIChyYW5nZS5sZW5ndGggPT0gMCkKLSAgICAgICAgcmV0
dXJuICIiOworICAgIGlmICghcmFuZ2UubGVuZ3RoKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7
CiAgICAgCiAgICAgaWYgKCFpc1RleHRDb250cm9sKCkpCiAgICAgICAgIHJldHVybiBTdHJpbmco
KTsKQEAgLTIxNTYsNyArMjE1NSw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxp
dHlSZW5kZXIKICAgICBpZiAoIWFyZWEpCiAgICAgICAgIHJldHVybiAwOwogICAgIAotICAgIEhU
TUxNYXBFbGVtZW50ICptYXAgPSBzdGF0aWNfY2FzdDxIVE1MTWFwRWxlbWVudCo+KGFyZWEtPnBh
cmVudCgpKTsKKyAgICBIVE1MTWFwRWxlbWVudCogbWFwID0gc3RhdGljX2Nhc3Q8SFRNTE1hcEVs
ZW1lbnQqPihhcmVhLT5wYXJlbnQoKSk7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50
ID0gYWNjZXNzaWJpbGl0eVBhcmVudEZvckltYWdlTWFwKG1hcCk7CiAgICAgaWYgKCFwYXJlbnQp
CiAgICAgICAgIHJldHVybiAwOwpAQCAtMjQxMCwxNCArMjQwOSwxNCBAQCBBY2Nlc3NpYmlsaXR5
Um9sZSBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqCiAgICAgaWYgKHJvbGUpCiAgICAgICAgIHJldHVy
biByb2xlOwogICAgIC8vIHNlbGVjdHMgYW5kIGxpc3Rib3hlcyBib3RoIGhhdmUgb3B0aW9ucyBh
cyBjaGlsZCByb2xlcywgYnV0IHRoZXkgbWFwIHRvIGRpZmZlcmVudCByb2xlcyB3aXRoaW4gV2Vi
Q29yZQotICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShhcmlhUm9sZSwib3B0aW9uIikpIHsKKyAg
ICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYXJpYVJvbGUsICJvcHRpb24iKSkgewogICAgICAgICBp
ZiAocGFyZW50T2JqZWN0VW5pZ25vcmVkKCktPmFyaWFSb2xlQXR0cmlidXRlKCkgPT0gTWVudVJv
bGUpCiAgICAgICAgICAgICByZXR1cm4gTWVudUl0ZW1Sb2xlOwogICAgICAgICBpZiAocGFyZW50
T2JqZWN0VW5pZ25vcmVkKCktPmFyaWFSb2xlQXR0cmlidXRlKCkgPT0gTGlzdEJveFJvbGUpCiAg
ICAgICAgICAgICByZXR1cm4gTGlzdEJveE9wdGlvblJvbGU7CiAgICAgfQogICAgIC8vIGFuIGFy
aWEgIm1lbnVpdGVtIiBtYXkgbWFwIHRvIE1lbnVCdXR0b24gb3IgTWVudUl0ZW0gZGVwZW5kaW5n
IG9uIGl0cyBwYXJlbnQKLSAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYXJpYVJvbGUsIm1lbnVp
dGVtIikpIHsKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYXJpYVJvbGUsICJtZW51aXRlbSIp
KSB7CiAgICAgICAgIGlmIChwYXJlbnRPYmplY3RVbmlnbm9yZWQoKS0+YXJpYVJvbGVBdHRyaWJ1
dGUoKSA9PSBHcm91cFJvbGUpCiAgICAgICAgICAgICByZXR1cm4gTWVudUJ1dHRvblJvbGU7CiAg
ICAgICAgIGlmIChwYXJlbnRPYmplY3RVbmlnbm9yZWQoKS0+YXJpYVJvbGVBdHRyaWJ1dGUoKSA9
PSBNZW51Um9sZSkKQEAgLTI0OTYsNyArMjQ5NSw3IEBAIEFjY2Vzc2liaWxpdHlSb2xlIEFjY2Vz
c2liaWxpdHlSZW5kZXJPYmoKICAgICBpZiAobV9yZW5kZXJlci0+aXNNZW51TGlzdCgpKQogICAg
ICAgICByZXR1cm4gUG9wVXBCdXR0b25Sb2xlOwogICAgIAotICAgIGlmIChoZWFkaW5nTGV2ZWwo
KSAhPSAwKQorICAgIGlmIChoZWFkaW5nTGV2ZWwoKSkKICAgICAgICAgcmV0dXJuIEhlYWRpbmdS
b2xlOwogICAgIAogICAgIGlmIChub2RlICYmIG5vZGUtPmhhc1RhZ05hbWUoZGRUYWcpKQpAQCAt
MjUxOSw3ICsyNTE4LDggQEAgYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc1ByZXNl
bgogICAgIC8vIFdhbGsgdGhlIHBhcmVudCBjaGFpbiBsb29raW5nIGZvciBhIHBhcmVudCB0aGF0
IGhhcyBwcmVzZW50YXRpb25hbCBjaGlsZHJlbgogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBh
cmVudDsKICAgICBmb3IgKHBhcmVudCA9IHBhcmVudE9iamVjdCgpOyBwYXJlbnQgJiYgIXBhcmVu
dC0+YXJpYVJvbGVIYXNQcmVzZW50YXRpb25hbENoaWxkcmVuKCk7IHBhcmVudCA9IHBhcmVudC0+
cGFyZW50T2JqZWN0KCkpCi0gICAgICAgIDsKKyAgICB7IH0KKyAgICAKICAgICByZXR1cm4gcGFy
ZW50OwogfQogICAgIApAQCAtMjU1MiwxOCArMjU1MiwxOCBAQCBib29sIEFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3Q6OmNhblNldEZvCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHN3aXRj
aCAocm9sZVZhbHVlKCkpIHsKLSAgICAgICAgY2FzZSBXZWJDb3JlTGlua1JvbGU6Ci0gICAgICAg
IGNhc2UgSW1hZ2VNYXBMaW5rUm9sZToKLSAgICAgICAgY2FzZSBUZXh0RmllbGRSb2xlOgotICAg
ICAgICBjYXNlIFRleHRBcmVhUm9sZToKLSAgICAgICAgY2FzZSBCdXR0b25Sb2xlOgotICAgICAg
ICBjYXNlIFBvcFVwQnV0dG9uUm9sZToKLSAgICAgICAgY2FzZSBDaGVja0JveFJvbGU6Ci0gICAg
ICAgIGNhc2UgUmFkaW9CdXR0b25Sb2xlOgotICAgICAgICBjYXNlIFNsaWRlclJvbGU6Ci0gICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBjYXNlIFdlYkNvcmVMaW5rUm9sZToKKyAgICBjYXNlIEltYWdlTWFwTGlu
a1JvbGU6CisgICAgY2FzZSBUZXh0RmllbGRSb2xlOgorICAgIGNhc2UgVGV4dEFyZWFSb2xlOgor
ICAgIGNhc2UgQnV0dG9uUm9sZToKKyAgICBjYXNlIFBvcFVwQnV0dG9uUm9sZToKKyAgICBjYXNl
IENoZWNrQm94Um9sZToKKyAgICBjYXNlIFJhZGlvQnV0dG9uUm9sZToKKyAgICBjYXNlIFNsaWRl
clJvbGU6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiB9CiAKQEAgLTI2MDksMTcgKzI2MDksMTcgQEAgYm9vbCBBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0OjpjYW5IYXZlQwogICAgIAogICAgIC8vIEVsZW1lbnRzIHRoYXQg
c2hvdWxkIG5vdCBoYXZlIGNoaWxkcmVuCiAgICAgc3dpdGNoIChyb2xlVmFsdWUoKSkgewotICAg
ICAgICBjYXNlIEltYWdlUm9sZToKLSAgICAgICAgY2FzZSBCdXR0b25Sb2xlOgotICAgICAgICBj
YXNlIFBvcFVwQnV0dG9uUm9sZToKLSAgICAgICAgY2FzZSBDaGVja0JveFJvbGU6Ci0gICAgICAg
IGNhc2UgUmFkaW9CdXR0b25Sb2xlOgotICAgICAgICBjYXNlIFRhYlJvbGU6Ci0gICAgICAgIGNh
c2UgU3RhdGljVGV4dFJvbGU6Ci0gICAgICAgIGNhc2UgTGlzdEJveE9wdGlvblJvbGU6Ci0gICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICBjYXNlIEltYWdlUm9sZToKKyAgICBjYXNlIEJ1dHRvblJvbGU6CisgICAg
Y2FzZSBQb3BVcEJ1dHRvblJvbGU6CisgICAgY2FzZSBDaGVja0JveFJvbGU6CisgICAgY2FzZSBS
YWRpb0J1dHRvblJvbGU6CisgICAgY2FzZSBUYWJSb2xlOgorICAgIGNhc2UgU3RhdGljVGV4dFJv
bGU6CisgICAgY2FzZSBMaXN0Qm94T3B0aW9uUm9sZToKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIH0KIApAQCAtMjc3NSwy
MCArMjc3NSwyMCBAQCBjb25zdCBTdHJpbmcmIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6CiAg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIG5vQWN0aW9uLCAoKSk7CiAgICAg
CiAgICAgc3dpdGNoIChyb2xlVmFsdWUoKSkgewotICAgICAgICBjYXNlIEJ1dHRvblJvbGU6Ci0g
ICAgICAgICAgICByZXR1cm4gYnV0dG9uQWN0aW9uOwotICAgICAgICBjYXNlIFRleHRGaWVsZFJv
bGU6Ci0gICAgICAgIGNhc2UgVGV4dEFyZWFSb2xlOgotICAgICAgICAgICAgcmV0dXJuIHRleHRG
aWVsZEFjdGlvbjsKLSAgICAgICAgY2FzZSBSYWRpb0J1dHRvblJvbGU6Ci0gICAgICAgICAgICBy
ZXR1cm4gcmFkaW9CdXR0b25BY3Rpb247Ci0gICAgICAgIGNhc2UgQ2hlY2tCb3hSb2xlOgotICAg
ICAgICAgICAgcmV0dXJuIGlzQ2hlY2tlZCgpID8gY2hlY2tlZENoZWNrQm94QWN0aW9uIDogdW5j
aGVja2VkQ2hlY2tCb3hBY3Rpb247Ci0gICAgICAgIGNhc2UgTGlua1JvbGU6Ci0gICAgICAgIGNh
c2UgV2ViQ29yZUxpbmtSb2xlOgotICAgICAgICAgICAgcmV0dXJuIGxpbmtBY3Rpb247Ci0gICAg
ICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gbm9BY3Rpb247CisgICAgY2FzZSBCdXR0
b25Sb2xlOgorICAgICAgICByZXR1cm4gYnV0dG9uQWN0aW9uOworICAgIGNhc2UgVGV4dEZpZWxk
Um9sZToKKyAgICBjYXNlIFRleHRBcmVhUm9sZToKKyAgICAgICAgcmV0dXJuIHRleHRGaWVsZEFj
dGlvbjsKKyAgICBjYXNlIFJhZGlvQnV0dG9uUm9sZToKKyAgICAgICAgcmV0dXJuIHJhZGlvQnV0
dG9uQWN0aW9uOworICAgIGNhc2UgQ2hlY2tCb3hSb2xlOgorICAgICAgICByZXR1cm4gaXNDaGVj
a2VkKCkgPyBjaGVja2VkQ2hlY2tCb3hBY3Rpb24gOiB1bmNoZWNrZWRDaGVja0JveEFjdGlvbjsK
KyAgICBjYXNlIExpbmtSb2xlOgorICAgIGNhc2UgV2ViQ29yZUxpbmtSb2xlOgorICAgICAgICBy
ZXR1cm4gbGlua0FjdGlvbjsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gbm9BY3Rpb247
CiAgICAgfQogfQogICAgICAKQEAgLTI4NDcsOSArMjg0Nyw5IEBAIHN0YXRpYyBib29sIHNob3Vs
ZFJldHVyblRhZ05hbWVBc1JvbGVGb3IKICAgICAvLyBTZWUgImRvY3VtZW50IHN0cnVjdHVyZSIs
CiAgICAgLy8gaHR0cHM6Ly93aWtpLm1vemlsbGEub3JnL0FjY2Vzc2liaWxpdHkvQVQtV2luZG93
cy1BUEkKICAgICAvLyBGSVhNRTogQWRkIHRoZSBvdGhlciB0YWcgbmFtZXMgdGhhdCBzaG91bGQg
YmUgcmV0dXJuZWQgYXMgdGhlIHJvbGUuCi0gICAgcmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFtZSho
MVRhZykgfHwgZWxlbWVudC5oYXNUYWdOYW1lKGgyVGFnKSB8fAotICAgICAgICBlbGVtZW50Lmhh
c1RhZ05hbWUoaDNUYWcpIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShoNFRhZykgfHwKLSAgICAgICAg
ZWxlbWVudC5oYXNUYWdOYW1lKGg1VGFnKSB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoaDZUYWcpOwor
ICAgIHJldHVybiBlbGVtZW50Lmhhc1RhZ05hbWUoaDFUYWcpIHx8IGVsZW1lbnQuaGFzVGFnTmFt
ZShoMlRhZykgCisgICAgICAgIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShoM1RhZykgfHwgZWxlbWVu
dC5oYXNUYWdOYW1lKGg0VGFnKQorICAgICAgICB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoaDVUYWcp
IHx8IGVsZW1lbnQuaGFzVGFnTmFtZShoNlRhZyk7CiB9CiAKIFN0cmluZyBBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0OjpzdHJpbmdSb2xlRm9yTVNBQSgpIGNvbnN0CkluZGV4OiBXZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgJKHJldmlzaW9u
IDUwNDA5KQorKysgV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuaAkod29ya2luZyBjb3B5KQpAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdD4gY3JlYXRlKFJlbmRlck9iamVj
dCopOwogICAgIHZpcnR1YWwgfkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QoKTsKICAgICAKLSAg
ICBib29sIGlzQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7
IH07CisgICAgYm9vbCBpc0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QoKSBjb25zdCB7IHJldHVy
biB0cnVlOyB9CiAgICAgCiAgICAgdmlydHVhbCBib29sIGlzQW5jaG9yKCkgY29uc3Q7CiAgICAg
dmlydHVhbCBib29sIGlzQXR0YWNobWVudCgpIGNvbnN0OwpJbmRleDogV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmNwcAkocmV2aXNpb24gNTA0MDgpCisrKyBX
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTY4LDE4ICs2OCwxOCBAQCBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb24gQWNjZXNzaWJp
bGl0eVNsCiAgICAgCiAgICAgQ29udHJvbFBhcnQgc3R5bGVBcHBlYXJhbmNlID0gc3R5bGUtPmFw
cGVhcmFuY2UoKTsKICAgICBzd2l0Y2ggKHN0eWxlQXBwZWFyYW5jZSkgewotICAgICAgICBjYXNl
IFNsaWRlclRodW1iSG9yaXpvbnRhbFBhcnQ6Ci0gICAgICAgIGNhc2UgU2xpZGVySG9yaXpvbnRh
bFBhcnQ6Ci0gICAgICAgIGNhc2UgTWVkaWFTbGlkZXJQYXJ0OgotICAgICAgICAgICAgcmV0dXJu
IEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbkhvcml6b250YWw7CisgICAgY2FzZSBTbGlkZXJUaHVt
Ykhvcml6b250YWxQYXJ0OgorICAgIGNhc2UgU2xpZGVySG9yaXpvbnRhbFBhcnQ6CisgICAgY2Fz
ZSBNZWRpYVNsaWRlclBhcnQ6CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T3JpZW50YXRp
b25Ib3Jpem9udGFsOworICAgIAorICAgIGNhc2UgU2xpZGVyVGh1bWJWZXJ0aWNhbFBhcnQ6IAor
ICAgIGNhc2UgU2xpZGVyVmVydGljYWxQYXJ0OgorICAgIGNhc2UgTWVkaWFWb2x1bWVTbGlkZXJQ
YXJ0OgorICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uVmVydGljYWw7CiAg
ICAgICAgIAotICAgICAgICBjYXNlIFNsaWRlclRodW1iVmVydGljYWxQYXJ0OiAKLSAgICAgICAg
Y2FzZSBTbGlkZXJWZXJ0aWNhbFBhcnQ6Ci0gICAgICAgIGNhc2UgTWVkaWFWb2x1bWVTbGlkZXJQ
YXJ0OgotICAgICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvblZlcnRpY2Fs
OwotICAgICAgICAgICAgCi0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gQWNj
ZXNzaWJpbGl0eU9yaWVudGF0aW9uSG9yaXpvbnRhbDsKKyAgICBkZWZhdWx0OgorICAgICAgICBy
ZXR1cm4gQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uSG9yaXpvbnRhbDsKICAgICB9CiB9CiAgICAg
CkluZGV4OiBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmgJKHJl
dmlzaW9uIDUwNDA4KQorKysgV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlk
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNTggKzMzLDU4IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotICAgIGNsYXNzIEhUTUxJbnB1dEVsZW1lbnQ7CitjbGFzcyBIVE1MSW5wdXRFbGVt
ZW50OwogCi0gICAgY2xhc3MgQWNjZXNzaWJpbGl0eVNsaWRlciA6IHB1YmxpYyBBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0IHsKLSAgICAgICAgCi0gICAgcHVibGljOgotICAgICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5U2xpZGVyPiBjcmVhdGUoUmVuZGVyT2JqZWN0Kik7Ci0g
ICAgICAgIHZpcnR1YWwgfkFjY2Vzc2liaWxpdHlTbGlkZXIoKSB7IH0KK2NsYXNzIEFjY2Vzc2li
aWxpdHlTbGlkZXIgOiBwdWJsaWMgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCB7CisgICAgCitw
dWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVNsaWRlcj4gY3JlYXRl
KFJlbmRlck9iamVjdCopOworICAgIHZpcnR1YWwgfkFjY2Vzc2liaWxpdHlTbGlkZXIoKSB7IH0K
IAotICAgICAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IHsg
cmV0dXJuIFNsaWRlclJvbGU7IH0KLSAgICAgICAgdmlydHVhbCBib29sIGFjY2Vzc2liaWxpdHlJ
c0lnbm9yZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgQWNjZXNzaWJp
bGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gU2xpZGVyUm9sZTsgfQorICAgIHZp
cnR1YWwgYm9vbCBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KIAotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTbGlkZXIoKSBjb25zdCB7IHJldHVybiB0cnVl
OyB9CisgICAgdmlydHVhbCBib29sIGlzU2xpZGVyKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQog
Ci0gICAgICAgIHZpcnR1YWwgY29uc3QgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBjaGls
ZHJlbigpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGRyZW4oKTsKKyAgICB2aXJ0dWFs
IGNvbnN0IEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgY2hpbGRyZW4oKTsKKyAgICB2aXJ0
dWFsIHZvaWQgYWRkQ2hpbGRyZW4oKTsKIAotICAgICAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0VmFs
dWVBdHRyaWJ1dGUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9OwotICAgICAgICBjb25zdCBBdG9t
aWNTdHJpbmcmIGdldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGUpIGNv
bnN0OworICAgIHZpcnR1YWwgYm9vbCBjYW5TZXRWYWx1ZUF0dHJpYnV0ZSgpIGNvbnN0IHsgcmV0
dXJuIHRydWU7IH0KKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIGdldEF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyaWJ1dGUpIGNvbnN0OwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBz
ZXRWYWx1ZShjb25zdCBTdHJpbmcmKTsKLSAgICAgICAgdmlydHVhbCBmbG9hdCB2YWx1ZUZvclJh
bmdlKCkgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgZmxvYXQgbWF4VmFsdWVGb3JSYW5nZSgpIGNv
bnN0OwotICAgICAgICB2aXJ0dWFsIGZsb2F0IG1pblZhbHVlRm9yUmFuZ2UoKSBjb25zdDsKLSAg
ICAgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb24gb3JpZW50YXRpb24oKSBjb25z
dDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWUoY29uc3QgU3RyaW5nJik7CisgICAgdmlydHVh
bCBmbG9hdCB2YWx1ZUZvclJhbmdlKCkgY29uc3Q7CisgICAgdmlydHVhbCBmbG9hdCBtYXhWYWx1
ZUZvclJhbmdlKCkgY29uc3Q7CisgICAgdmlydHVhbCBmbG9hdCBtaW5WYWx1ZUZvclJhbmdlKCkg
Y29uc3Q7CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb24gb3JpZW50YXRpb24o
KSBjb25zdDsKIAotICAgIHByb3RlY3RlZDoKLSAgICAgICAgQWNjZXNzaWJpbGl0eVNsaWRlcihS
ZW5kZXJPYmplY3QqKTsKK3Byb3RlY3RlZDoKKyAgICBBY2Nlc3NpYmlsaXR5U2xpZGVyKFJlbmRl
ck9iamVjdCopOwogCi0gICAgcHJpdmF0ZToKLSAgICAgICAgSFRNTElucHV0RWxlbWVudCogZWxl
bWVudCgpIGNvbnN0OwotICAgIH07Citwcml2YXRlOgorICAgIEhUTUxJbnB1dEVsZW1lbnQqIGVs
ZW1lbnQoKSBjb25zdDsKK307CiAKLSAgICBjbGFzcyBBY2Nlc3NpYmlsaXR5U2xpZGVyVGh1bWIg
OiBwdWJsaWMgQWNjZXNzaWJpbGl0eU9iamVjdCB7Ci0gICAgICAgIAotICAgIHB1YmxpYzoKLSAg
ICAgICAgc3RhdGljIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVNsaWRlclRodW1iPiBjcmVhdGUo
KTsKLSAgICAgICAgdmlydHVhbCB+QWNjZXNzaWJpbGl0eVNsaWRlclRodW1iKCkgeyB9CitjbGFz
cyBBY2Nlc3NpYmlsaXR5U2xpZGVyVGh1bWIgOiBwdWJsaWMgQWNjZXNzaWJpbGl0eU9iamVjdCB7
CisgICAgCitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVNsaWRl
clRodW1iPiBjcmVhdGUoKTsKKyAgICB2aXJ0dWFsIH5BY2Nlc3NpYmlsaXR5U2xpZGVyVGh1bWIo
KSB7IH0KIAotICAgICAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNv
bnN0IHsgcmV0dXJuIFNsaWRlclRodW1iUm9sZTsgfQotICAgICAgICB2aXJ0dWFsIGJvb2wgYWNj
ZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVh
bCBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCB7IHJldHVybiBTbGlkZXJUaHVt
YlJvbGU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgYWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICAgICAgdm9pZCBzZXRQYXJlbnRPYmplY3QoQWNjZXNz
aWJpbGl0eVNsaWRlciogc2xpZGVyKSB7IG1fcGFyZW50U2xpZGVyID0gc2xpZGVyOyB9Ci0gICAg
ICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50T2JqZWN0KCkgY29uc3QgeyBy
ZXR1cm4gbV9wYXJlbnRTbGlkZXI7IH0KKyAgICB2b2lkIHNldFBhcmVudE9iamVjdChBY2Nlc3Np
YmlsaXR5U2xpZGVyKiBzbGlkZXIpIHsgbV9wYXJlbnRTbGlkZXIgPSBzbGlkZXI7IH0KKyAgICB2
aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudE9iamVjdCgpIGNvbnN0IHsgcmV0dXJu
IG1fcGFyZW50U2xpZGVyOyB9CiAKLSAgICAgICAgdmlydHVhbCBJbnRTaXplIHNpemUoKSBjb25z
dDsKLSAgICAgICAgdmlydHVhbCBJbnRSZWN0IGVsZW1lbnRSZWN0KCkgY29uc3Q7CisgICAgdmly
dHVhbCBJbnRTaXplIHNpemUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIEludFJlY3QgZWxlbWVudFJl
Y3QoKSBjb25zdDsKIAotICAgIHByaXZhdGU6Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlTbGlkZXJU
aHVtYigpOworcHJpdmF0ZToKKyAgICBBY2Nlc3NpYmlsaXR5U2xpZGVyVGh1bWIoKTsKIAotICAg
ICAgICBBY2Nlc3NpYmlsaXR5U2xpZGVyKiBtX3BhcmVudFNsaWRlcjsKLSAgICB9OworICAgIEFj
Y2Vzc2liaWxpdHlTbGlkZXIqIG1fcGFyZW50U2xpZGVyOworfTsKIAogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRh
YmxlLmNwcAkocmV2aXNpb24gNTA0MDgpCisrKyBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksMTUgKzI5LDE1IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRhYmxlLmgiCiAKKyNpbmNs
dWRlICJBWE9iamVjdENhY2hlLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5o
IgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5oIgogI2luY2x1ZGUgIkFjY2Vz
c2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lci5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlU
YWJsZVJvdy5oIgotI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKICNpbmNsdWRlICJIVE1MTmFt
ZXMuaCIKLSNpbmNsdWRlICJIVE1MVGFibGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFRhYmxl
Q2FwdGlvbkVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MVGFibGVDZWxsRWxlbWVudC5oIgorI2lu
Y2x1ZGUgIkhUTUxUYWJsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKICNp
bmNsdWRlICJSZW5kZXJUYWJsZS5oIgogI2luY2x1ZGUgIlJlbmRlclRhYmxlQ2VsbC5oIgpAQCAt
MTQ5LDggKzE0OSw4IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVRhYmxlOjppc1RhYmxlRXhwb3NhYmwK
ICAgICAgICAgICAgIEhUTUxUYWJsZUNlbGxFbGVtZW50KiBjZWxsRWxlbWVudCA9IHN0YXRpY19j
YXN0PEhUTUxUYWJsZUNlbGxFbGVtZW50Kj4oY2VsbE5vZGUpOwogICAgICAgICAgICAgCiAgICAg
ICAgICAgICAvLyBpbiB0aGlzIGNhc2UsIHRoZSBkZXZlbG9wZXIgZXhwbGljaXRseSBhc3NpZ25l
ZCBhICJkYXRhIiB0YWJsZSBhdHRyaWJ1dGUKLSAgICAgICAgICAgIGlmICghY2VsbEVsZW1lbnQt
PmhlYWRlcnMoKS5pc0VtcHR5KCkgfHwgIWNlbGxFbGVtZW50LT5hYmJyKCkuaXNFbXB0eSgpIHx8
IAotICAgICAgICAgICAgICAgICFjZWxsRWxlbWVudC0+YXhpcygpLmlzRW1wdHkoKSB8fCAhY2Vs
bEVsZW1lbnQtPnNjb3BlKCkuaXNFbXB0eSgpKQorICAgICAgICAgICAgaWYgKCFjZWxsRWxlbWVu
dC0+aGVhZGVycygpLmlzRW1wdHkoKSB8fCAhY2VsbEVsZW1lbnQtPmFiYnIoKS5pc0VtcHR5KCkK
KyAgICAgICAgICAgICAgICB8fCAhY2VsbEVsZW1lbnQtPmF4aXMoKS5pc0VtcHR5KCkgfHwgIWNl
bGxFbGVtZW50LT5zY29wZSgpLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHJlbmRlclN0eWxlID0g
Y2VsbC0+c3R5bGUoKTsKQEAgLTE1OCwxNSArMTU4LDE1IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVRh
YmxlOjppc1RhYmxlRXhwb3NhYmwKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAg
ICAgICAgLy8gYSBjZWxsIG5lZWRzIHRvIGhhdmUgbWF0Y2hpbmcgYm9yZGVyZWQgc2lkZXMsIGJl
Zm9yZSBpdCBjYW4gYmUgY29uc2lkZXJlZCBhIGJvcmRlcmVkIGNlbGwuCi0gICAgICAgICAgICBp
ZiAoKGNlbGwtPmJvcmRlclRvcCgpID4gMCAmJiBjZWxsLT5ib3JkZXJCb3R0b20oKSA+IDApIHx8
Ci0gICAgICAgICAgICAgICAgKGNlbGwtPmJvcmRlckxlZnQoKSA+IDAgJiYgY2VsbC0+Ym9yZGVy
UmlnaHQoKSA+IDApKQorICAgICAgICAgICAgaWYgKChjZWxsLT5ib3JkZXJUb3AoKSA+IDAgJiYg
Y2VsbC0+Ym9yZGVyQm90dG9tKCkgPiAwKQorICAgICAgICAgICAgICAgIHx8IChjZWxsLT5ib3Jk
ZXJMZWZ0KCkgPiAwICYmIGNlbGwtPmJvcmRlclJpZ2h0KCkgPiAwKSkKICAgICAgICAgICAgICAg
ICBib3JkZXJlZENlbGxDb3VudCsrOwogICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBpZiB0
aGUgY2VsbCBoYXMgYSBkaWZmZXJlbnQgY29sb3IgZnJvbSB0aGUgdGFibGUgYW5kIHRoZXJlIGlz
IGNlbGwgc3BhY2luZywKICAgICAgICAgICAgIC8vIHRoZW4gaXQgaXMgcHJvYmFibHkgYSBkYXRh
IHRhYmxlIGNlbGwgKHNwYWNpbmcgYW5kIGNvbG9ycyB0YWtlIHRoZSBwbGFjZSBvZiBib3JkZXJz
KQogICAgICAgICAgICAgQ29sb3IgY2VsbENvbG9yID0gcmVuZGVyU3R5bGUtPmJhY2tncm91bmRD
b2xvcigpOwotICAgICAgICAgICAgaWYgKHRhYmxlLT5oQm9yZGVyU3BhY2luZygpID4gMCAmJiB0
YWJsZS0+dkJvcmRlclNwYWNpbmcoKSA+IDAgJiYgCi0gICAgICAgICAgICAgICAgdGFibGVCR0Nv
bG9yICE9IGNlbGxDb2xvciAmJiBjZWxsQ29sb3IuYWxwaGEoKSAhPSAxKQorICAgICAgICAgICAg
aWYgKHRhYmxlLT5oQm9yZGVyU3BhY2luZygpID4gMCAmJiB0YWJsZS0+dkJvcmRlclNwYWNpbmco
KSA+IDAKKyAgICAgICAgICAgICAgICAmJiB0YWJsZUJHQ29sb3IgIT0gY2VsbENvbG9yICYmIGNl
bGxDb2xvci5hbHBoYSgpICE9IDEpCiAgICAgICAgICAgICAgICAgYmFja2dyb3VuZERpZmZlcmVu
Y2VDZWxsQ291bnQrKzsKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gaWYgd2UndmUgZm91
bmQgMTAgImdvb2QiIGNlbGxzLCB3ZSBkb24ndCBuZWVkIHRvIGtlZXAgc2VhcmNoaW5nCkluZGV4
OiBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1u
LmNwcAkocmV2aXNpb24gNTA0MDgpCisrKyBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVRhYmxlQ29sdW1uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksMTIgKzI5LDEyIEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmgi
CiAKLSNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmgiCiAjaW5jbHVkZSAiQVhPYmpl
Y3RDYWNoZS5oIgorI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZUNlbGwuaCIKICNpbmNsdWRl
ICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJSZW5kZXJUYWJsZS5oIgotI2luY2x1ZGUgIlJlbmRl
clRhYmxlU2VjdGlvbi5oIgogI2luY2x1ZGUgIlJlbmRlclRhYmxlQ2VsbC5oIgorI2luY2x1ZGUg
IlJlbmRlclRhYmxlU2VjdGlvbi5oIgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCkluZGV4OiBX
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxl
SGVhZGVyQ29udGFpbmVyLmNwcAkocmV2aXNpb24gNTA0MDgpCisrKyBXZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjksOCArMjksOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFjY2Vz
c2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lci5oIgogCi0jaW5jbHVkZSAiQWNjZXNzaWJpbGl0
eVRhYmxlLmgiCiAjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgorI2luY2x1ZGUgIkFjY2Vzc2li
aWxpdHlUYWJsZS5oIgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCkBAIC03OSw5ICs3OSw4IEBA
IHZvaWQgQWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyOjoKICAgICBzdGF0aWNfY2Fz
dDxBY2Nlc3NpYmlsaXR5VGFibGUqPihtX3BhcmVudFRhYmxlKS0+Y29sdW1uSGVhZGVycyhtX2No
aWxkcmVuKTsKICAgICAKICAgICB1bnNpZ25lZCBsZW5ndGggPSBtX2NoaWxkcmVuLnNpemUoKTsK
LSAgICBmb3IgKHVuc2lnbmVkIGsgPSAwOyBrIDwgbGVuZ3RoOyArK2spIHsKKyAgICBmb3IgKHVu
c2lnbmVkIGsgPSAwOyBrIDwgbGVuZ3RoOyArK2spCiAgICAgICAgIG1faGVhZGVyUmVjdC51bml0
ZShtX2NoaWxkcmVuW2tdLT5lbGVtZW50UmVjdCgpKTsKLSAgICB9CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFi
bGVSb3cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5VGFibGVSb3cuY3BwCShyZXZpc2lvbiA1MDQwOCkKKysrIFdlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw4ICsyOSw4
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRhYmxlUm93
LmgiCiAKLSNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmgiCiAjaW5jbHVkZSAiQVhP
YmplY3RDYWNoZS5oIgorI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZUNlbGwuaCIKICNpbmNs
dWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MVGFibGVSb3dFbGVtZW50LmgiCiAjaW5j
bHVkZSAiUmVuZGVyT2JqZWN0LmgiCkluZGV4OiBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0Fj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5oCShyZXZpc2lvbiA1MDQwOCkK
KysrIFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogI2lmbmRlZiBBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlcl9oCiAjZGVmaW5lIEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyX2gKIAot
I2ltcG9ydCA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogI2lmZGVm
IF9fT0JKQ19fCiBAY2xhc3MgV2ViQ29yZVRleHRNYXJrZXI7CkBAIC00MCwxMiArNDAsMTEgQEAg
Y2xhc3MgV2ViQ29yZVRleHRNYXJrZXJSYW5nZTsKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0gICAgY2xhc3MgQWNjZXNzaWJpbGl0eU9iamVjdDsKLSAgICBjbGFzcyBWaXNpYmxlUG9z
aXRpb247CitjbGFzcyBBY2Nlc3NpYmlsaXR5T2JqZWN0OworY2xhc3MgVmlzaWJsZVBvc2l0aW9u
OwogfQogCi1AaW50ZXJmYWNlIEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIDogTlNPYmplY3QK
LXsKK0BpbnRlcmZhY2UgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgOiBOU09iamVjdCB7CiAg
ICAgV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdCogbV9vYmplY3Q7CiB9CiAgCg==
</data>
<flag name="review"
          id="23874"
          type_id="1"
          status="+"
          setter="levin"
    />
          </attachment>
      

    </bug>

</bugzilla>