<?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>15334</bug_id>
          
          <creation_ts>2007-10-01 11:47:38 -0700</creation_ts>
          <short_desc>Split ResourceResponse into platform specific files</short_desc>
          <delta_ts>2007-11-12 02:36:46 -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>WebKit API</component>
          <version>523.x (Safari 3)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</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>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Julien Chaffraix">jchaffraix</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>mrowe</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>57564</commentid>
    <comment_count>0</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2007-10-01 11:47:38 -0700</bug_when>
    <thetext>ResourceRequest was split into platform specific files (
http://bugs.webkit.org/show_bug.cgi?id=14225). The idea is to have the same with ResourceResponse.

The following patch uses this bug as a guideline to use the same pattern with ResourceResponse.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>57566</commentid>
    <comment_count>1</comment_count>
      <attachid>16487</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2007-10-01 12:02:16 -0700</bug_when>
    <thetext>Created attachment 16487
First draft

The patch should cover all platforms but has only been tested on Linux (both qt and gdk).

The patch also misses the entries in WebCore.xcodeproj/project.pbxproj as I do not have a mac with Xcode on which generating those entries.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>57568</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-10-01 12:45:52 -0700</bug_when>
    <thetext>Hum... I didn&apos;t look very closely, but normally we use Foo instead of FooBase for base class names, and then each platform has its own implementation, like FooMac or FooWin, etc.  But perhaps that won&apos;t work for this case... again I didn&apos;t look closely.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>57574</commentid>
    <comment_count>3</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2007-10-01 13:40:42 -0700</bug_when>
    <thetext>If you look at other examples in platform, we usually retain a single cross-platform header and then just use ifdefs in that header for platform-specific methods.  This way we don&apos;t have a proliferation of platform-specific header files.

We make exceptions sometimes but usually only for classes for which the bulk of the implementation (nearly all) is platform-specific.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>57575</commentid>
    <comment_count>4</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2007-10-01 13:42:44 -0700</bug_when>
    <thetext>I am not sure why ResourceRequest was split up the way it was.  It doesn&apos;t really follow our convention.  Maybe we are moving to this model.  I&apos;ll defer to mjs, since I&apos;m kind of confused now.


</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>57788</commentid>
    <comment_count>5</comment_count>
      <attachid>16487</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-10-04 09:13:25 -0700</bug_when>
    <thetext>Comment on attachment 16487
First draft

This patch would be easier to review if you did an &quot;svn move&quot; of ResourceResponse.cpp to ResourceResponseBase.cpp -- the patch would then show only diffs, rather than showing the entire file as changed and we also wouldn&apos;t lose history on the files. svn-create-patch does a good job of handling cases like that.

+    void doUpdateResourceResponse() {
+        notImplemented();
+    }

We put braces on the second line, not the first.

+    const_cast&lt;ResourceResponse&amp;&gt;(asResourceResponse()).doUpdateResourceResponse();

Why use const_cast here? Could we instead make the relevant members all be mutable? I&apos;m always uncomfortable with the &quot;do&quot; prefix in cases like this. Perhaps we could come up with a more descriptive name for the function that does the actual work.

+    //Used when response is initialized from a platform representation

We normally put a space after the &quot;//&quot;.

We normally don&apos;t put a blank line after &quot;protected:&quot; etc.

I&apos;m going to mark this review- because I&apos;d like to instead see a version of the patch that does &quot;svn move&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>57789</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-10-04 09:14:15 -0700</bug_when>
    <thetext>Oh, and also we need someone with Macintosh to do the Xcode project updates too; can&apos;t do review+ until the patch has that. So someone will have to help Julien.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58744</commentid>
    <comment_count>7</comment_count>
      <attachid>16707</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2007-10-17 14:16:59 -0700</bug_when>
    <thetext>Created attachment 16707
Patch updated with Darin&apos;s comment

The new patch has been generated with &quot;svn move&quot; and &quot;svn-create-patch&quot;. Thanks for the tip.

Again the patch has been tested only on linux.

&gt;+
&gt;const_cast&lt;ResourceResponse&amp;&gt;(asResourceResponse()).doUpdateResourceResponse();

&gt; Why use const_cast here? Could we instead make the relevant members all be
&gt; mutable?

After a quick look at the code, adding mutable to the members of  ResourceResponseBase would leave only one member non-mutable so I do not think that is worth it.

I agree that the 2 casts are not really beautiful. I have tried a lot of alternatives and the conclusion is that we need the 2 casts.

&gt; I&apos;m always uncomfortable with the &quot;do&quot; prefix in cases like this.
&gt; Perhaps we could come up with a more descriptive name for the function that
&gt; does the actual work.

I could not find a better name. Maybe someone has a better idea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58764</commentid>
    <comment_count>8</comment_count>
      <attachid>16707</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-10-17 21:02:50 -0700</bug_when>
    <thetext>Comment on attachment 16707
Patch updated with Darin&apos;s comment

Looks fine, r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>59386</commentid>
    <comment_count>9</comment_count>
      <attachid>16707</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2007-10-24 16:51:26 -0700</bug_when>
    <thetext>Comment on attachment 16707
Patch updated with Darin&apos;s comment

Forgot to remove the review+ flag. The patch should include Xcode information and be tested on mac.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>60833</commentid>
    <comment_count>10</comment_count>
      <attachid>17172</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2007-11-10 06:08:39 -0800</bug_when>
    <thetext>Created attachment 17172
Patch updated with XCode information and tested on Mac

Finally manage to complete the Mac part. I had to change some part of it so set the review flag to ? again. Tested on Mac &amp; Linux (both platform).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>60840</commentid>
    <comment_count>11</comment_count>
      <attachid>17172</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-11-10 12:15:56 -0800</bug_when>
    <thetext>Comment on attachment 17172
Patch updated with XCode information and tested on Mac

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>60973</commentid>
    <comment_count>12</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2007-11-12 02:36:46 -0800</bug_when>
    <thetext>Landed in r27714.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>16487</attachid>
            <date>2007-10-01 12:02:16 -0700</date>
            <delta_ts>2007-10-17 14:16:59 -0700</delta_ts>
            <desc>First draft</desc>
            <filename>bug15334.patch</filename>
            <type>text/plain</type>
            <size>39069</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNTgxNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTcgQEAKKzIwMDctMTAtMDEgIEp1bGllbiAgPGp1bGllbi5jaGFmZnJhaXhAZ21h
aWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzM0CisgICAgICAgIFNw
bGl0IFJlc291cmNlUmVxdWVzdCBpbnRvIHBsYXRmb3JtIHNwZWNpZmljIGZpbGVzCisKKyAgICAg
ICAgKiBXZWJDb3JlLmV4cDoKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlUmVzcG9uc2UuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VSZXNwb25zZS5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2VCYXNlOjphc1Jlc291cmNlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZUJhc2U6OmlzSFRUUCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlQmFzZTo6dXJsKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VC
YXNlOjpzZXRVcmwpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6Om1p
bWVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpzZXRNaW1l
VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZXhwZWN0ZWRD
b250ZW50TGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpz
ZXRFeHBlY3RlZENvbnRlbnRMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZUJhc2U6OnRleHRFbmNvZGluZ05hbWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZUJhc2U6OnNldFRleHRFbmNvZGluZ05hbWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZUJhc2U6OnN1Z2dlc3RlZEZpbGVuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2VCYXNlOjpzZXRTdWdnZXN0ZWRGaWxlbmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6aHR0cFN0YXR1c0NvZGUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OnNldEhUVFBTdGF0dXNDb2RlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpodHRwU3RhdHVzVGV4dCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2V0SFRUUFN0YXR1c1RleHQpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6Omh0dHBIZWFkZXJGaWVsZCk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2V0SFRUUEhlYWRlckZp
ZWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpodHRwSGVhZGVy
RmllbGRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpzZXRFeHBp
cmF0aW9uRGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZXhw
aXJhdGlvbkRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OnNl
dExhc3RNb2RpZmllZERhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJh
c2U6Omxhc3RNb2RpZmllZERhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZUJhc2U6OnVwZGF0ZVJlc291cmNlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0
b3I9PSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjppc051bGwp
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OmlzTXVsdGlwYXJ0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpSZXNvdXJjZVJlc3BvbnNl
QmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvciE9KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2UuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlOjpSZXNvdXJjZVJlc3BvbnNlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2U6OlJlc291cmNlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZTo6ZG9VcGRhdGVSZXNvdXJjZVJlc3BvbnNlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlc3BvbnNlLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6UmVzb3VyY2VSZXNwb25zZSk6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9xdC9SZXNvdXJjZVJlc3BvbnNlLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6UmVzb3VyY2VSZXNwb25zZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlOjpkb1VwZGF0ZVJlc291cmNlUmVzcG9uc2UpOgor
CiAyMDA3LTEwLTAxICBFbGkgRmlkbGVyICA8ZWxpQHN0YWlrb3MubmV0PgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IEdlb3JnZSBTdGFpa29zLgpJbmRleDogV2ViQ29yZS9XZWJDb3JlLmV4cAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUuZXhwCShyZXZpc2lvbiAyNTgxNSkKKysrIFdlYkNv
cmUvV2ViQ29yZS5leHAJKHdvcmtpbmcgY29weSkKQEAgLTU5OSwxNCArNTk5LDE0IEBAIF9fWk5L
N1dlYkNvcmUxNkRlcHJlY2F0ZWRTdHJpbmcxMWdldE5TU3QKIF9fWk5LN1dlYkNvcmUxNkRlcHJl
Y2F0ZWRTdHJpbmcyYXRFagogX19aTks3V2ViQ29yZTE2RGVwcmVjYXRlZFN0cmluZzNtaWRFamoK
IF9fWk5LN1dlYkNvcmUxNkRlcHJlY2F0ZWRTdHJpbmc4ZW5kc1dpdGhFUktTMF8KLV9fWk5LN1dl
YkNvcmUxNlJlc291cmNlUmVzcG9uc2UxM25zVVJMUmVzcG9uc2VFdgotX19aTks3V2ViQ29yZTE2
UmVzb3VyY2VSZXNwb25zZTE0aHR0cFN0YXR1c0NvZGVFdgotX19aTks3V2ViQ29yZTE2UmVzb3Vy
Y2VSZXNwb25zZTE2aHR0cEhlYWRlckZpZWxkc0V2Ci1fX1pOSzdXZWJDb3JlMTZSZXNvdXJjZVJl
c3BvbnNlMTZ0ZXh0RW5jb2RpbmdOYW1lRXYKLV9fWk5LN1dlYkNvcmUxNlJlc291cmNlUmVzcG9u
c2UxN3N1Z2dlc3RlZEZpbGVuYW1lRXYKLV9fWk5LN1dlYkNvcmUxNlJlc291cmNlUmVzcG9uc2Uy
MWV4cGVjdGVkQ29udGVudExlbmd0aEV2Ci1fX1pOSzdXZWJDb3JlMTZSZXNvdXJjZVJlc3BvbnNl
M3VybEV2Ci1fX1pOSzdXZWJDb3JlMTZSZXNvdXJjZVJlc3BvbnNlOG1pbWVUeXBlRXYKK19fWk5L
N1dlYkNvcmUxNlJlc291cmNlUmVzcG9uc2VCYXNlMTNuc1VSTFJlc3BvbnNlRXYKK19fWk5LN1dl
YkNvcmUxNlJlc291cmNlUmVzcG9uc2VCYXNlMTRodHRwU3RhdHVzQ29kZUV2CitfX1pOSzdXZWJD
b3JlMTZSZXNvdXJjZVJlc3BvbnNlQmFzZTE2aHR0cEhlYWRlckZpZWxkc0V2CitfX1pOSzdXZWJD
b3JlMTZSZXNvdXJjZVJlc3BvbnNlQmFzZTE2dGV4dEVuY29kaW5nTmFtZUV2CitfX1pOSzdXZWJD
b3JlMTZSZXNvdXJjZVJlc3BvbnNlQmFzZTE3c3VnZ2VzdGVkRmlsZW5hbWVFdgorX19aTks3V2Vi
Q29yZTE2UmVzb3VyY2VSZXNwb25zZUJhc2UyMWV4cGVjdGVkQ29udGVudExlbmd0aEV2CitfX1pO
SzdXZWJDb3JlMTZSZXNvdXJjZVJlc3BvbnNlQmFzZTN1cmxFdgorX19aTks3V2ViQ29yZTE2UmVz
b3VyY2VSZXNwb25zZUJhc2U4bWltZVR5cGVFdgogX19aTks3V2ViQ29yZTE5UmVzb3VyY2VSZXF1
ZXN0QmFzZTE2aHR0cEhlYWRlckZpZWxkc0V2CiBfX1pOSzdXZWJDb3JlMTlSZXNvdXJjZVJlcXVl
c3RCYXNlM3VybEV2CiBfX1pOSzdXZWJDb3JlMTlSZXNvdXJjZVJlcXVlc3RCYXNlN2lzRW1wdHlF
dgpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNv
cmUucHJvCShyZXZpc2lvbiAyNTgxNSkKKysrIFdlYkNvcmUvV2ViQ29yZS5wcm8JKHdvcmtpbmcg
Y29weSkKQEAgLTY0OCw3ICs2NDgsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBwbGF0Zm9ybS9uZXR3
b3JrL1Byb3RlY3Rpb25TcGFjZS5jcHAgXAogICAgIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VI
YW5kbGUuY3BwIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3Bw
IFwKLSAgICBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2UuY3BwIFwKKyAgICBwbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcCBcCiAgICAgcGxhdGZvcm0vUmVn
dWxhckV4cHJlc3Npb24uY3BwIFwKICAgICBwbGF0Zm9ybS9TY3JvbGxCYXIuY3BwIFwKICMgICAg
cGxhdGZvcm0vU2VhcmNoUG9wdXBNZW51LmNwcCBcCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDI1ODE1KQorKysgV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtNDM1NywxMSArNDM1NywxMSBAQAog
CQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxh
dGZvcm1cbmV0d29ya1xSZXNvdXJjZVJlc3BvbnNlLmNwcCIKKwkJCQkJUmVsYXRpdmVQYXRoPSIu
LlxwbGF0Zm9ybVxuZXR3b3JrXFJlc291cmNlUmVzcG9uc2VCYXNlLmNwcCIKIAkJCQkJPgogCQkJ
CTwvRmlsZT4KIAkJCQk8RmlsZQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXG5ldHdv
cmtcUmVzb3VyY2VSZXNwb25zZS5oIgorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXG5l
dHdvcmtcUmVzb3VyY2VSZXNwb25zZUJhc2UuaCIKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8
RmlsdGVyCkBAIC00NDA0LDYgKzQ0MDQsOSBAQAogCQkJCQkJPgogCQkJCQk8L0ZpbGU+CiAJCQkJ
CTxGaWxlCisJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcY2ZcUmVzb3Vy
Y2VSZXNwb25zZS5oIgorCQkJCQkJPgorCQkJCQk8RmlsZQogCQkJCQkJUmVsYXRpdmVQYXRoPSIu
LlxwbGF0Zm9ybVxuZXR3b3JrXGNmXFJlc291cmNlUmVzcG9uc2VDRk5ldC5jcHAiCiAJCQkJCQk+
CiAJCQkJCTwvRmlsZT4KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJl
c3BvbnNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VSZXNwb25zZS5jcHAJKHJldmlzaW9uIDI1ODE1KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlUmVzcG9uc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDI0NiArMCwwIEBA
Ci0vLyAtKi0gbW9kZTogYysrOyBjLWJhc2ljLW9mZnNldDogNCAtKi0KLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRF
UiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVS
LCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgot
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgi
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotYm9vbCBSZXNvdXJjZVJlc3BvbnNlOjppc0hUVFAo
KSBjb25zdAotewotICAgIHVwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsKLSAgICAKLSAgICBTdHJp
bmcgcHJvdG9jb2wgPSBtX3VybC5wcm90b2NvbCgpOwotICAgIAotICAgIHJldHVybiBlcXVhbEln
bm9yaW5nQ2FzZShwcm90b2NvbCwgImh0dHAiKSAgfHwgZXF1YWxJZ25vcmluZ0Nhc2UocHJvdG9j
b2wsICJodHRwcyIpOwotfQotCi1jb25zdCBLVVJMJiBSZXNvdXJjZVJlc3BvbnNlOjp1cmwoKSBj
b25zdAotewotICAgIHVwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsKLSAgICAKLSAgICByZXR1cm4g
bV91cmw7IAotfQotCi12b2lkIFJlc291cmNlUmVzcG9uc2U6OnNldFVybChjb25zdCBLVVJMJiB1
cmwpCi17Ci0gICAgdXBkYXRlUmVzb3VyY2VSZXNwb25zZSgpOwotICAgIG1faXNOdWxsID0gZmFs
c2U7Ci0gICAgCi0gICAgbV91cmwgPSB1cmw7IAotfQotCi1jb25zdCBTdHJpbmcmIFJlc291cmNl
UmVzcG9uc2U6Om1pbWVUeXBlKCkgY29uc3QKLXsKLSAgICB1cGRhdGVSZXNvdXJjZVJlc3BvbnNl
KCk7Ci0KLSAgICByZXR1cm4gbV9taW1lVHlwZTsgCi19Ci0KLXZvaWQgUmVzb3VyY2VSZXNwb25z
ZTo6c2V0TWltZVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKLXsKLSAgICB1cGRhdGVSZXNv
dXJjZVJlc3BvbnNlKCk7Ci0gICAgbV9pc051bGwgPSBmYWxzZTsKLSAgICAKLSAgICBtX21pbWVU
eXBlID0gbWltZVR5cGU7IAotfQotCi1sb25nIGxvbmcgUmVzb3VyY2VSZXNwb25zZTo6ZXhwZWN0
ZWRDb250ZW50TGVuZ3RoKCkgY29uc3QgCi17Ci0gICAgdXBkYXRlUmVzb3VyY2VSZXNwb25zZSgp
OwotCi0gICAgcmV0dXJuIG1fZXhwZWN0ZWRDb250ZW50TGVuZ3RoOwotfQotCi12b2lkIFJlc291
cmNlUmVzcG9uc2U6OnNldEV4cGVjdGVkQ29udGVudExlbmd0aChsb25nIGxvbmcgZXhwZWN0ZWRD
b250ZW50TGVuZ3RoKQotewotICAgIHVwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsKLSAgICBtX2lz
TnVsbCA9IGZhbHNlOwotICAgIAotICAgIG1fZXhwZWN0ZWRDb250ZW50TGVuZ3RoID0gZXhwZWN0
ZWRDb250ZW50TGVuZ3RoOyAKLX0KLQotY29uc3QgU3RyaW5nJiBSZXNvdXJjZVJlc3BvbnNlOjp0
ZXh0RW5jb2RpbmdOYW1lKCkgY29uc3QKLXsKLSAgICB1cGRhdGVSZXNvdXJjZVJlc3BvbnNlKCk7
Ci0KLSAgICByZXR1cm4gbV90ZXh0RW5jb2RpbmdOYW1lOwotfQotCi12b2lkIFJlc291cmNlUmVz
cG9uc2U6OnNldFRleHRFbmNvZGluZ05hbWUoY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUpCi17
Ci0gICAgdXBkYXRlUmVzb3VyY2VSZXNwb25zZSgpOwotICAgIG1faXNOdWxsID0gZmFsc2U7Ci0g
ICAgCi0gICAgbV90ZXh0RW5jb2RpbmdOYW1lID0gZW5jb2RpbmdOYW1lOyAKLX0KLQotLy8gRklY
TUUgc2hvdWxkIGNvbXB1dGUgdGhpcyBvbiB0aGUgZmx5Ci1jb25zdCBTdHJpbmcmIFJlc291cmNl
UmVzcG9uc2U6OnN1Z2dlc3RlZEZpbGVuYW1lKCkgY29uc3QKLXsKLSAgICB1cGRhdGVSZXNvdXJj
ZVJlc3BvbnNlKCk7Ci0KLSAgICByZXR1cm4gbV9zdWdnZXN0ZWRGaWxlbmFtZTsKLX0KLQotdm9p
ZCBSZXNvdXJjZVJlc3BvbnNlOjpzZXRTdWdnZXN0ZWRGaWxlbmFtZShjb25zdCBTdHJpbmcmIHN1
Z2dlc3RlZE5hbWUpCi17Ci0gICAgdXBkYXRlUmVzb3VyY2VSZXNwb25zZSgpOwotICAgIG1faXNO
dWxsID0gZmFsc2U7Ci0gICAgCi0gICAgbV9zdWdnZXN0ZWRGaWxlbmFtZSA9IHN1Z2dlc3RlZE5h
bWU7IAotfQotCi1pbnQgUmVzb3VyY2VSZXNwb25zZTo6aHR0cFN0YXR1c0NvZGUoKSBjb25zdAot
ewotICAgIHVwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsKLQotICAgIHJldHVybiBtX2h0dHBTdGF0
dXNDb2RlOyAKLX0KLQotdm9pZCBSZXNvdXJjZVJlc3BvbnNlOjpzZXRIVFRQU3RhdHVzQ29kZShp
bnQgc3RhdHVzQ29kZSkKLXsKLSAgICB1cGRhdGVSZXNvdXJjZVJlc3BvbnNlKCk7Ci0KLSAgICBt
X2h0dHBTdGF0dXNDb2RlID0gc3RhdHVzQ29kZTsKLX0KLQotY29uc3QgU3RyaW5nJiBSZXNvdXJj
ZVJlc3BvbnNlOjpodHRwU3RhdHVzVGV4dCgpIGNvbnN0IAotewotICAgIHVwZGF0ZVJlc291cmNl
UmVzcG9uc2UoKTsKLQotICAgIHJldHVybiBtX2h0dHBTdGF0dXNUZXh0OyAKLX0KLQotdm9pZCBS
ZXNvdXJjZVJlc3BvbnNlOjpzZXRIVFRQU3RhdHVzVGV4dChjb25zdCBTdHJpbmcmIHN0YXR1c1Rl
eHQpIAotewotICAgIHVwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsKLQotICAgIG1faHR0cFN0YXR1
c1RleHQgPSBzdGF0dXNUZXh0OyAKLX0KLQotU3RyaW5nIFJlc291cmNlUmVzcG9uc2U6Omh0dHBI
ZWFkZXJGaWVsZChjb25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0Ci17Ci0gICAgdXBkYXRlUmVzb3Vy
Y2VSZXNwb25zZSgpOwotCi0gICAgcmV0dXJuIG1faHR0cEhlYWRlckZpZWxkcy5nZXQobmFtZSk7
IAotfQotCi12b2lkIFJlc291cmNlUmVzcG9uc2U6OnNldEhUVFBIZWFkZXJGaWVsZChjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCi17Ci0gICAgdXBkYXRlUmVzb3VyY2VS
ZXNwb25zZSgpOwotCi0gICAgbV9odHRwSGVhZGVyRmllbGRzLnNldChuYW1lLCB2YWx1ZSk7Ci19
Ci0KLWNvbnN0IEhUVFBIZWFkZXJNYXAmIFJlc291cmNlUmVzcG9uc2U6Omh0dHBIZWFkZXJGaWVs
ZHMoKSBjb25zdAotewotICAgIHVwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsKLQotICAgIHJldHVy
biBtX2h0dHBIZWFkZXJGaWVsZHM7IAotfQotCi1ib29sIFJlc291cmNlUmVzcG9uc2U6OmlzQXR0
YWNobWVudCgpIGNvbnN0DQotew0KLSAgICB1cGRhdGVSZXNvdXJjZVJlc3BvbnNlKCk7DQotDQot
ICAgIFN0cmluZyB2YWx1ZSA9IG1faHR0cEhlYWRlckZpZWxkcy5nZXQoIkNvbnRlbnQtRGlzcG9z
aXRpb24iKTsNCi0gICAgaW50IGxvYyA9IHZhbHVlLmZpbmQoJzsnKTsNCi0gICAgaWYgKGxvYyAh
PSAtMSkNCi0gICAgICAgIHZhbHVlID0gdmFsdWUubGVmdChsb2MpOw0KLSAgICB2YWx1ZSA9IHZh
bHVlLnN0cmlwV2hpdGVTcGFjZSgpOw0KLSAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0Nhc2UodmFs
dWUsICJhdHRhY2htZW50Iik7DQotfQotCi12b2lkIFJlc291cmNlUmVzcG9uc2U6OnNldEV4cGly
YXRpb25EYXRlKHRpbWVfdCBleHBpcmF0aW9uRGF0ZSkKLXsKLSAgICB1cGRhdGVSZXNvdXJjZVJl
c3BvbnNlKCk7Ci0KLSAgICBtX2V4cGlyYXRpb25EYXRlID0gZXhwaXJhdGlvbkRhdGU7Ci19Ci0K
LXRpbWVfdCBSZXNvdXJjZVJlc3BvbnNlOjpleHBpcmF0aW9uRGF0ZSgpIGNvbnN0Ci17Ci0gICAg
dXBkYXRlUmVzb3VyY2VSZXNwb25zZSgpOwotCi0gICAgcmV0dXJuIG1fZXhwaXJhdGlvbkRhdGU7
IAotfQotCi12b2lkIFJlc291cmNlUmVzcG9uc2U6OnNldExhc3RNb2RpZmllZERhdGUodGltZV90
IGxhc3RNb2RpZmllZERhdGUpIAotewotICAgIHVwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsKLQot
ICAgIG1fbGFzdE1vZGlmaWVkRGF0ZSA9IGxhc3RNb2RpZmllZERhdGU7IAotfQotCi10aW1lX3Qg
UmVzb3VyY2VSZXNwb25zZTo6bGFzdE1vZGlmaWVkRGF0ZSgpIGNvbnN0Ci17Ci0gICAgdXBkYXRl
UmVzb3VyY2VSZXNwb25zZSgpOwotCi0gICAgcmV0dXJuIG1fbGFzdE1vZGlmaWVkRGF0ZTsgCi19
Ci0KLXZvaWQgUmVzb3VyY2VSZXNwb25zZTo6dXBkYXRlUmVzb3VyY2VSZXNwb25zZSgpIGNvbnN0
Ci17Ci0jaWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKQotICAgIGlmIChtX2lzVXBU
b0RhdGUpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBjb25zdF9jYXN0PFJlc291cmNlUmVz
cG9uc2UqPih0aGlzKS0+ZG9VcGRhdGVSZXNvdXJjZVJlc3BvbnNlKCk7Ci0gICAgbV9pc1VwVG9E
YXRlID0gdHJ1ZTsKLSNlbmRpZgotfQotCi1ib29sIG9wZXJhdG9yPT0oY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgYSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgYikKLXsKLSAgICBpZiAoYS5pc051
bGwoKSAhPSBiLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7ICAKLSAgICBpZiAoYS51
cmwoKSAhPSBiLnVybCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGEubWltZVR5
cGUoKSAhPSBiLm1pbWVUeXBlKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoYS5l
eHBlY3RlZENvbnRlbnRMZW5ndGgoKSAhPSBiLmV4cGVjdGVkQ29udGVudExlbmd0aCgpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGEudGV4dEVuY29kaW5nTmFtZSgpICE9IGIudGV4
dEVuY29kaW5nTmFtZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGEuc3VnZ2Vz
dGVkRmlsZW5hbWUoKSAhPSBiLnN1Z2dlc3RlZEZpbGVuYW1lKCkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICBpZiAoYS5odHRwU3RhdHVzQ29kZSgpICE9IGIuaHR0cFN0YXR1c0NvZGUoKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChhLmh0dHBTdGF0dXNUZXh0KCkgIT0gYi5o
dHRwU3RhdHVzVGV4dCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGEuaHR0cEhl
YWRlckZpZWxkcygpICE9IGIuaHR0cEhlYWRlckZpZWxkcygpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgaWYgKGEuZXhwaXJhdGlvbkRhdGUoKSAhPSBiLmV4cGlyYXRpb25EYXRlKCkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSNpZiBQTEFURk9STShNQUMpCi0gICAgaWYgKGEubnNVUkxS
ZXNwb25zZSgpICE9IGIubnNVUkxSZXNwb25zZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0j
ZW5kaWYKLSAgICByZXR1cm4gdHJ1ZTsKLSB9Ci0KLX0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZVJlc3BvbnNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2UuaAkocmV2aXNpb24gMjU4MTUpCisrKyBXZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDE1OSArMCwwIEBACi0vLyAtKi0gbW9kZTogYysrOyBjLWJhc2ljLW9mZnNldDogNCAtKi0KLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgUmVzb3VyY2VSZXNwb25zZV9oCi0jZGVmaW5lIFJl
c291cmNlUmVzcG9uc2VfaAotCi0jaW5jbHVkZSAiSFRUUEhlYWRlck1hcC5oIgotI2luY2x1ZGUg
IktVUkwuaCIKLQotI2lmIFBMQVRGT1JNKE1BQykKLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
Ci0jaWZkZWYgX19PQkpDX18KLUBjbGFzcyBOU1VSTFJlc3BvbnNlOwotI2Vsc2UKLWNsYXNzIE5T
VVJMUmVzcG9uc2U7Ci0jZW5kaWYKLSNlbGlmIFVTRShDRk5FVFdPUkspCi0jaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgotdHlwZWRlZiBzdHJ1Y3QgX0NGVVJMUmVzcG9uc2UqIENGVVJMUmVzcG9u
c2VSZWY7Ci0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBSZXNvdXJjZVJl
c3BvbnNlIHsKLXB1YmxpYzoKLQotICAgIFJlc291cmNlUmVzcG9uc2UoKSAKLSAgICAgICAgOiBt
X2V4cGVjdGVkQ29udGVudExlbmd0aCgwKQotICAgICAgICAsIG1faHR0cFN0YXR1c0NvZGUoMCkK
LSAgICAgICAgLCBtX2V4cGlyYXRpb25EYXRlKDApCi0gICAgICAgICwgbV9pc1VwVG9EYXRlKHRy
dWUpCi0gICAgICAgICwgbV9pc051bGwodHJ1ZSkKLSAgICB7Ci0gICAgfQotCi0gICAgUmVzb3Vy
Y2VSZXNwb25zZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGxvbmcg
bG9uZyBleHBlY3RlZExlbmd0aCwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBjb25z
dCBTdHJpbmcmIGZpbGVuYW1lKQotICAgICAgICA6IG1fdXJsKHVybCkKLSAgICAgICAgLCBtX21p
bWVUeXBlKG1pbWVUeXBlKQotICAgICAgICAsIG1fZXhwZWN0ZWRDb250ZW50TGVuZ3RoKGV4cGVj
dGVkTGVuZ3RoKQotICAgICAgICAsIG1fdGV4dEVuY29kaW5nTmFtZSh0ZXh0RW5jb2RpbmdOYW1l
KQotICAgICAgICAsIG1fc3VnZ2VzdGVkRmlsZW5hbWUoZmlsZW5hbWUpCi0gICAgICAgICwgbV9o
dHRwU3RhdHVzQ29kZSgwKQotICAgICAgICAsIG1fZXhwaXJhdGlvbkRhdGUoMCkKLSAgICAgICAg
LCBtX2lzVXBUb0RhdGUodHJ1ZSkKLSAgICAgICAgLCBtX2lzTnVsbChmYWxzZSkKLSAgICB7Ci0g
ICAgfQotIAotICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gbV9pc051bGw7IH0KLSAg
ICBib29sIGlzSFRUUCgpIGNvbnN0OwotICAgIAotICAgIGNvbnN0IEtVUkwmIHVybCgpIGNvbnN0
OwotICAgIHZvaWQgc2V0VXJsKGNvbnN0IEtVUkwmIHVybCk7Ci0KLSAgICBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRNaW1lVHlwZShjb25zdCBTdHJpbmcmIG1p
bWVUeXBlKTsKLQotICAgIGxvbmcgbG9uZyBleHBlY3RlZENvbnRlbnRMZW5ndGgoKSBjb25zdDsK
LSAgICB2b2lkIHNldEV4cGVjdGVkQ29udGVudExlbmd0aChsb25nIGxvbmcgZXhwZWN0ZWRDb250
ZW50TGVuZ3RoKTsKLQotICAgIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSgpIGNvbnN0
OwotICAgIHZvaWQgc2V0VGV4dEVuY29kaW5nTmFtZShjb25zdCBTdHJpbmcmIG5hbWUpOwotCi0g
ICAgLy8gRklYTUUgc2hvdWxkIGNvbXB1dGUgdGhpcyBvbiB0aGUgZmx5Ci0gICAgY29uc3QgU3Ry
aW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0U3VnZ2VzdGVkRmls
ZW5hbWUoY29uc3QgU3RyaW5nJik7Ci0KLSAgICBpbnQgaHR0cFN0YXR1c0NvZGUoKSBjb25zdDsK
LSAgICB2b2lkIHNldEhUVFBTdGF0dXNDb2RlKGludCk7Ci0gICAgCi0gICAgY29uc3QgU3RyaW5n
JiBodHRwU3RhdHVzVGV4dCgpIGNvbnN0OwotICAgIHZvaWQgc2V0SFRUUFN0YXR1c1RleHQoY29u
c3QgU3RyaW5nJik7Ci0gICAgCi0gICAgU3RyaW5nIGh0dHBIZWFkZXJGaWVsZChjb25zdCBTdHJp
bmcmIG5hbWUpIGNvbnN0OwotICAgIHZvaWQgc2V0SFRUUEhlYWRlckZpZWxkKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7Ci0gICAgY29uc3QgSFRUUEhlYWRlck1hcCYg
aHR0cEhlYWRlckZpZWxkcygpIGNvbnN0OwotCi0gICAgYm9vbCBpc011bHRpcGFydCgpIGNvbnN0
IHsgcmV0dXJuIG1pbWVUeXBlKCkgPT0gIm11bHRpcGFydC94LW1peGVkLXJlcGxhY2UiOyB9Ci0K
LSAgICBib29sIGlzQXR0YWNobWVudCgpIGNvbnN0OwotCi0gICAgdm9pZCBzZXRFeHBpcmF0aW9u
RGF0ZSh0aW1lX3QpOwotICAgIHRpbWVfdCBleHBpcmF0aW9uRGF0ZSgpIGNvbnN0OwotCi0gICAg
dm9pZCBzZXRMYXN0TW9kaWZpZWREYXRlKHRpbWVfdCk7Ci0gICAgdGltZV90IGxhc3RNb2RpZmll
ZERhdGUoKSBjb25zdDsKLQotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBSZXNvdXJjZVJlc3BvbnNl
KE5TVVJMUmVzcG9uc2UqIG5zUmVzcG9uc2UpCi0gICAgICAgIDogbV9pc1VwVG9EYXRlKGZhbHNl
KQotICAgICAgICAsIG1faXNOdWxsKCFuc1Jlc3BvbnNlKQotICAgICAgICAsIG1fbnNSZXNwb25z
ZShuc1Jlc3BvbnNlKSB7IH0KLSAgICAKLSAgICBOU1VSTFJlc3BvbnNlICpuc1VSTFJlc3BvbnNl
KCkgY29uc3Q7Ci0jZWxpZiBVU0UoQ0ZORVRXT1JLKQotICAgIFJlc291cmNlUmVzcG9uc2UoQ0ZV
UkxSZXNwb25zZVJlZiBjZlJlc3BvbnNlKQotICAgICAgICA6IG1faXNVcFRvRGF0ZShmYWxzZSkK
LSAgICAgICAgLCBtX2lzTnVsbCghY2ZSZXNwb25zZSkKLSAgICAgICAgLCBtX2NmUmVzcG9uc2Uo
Y2ZSZXNwb25zZSkgeyB9Ci0gICAgCi0gICAgQ0ZVUkxSZXNwb25zZVJlZiBjZlVSTFJlc3BvbnNl
KCkgY29uc3Q7Ci0jZW5kaWYKLSAgICAKLSBwcml2YXRlOgotICAgIHZvaWQgdXBkYXRlUmVzb3Vy
Y2VSZXNwb25zZSgpIGNvbnN0OyAKLSAgICAKLSNpZiBQTEFURk9STShNQUMpIHx8IFVTRShDRk5F
VFdPUkspCi0gICAgdm9pZCBkb1VwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsKLSNlbmRpZgotICAg
IAotICAgIEtVUkwgbV91cmw7Ci0gICAgU3RyaW5nIG1fbWltZVR5cGU7Ci0gICAgbG9uZyBsb25n
IG1fZXhwZWN0ZWRDb250ZW50TGVuZ3RoOwotICAgIFN0cmluZyBtX3RleHRFbmNvZGluZ05hbWU7
Ci0gICAgU3RyaW5nIG1fc3VnZ2VzdGVkRmlsZW5hbWU7Ci0gICAgaW50IG1faHR0cFN0YXR1c0Nv
ZGU7Ci0gICAgU3RyaW5nIG1faHR0cFN0YXR1c1RleHQ7Ci0gICAgSFRUUEhlYWRlck1hcCBtX2h0
dHBIZWFkZXJGaWVsZHM7Ci0gICAgdGltZV90IG1fZXhwaXJhdGlvbkRhdGU7Ci0gICAgdGltZV90
IG1fbGFzdE1vZGlmaWVkRGF0ZTsKLSAgICBtdXRhYmxlIGJvb2wgbV9pc1VwVG9EYXRlOwotICAg
IGJvb2wgbV9pc051bGw7Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgIFJldGFpblB0cjxOU1VSTFJl
c3BvbnNlPiBtX25zUmVzcG9uc2U7Ci0jZWxpZiBVU0UoQ0ZORVRXT1JLKQotICAgIFJldGFpblB0
cjxDRlVSTFJlc3BvbnNlUmVmPiBtX2NmUmVzcG9uc2U7ICAgICAgCi0jZW5kaWYKLSAgICAKLX07
Ci0KLWJvb2wgb3BlcmF0b3I9PShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBhLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiBiKTsKLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgYSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgYikgeyByZXR1cm4gIShhID09IGIp
OyB9Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFJlc291cmNlUmVzcG9u
c2VfaApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNw
b25zZUJhc2UuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlUmVzcG9uc2VCYXNlLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMzggQEAKKy8v
IC0qLSBtb2RlOiBjKys7IGMtYmFzaWMtb2Zmc2V0OiA0IC0qLQorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2VCYXNlLmgi
CisjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2lubGluZSBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6YXNS
ZXNvdXJjZVJlc3BvbnNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gKnN0YXRpY19jYXN0PGNvbnN0
IFJlc291cmNlUmVzcG9uc2UqPih0aGlzKTsKK30KKworYm9vbCBSZXNvdXJjZVJlc3BvbnNlQmFz
ZTo6aXNIVFRQKCkgY29uc3QKK3sKKyAgICB1cGRhdGVSZXNvdXJjZVJlc3BvbnNlKCk7CisKKyAg
ICBTdHJpbmcgcHJvdG9jb2wgPSBtX3VybC5wcm90b2NvbCgpOworCisgICAgcmV0dXJuIGVxdWFs
SWdub3JpbmdDYXNlKHByb3RvY29sLCAiaHR0cCIpICB8fCBlcXVhbElnbm9yaW5nQ2FzZShwcm90
b2NvbCwgImh0dHBzIik7Cit9CisKK2NvbnN0IEtVUkwmIFJlc291cmNlUmVzcG9uc2VCYXNlOjp1
cmwoKSBjb25zdAoreworICAgIHVwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsKKyAgICAKKyAgICBy
ZXR1cm4gbV91cmw7IAorfQorCit2b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzZXRVcmwoY29u
c3QgS1VSTCYgdXJsKQoreworICAgIHVwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsKKyAgICBtX2lz
TnVsbCA9IGZhbHNlOworICAgIAorICAgIG1fdXJsID0gdXJsOyAKK30KKworY29uc3QgU3RyaW5n
JiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6bWltZVR5cGUoKSBjb25zdAoreworICAgIHVwZGF0ZVJl
c291cmNlUmVzcG9uc2UoKTsKKworICAgIHJldHVybiBtX21pbWVUeXBlOyAKK30KKwordm9pZCBS
ZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2V0TWltZVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkK
K3sKKyAgICB1cGRhdGVSZXNvdXJjZVJlc3BvbnNlKCk7CisgICAgbV9pc051bGwgPSBmYWxzZTsK
KyAgICAKKyAgICBtX21pbWVUeXBlID0gbWltZVR5cGU7IAorfQorCitsb25nIGxvbmcgUmVzb3Vy
Y2VSZXNwb25zZUJhc2U6OmV4cGVjdGVkQ29udGVudExlbmd0aCgpIGNvbnN0IAoreworICAgIHVw
ZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsKKworICAgIHJldHVybiBtX2V4cGVjdGVkQ29udGVudExl
bmd0aDsKK30KKwordm9pZCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2V0RXhwZWN0ZWRDb250ZW50
TGVuZ3RoKGxvbmcgbG9uZyBleHBlY3RlZENvbnRlbnRMZW5ndGgpCit7CisgICAgdXBkYXRlUmVz
b3VyY2VSZXNwb25zZSgpOworICAgIG1faXNOdWxsID0gZmFsc2U7CisgICAgCisgICAgbV9leHBl
Y3RlZENvbnRlbnRMZW5ndGggPSBleHBlY3RlZENvbnRlbnRMZW5ndGg7IAorfQorCitjb25zdCBT
dHJpbmcmIFJlc291cmNlUmVzcG9uc2VCYXNlOjp0ZXh0RW5jb2RpbmdOYW1lKCkgY29uc3QKK3sK
KyAgICB1cGRhdGVSZXNvdXJjZVJlc3BvbnNlKCk7CisKKyAgICByZXR1cm4gbV90ZXh0RW5jb2Rp
bmdOYW1lOworfQorCit2b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzZXRUZXh0RW5jb2RpbmdO
YW1lKGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lKQoreworICAgIHVwZGF0ZVJlc291cmNlUmVz
cG9uc2UoKTsKKyAgICBtX2lzTnVsbCA9IGZhbHNlOworICAgIAorICAgIG1fdGV4dEVuY29kaW5n
TmFtZSA9IGVuY29kaW5nTmFtZTsgCit9CisKKy8vIEZJWE1FIHNob3VsZCBjb21wdXRlIHRoaXMg
b24gdGhlIGZseQorY29uc3QgU3RyaW5nJiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c3VnZ2VzdGVk
RmlsZW5hbWUoKSBjb25zdAoreworICAgIHVwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsKKworICAg
IHJldHVybiBtX3N1Z2dlc3RlZEZpbGVuYW1lOworfQorCit2b2lkIFJlc291cmNlUmVzcG9uc2VC
YXNlOjpzZXRTdWdnZXN0ZWRGaWxlbmFtZShjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZE5hbWUpCit7
CisgICAgdXBkYXRlUmVzb3VyY2VSZXNwb25zZSgpOworICAgIG1faXNOdWxsID0gZmFsc2U7Cisg
ICAgCisgICAgbV9zdWdnZXN0ZWRGaWxlbmFtZSA9IHN1Z2dlc3RlZE5hbWU7IAorfQorCitpbnQg
UmVzb3VyY2VSZXNwb25zZUJhc2U6Omh0dHBTdGF0dXNDb2RlKCkgY29uc3QKK3sKKyAgICB1cGRh
dGVSZXNvdXJjZVJlc3BvbnNlKCk7CisKKyAgICByZXR1cm4gbV9odHRwU3RhdHVzQ29kZTsKK30K
Kwordm9pZCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2V0SFRUUFN0YXR1c0NvZGUoaW50IHN0YXR1
c0NvZGUpCit7CisgICAgdXBkYXRlUmVzb3VyY2VSZXNwb25zZSgpOworCisgICAgbV9odHRwU3Rh
dHVzQ29kZSA9IHN0YXR1c0NvZGU7Cit9CisKK2NvbnN0IFN0cmluZyYgUmVzb3VyY2VSZXNwb25z
ZUJhc2U6Omh0dHBTdGF0dXNUZXh0KCkgY29uc3QgCit7CisgICAgdXBkYXRlUmVzb3VyY2VSZXNw
b25zZSgpOworCisgICAgcmV0dXJuIG1faHR0cFN0YXR1c1RleHQ7IAorfQorCit2b2lkIFJlc291
cmNlUmVzcG9uc2VCYXNlOjpzZXRIVFRQU3RhdHVzVGV4dChjb25zdCBTdHJpbmcmIHN0YXR1c1Rl
eHQpIAoreworICAgIHVwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsKKworICAgIG1faHR0cFN0YXR1
c1RleHQgPSBzdGF0dXNUZXh0OyAKK30KKworU3RyaW5nIFJlc291cmNlUmVzcG9uc2VCYXNlOjpo
dHRwSGVhZGVyRmllbGQoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdAoreworICAgIHVwZGF0ZVJl
c291cmNlUmVzcG9uc2UoKTsKKworICAgIHJldHVybiBtX2h0dHBIZWFkZXJGaWVsZHMuZ2V0KG5h
bWUpOyAKK30KKwordm9pZCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2V0SFRUUEhlYWRlckZpZWxk
KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICB1cGRhdGVS
ZXNvdXJjZVJlc3BvbnNlKCk7CisKKyAgICBtX2h0dHBIZWFkZXJGaWVsZHMuc2V0KG5hbWUsIHZh
bHVlKTsKK30KKworY29uc3QgSFRUUEhlYWRlck1hcCYgUmVzb3VyY2VSZXNwb25zZUJhc2U6Omh0
dHBIZWFkZXJGaWVsZHMoKSBjb25zdAoreworICAgIHVwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsK
KworICAgIHJldHVybiBtX2h0dHBIZWFkZXJGaWVsZHM7IAorfQorCit2b2lkIFJlc291cmNlUmVz
cG9uc2VCYXNlOjpzZXRFeHBpcmF0aW9uRGF0ZSh0aW1lX3QgZXhwaXJhdGlvbkRhdGUpCit7Cisg
ICAgdXBkYXRlUmVzb3VyY2VSZXNwb25zZSgpOworCisgICAgbV9leHBpcmF0aW9uRGF0ZSA9IGV4
cGlyYXRpb25EYXRlOworfQorCit0aW1lX3QgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmV4cGlyYXRp
b25EYXRlKCkgY29uc3QKK3sKKyAgICB1cGRhdGVSZXNvdXJjZVJlc3BvbnNlKCk7CisKKyAgICBy
ZXR1cm4gbV9leHBpcmF0aW9uRGF0ZTsgCit9CisKK3ZvaWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6
OnNldExhc3RNb2RpZmllZERhdGUodGltZV90IGxhc3RNb2RpZmllZERhdGUpIAoreworICAgIHVw
ZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsKKworICAgIG1fbGFzdE1vZGlmaWVkRGF0ZSA9IGxhc3RN
b2RpZmllZERhdGU7Cit9CisKK3RpbWVfdCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6bGFzdE1vZGlm
aWVkRGF0ZSgpIGNvbnN0Cit7CisgICAgdXBkYXRlUmVzb3VyY2VSZXNwb25zZSgpOworCisgICAg
cmV0dXJuIG1fbGFzdE1vZGlmaWVkRGF0ZTsKK30KKwordm9pZCBSZXNvdXJjZVJlc3BvbnNlQmFz
ZTo6dXBkYXRlUmVzb3VyY2VSZXNwb25zZSgpIGNvbnN0Cit7CisgICAgaWYgKG1faXNVcFRvRGF0
ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgY29uc3RfY2FzdDxSZXNvdXJjZVJlc3BvbnNlJj4o
YXNSZXNvdXJjZVJlc3BvbnNlKCkpLmRvVXBkYXRlUmVzb3VyY2VSZXNwb25zZSgpOworICAgIG1f
aXNVcFRvRGF0ZSA9IHRydWU7Cit9CisKK2Jvb2wgb3BlcmF0b3I9PShjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiBhLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBiKQoreworICAgIGlmIChhLmlzTnVs
bCgpICE9IGIuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsgIAorICAgIGlmIChhLnVy
bCgpICE9IGIudXJsKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoYS5taW1lVHlw
ZSgpICE9IGIubWltZVR5cGUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChhLmV4
cGVjdGVkQ29udGVudExlbmd0aCgpICE9IGIuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoYS50ZXh0RW5jb2RpbmdOYW1lKCkgIT0gYi50ZXh0
RW5jb2RpbmdOYW1lKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoYS5zdWdnZXN0
ZWRGaWxlbmFtZSgpICE9IGIuc3VnZ2VzdGVkRmlsZW5hbWUoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIGlmIChhLmh0dHBTdGF0dXNDb2RlKCkgIT0gYi5odHRwU3RhdHVzQ29kZSgpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGEuaHR0cFN0YXR1c1RleHQoKSAhPSBiLmh0
dHBTdGF0dXNUZXh0KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoYS5odHRwSGVh
ZGVyRmllbGRzKCkgIT0gYi5odHRwSGVhZGVyRmllbGRzKCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBpZiAoYS5leHBpcmF0aW9uRGF0ZSgpICE9IGIuZXhwaXJhdGlvbkRhdGUoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAoYS5uc1VSTFJl
c3BvbnNlKCkgIT0gYi5uc1VSTFJlc3BvbnNlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyNl
bmRpZgorICAgIHJldHVybiB0cnVlOworIH0KKworfQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgJKHJldmlzaW9uIDApCisrKyBXZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwxMzQgQEAKKy8vIC0qLSBtb2RlOiBjKys7IGMtYmFzaWMtb2Zmc2V0OiA0IC0q
LQorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBSZXNvdXJjZVJlc3BvbnNlQmFzZV9oCisj
ZGVmaW5lIFJlc291cmNlUmVzcG9uc2VCYXNlX2gKKworI2luY2x1ZGUgIkhUVFBIZWFkZXJNYXAu
aCIKKyNpbmNsdWRlICJLVVJMLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUmVz
b3VyY2VSZXNwb25zZTsKKworLy9EbyBub3QgdXNlIHRoaXMgY2xhc3MgZGlyZWN0bHksIHVzZSB0
aGUgY2xhc3MgUmVzcG9uc2VSZXNwb25zZSBpbnN0ZWFkCitjbGFzcyBSZXNvdXJjZVJlc3BvbnNl
QmFzZSB7CitwdWJsaWM6CisKKyAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1faXNO
dWxsOyB9CisgICAgYm9vbCBpc0hUVFAoKSBjb25zdDsKKworICAgIGNvbnN0IEtVUkwmIHVybCgp
IGNvbnN0OworICAgIHZvaWQgc2V0VXJsKGNvbnN0IEtVUkwmIHVybCk7CisKKyAgICBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlKCkgY29uc3Q7CisgICAgdm9pZCBzZXRNaW1lVHlwZShjb25zdCBTdHJp
bmcmIG1pbWVUeXBlKTsKKworICAgIGxvbmcgbG9uZyBleHBlY3RlZENvbnRlbnRMZW5ndGgoKSBj
b25zdDsKKyAgICB2b2lkIHNldEV4cGVjdGVkQ29udGVudExlbmd0aChsb25nIGxvbmcgZXhwZWN0
ZWRDb250ZW50TGVuZ3RoKTsKKworICAgIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSgp
IGNvbnN0OworICAgIHZvaWQgc2V0VGV4dEVuY29kaW5nTmFtZShjb25zdCBTdHJpbmcmIG5hbWUp
OworCisgICAgLy8gRklYTUUgc2hvdWxkIGNvbXB1dGUgdGhpcyBvbiB0aGUgZmx5CisgICAgY29u
c3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSgpIGNvbnN0OworICAgIHZvaWQgc2V0U3VnZ2Vz
dGVkRmlsZW5hbWUoY29uc3QgU3RyaW5nJik7CisKKyAgICBpbnQgaHR0cFN0YXR1c0NvZGUoKSBj
b25zdDsKKyAgICB2b2lkIHNldEhUVFBTdGF0dXNDb2RlKGludCk7CisgICAgCisgICAgY29uc3Qg
U3RyaW5nJiBodHRwU3RhdHVzVGV4dCgpIGNvbnN0OworICAgIHZvaWQgc2V0SFRUUFN0YXR1c1Rl
eHQoY29uc3QgU3RyaW5nJik7CisgICAgCisgICAgU3RyaW5nIGh0dHBIZWFkZXJGaWVsZChjb25z
dCBTdHJpbmcmIG5hbWUpIGNvbnN0OworICAgIHZvaWQgc2V0SFRUUEhlYWRlckZpZWxkKGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CisgICAgY29uc3QgSFRUUEhlYWRl
ck1hcCYgaHR0cEhlYWRlckZpZWxkcygpIGNvbnN0OworCisgICAgYm9vbCBpc011bHRpcGFydCgp
IGNvbnN0IHsgcmV0dXJuIG1pbWVUeXBlKCkgPT0gIm11bHRpcGFydC94LW1peGVkLXJlcGxhY2Ui
OyB9CisKKyAgICB2b2lkIHNldEV4cGlyYXRpb25EYXRlKHRpbWVfdCk7CisgICAgdGltZV90IGV4
cGlyYXRpb25EYXRlKCkgY29uc3Q7CisKKyAgICB2b2lkIHNldExhc3RNb2RpZmllZERhdGUodGlt
ZV90KTsKKyAgICB0aW1lX3QgbGFzdE1vZGlmaWVkRGF0ZSgpIGNvbnN0OworCisgcHJvdGVjdGVk
OgorCisgICAgLy9Vc2VkIHdoZW4gcmVzcG9uc2UgaXMgaW5pdGlhbGl6ZWQgZnJvbSBhIHBsYXRm
b3JtIHJlcHJlc2VudGF0aW9uCisgICAgUmVzb3VyY2VSZXNwb25zZUJhc2UoYm9vbCBpc051bGwp
CisgICAgICAgIDogbV9pc1VwVG9EYXRlKGZhbHNlKQorICAgICAgICAsIG1faXNOdWxsKGlzTnVs
bCkKKyAgICB7CisgICAgfQorCisgICAgUmVzb3VyY2VSZXNwb25zZUJhc2UoKSAgCisgICAgICAg
IDogbV9leHBlY3RlZENvbnRlbnRMZW5ndGgoMCkKKyAgICAgICAgLCBtX2h0dHBTdGF0dXNDb2Rl
KDApCisgICAgICAgICwgbV9leHBpcmF0aW9uRGF0ZSgwKQorICAgICAgICAsIG1faXNVcFRvRGF0
ZSh0cnVlKQorICAgICAgICAsIG1faXNOdWxsKHRydWUpCisgICAgeworICAgIH0KKworICAgIFJl
c291cmNlUmVzcG9uc2VCYXNlKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgbG9uZyBsb25nIGV4cGVjdGVkTGVuZ3RoLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05h
bWUsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCisgICAgICAgIDogbV91cmwodXJsKQorICAgICAg
ICAsIG1fbWltZVR5cGUobWltZVR5cGUpCisgICAgICAgICwgbV9leHBlY3RlZENvbnRlbnRMZW5n
dGgoZXhwZWN0ZWRMZW5ndGgpCisgICAgICAgICwgbV90ZXh0RW5jb2RpbmdOYW1lKHRleHRFbmNv
ZGluZ05hbWUpCisgICAgICAgICwgbV9zdWdnZXN0ZWRGaWxlbmFtZShmaWxlbmFtZSkKKyAgICAg
ICAgLCBtX2h0dHBTdGF0dXNDb2RlKDApCisgICAgICAgICwgbV9leHBpcmF0aW9uRGF0ZSgwKQor
ICAgICAgICAsIG1faXNVcFRvRGF0ZSh0cnVlKQorICAgICAgICAsIG1faXNOdWxsKGZhbHNlKQor
ICAgIHsKKyAgICB9CisKKworICAgIHZvaWQgdXBkYXRlUmVzb3VyY2VSZXNwb25zZSgpIGNvbnN0
OworCisgICAgS1VSTCBtX3VybDsKKyAgICBTdHJpbmcgbV9taW1lVHlwZTsKKyAgICBsb25nIGxv
bmcgbV9leHBlY3RlZENvbnRlbnRMZW5ndGg7CisgICAgU3RyaW5nIG1fdGV4dEVuY29kaW5nTmFt
ZTsKKyAgICBTdHJpbmcgbV9zdWdnZXN0ZWRGaWxlbmFtZTsKKyAgICBpbnQgbV9odHRwU3RhdHVz
Q29kZTsKKyAgICBTdHJpbmcgbV9odHRwU3RhdHVzVGV4dDsKKyAgICBIVFRQSGVhZGVyTWFwIG1f
aHR0cEhlYWRlckZpZWxkczsKKyAgICB0aW1lX3QgbV9leHBpcmF0aW9uRGF0ZTsKKyAgICB0aW1l
X3QgbV9sYXN0TW9kaWZpZWREYXRlOworICAgIG11dGFibGUgYm9vbCBtX2lzVXBUb0RhdGU7Cisg
ICAgYm9vbCBtX2lzTnVsbDsKKworIHByaXZhdGU6CisgICAgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgYXNSZXNvdXJjZVJlc3BvbnNlKCkgY29uc3Q7Cit9OworCitib29sIG9wZXJhdG9yPT0oY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgYSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgYik7Citpbmxp
bmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGEsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIGIpIHsgcmV0dXJuICEoYSA9PSBiKTsgfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBSZXNvdXJjZVJlc3BvbnNlQmFzZV9oCkluZGV4OiBXZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlLmgJKHJldmlzaW9uIDAp
CisrKyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZS5oCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDY1IEBACisvLyAtKi0gbW9kZTogYysrOyBjLWJhc2ljLW9mZnNl
dDogNCAtKi0KKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisjaWZuZGVmIFJlc291cmNlUmVzcG9uc2VfaAor
I2RlZmluZSBSZXNvdXJjZVJlc3BvbnNlX2gKKworI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2VC
YXNlLmgiCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCit0eXBlZGVmIHN0cnVjdCBfQ0ZV
UkxSZXNwb25zZSogQ0ZVUkxSZXNwb25zZVJlZjsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBSZXNvdXJjZVJlc3BvbnNlIDogcHVibGljIFJlc291cmNlUmVzcG9uc2VCYXNlIHsKK3B1
YmxpYzoKKyAgICBSZXNvdXJjZVJlc3BvbnNlKCkKKyAgICAgICAgOiBSZXNvdXJjZVJlc3BvbnNl
QmFzZSgpCisgICAgeworICAgIH0KKworICAgIFJlc291cmNlUmVzcG9uc2UoQ0ZVUkxSZXNwb25z
ZVJlZiBjZlJlc3BvbnNlKQorICAgICAgICA6IFJlc291cmNlUmVzcG9uc2VCYXNlKCFjZlJlc3Bv
bnNlKQorICAgICAgICAsIG1fY2ZSZXNwb25zZShjZlJlc3BvbnNlKSB7IH0KKworICAgIFJlc291
cmNlUmVzcG9uc2UoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBsb25n
IGxvbmcgZXhwZWN0ZWRMZW5ndGgsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgY29u
c3QgU3RyaW5nJiBmaWxlbmFtZSkKKyAgICAgICAgOiBSZXNvdXJjZVJlc3BvbnNlQmFzZSh1cmws
IG1pbWVUeXBlLCBleHBlY3RlZExlbmd0aCwgdGV4dEVuY29kaW5nTmFtZSwgZmlsZW5hbWUpCisg
ICAgeworICAgIH0KKworICAgIENGVVJMUmVzcG9uc2VSZWYgY2ZVUkxSZXNwb25zZSgpIGNvbnN0
OworCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlQmFzZTsKKwor
ICAgIHZvaWQgZG9VcGRhdGVSZXNvdXJjZVJlc3BvbnNlKCk7CisKKyAgICBSZXRhaW5QdHI8Q0ZV
UkxSZXNwb25zZVJlZj4gbV9jZlJlc3BvbnNlOworCit9OworCit9IC8vbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vUmVzb3VyY2VSZXNwb25zZV9oCkluZGV4OiBXZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZS5oCShyZXZpc2lvbiAwKQorKysg
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZS5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDU4IEBACisvLyAtKi0gbW9kZTogYysrOyBjLWJhc2ljLW9mZnNldDog
NCAtKi0KKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgUmVzb3VyY2VSZXNwb25zZV9oCisj
ZGVmaW5lIFJlc291cmNlUmVzcG9uc2VfaAorCisjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZUJh
c2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBSZXNvdXJjZVJlc3BvbnNlIDog
cHVibGljIFJlc291cmNlUmVzcG9uc2VCYXNlIHsKK3B1YmxpYzoKKworICAgIFJlc291cmNlUmVz
cG9uc2UoKQorICAgICAgICA6IFJlc291cmNlUmVzcG9uc2VCYXNlKGZhbHNlKQorICAgIHsKKyAg
ICB9CisKKyAgICBSZXNvdXJjZVJlc3BvbnNlKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgbG9uZyBsb25nIGV4cGVjdGVkTGVuZ3RoLCBjb25zdCBTdHJpbmcmIHRleHRF
bmNvZGluZ05hbWUsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCisgICAgICAgIDogUmVzb3VyY2VS
ZXNwb25zZUJhc2UodXJsLCBtaW1lVHlwZSwgZXhwZWN0ZWRMZW5ndGgsIHRleHRFbmNvZGluZ05h
bWUsIGZpbGVuYW1lKQorICAgIHsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNz
IFJlc291cmNlUmVzcG9uc2VCYXNlOworCisgICAgdm9pZCBkb1VwZGF0ZVJlc291cmNlUmVzcG9u
c2UoKQorICAgIHsKKyAgICB9CisKK307CisKK30gLy9uYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy9SZXNvdXJjZVJlc3BvbnNlX2gKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9t
YWMvUmVzb3VyY2VSZXNwb25zZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9tYWMvUmVzb3VyY2VSZXNwb25zZS5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlc3BvbnNlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNzAgQEAKKy8vIC0qLSBtb2RlOiBjKys7IGMtYmFzaWMtb2Zmc2V0OiA0IC0qLQorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
Q09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2lmbmRlZiBSZXNvdXJjZVJlc3BvbnNlX2gKKyNkZWZpbmUgUmVzb3Vy
Y2VSZXNwb25zZV9oCisKKyNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlQmFzZS5oIgorI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworI2lmZGVmIF9fT0JKQ19fCitAY2xhc3MgTlNVUkxSZXNw
b25zZTsKKyNlbHNlCitjbGFzcyBOU1VSTFJlc3BvbnNlOworI2VuZGlmCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgUmVzb3VyY2VSZXNwb25zZSA6IHB1YmxpYyBSZXNvdXJjZVJlc3Bv
bnNlQmFzZSB7CitwdWJsaWM6CisgICAgUmVzb3VyY2VSZXNwb25zZSgpCisgICAgICAgIDogUmVz
b3VyY2VSZXNwb25zZUJhc2UoKQorICAgIHsKKyAgICB9CisKKyAgICBSZXNvdXJjZVJlc3BvbnNl
KE5TVVJMUmVzcG9uc2UqIG5zUmVzcG9uc2UpCisgICAgICAgIDogUmVzb3VyY2VSZXNwb25zZUJh
c2UoIW5zUmVzcG9uc2UpCisgICAgICAgICwgbV9uc1Jlc3BvbnNlKG5zUmVzcG9uc2UpIHsgfQor
ICAgIAorICAgIFJlc291cmNlUmVzcG9uc2UoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBsb25nIGxvbmcgZXhwZWN0ZWRMZW5ndGgsIGNvbnN0IFN0cmluZyYgdGV4dEVu
Y29kaW5nTmFtZSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKKyAgICAgICAgOiBSZXNvdXJjZVJl
c3BvbnNlQmFzZSh1cmwsIG1pbWVUeXBlLCBleHBlY3RlZExlbmd0aCwgdGV4dEVuY29kaW5nTmFt
ZSwgZmlsZW5hbWUpCisgICAgeworICAgIH0KKworICAgIE5TVVJMUmVzcG9uc2UgKm5zVVJMUmVz
cG9uc2UoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgUmVzb3VyY2VSZXNw
b25zZUJhc2U7CisKKyAgICB2b2lkIGRvVXBkYXRlUmVzb3VyY2VSZXNwb25zZSgpOworCisgICAg
UmV0YWluUHRyPE5TVVJMUmVzcG9uc2U+IG1fbnNSZXNwb25zZTsKKworfTsKKworfSAvL25hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvL1Jlc291cmNlUmVzcG9uc2VfaApJbmRleDogV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1Jlc291cmNlUmVzcG9uc2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUmVzb3VyY2VSZXNwb25zZS5oCShyZXZpc2lvbiAw
KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1Jlc291cmNlUmVzcG9uc2UuaAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw2MCBAQAorLy8gLSotIG1vZGU6IGMrKzsgYy1iYXNpYy1vZmZz
ZXQ6IDQgLSotCisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFJlc291cmNlUmVzcG9uc2Vf
aAorI2RlZmluZSBSZXNvdXJjZVJlc3BvbnNlX2gKKworI2luY2x1ZGUgIlJlc291cmNlUmVzcG9u
c2VCYXNlLmgiCisKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIFJlc291cmNlUmVzcG9uc2UgOiBwdWJsaWMgUmVzb3VyY2VSZXNwb25z
ZUJhc2UgeworcHVibGljOgorCisgICAgUmVzb3VyY2VSZXNwb25zZSgpCisgICAgICAgIDogUmVz
b3VyY2VSZXNwb25zZUJhc2UoZmFsc2UpCisgICAgeworICAgIH0KKworICAgIFJlc291cmNlUmVz
cG9uc2UoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBsb25nIGxvbmcg
ZXhwZWN0ZWRMZW5ndGgsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgY29uc3QgU3Ry
aW5nJiBmaWxlbmFtZSkKKyAgICAgICAgOiBSZXNvdXJjZVJlc3BvbnNlQmFzZSh1cmwsIG1pbWVU
eXBlLCBleHBlY3RlZExlbmd0aCwgdGV4dEVuY29kaW5nTmFtZSwgZmlsZW5hbWUpCisgICAgewor
ICAgIH0KKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgUmVzb3VyY2VSZXNwb25zZUJhc2U7
CisKKyAgICB2b2lkIGRvVXBkYXRlUmVzb3VyY2VSZXNwb25zZSgpIHsKKyAgICAgICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICB9CisKK307CisKK30gLy9uYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy9SZXNvdXJjZVJlc3BvbnNlX2gK
</data>
<flag name="review"
          id="6945"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>16707</attachid>
            <date>2007-10-17 14:16:59 -0700</date>
            <delta_ts>2007-11-10 06:08:39 -0800</delta_ts>
            <desc>Patch updated with Darin&apos;s comment</desc>
            <filename>bug15334-updated.patch</filename>
            <type>text/plain</type>
            <size>50948</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNjY5OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTQgQEAKKzIwMDctMTAtMTYgIEp1bGllbiBDaGFmZnJhaXggIDxqdWxpZW4uY2hh
ZmZyYWl4QGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTMzNAor
CisgICAgICAgIFNwbGl0IFJlc291cmNlUmVxdWVzdCBpbnRvIHBsYXRmb3JtIHNwZWNpZmljIGZp
bGVzCisgICAgICAgIAorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VSZXNwb25zZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZVJlc3BvbnNlLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZVJlc3BvbnNlQmFzZS5jcHA6IENvcGllZCBmcm9tIHBsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VSZXNwb25zZS5jcHAuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6
Z2V0UmVzb3VyY2VSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
QmFzZTo6aXNIVFRQKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjp1
cmwpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OnNldFVybCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6bWltZVR5cGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OnNldE1pbWVUeXBlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpleHBlY3RlZENvbnRlbnRMZW5ndGgpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OnNldEV4cGVjdGVkQ29udGVu
dExlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6dGV4dEVu
Y29kaW5nTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2V0
VGV4dEVuY29kaW5nTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFz
ZTo6c3VnZ2VzdGVkRmlsZW5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZUJhc2U6OnNldFN1Z2dlc3RlZEZpbGVuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2VCYXNlOjpodHRwU3RhdHVzQ29kZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlQmFzZTo6c2V0SFRUUFN0YXR1c0NvZGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZUJhc2U6Omh0dHBTdGF0dXNUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2VCYXNlOjpzZXRIVFRQU3RhdHVzVGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6aHR0cEhlYWRlckZpZWxkKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpzZXRIVFRQSGVhZGVyRmllbGQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6Omh0dHBIZWFkZXJGaWVsZHMpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OmlzQXR0YWNobWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2V0RXhwaXJhdGlvbkRhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OmV4cGlyYXRpb25EYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpzZXRMYXN0TW9kaWZpZWREYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpsYXN0TW9kaWZpZWRE
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjp1cGRhdGVSZXNv
dXJjZVJlc3BvbnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9u
c2VCYXNlLmg6IENvcGllZCBmcm9tIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZS5o
LgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OlJlc291cmNlUmVzcG9u
c2VCYXNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2Uu
aDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlOjpSZXNvdXJjZVJl
c3BvbnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25z
ZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OlJlc291cmNl
UmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6ZG9VcGRhdGVS
ZXNvdXJjZVJlc3BvbnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJj
ZVJlc3BvbnNlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6
UmVzb3VyY2VSZXNwb25zZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9xdC9SZXNvdXJj
ZVJlc3BvbnNlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6
UmVzb3VyY2VSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlOjpk
b1VwZGF0ZVJlc291cmNlUmVzcG9uc2UpOgorCiAyMDA3LTEwLTE2ICBEYXJpbiBBZGxlciAgPGRh
cmluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBNaXR6LgpJbmRleDogV2ViQ29y
ZS9XZWJDb3JlLmJhc2UuZXhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5iYXNlLmV4
cAkocmV2aXNpb24gMjY2OTkpCisrKyBXZWJDb3JlL1dlYkNvcmUuYmFzZS5leHAJKHdvcmtpbmcg
Y29weSkKQEAgLTYwMSwxNCArNjAxLDE0IEBAIF9fWk5LN1dlYkNvcmUxNkRlcHJlY2F0ZWRTdHJp
bmcxMWdldE5TU3QKIF9fWk5LN1dlYkNvcmUxNkRlcHJlY2F0ZWRTdHJpbmcyYXRFagogX19aTks3
V2ViQ29yZTE2RGVwcmVjYXRlZFN0cmluZzNtaWRFamoKIF9fWk5LN1dlYkNvcmUxNkRlcHJlY2F0
ZWRTdHJpbmc4ZW5kc1dpdGhFUktTMF8KLV9fWk5LN1dlYkNvcmUxNlJlc291cmNlUmVzcG9uc2Ux
M25zVVJMUmVzcG9uc2VFdgotX19aTks3V2ViQ29yZTE2UmVzb3VyY2VSZXNwb25zZTE0aHR0cFN0
YXR1c0NvZGVFdgotX19aTks3V2ViQ29yZTE2UmVzb3VyY2VSZXNwb25zZTE2aHR0cEhlYWRlckZp
ZWxkc0V2Ci1fX1pOSzdXZWJDb3JlMTZSZXNvdXJjZVJlc3BvbnNlMTZ0ZXh0RW5jb2RpbmdOYW1l
RXYKLV9fWk5LN1dlYkNvcmUxNlJlc291cmNlUmVzcG9uc2UxN3N1Z2dlc3RlZEZpbGVuYW1lRXYK
LV9fWk5LN1dlYkNvcmUxNlJlc291cmNlUmVzcG9uc2UyMWV4cGVjdGVkQ29udGVudExlbmd0aEV2
Ci1fX1pOSzdXZWJDb3JlMTZSZXNvdXJjZVJlc3BvbnNlM3VybEV2Ci1fX1pOSzdXZWJDb3JlMTZS
ZXNvdXJjZVJlc3BvbnNlOG1pbWVUeXBlRXYKK19fWk5LN1dlYkNvcmUxNlJlc291cmNlUmVzcG9u
c2VCYXNlMTNuc1VSTFJlc3BvbnNlRXYKK19fWk5LN1dlYkNvcmUxNlJlc291cmNlUmVzcG9uc2VC
YXNlMTRodHRwU3RhdHVzQ29kZUV2CitfX1pOSzdXZWJDb3JlMTZSZXNvdXJjZVJlc3BvbnNlQmFz
ZTE2aHR0cEhlYWRlckZpZWxkc0V2CitfX1pOSzdXZWJDb3JlMTZSZXNvdXJjZVJlc3BvbnNlQmFz
ZTE2dGV4dEVuY29kaW5nTmFtZUV2CitfX1pOSzdXZWJDb3JlMTZSZXNvdXJjZVJlc3BvbnNlQmFz
ZTE3c3VnZ2VzdGVkRmlsZW5hbWVFdgorX19aTks3V2ViQ29yZTE2UmVzb3VyY2VSZXNwb25zZUJh
c2UyMWV4cGVjdGVkQ29udGVudExlbmd0aEV2CitfX1pOSzdXZWJDb3JlMTZSZXNvdXJjZVJlc3Bv
bnNlQmFzZTN1cmxFdgorX19aTks3V2ViQ29yZTE2UmVzb3VyY2VSZXNwb25zZUJhc2U4bWltZVR5
cGVFdgogX19aTks3V2ViQ29yZTE5UmVzb3VyY2VSZXF1ZXN0QmFzZTE2aHR0cEhlYWRlckZpZWxk
c0V2CiBfX1pOSzdXZWJDb3JlMTlSZXNvdXJjZVJlcXVlc3RCYXNlM3VybEV2CiBfX1pOSzdXZWJD
b3JlMTlSZXNvdXJjZVJlcXVlc3RCYXNlN2lzRW1wdHlFdgpJbmRleDogV2ViQ29yZS9XZWJDb3Jl
LnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUucHJvCShyZXZpc2lvbiAyNjY5OSkK
KysrIFdlYkNvcmUvV2ViQ29yZS5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTY1NCw3ICs2NTQsNyBA
QCBTT1VSQ0VTICs9IFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL1Byb3RlY3Rpb25TcGFjZS5jcHAg
XAogICAgIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwIFwKICAgICBwbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwIFwKLSAgICBwbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlUmVzcG9uc2UuY3BwIFwKKyAgICBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVz
cG9uc2VCYXNlLmNwcCBcCiAgICAgcGxhdGZvcm0vUmVndWxhckV4cHJlc3Npb24uY3BwIFwKICAg
ICBwbGF0Zm9ybS9TY3JvbGxCYXIuY3BwIFwKICMgICAgcGxhdGZvcm0vU2VhcmNoUG9wdXBNZW51
LmNwcCBcCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9u
IDI2Njk5KQorKysgV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtNDM5NywxMSArNDM5NywxMSBAQAogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJ
CQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cbmV0d29ya1xSZXNvdXJj
ZVJlc3BvbnNlLmNwcCINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cbmV0d29ya1xS
ZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZp
bGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cbmV0d29ya1xSZXNvdXJjZVJlc3Bv
bnNlLmgiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcUmVzb3VyY2VS
ZXNwb25zZUJhc2UuaCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsdGVyDQpJbmRl
eDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlLmNwcAkocmV2
aXNpb24gMjY2OTkpCisrKyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25z
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMjQ2ICswLDAgQEAKLS8vIC0qLSBtb2RlOiBjKys7
IGMtYmFzaWMtb2Zmc2V0OiA0IC0qLQotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBD
b21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1ib29sIFJlc291cmNlUmVzcG9uc2U6OmlzSFRUUCgpIGNvbnN0Ci17Ci0gICAgdXBk
YXRlUmVzb3VyY2VSZXNwb25zZSgpOwotICAgIAotICAgIFN0cmluZyBwcm90b2NvbCA9IG1fdXJs
LnByb3RvY29sKCk7Ci0gICAgCi0gICAgcmV0dXJuIGVxdWFsSWdub3JpbmdDYXNlKHByb3RvY29s
LCAiaHR0cCIpICB8fCBlcXVhbElnbm9yaW5nQ2FzZShwcm90b2NvbCwgImh0dHBzIik7Ci19Ci0K
LWNvbnN0IEtVUkwmIFJlc291cmNlUmVzcG9uc2U6OnVybCgpIGNvbnN0Ci17Ci0gICAgdXBkYXRl
UmVzb3VyY2VSZXNwb25zZSgpOwotICAgIAotICAgIHJldHVybiBtX3VybDsgCi19Ci0KLXZvaWQg
UmVzb3VyY2VSZXNwb25zZTo6c2V0VXJsKGNvbnN0IEtVUkwmIHVybCkKLXsKLSAgICB1cGRhdGVS
ZXNvdXJjZVJlc3BvbnNlKCk7Ci0gICAgbV9pc051bGwgPSBmYWxzZTsKLSAgICAKLSAgICBtX3Vy
bCA9IHVybDsgCi19Ci0KLWNvbnN0IFN0cmluZyYgUmVzb3VyY2VSZXNwb25zZTo6bWltZVR5cGUo
KSBjb25zdAotewotICAgIHVwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsKLQotICAgIHJldHVybiBt
X21pbWVUeXBlOyAKLX0KLQotdm9pZCBSZXNvdXJjZVJlc3BvbnNlOjpzZXRNaW1lVHlwZShjb25z
dCBTdHJpbmcmIG1pbWVUeXBlKQotewotICAgIHVwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsKLSAg
ICBtX2lzTnVsbCA9IGZhbHNlOwotICAgIAotICAgIG1fbWltZVR5cGUgPSBtaW1lVHlwZTsgCi19
Ci0KLWxvbmcgbG9uZyBSZXNvdXJjZVJlc3BvbnNlOjpleHBlY3RlZENvbnRlbnRMZW5ndGgoKSBj
b25zdCAKLXsKLSAgICB1cGRhdGVSZXNvdXJjZVJlc3BvbnNlKCk7Ci0KLSAgICByZXR1cm4gbV9l
eHBlY3RlZENvbnRlbnRMZW5ndGg7Ci19Ci0KLXZvaWQgUmVzb3VyY2VSZXNwb25zZTo6c2V0RXhw
ZWN0ZWRDb250ZW50TGVuZ3RoKGxvbmcgbG9uZyBleHBlY3RlZENvbnRlbnRMZW5ndGgpCi17Ci0g
ICAgdXBkYXRlUmVzb3VyY2VSZXNwb25zZSgpOwotICAgIG1faXNOdWxsID0gZmFsc2U7Ci0gICAg
Ci0gICAgbV9leHBlY3RlZENvbnRlbnRMZW5ndGggPSBleHBlY3RlZENvbnRlbnRMZW5ndGg7IAot
fQotCi1jb25zdCBTdHJpbmcmIFJlc291cmNlUmVzcG9uc2U6OnRleHRFbmNvZGluZ05hbWUoKSBj
b25zdAotewotICAgIHVwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsKLQotICAgIHJldHVybiBtX3Rl
eHRFbmNvZGluZ05hbWU7Ci19Ci0KLXZvaWQgUmVzb3VyY2VSZXNwb25zZTo6c2V0VGV4dEVuY29k
aW5nTmFtZShjb25zdCBTdHJpbmcmIGVuY29kaW5nTmFtZSkKLXsKLSAgICB1cGRhdGVSZXNvdXJj
ZVJlc3BvbnNlKCk7Ci0gICAgbV9pc051bGwgPSBmYWxzZTsKLSAgICAKLSAgICBtX3RleHRFbmNv
ZGluZ05hbWUgPSBlbmNvZGluZ05hbWU7IAotfQotCi0vLyBGSVhNRSBzaG91bGQgY29tcHV0ZSB0
aGlzIG9uIHRoZSBmbHkKLWNvbnN0IFN0cmluZyYgUmVzb3VyY2VSZXNwb25zZTo6c3VnZ2VzdGVk
RmlsZW5hbWUoKSBjb25zdAotewotICAgIHVwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsKLQotICAg
IHJldHVybiBtX3N1Z2dlc3RlZEZpbGVuYW1lOwotfQotCi12b2lkIFJlc291cmNlUmVzcG9uc2U6
OnNldFN1Z2dlc3RlZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkTmFtZSkKLXsKLSAg
ICB1cGRhdGVSZXNvdXJjZVJlc3BvbnNlKCk7Ci0gICAgbV9pc051bGwgPSBmYWxzZTsKLSAgICAK
LSAgICBtX3N1Z2dlc3RlZEZpbGVuYW1lID0gc3VnZ2VzdGVkTmFtZTsgCi19Ci0KLWludCBSZXNv
dXJjZVJlc3BvbnNlOjpodHRwU3RhdHVzQ29kZSgpIGNvbnN0Ci17Ci0gICAgdXBkYXRlUmVzb3Vy
Y2VSZXNwb25zZSgpOwotCi0gICAgcmV0dXJuIG1faHR0cFN0YXR1c0NvZGU7IAotfQotCi12b2lk
IFJlc291cmNlUmVzcG9uc2U6OnNldEhUVFBTdGF0dXNDb2RlKGludCBzdGF0dXNDb2RlKQotewot
ICAgIHVwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsKLQotICAgIG1faHR0cFN0YXR1c0NvZGUgPSBz
dGF0dXNDb2RlOwotfQotCi1jb25zdCBTdHJpbmcmIFJlc291cmNlUmVzcG9uc2U6Omh0dHBTdGF0
dXNUZXh0KCkgY29uc3QgCi17Ci0gICAgdXBkYXRlUmVzb3VyY2VSZXNwb25zZSgpOwotCi0gICAg
cmV0dXJuIG1faHR0cFN0YXR1c1RleHQ7IAotfQotCi12b2lkIFJlc291cmNlUmVzcG9uc2U6OnNl
dEhUVFBTdGF0dXNUZXh0KGNvbnN0IFN0cmluZyYgc3RhdHVzVGV4dCkgCi17Ci0gICAgdXBkYXRl
UmVzb3VyY2VSZXNwb25zZSgpOwotCi0gICAgbV9odHRwU3RhdHVzVGV4dCA9IHN0YXR1c1RleHQ7
IAotfQotCi1TdHJpbmcgUmVzb3VyY2VSZXNwb25zZTo6aHR0cEhlYWRlckZpZWxkKGNvbnN0IFN0
cmluZyYgbmFtZSkgY29uc3QKLXsKLSAgICB1cGRhdGVSZXNvdXJjZVJlc3BvbnNlKCk7Ci0KLSAg
ICByZXR1cm4gbV9odHRwSGVhZGVyRmllbGRzLmdldChuYW1lKTsgCi19Ci0KLXZvaWQgUmVzb3Vy
Y2VSZXNwb25zZTo6c2V0SFRUUEhlYWRlckZpZWxkKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSkKLXsKLSAgICB1cGRhdGVSZXNvdXJjZVJlc3BvbnNlKCk7Ci0KLSAgICBt
X2h0dHBIZWFkZXJGaWVsZHMuc2V0KG5hbWUsIHZhbHVlKTsKLX0KLQotY29uc3QgSFRUUEhlYWRl
ck1hcCYgUmVzb3VyY2VSZXNwb25zZTo6aHR0cEhlYWRlckZpZWxkcygpIGNvbnN0Ci17Ci0gICAg
dXBkYXRlUmVzb3VyY2VSZXNwb25zZSgpOwotCi0gICAgcmV0dXJuIG1faHR0cEhlYWRlckZpZWxk
czsgCi19Ci0KLWJvb2wgUmVzb3VyY2VSZXNwb25zZTo6aXNBdHRhY2htZW50KCkgY29uc3QNCi17
DQotICAgIHVwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsNCi0NCi0gICAgU3RyaW5nIHZhbHVlID0g
bV9odHRwSGVhZGVyRmllbGRzLmdldCgiQ29udGVudC1EaXNwb3NpdGlvbiIpOw0KLSAgICBpbnQg
bG9jID0gdmFsdWUuZmluZCgnOycpOw0KLSAgICBpZiAobG9jICE9IC0xKQ0KLSAgICAgICAgdmFs
dWUgPSB2YWx1ZS5sZWZ0KGxvYyk7DQotICAgIHZhbHVlID0gdmFsdWUuc3RyaXBXaGl0ZVNwYWNl
KCk7DQotICAgIHJldHVybiBlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgImF0dGFjaG1lbnQiKTsN
Ci19Ci0KLXZvaWQgUmVzb3VyY2VSZXNwb25zZTo6c2V0RXhwaXJhdGlvbkRhdGUodGltZV90IGV4
cGlyYXRpb25EYXRlKQotewotICAgIHVwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsKLQotICAgIG1f
ZXhwaXJhdGlvbkRhdGUgPSBleHBpcmF0aW9uRGF0ZTsKLX0KLQotdGltZV90IFJlc291cmNlUmVz
cG9uc2U6OmV4cGlyYXRpb25EYXRlKCkgY29uc3QKLXsKLSAgICB1cGRhdGVSZXNvdXJjZVJlc3Bv
bnNlKCk7Ci0KLSAgICByZXR1cm4gbV9leHBpcmF0aW9uRGF0ZTsgCi19Ci0KLXZvaWQgUmVzb3Vy
Y2VSZXNwb25zZTo6c2V0TGFzdE1vZGlmaWVkRGF0ZSh0aW1lX3QgbGFzdE1vZGlmaWVkRGF0ZSkg
Ci17Ci0gICAgdXBkYXRlUmVzb3VyY2VSZXNwb25zZSgpOwotCi0gICAgbV9sYXN0TW9kaWZpZWRE
YXRlID0gbGFzdE1vZGlmaWVkRGF0ZTsgCi19Ci0KLXRpbWVfdCBSZXNvdXJjZVJlc3BvbnNlOjps
YXN0TW9kaWZpZWREYXRlKCkgY29uc3QKLXsKLSAgICB1cGRhdGVSZXNvdXJjZVJlc3BvbnNlKCk7
Ci0KLSAgICByZXR1cm4gbV9sYXN0TW9kaWZpZWREYXRlOyAKLX0KLQotdm9pZCBSZXNvdXJjZVJl
c3BvbnNlOjp1cGRhdGVSZXNvdXJjZVJlc3BvbnNlKCkgY29uc3QKLXsKLSNpZiBQTEFURk9STShN
QUMpIHx8IFVTRShDRk5FVFdPUkspCi0gICAgaWYgKG1faXNVcFRvRGF0ZSkKLSAgICAgICAgcmV0
dXJuOwotICAgIAotICAgIGNvbnN0X2Nhc3Q8UmVzb3VyY2VSZXNwb25zZSo+KHRoaXMpLT5kb1Vw
ZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsKLSAgICBtX2lzVXBUb0RhdGUgPSB0cnVlOwotI2VuZGlm
Ci19Ci0KLWJvb2wgb3BlcmF0b3I9PShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBhLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiBiKQotewotICAgIGlmIChhLmlzTnVsbCgpICE9IGIuaXNOdWxsKCkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsgIAotICAgIGlmIChhLnVybCgpICE9IGIudXJsKCkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoYS5taW1lVHlwZSgpICE9IGIubWltZVR5cGUo
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChhLmV4cGVjdGVkQ29udGVudExlbmd0
aCgpICE9IGIuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICBpZiAoYS50ZXh0RW5jb2RpbmdOYW1lKCkgIT0gYi50ZXh0RW5jb2RpbmdOYW1lKCkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoYS5zdWdnZXN0ZWRGaWxlbmFtZSgpICE9IGIu
c3VnZ2VzdGVkRmlsZW5hbWUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChhLmh0
dHBTdGF0dXNDb2RlKCkgIT0gYi5odHRwU3RhdHVzQ29kZSgpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgaWYgKGEuaHR0cFN0YXR1c1RleHQoKSAhPSBiLmh0dHBTdGF0dXNUZXh0KCkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoYS5odHRwSGVhZGVyRmllbGRzKCkgIT0gYi5o
dHRwSGVhZGVyRmllbGRzKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoYS5leHBp
cmF0aW9uRGF0ZSgpICE9IGIuZXhwaXJhdGlvbkRhdGUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBpZiAoYS5uc1VSTFJlc3BvbnNlKCkgIT0gYi5uc1VS
TFJlc3BvbnNlKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgotICAgIHJldHVybiB0
cnVlOwotIH0KLQotfQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVz
cG9uc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VS
ZXNwb25zZS5oCShyZXZpc2lvbiAyNjY5OSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZVJlc3BvbnNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMTU5ICswLDAgQEAKLS8vIC0q
LSBtb2RlOiBjKys7IGMtYmFzaWMtb2Zmc2V0OiA0IC0qLQotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4g
T1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQot
I2lmbmRlZiBSZXNvdXJjZVJlc3BvbnNlX2gKLSNkZWZpbmUgUmVzb3VyY2VSZXNwb25zZV9oCi0K
LSNpbmNsdWRlICJIVFRQSGVhZGVyTWFwLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgotCi0jaWYgUExB
VEZPUk0oTUFDKQotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLSNpZmRlZiBfX09CSkNfXwot
QGNsYXNzIE5TVVJMUmVzcG9uc2U7Ci0jZWxzZQotY2xhc3MgTlNVUkxSZXNwb25zZTsKLSNlbmRp
ZgotI2VsaWYgVVNFKENGTkVUV09SSykKLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci10eXBl
ZGVmIHN0cnVjdCBfQ0ZVUkxSZXNwb25zZSogQ0ZVUkxSZXNwb25zZVJlZjsKLSNlbmRpZgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFJlc291cmNlUmVzcG9uc2UgewotcHVibGljOgot
Ci0gICAgUmVzb3VyY2VSZXNwb25zZSgpIAotICAgICAgICA6IG1fZXhwZWN0ZWRDb250ZW50TGVu
Z3RoKDApCi0gICAgICAgICwgbV9odHRwU3RhdHVzQ29kZSgwKQotICAgICAgICAsIG1fZXhwaXJh
dGlvbkRhdGUoMCkKLSAgICAgICAgLCBtX2lzVXBUb0RhdGUodHJ1ZSkKLSAgICAgICAgLCBtX2lz
TnVsbCh0cnVlKQotICAgIHsKLSAgICB9Ci0KLSAgICBSZXNvdXJjZVJlc3BvbnNlKGNvbnN0IEtV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgbG9uZyBsb25nIGV4cGVjdGVkTGVuZ3Ro
LCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUp
Ci0gICAgICAgIDogbV91cmwodXJsKQotICAgICAgICAsIG1fbWltZVR5cGUobWltZVR5cGUpCi0g
ICAgICAgICwgbV9leHBlY3RlZENvbnRlbnRMZW5ndGgoZXhwZWN0ZWRMZW5ndGgpCi0gICAgICAg
ICwgbV90ZXh0RW5jb2RpbmdOYW1lKHRleHRFbmNvZGluZ05hbWUpCi0gICAgICAgICwgbV9zdWdn
ZXN0ZWRGaWxlbmFtZShmaWxlbmFtZSkKLSAgICAgICAgLCBtX2h0dHBTdGF0dXNDb2RlKDApCi0g
ICAgICAgICwgbV9leHBpcmF0aW9uRGF0ZSgwKQotICAgICAgICAsIG1faXNVcFRvRGF0ZSh0cnVl
KQotICAgICAgICAsIG1faXNOdWxsKGZhbHNlKQotICAgIHsKLSAgICB9Ci0gCi0gICAgYm9vbCBp
c051bGwoKSBjb25zdCB7IHJldHVybiBtX2lzTnVsbDsgfQotICAgIGJvb2wgaXNIVFRQKCkgY29u
c3Q7Ci0gICAgCi0gICAgY29uc3QgS1VSTCYgdXJsKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRVcmwo
Y29uc3QgS1VSTCYgdXJsKTsKLQotICAgIGNvbnN0IFN0cmluZyYgbWltZVR5cGUoKSBjb25zdDsK
LSAgICB2b2lkIHNldE1pbWVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwotCi0gICAgbG9u
ZyBsb25nIGV4cGVjdGVkQ29udGVudExlbmd0aCgpIGNvbnN0OwotICAgIHZvaWQgc2V0RXhwZWN0
ZWRDb250ZW50TGVuZ3RoKGxvbmcgbG9uZyBleHBlY3RlZENvbnRlbnRMZW5ndGgpOwotCi0gICAg
Y29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRUZXh0
RW5jb2RpbmdOYW1lKGNvbnN0IFN0cmluZyYgbmFtZSk7Ci0KLSAgICAvLyBGSVhNRSBzaG91bGQg
Y29tcHV0ZSB0aGlzIG9uIHRoZSBmbHkKLSAgICBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVu
YW1lKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRTdWdnZXN0ZWRGaWxlbmFtZShjb25zdCBTdHJpbmcm
KTsKLQotICAgIGludCBodHRwU3RhdHVzQ29kZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0SFRUUFN0
YXR1c0NvZGUoaW50KTsKLSAgICAKLSAgICBjb25zdCBTdHJpbmcmIGh0dHBTdGF0dXNUZXh0KCkg
Y29uc3Q7Ci0gICAgdm9pZCBzZXRIVFRQU3RhdHVzVGV4dChjb25zdCBTdHJpbmcmKTsKLSAgICAK
LSAgICBTdHJpbmcgaHR0cEhlYWRlckZpZWxkKGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3Q7Ci0g
ICAgdm9pZCBzZXRIVFRQSGVhZGVyRmllbGQoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bmcmIHZhbHVlKTsKLSAgICBjb25zdCBIVFRQSGVhZGVyTWFwJiBodHRwSGVhZGVyRmllbGRzKCkg
Y29uc3Q7Ci0KLSAgICBib29sIGlzTXVsdGlwYXJ0KCkgY29uc3QgeyByZXR1cm4gbWltZVR5cGUo
KSA9PSAibXVsdGlwYXJ0L3gtbWl4ZWQtcmVwbGFjZSI7IH0KLQotICAgIGJvb2wgaXNBdHRhY2ht
ZW50KCkgY29uc3Q7Ci0KLSAgICB2b2lkIHNldEV4cGlyYXRpb25EYXRlKHRpbWVfdCk7Ci0gICAg
dGltZV90IGV4cGlyYXRpb25EYXRlKCkgY29uc3Q7Ci0KLSAgICB2b2lkIHNldExhc3RNb2RpZmll
ZERhdGUodGltZV90KTsKLSAgICB0aW1lX3QgbGFzdE1vZGlmaWVkRGF0ZSgpIGNvbnN0OwotCi0j
aWYgUExBVEZPUk0oTUFDKQotICAgIFJlc291cmNlUmVzcG9uc2UoTlNVUkxSZXNwb25zZSogbnNS
ZXNwb25zZSkKLSAgICAgICAgOiBtX2lzVXBUb0RhdGUoZmFsc2UpCi0gICAgICAgICwgbV9pc051
bGwoIW5zUmVzcG9uc2UpCi0gICAgICAgICwgbV9uc1Jlc3BvbnNlKG5zUmVzcG9uc2UpIHsgfQot
ICAgIAotICAgIE5TVVJMUmVzcG9uc2UgKm5zVVJMUmVzcG9uc2UoKSBjb25zdDsKLSNlbGlmIFVT
RShDRk5FVFdPUkspCi0gICAgUmVzb3VyY2VSZXNwb25zZShDRlVSTFJlc3BvbnNlUmVmIGNmUmVz
cG9uc2UpCi0gICAgICAgIDogbV9pc1VwVG9EYXRlKGZhbHNlKQotICAgICAgICAsIG1faXNOdWxs
KCFjZlJlc3BvbnNlKQotICAgICAgICAsIG1fY2ZSZXNwb25zZShjZlJlc3BvbnNlKSB7IH0KLSAg
ICAKLSAgICBDRlVSTFJlc3BvbnNlUmVmIGNmVVJMUmVzcG9uc2UoKSBjb25zdDsKLSNlbmRpZgot
ICAgIAotIHByaXZhdGU6Ci0gICAgdm9pZCB1cGRhdGVSZXNvdXJjZVJlc3BvbnNlKCkgY29uc3Q7
IAotICAgIAotI2lmIFBMQVRGT1JNKE1BQykgfHwgVVNFKENGTkVUV09SSykKLSAgICB2b2lkIGRv
VXBkYXRlUmVzb3VyY2VSZXNwb25zZSgpOwotI2VuZGlmCi0gICAgCi0gICAgS1VSTCBtX3VybDsK
LSAgICBTdHJpbmcgbV9taW1lVHlwZTsKLSAgICBsb25nIGxvbmcgbV9leHBlY3RlZENvbnRlbnRM
ZW5ndGg7Ci0gICAgU3RyaW5nIG1fdGV4dEVuY29kaW5nTmFtZTsKLSAgICBTdHJpbmcgbV9zdWdn
ZXN0ZWRGaWxlbmFtZTsKLSAgICBpbnQgbV9odHRwU3RhdHVzQ29kZTsKLSAgICBTdHJpbmcgbV9o
dHRwU3RhdHVzVGV4dDsKLSAgICBIVFRQSGVhZGVyTWFwIG1faHR0cEhlYWRlckZpZWxkczsKLSAg
ICB0aW1lX3QgbV9leHBpcmF0aW9uRGF0ZTsKLSAgICB0aW1lX3QgbV9sYXN0TW9kaWZpZWREYXRl
OwotICAgIG11dGFibGUgYm9vbCBtX2lzVXBUb0RhdGU7Ci0gICAgYm9vbCBtX2lzTnVsbDsKLSNp
ZiBQTEFURk9STShNQUMpCi0gICAgUmV0YWluUHRyPE5TVVJMUmVzcG9uc2U+IG1fbnNSZXNwb25z
ZTsKLSNlbGlmIFVTRShDRk5FVFdPUkspCi0gICAgUmV0YWluUHRyPENGVVJMUmVzcG9uc2VSZWY+
IG1fY2ZSZXNwb25zZTsgICAgICAKLSNlbmRpZgotICAgIAotfTsKLQotYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGEsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGIpOwot
aW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBhLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiBiKSB7IHJldHVybiAhKGEgPT0gYik7IH0KLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gUmVzb3VyY2VSZXNwb25zZV9oCkluZGV4OiBXZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAJKHJldmlz
aW9uIDI2MDY2KQkoZnJvbSBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25z
ZS5jcHA6MjYwNjYpCisrKyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25z
ZUJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjQ2IEBACisvLyAtKi0gbW9kZTog
YysrOyBjLWJhc2ljLW9mZnNldDogNCAtKi0KKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBw
bGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworYm9vbCBSZXNvdXJjZVJlc3BvbnNlOjppc0hUVFAoKSBjb25zdAoreworICAg
IHVwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsKKyAgICAKKyAgICBTdHJpbmcgcHJvdG9jb2wgPSBt
X3VybC5wcm90b2NvbCgpOworICAgIAorICAgIHJldHVybiBlcXVhbElnbm9yaW5nQ2FzZShwcm90
b2NvbCwgImh0dHAiKSAgfHwgZXF1YWxJZ25vcmluZ0Nhc2UocHJvdG9jb2wsICJodHRwcyIpOwor
fQorCitjb25zdCBLVVJMJiBSZXNvdXJjZVJlc3BvbnNlOjp1cmwoKSBjb25zdAoreworICAgIHVw
ZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsKKyAgICAKKyAgICByZXR1cm4gbV91cmw7IAorfQorCit2
b2lkIFJlc291cmNlUmVzcG9uc2U6OnNldFVybChjb25zdCBLVVJMJiB1cmwpCit7CisgICAgdXBk
YXRlUmVzb3VyY2VSZXNwb25zZSgpOworICAgIG1faXNOdWxsID0gZmFsc2U7CisgICAgCisgICAg
bV91cmwgPSB1cmw7IAorfQorCitjb25zdCBTdHJpbmcmIFJlc291cmNlUmVzcG9uc2U6Om1pbWVU
eXBlKCkgY29uc3QKK3sKKyAgICB1cGRhdGVSZXNvdXJjZVJlc3BvbnNlKCk7CisKKyAgICByZXR1
cm4gbV9taW1lVHlwZTsgCit9CisKK3ZvaWQgUmVzb3VyY2VSZXNwb25zZTo6c2V0TWltZVR5cGUo
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKK3sKKyAgICB1cGRhdGVSZXNvdXJjZVJlc3BvbnNlKCk7
CisgICAgbV9pc051bGwgPSBmYWxzZTsKKyAgICAKKyAgICBtX21pbWVUeXBlID0gbWltZVR5cGU7
IAorfQorCitsb25nIGxvbmcgUmVzb3VyY2VSZXNwb25zZTo6ZXhwZWN0ZWRDb250ZW50TGVuZ3Ro
KCkgY29uc3QgCit7CisgICAgdXBkYXRlUmVzb3VyY2VSZXNwb25zZSgpOworCisgICAgcmV0dXJu
IG1fZXhwZWN0ZWRDb250ZW50TGVuZ3RoOworfQorCit2b2lkIFJlc291cmNlUmVzcG9uc2U6OnNl
dEV4cGVjdGVkQ29udGVudExlbmd0aChsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50TGVuZ3RoKQor
eworICAgIHVwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsKKyAgICBtX2lzTnVsbCA9IGZhbHNlOwor
ICAgIAorICAgIG1fZXhwZWN0ZWRDb250ZW50TGVuZ3RoID0gZXhwZWN0ZWRDb250ZW50TGVuZ3Ro
OyAKK30KKworY29uc3QgU3RyaW5nJiBSZXNvdXJjZVJlc3BvbnNlOjp0ZXh0RW5jb2RpbmdOYW1l
KCkgY29uc3QKK3sKKyAgICB1cGRhdGVSZXNvdXJjZVJlc3BvbnNlKCk7CisKKyAgICByZXR1cm4g
bV90ZXh0RW5jb2RpbmdOYW1lOworfQorCit2b2lkIFJlc291cmNlUmVzcG9uc2U6OnNldFRleHRF
bmNvZGluZ05hbWUoY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUpCit7CisgICAgdXBkYXRlUmVz
b3VyY2VSZXNwb25zZSgpOworICAgIG1faXNOdWxsID0gZmFsc2U7CisgICAgCisgICAgbV90ZXh0
RW5jb2RpbmdOYW1lID0gZW5jb2RpbmdOYW1lOyAKK30KKworLy8gRklYTUUgc2hvdWxkIGNvbXB1
dGUgdGhpcyBvbiB0aGUgZmx5Citjb25zdCBTdHJpbmcmIFJlc291cmNlUmVzcG9uc2U6OnN1Z2dl
c3RlZEZpbGVuYW1lKCkgY29uc3QKK3sKKyAgICB1cGRhdGVSZXNvdXJjZVJlc3BvbnNlKCk7CisK
KyAgICByZXR1cm4gbV9zdWdnZXN0ZWRGaWxlbmFtZTsKK30KKwordm9pZCBSZXNvdXJjZVJlc3Bv
bnNlOjpzZXRTdWdnZXN0ZWRGaWxlbmFtZShjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZE5hbWUpCit7
CisgICAgdXBkYXRlUmVzb3VyY2VSZXNwb25zZSgpOworICAgIG1faXNOdWxsID0gZmFsc2U7Cisg
ICAgCisgICAgbV9zdWdnZXN0ZWRGaWxlbmFtZSA9IHN1Z2dlc3RlZE5hbWU7IAorfQorCitpbnQg
UmVzb3VyY2VSZXNwb25zZTo6aHR0cFN0YXR1c0NvZGUoKSBjb25zdAoreworICAgIHVwZGF0ZVJl
c291cmNlUmVzcG9uc2UoKTsKKworICAgIHJldHVybiBtX2h0dHBTdGF0dXNDb2RlOyAKK30KKwor
dm9pZCBSZXNvdXJjZVJlc3BvbnNlOjpzZXRIVFRQU3RhdHVzQ29kZShpbnQgc3RhdHVzQ29kZSkK
K3sKKyAgICB1cGRhdGVSZXNvdXJjZVJlc3BvbnNlKCk7CisKKyAgICBtX2h0dHBTdGF0dXNDb2Rl
ID0gc3RhdHVzQ29kZTsKK30KKworY29uc3QgU3RyaW5nJiBSZXNvdXJjZVJlc3BvbnNlOjpodHRw
U3RhdHVzVGV4dCgpIGNvbnN0IAoreworICAgIHVwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsKKwor
ICAgIHJldHVybiBtX2h0dHBTdGF0dXNUZXh0OyAKK30KKwordm9pZCBSZXNvdXJjZVJlc3BvbnNl
OjpzZXRIVFRQU3RhdHVzVGV4dChjb25zdCBTdHJpbmcmIHN0YXR1c1RleHQpIAoreworICAgIHVw
ZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsKKworICAgIG1faHR0cFN0YXR1c1RleHQgPSBzdGF0dXNU
ZXh0OyAKK30KKworU3RyaW5nIFJlc291cmNlUmVzcG9uc2U6Omh0dHBIZWFkZXJGaWVsZChjb25z
dCBTdHJpbmcmIG5hbWUpIGNvbnN0Cit7CisgICAgdXBkYXRlUmVzb3VyY2VSZXNwb25zZSgpOwor
CisgICAgcmV0dXJuIG1faHR0cEhlYWRlckZpZWxkcy5nZXQobmFtZSk7IAorfQorCit2b2lkIFJl
c291cmNlUmVzcG9uc2U6OnNldEhUVFBIZWFkZXJGaWVsZChjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgdXBkYXRlUmVzb3VyY2VSZXNwb25zZSgpOworCisg
ICAgbV9odHRwSGVhZGVyRmllbGRzLnNldChuYW1lLCB2YWx1ZSk7Cit9CisKK2NvbnN0IEhUVFBI
ZWFkZXJNYXAmIFJlc291cmNlUmVzcG9uc2U6Omh0dHBIZWFkZXJGaWVsZHMoKSBjb25zdAorewor
ICAgIHVwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsKKworICAgIHJldHVybiBtX2h0dHBIZWFkZXJG
aWVsZHM7IAorfQorCitib29sIFJlc291cmNlUmVzcG9uc2U6OmlzQXR0YWNobWVudCgpIGNvbnN0
DQorew0KKyAgICB1cGRhdGVSZXNvdXJjZVJlc3BvbnNlKCk7DQorDQorICAgIFN0cmluZyB2YWx1
ZSA9IG1faHR0cEhlYWRlckZpZWxkcy5nZXQoIkNvbnRlbnQtRGlzcG9zaXRpb24iKTsNCisgICAg
aW50IGxvYyA9IHZhbHVlLmZpbmQoJzsnKTsNCisgICAgaWYgKGxvYyAhPSAtMSkNCisgICAgICAg
IHZhbHVlID0gdmFsdWUubGVmdChsb2MpOw0KKyAgICB2YWx1ZSA9IHZhbHVlLnN0cmlwV2hpdGVT
cGFjZSgpOw0KKyAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUsICJhdHRhY2htZW50
Iik7DQorfQorCit2b2lkIFJlc291cmNlUmVzcG9uc2U6OnNldEV4cGlyYXRpb25EYXRlKHRpbWVf
dCBleHBpcmF0aW9uRGF0ZSkKK3sKKyAgICB1cGRhdGVSZXNvdXJjZVJlc3BvbnNlKCk7CisKKyAg
ICBtX2V4cGlyYXRpb25EYXRlID0gZXhwaXJhdGlvbkRhdGU7Cit9CisKK3RpbWVfdCBSZXNvdXJj
ZVJlc3BvbnNlOjpleHBpcmF0aW9uRGF0ZSgpIGNvbnN0Cit7CisgICAgdXBkYXRlUmVzb3VyY2VS
ZXNwb25zZSgpOworCisgICAgcmV0dXJuIG1fZXhwaXJhdGlvbkRhdGU7IAorfQorCit2b2lkIFJl
c291cmNlUmVzcG9uc2U6OnNldExhc3RNb2RpZmllZERhdGUodGltZV90IGxhc3RNb2RpZmllZERh
dGUpIAoreworICAgIHVwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsKKworICAgIG1fbGFzdE1vZGlm
aWVkRGF0ZSA9IGxhc3RNb2RpZmllZERhdGU7IAorfQorCit0aW1lX3QgUmVzb3VyY2VSZXNwb25z
ZTo6bGFzdE1vZGlmaWVkRGF0ZSgpIGNvbnN0Cit7CisgICAgdXBkYXRlUmVzb3VyY2VSZXNwb25z
ZSgpOworCisgICAgcmV0dXJuIG1fbGFzdE1vZGlmaWVkRGF0ZTsgCit9CisKK3ZvaWQgUmVzb3Vy
Y2VSZXNwb25zZTo6dXBkYXRlUmVzb3VyY2VSZXNwb25zZSgpIGNvbnN0Cit7CisjaWYgUExBVEZP
Uk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKQorICAgIGlmIChtX2lzVXBUb0RhdGUpCisgICAgICAg
IHJldHVybjsKKyAgICAKKyAgICBjb25zdF9jYXN0PFJlc291cmNlUmVzcG9uc2UqPih0aGlzKS0+
ZG9VcGRhdGVSZXNvdXJjZVJlc3BvbnNlKCk7CisgICAgbV9pc1VwVG9EYXRlID0gdHJ1ZTsKKyNl
bmRpZgorfQorCitib29sIG9wZXJhdG9yPT0oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgYSwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgYikKK3sKKyAgICBpZiAoYS5pc051bGwoKSAhPSBiLmlzTnVs
bCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7ICAKKyAgICBpZiAoYS51cmwoKSAhPSBiLnVybCgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGEubWltZVR5cGUoKSAhPSBiLm1pbWVU
eXBlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoYS5leHBlY3RlZENvbnRlbnRM
ZW5ndGgoKSAhPSBiLmV4cGVjdGVkQ29udGVudExlbmd0aCgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgaWYgKGEudGV4dEVuY29kaW5nTmFtZSgpICE9IGIudGV4dEVuY29kaW5nTmFtZSgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGEuc3VnZ2VzdGVkRmlsZW5hbWUoKSAh
PSBiLnN1Z2dlc3RlZEZpbGVuYW1lKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAo
YS5odHRwU3RhdHVzQ29kZSgpICE9IGIuaHR0cFN0YXR1c0NvZGUoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGlmIChhLmh0dHBTdGF0dXNUZXh0KCkgIT0gYi5odHRwU3RhdHVzVGV4dCgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGEuaHR0cEhlYWRlckZpZWxkcygpICE9
IGIuaHR0cEhlYWRlckZpZWxkcygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGEu
ZXhwaXJhdGlvbkRhdGUoKSAhPSBiLmV4cGlyYXRpb25EYXRlKCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyNpZiBQTEFURk9STShNQUMpCisgICAgaWYgKGEubnNVUkxSZXNwb25zZSgpICE9IGIu
bnNVUkxSZXNwb25zZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKyAgICByZXR1
cm4gdHJ1ZTsKKyB9CisKK30KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZVJlc3BvbnNlQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAkocmV2aXNpb24gMjYwNjYpCisrKyBXZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNSwyNyArMjUsMzMgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
UmVzb3VyY2VSZXNwb25zZUJhc2UuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotYm9vbCBSZXNvdXJjZVJlc3BvbnNlOjppc0hUVFAoKSBj
b25zdAoraW5saW5lIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIFJlc291cmNlUmVzcG9uc2VCYXNl
Ojphc1Jlc291cmNlUmVzcG9uc2UoKSBjb25zdAoreworICAgIHJldHVybiAqc3RhdGljX2Nhc3Q8
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSo+KHRoaXMpOworfQorCitib29sIFJlc291cmNlUmVzcG9u
c2VCYXNlOjppc0hUVFAoKSBjb25zdAogewogICAgIHVwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsK
LSAgICAKKwogICAgIFN0cmluZyBwcm90b2NvbCA9IG1fdXJsLnByb3RvY29sKCk7Ci0gICAgCisK
ICAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0Nhc2UocHJvdG9jb2wsICJodHRwIikgIHx8IGVxdWFs
SWdub3JpbmdDYXNlKHByb3RvY29sLCAiaHR0cHMiKTsKIH0KIAotY29uc3QgS1VSTCYgUmVzb3Vy
Y2VSZXNwb25zZTo6dXJsKCkgY29uc3QKK2NvbnN0IEtVUkwmIFJlc291cmNlUmVzcG9uc2VCYXNl
Ojp1cmwoKSBjb25zdAogewogICAgIHVwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsKICAgICAKICAg
ICByZXR1cm4gbV91cmw7IAogfQogCi12b2lkIFJlc291cmNlUmVzcG9uc2U6OnNldFVybChjb25z
dCBLVVJMJiB1cmwpCit2b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzZXRVcmwoY29uc3QgS1VS
TCYgdXJsKQogewogICAgIHVwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsKICAgICBtX2lzTnVsbCA9
IGZhbHNlOwpAQCAtNTMsMTQgKzU5LDE0IEBAIHZvaWQgUmVzb3VyY2VSZXNwb25zZTo6c2V0VXJs
KGNvbnN0IEtVUkwKICAgICBtX3VybCA9IHVybDsgCiB9CiAKLWNvbnN0IFN0cmluZyYgUmVzb3Vy
Y2VSZXNwb25zZTo6bWltZVR5cGUoKSBjb25zdAorY29uc3QgU3RyaW5nJiBSZXNvdXJjZVJlc3Bv
bnNlQmFzZTo6bWltZVR5cGUoKSBjb25zdAogewogICAgIHVwZGF0ZVJlc291cmNlUmVzcG9uc2Uo
KTsKIAogICAgIHJldHVybiBtX21pbWVUeXBlOyAKIH0KIAotdm9pZCBSZXNvdXJjZVJlc3BvbnNl
OjpzZXRNaW1lVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQordm9pZCBSZXNvdXJjZVJlc3Bv
bnNlQmFzZTo6c2V0TWltZVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsKICAgICB1cGRh
dGVSZXNvdXJjZVJlc3BvbnNlKCk7CiAgICAgbV9pc051bGwgPSBmYWxzZTsKQEAgLTY4LDE0ICs3
NCwxNCBAQCB2b2lkIFJlc291cmNlUmVzcG9uc2U6OnNldE1pbWVUeXBlKGNvbnN0CiAgICAgbV9t
aW1lVHlwZSA9IG1pbWVUeXBlOyAKIH0KIAotbG9uZyBsb25nIFJlc291cmNlUmVzcG9uc2U6OmV4
cGVjdGVkQ29udGVudExlbmd0aCgpIGNvbnN0IAorbG9uZyBsb25nIFJlc291cmNlUmVzcG9uc2VC
YXNlOjpleHBlY3RlZENvbnRlbnRMZW5ndGgoKSBjb25zdCAKIHsKICAgICB1cGRhdGVSZXNvdXJj
ZVJlc3BvbnNlKCk7CiAKICAgICByZXR1cm4gbV9leHBlY3RlZENvbnRlbnRMZW5ndGg7CiB9CiAK
LXZvaWQgUmVzb3VyY2VSZXNwb25zZTo6c2V0RXhwZWN0ZWRDb250ZW50TGVuZ3RoKGxvbmcgbG9u
ZyBleHBlY3RlZENvbnRlbnRMZW5ndGgpCit2b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzZXRF
eHBlY3RlZENvbnRlbnRMZW5ndGgobG9uZyBsb25nIGV4cGVjdGVkQ29udGVudExlbmd0aCkKIHsK
ICAgICB1cGRhdGVSZXNvdXJjZVJlc3BvbnNlKCk7CiAgICAgbV9pc051bGwgPSBmYWxzZTsKQEAg
LTgzLDE0ICs4OSwxNCBAQCB2b2lkIFJlc291cmNlUmVzcG9uc2U6OnNldEV4cGVjdGVkQ29udGVu
CiAgICAgbV9leHBlY3RlZENvbnRlbnRMZW5ndGggPSBleHBlY3RlZENvbnRlbnRMZW5ndGg7IAog
fQogCi1jb25zdCBTdHJpbmcmIFJlc291cmNlUmVzcG9uc2U6OnRleHRFbmNvZGluZ05hbWUoKSBj
b25zdAorY29uc3QgU3RyaW5nJiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6dGV4dEVuY29kaW5nTmFt
ZSgpIGNvbnN0CiB7CiAgICAgdXBkYXRlUmVzb3VyY2VSZXNwb25zZSgpOwogCiAgICAgcmV0dXJu
IG1fdGV4dEVuY29kaW5nTmFtZTsKIH0KIAotdm9pZCBSZXNvdXJjZVJlc3BvbnNlOjpzZXRUZXh0
RW5jb2RpbmdOYW1lKGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lKQordm9pZCBSZXNvdXJjZVJl
c3BvbnNlQmFzZTo6c2V0VGV4dEVuY29kaW5nTmFtZShjb25zdCBTdHJpbmcmIGVuY29kaW5nTmFt
ZSkKIHsKICAgICB1cGRhdGVSZXNvdXJjZVJlc3BvbnNlKCk7CiAgICAgbV9pc051bGwgPSBmYWxz
ZTsKQEAgLTk5LDE0ICsxMDUsMTQgQEAgdm9pZCBSZXNvdXJjZVJlc3BvbnNlOjpzZXRUZXh0RW5j
b2RpbmdOYQogfQogCiAvLyBGSVhNRSBzaG91bGQgY29tcHV0ZSB0aGlzIG9uIHRoZSBmbHkKLWNv
bnN0IFN0cmluZyYgUmVzb3VyY2VSZXNwb25zZTo6c3VnZ2VzdGVkRmlsZW5hbWUoKSBjb25zdAor
Y29uc3QgU3RyaW5nJiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c3VnZ2VzdGVkRmlsZW5hbWUoKSBj
b25zdAogewogICAgIHVwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsKIAogICAgIHJldHVybiBtX3N1
Z2dlc3RlZEZpbGVuYW1lOwogfQogCi12b2lkIFJlc291cmNlUmVzcG9uc2U6OnNldFN1Z2dlc3Rl
ZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkTmFtZSkKK3ZvaWQgUmVzb3VyY2VSZXNw
b25zZUJhc2U6OnNldFN1Z2dlc3RlZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkTmFt
ZSkKIHsKICAgICB1cGRhdGVSZXNvdXJjZVJlc3BvbnNlKCk7CiAgICAgbV9pc051bGwgPSBmYWxz
ZTsKQEAgLTExNCwxMDQgKzEyMCwxMDMgQEAgdm9pZCBSZXNvdXJjZVJlc3BvbnNlOjpzZXRTdWdn
ZXN0ZWRGaWxlbgogICAgIG1fc3VnZ2VzdGVkRmlsZW5hbWUgPSBzdWdnZXN0ZWROYW1lOyAKIH0K
IAotaW50IFJlc291cmNlUmVzcG9uc2U6Omh0dHBTdGF0dXNDb2RlKCkgY29uc3QKK2ludCBSZXNv
dXJjZVJlc3BvbnNlQmFzZTo6aHR0cFN0YXR1c0NvZGUoKSBjb25zdAogewogICAgIHVwZGF0ZVJl
c291cmNlUmVzcG9uc2UoKTsKIAotICAgIHJldHVybiBtX2h0dHBTdGF0dXNDb2RlOyAKKyAgICBy
ZXR1cm4gbV9odHRwU3RhdHVzQ29kZTsKIH0KIAotdm9pZCBSZXNvdXJjZVJlc3BvbnNlOjpzZXRI
VFRQU3RhdHVzQ29kZShpbnQgc3RhdHVzQ29kZSkKK3ZvaWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6
OnNldEhUVFBTdGF0dXNDb2RlKGludCBzdGF0dXNDb2RlKQogewogICAgIHVwZGF0ZVJlc291cmNl
UmVzcG9uc2UoKTsKIAogICAgIG1faHR0cFN0YXR1c0NvZGUgPSBzdGF0dXNDb2RlOwogfQogCi1j
b25zdCBTdHJpbmcmIFJlc291cmNlUmVzcG9uc2U6Omh0dHBTdGF0dXNUZXh0KCkgY29uc3QgCitj
b25zdCBTdHJpbmcmIFJlc291cmNlUmVzcG9uc2VCYXNlOjpodHRwU3RhdHVzVGV4dCgpIGNvbnN0
IAogewogICAgIHVwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsKIAogICAgIHJldHVybiBtX2h0dHBT
dGF0dXNUZXh0OyAKIH0KIAotdm9pZCBSZXNvdXJjZVJlc3BvbnNlOjpzZXRIVFRQU3RhdHVzVGV4
dChjb25zdCBTdHJpbmcmIHN0YXR1c1RleHQpIAordm9pZCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6
c2V0SFRUUFN0YXR1c1RleHQoY29uc3QgU3RyaW5nJiBzdGF0dXNUZXh0KSAKIHsKICAgICB1cGRh
dGVSZXNvdXJjZVJlc3BvbnNlKCk7CiAKICAgICBtX2h0dHBTdGF0dXNUZXh0ID0gc3RhdHVzVGV4
dDsgCiB9CiAKLVN0cmluZyBSZXNvdXJjZVJlc3BvbnNlOjpodHRwSGVhZGVyRmllbGQoY29uc3Qg
U3RyaW5nJiBuYW1lKSBjb25zdAorU3RyaW5nIFJlc291cmNlUmVzcG9uc2VCYXNlOjpodHRwSGVh
ZGVyRmllbGQoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdAogewogICAgIHVwZGF0ZVJlc291cmNl
UmVzcG9uc2UoKTsKIAogICAgIHJldHVybiBtX2h0dHBIZWFkZXJGaWVsZHMuZ2V0KG5hbWUpOyAK
IH0KIAotdm9pZCBSZXNvdXJjZVJlc3BvbnNlOjpzZXRIVFRQSGVhZGVyRmllbGQoY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQordm9pZCBSZXNvdXJjZVJlc3BvbnNlQmFz
ZTo6c2V0SFRUUEhlYWRlckZpZWxkKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2
YWx1ZSkKIHsKICAgICB1cGRhdGVSZXNvdXJjZVJlc3BvbnNlKCk7CiAKICAgICBtX2h0dHBIZWFk
ZXJGaWVsZHMuc2V0KG5hbWUsIHZhbHVlKTsKIH0KIAotY29uc3QgSFRUUEhlYWRlck1hcCYgUmVz
b3VyY2VSZXNwb25zZTo6aHR0cEhlYWRlckZpZWxkcygpIGNvbnN0Citjb25zdCBIVFRQSGVhZGVy
TWFwJiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6aHR0cEhlYWRlckZpZWxkcygpIGNvbnN0CiB7CiAg
ICAgdXBkYXRlUmVzb3VyY2VSZXNwb25zZSgpOwogCiAgICAgcmV0dXJuIG1faHR0cEhlYWRlckZp
ZWxkczsgCiB9CiAKLWJvb2wgUmVzb3VyY2VSZXNwb25zZTo6aXNBdHRhY2htZW50KCkgY29uc3QN
Ci17DQotICAgIHVwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsNCi0NCi0gICAgU3RyaW5nIHZhbHVl
ID0gbV9odHRwSGVhZGVyRmllbGRzLmdldCgiQ29udGVudC1EaXNwb3NpdGlvbiIpOw0KLSAgICBp
bnQgbG9jID0gdmFsdWUuZmluZCgnOycpOw0KLSAgICBpZiAobG9jICE9IC0xKQ0KLSAgICAgICAg
dmFsdWUgPSB2YWx1ZS5sZWZ0KGxvYyk7DQotICAgIHZhbHVlID0gdmFsdWUuc3RyaXBXaGl0ZVNw
YWNlKCk7DQotICAgIHJldHVybiBlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgImF0dGFjaG1lbnQi
KTsNCitib29sIFJlc291cmNlUmVzcG9uc2VCYXNlOjppc0F0dGFjaG1lbnQoKSBjb25zdAorewor
ICAgIHVwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsKKworICAgIFN0cmluZyB2YWx1ZSA9IG1faHR0
cEhlYWRlckZpZWxkcy5nZXQoIkNvbnRlbnQtRGlzcG9zaXRpb24iKTsKKyAgICBpbnQgbG9jID0g
dmFsdWUuZmluZCgnOycpOworICAgIGlmIChsb2MgIT0gLTEpCisgICAgICAgIHZhbHVlID0gdmFs
dWUubGVmdChsb2MpOworICAgIHZhbHVlID0gdmFsdWUuc3RyaXBXaGl0ZVNwYWNlKCk7CisgICAg
cmV0dXJuIGVxdWFsSWdub3JpbmdDYXNlKHZhbHVlLCAiYXR0YWNobWVudCIpOwogfQogCi12b2lk
IFJlc291cmNlUmVzcG9uc2U6OnNldEV4cGlyYXRpb25EYXRlKHRpbWVfdCBleHBpcmF0aW9uRGF0
ZSkKK3ZvaWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnNldEV4cGlyYXRpb25EYXRlKHRpbWVfdCBl
eHBpcmF0aW9uRGF0ZSkKIHsKICAgICB1cGRhdGVSZXNvdXJjZVJlc3BvbnNlKCk7CiAKICAgICBt
X2V4cGlyYXRpb25EYXRlID0gZXhwaXJhdGlvbkRhdGU7CiB9CiAKLXRpbWVfdCBSZXNvdXJjZVJl
c3BvbnNlOjpleHBpcmF0aW9uRGF0ZSgpIGNvbnN0Cit0aW1lX3QgUmVzb3VyY2VSZXNwb25zZUJh
c2U6OmV4cGlyYXRpb25EYXRlKCkgY29uc3QKIHsKICAgICB1cGRhdGVSZXNvdXJjZVJlc3BvbnNl
KCk7CiAKICAgICByZXR1cm4gbV9leHBpcmF0aW9uRGF0ZTsgCiB9CiAKLXZvaWQgUmVzb3VyY2VS
ZXNwb25zZTo6c2V0TGFzdE1vZGlmaWVkRGF0ZSh0aW1lX3QgbGFzdE1vZGlmaWVkRGF0ZSkgCit2
b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzZXRMYXN0TW9kaWZpZWREYXRlKHRpbWVfdCBsYXN0
TW9kaWZpZWREYXRlKSAKIHsKICAgICB1cGRhdGVSZXNvdXJjZVJlc3BvbnNlKCk7CiAKLSAgICBt
X2xhc3RNb2RpZmllZERhdGUgPSBsYXN0TW9kaWZpZWREYXRlOyAKKyAgICBtX2xhc3RNb2RpZmll
ZERhdGUgPSBsYXN0TW9kaWZpZWREYXRlOwogfQogCi10aW1lX3QgUmVzb3VyY2VSZXNwb25zZTo6
bGFzdE1vZGlmaWVkRGF0ZSgpIGNvbnN0Cit0aW1lX3QgUmVzb3VyY2VSZXNwb25zZUJhc2U6Omxh
c3RNb2RpZmllZERhdGUoKSBjb25zdAogewogICAgIHVwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsK
IAotICAgIHJldHVybiBtX2xhc3RNb2RpZmllZERhdGU7IAorICAgIHJldHVybiBtX2xhc3RNb2Rp
ZmllZERhdGU7CiB9CiAKLXZvaWQgUmVzb3VyY2VSZXNwb25zZTo6dXBkYXRlUmVzb3VyY2VSZXNw
b25zZSgpIGNvbnN0Cit2b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjp1cGRhdGVSZXNvdXJjZVJl
c3BvbnNlKCkgY29uc3QKIHsKLSNpZiBQTEFURk9STShNQUMpIHx8IFVTRShDRk5FVFdPUkspCiAg
ICAgaWYgKG1faXNVcFRvRGF0ZSkKICAgICAgICAgcmV0dXJuOwotICAgIAotICAgIGNvbnN0X2Nh
c3Q8UmVzb3VyY2VSZXNwb25zZSo+KHRoaXMpLT5kb1VwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsK
KworICAgIGFzUmVzb3VyY2VSZXNwb25zZSgpLmRvVXBkYXRlUmVzb3VyY2VSZXNwb25zZSgpOwor
CiAgICAgbV9pc1VwVG9EYXRlID0gdHJ1ZTsKLSNlbmRpZgogfQogCiBib29sIG9wZXJhdG9yPT0o
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgYSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgYikKSW5k
ZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5o
CShyZXZpc2lvbiAyNjA2NikJKGZyb20gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
UmVzcG9uc2UuaDoyNjA2NikKKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJl
c3BvbnNlQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTU5IEBACisvLyAtKi0gbW9k
ZTogYysrOyBjLWJhc2ljLW9mZnNldDogNCAtKi0KKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYg
QXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5k
ZWYgUmVzb3VyY2VSZXNwb25zZV9oCisjZGVmaW5lIFJlc291cmNlUmVzcG9uc2VfaAorCisjaW5j
bHVkZSAiSFRUUEhlYWRlck1hcC5oIgorI2luY2x1ZGUgIktVUkwuaCIKKworI2lmIFBMQVRGT1JN
KE1BQykKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaWZkZWYgX19PQkpDX18KK0BjbGFz
cyBOU1VSTFJlc3BvbnNlOworI2Vsc2UKK2NsYXNzIE5TVVJMUmVzcG9uc2U7CisjZW5kaWYKKyNl
bGlmIFVTRShDRk5FVFdPUkspCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgordHlwZWRlZiBz
dHJ1Y3QgX0NGVVJMUmVzcG9uc2UqIENGVVJMUmVzcG9uc2VSZWY7CisjZW5kaWYKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBSZXNvdXJjZVJlc3BvbnNlIHsKK3B1YmxpYzoKKworICAg
IFJlc291cmNlUmVzcG9uc2UoKSAKKyAgICAgICAgOiBtX2V4cGVjdGVkQ29udGVudExlbmd0aCgw
KQorICAgICAgICAsIG1faHR0cFN0YXR1c0NvZGUoMCkKKyAgICAgICAgLCBtX2V4cGlyYXRpb25E
YXRlKDApCisgICAgICAgICwgbV9pc1VwVG9EYXRlKHRydWUpCisgICAgICAgICwgbV9pc051bGwo
dHJ1ZSkKKyAgICB7CisgICAgfQorCisgICAgUmVzb3VyY2VSZXNwb25zZShjb25zdCBLVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGxvbmcgbG9uZyBleHBlY3RlZExlbmd0aCwgY29u
c3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lKQorICAg
ICAgICA6IG1fdXJsKHVybCkKKyAgICAgICAgLCBtX21pbWVUeXBlKG1pbWVUeXBlKQorICAgICAg
ICAsIG1fZXhwZWN0ZWRDb250ZW50TGVuZ3RoKGV4cGVjdGVkTGVuZ3RoKQorICAgICAgICAsIG1f
dGV4dEVuY29kaW5nTmFtZSh0ZXh0RW5jb2RpbmdOYW1lKQorICAgICAgICAsIG1fc3VnZ2VzdGVk
RmlsZW5hbWUoZmlsZW5hbWUpCisgICAgICAgICwgbV9odHRwU3RhdHVzQ29kZSgwKQorICAgICAg
ICAsIG1fZXhwaXJhdGlvbkRhdGUoMCkKKyAgICAgICAgLCBtX2lzVXBUb0RhdGUodHJ1ZSkKKyAg
ICAgICAgLCBtX2lzTnVsbChmYWxzZSkKKyAgICB7CisgICAgfQorIAorICAgIGJvb2wgaXNOdWxs
KCkgY29uc3QgeyByZXR1cm4gbV9pc051bGw7IH0KKyAgICBib29sIGlzSFRUUCgpIGNvbnN0Owor
ICAgIAorICAgIGNvbnN0IEtVUkwmIHVybCgpIGNvbnN0OworICAgIHZvaWQgc2V0VXJsKGNvbnN0
IEtVUkwmIHVybCk7CisKKyAgICBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKCkgY29uc3Q7CisgICAg
dm9pZCBzZXRNaW1lVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKKworICAgIGxvbmcgbG9u
ZyBleHBlY3RlZENvbnRlbnRMZW5ndGgoKSBjb25zdDsKKyAgICB2b2lkIHNldEV4cGVjdGVkQ29u
dGVudExlbmd0aChsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50TGVuZ3RoKTsKKworICAgIGNvbnN0
IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSgpIGNvbnN0OworICAgIHZvaWQgc2V0VGV4dEVuY29k
aW5nTmFtZShjb25zdCBTdHJpbmcmIG5hbWUpOworCisgICAgLy8gRklYTUUgc2hvdWxkIGNvbXB1
dGUgdGhpcyBvbiB0aGUgZmx5CisgICAgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSgp
IGNvbnN0OworICAgIHZvaWQgc2V0U3VnZ2VzdGVkRmlsZW5hbWUoY29uc3QgU3RyaW5nJik7CisK
KyAgICBpbnQgaHR0cFN0YXR1c0NvZGUoKSBjb25zdDsKKyAgICB2b2lkIHNldEhUVFBTdGF0dXND
b2RlKGludCk7CisgICAgCisgICAgY29uc3QgU3RyaW5nJiBodHRwU3RhdHVzVGV4dCgpIGNvbnN0
OworICAgIHZvaWQgc2V0SFRUUFN0YXR1c1RleHQoY29uc3QgU3RyaW5nJik7CisgICAgCisgICAg
U3RyaW5nIGh0dHBIZWFkZXJGaWVsZChjb25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0OworICAgIHZv
aWQgc2V0SFRUUEhlYWRlckZpZWxkKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2
YWx1ZSk7CisgICAgY29uc3QgSFRUUEhlYWRlck1hcCYgaHR0cEhlYWRlckZpZWxkcygpIGNvbnN0
OworCisgICAgYm9vbCBpc011bHRpcGFydCgpIGNvbnN0IHsgcmV0dXJuIG1pbWVUeXBlKCkgPT0g
Im11bHRpcGFydC94LW1peGVkLXJlcGxhY2UiOyB9CisKKyAgICBib29sIGlzQXR0YWNobWVudCgp
IGNvbnN0OworCisgICAgdm9pZCBzZXRFeHBpcmF0aW9uRGF0ZSh0aW1lX3QpOworICAgIHRpbWVf
dCBleHBpcmF0aW9uRGF0ZSgpIGNvbnN0OworCisgICAgdm9pZCBzZXRMYXN0TW9kaWZpZWREYXRl
KHRpbWVfdCk7CisgICAgdGltZV90IGxhc3RNb2RpZmllZERhdGUoKSBjb25zdDsKKworI2lmIFBM
QVRGT1JNKE1BQykKKyAgICBSZXNvdXJjZVJlc3BvbnNlKE5TVVJMUmVzcG9uc2UqIG5zUmVzcG9u
c2UpCisgICAgICAgIDogbV9pc1VwVG9EYXRlKGZhbHNlKQorICAgICAgICAsIG1faXNOdWxsKCFu
c1Jlc3BvbnNlKQorICAgICAgICAsIG1fbnNSZXNwb25zZShuc1Jlc3BvbnNlKSB7IH0KKyAgICAK
KyAgICBOU1VSTFJlc3BvbnNlICpuc1VSTFJlc3BvbnNlKCkgY29uc3Q7CisjZWxpZiBVU0UoQ0ZO
RVRXT1JLKQorICAgIFJlc291cmNlUmVzcG9uc2UoQ0ZVUkxSZXNwb25zZVJlZiBjZlJlc3BvbnNl
KQorICAgICAgICA6IG1faXNVcFRvRGF0ZShmYWxzZSkKKyAgICAgICAgLCBtX2lzTnVsbCghY2ZS
ZXNwb25zZSkKKyAgICAgICAgLCBtX2NmUmVzcG9uc2UoY2ZSZXNwb25zZSkgeyB9CisgICAgCisg
ICAgQ0ZVUkxSZXNwb25zZVJlZiBjZlVSTFJlc3BvbnNlKCkgY29uc3Q7CisjZW5kaWYKKyAgICAK
KyBwcml2YXRlOgorICAgIHZvaWQgdXBkYXRlUmVzb3VyY2VSZXNwb25zZSgpIGNvbnN0OyAKKyAg
ICAKKyNpZiBQTEFURk9STShNQUMpIHx8IFVTRShDRk5FVFdPUkspCisgICAgdm9pZCBkb1VwZGF0
ZVJlc291cmNlUmVzcG9uc2UoKTsKKyNlbmRpZgorICAgIAorICAgIEtVUkwgbV91cmw7CisgICAg
U3RyaW5nIG1fbWltZVR5cGU7CisgICAgbG9uZyBsb25nIG1fZXhwZWN0ZWRDb250ZW50TGVuZ3Ro
OworICAgIFN0cmluZyBtX3RleHRFbmNvZGluZ05hbWU7CisgICAgU3RyaW5nIG1fc3VnZ2VzdGVk
RmlsZW5hbWU7CisgICAgaW50IG1faHR0cFN0YXR1c0NvZGU7CisgICAgU3RyaW5nIG1faHR0cFN0
YXR1c1RleHQ7CisgICAgSFRUUEhlYWRlck1hcCBtX2h0dHBIZWFkZXJGaWVsZHM7CisgICAgdGlt
ZV90IG1fZXhwaXJhdGlvbkRhdGU7CisgICAgdGltZV90IG1fbGFzdE1vZGlmaWVkRGF0ZTsKKyAg
ICBtdXRhYmxlIGJvb2wgbV9pc1VwVG9EYXRlOworICAgIGJvb2wgbV9pc051bGw7CisjaWYgUExB
VEZPUk0oTUFDKQorICAgIFJldGFpblB0cjxOU1VSTFJlc3BvbnNlPiBtX25zUmVzcG9uc2U7Cisj
ZWxpZiBVU0UoQ0ZORVRXT1JLKQorICAgIFJldGFpblB0cjxDRlVSTFJlc3BvbnNlUmVmPiBtX2Nm
UmVzcG9uc2U7ICAgICAgCisjZW5kaWYKKyAgICAKK307CisKK2Jvb2wgb3BlcmF0b3I9PShjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiBhLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBiKTsKK2lubGlu
ZSBib29sIG9wZXJhdG9yIT0oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgYSwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgYikgeyByZXR1cm4gIShhID09IGIpOyB9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIFJlc291cmNlUmVzcG9uc2VfaApJbmRleDogV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgJKHJldmlzaW9uIDI2MDY2
KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI0LDU0ICsyNCwyMyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAot
I2lmbmRlZiBSZXNvdXJjZVJlc3BvbnNlX2gKLSNkZWZpbmUgUmVzb3VyY2VSZXNwb25zZV9oCisj
aWZuZGVmIFJlc291cmNlUmVzcG9uc2VCYXNlX2gKKyNkZWZpbmUgUmVzb3VyY2VSZXNwb25zZUJh
c2VfaAogCiAjaW5jbHVkZSAiSFRUUEhlYWRlck1hcC5oIgogI2luY2x1ZGUgIktVUkwuaCIKIAot
I2lmIFBMQVRGT1JNKE1BQykKLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0jaWZkZWYgX19P
QkpDX18KLUBjbGFzcyBOU1VSTFJlc3BvbnNlOwotI2Vsc2UKLWNsYXNzIE5TVVJMUmVzcG9uc2U7
Ci0jZW5kaWYKLSNlbGlmIFVTRShDRk5FVFdPUkspCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgotdHlwZWRlZiBzdHJ1Y3QgX0NGVVJMUmVzcG9uc2UqIENGVVJMUmVzcG9uc2VSZWY7Ci0jZW5k
aWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBSZXNvdXJjZVJlc3BvbnNlIHsKLXB1
YmxpYzoKK2NsYXNzIFJlc291cmNlUmVzcG9uc2U7CiAKLSAgICBSZXNvdXJjZVJlc3BvbnNlKCkg
Ci0gICAgICAgIDogbV9leHBlY3RlZENvbnRlbnRMZW5ndGgoMCkKLSAgICAgICAgLCBtX2h0dHBT
dGF0dXNDb2RlKDApCi0gICAgICAgICwgbV9leHBpcmF0aW9uRGF0ZSgwKQotICAgICAgICAsIG1f
aXNVcFRvRGF0ZSh0cnVlKQotICAgICAgICAsIG1faXNOdWxsKHRydWUpCi0gICAgewotICAgIH0K
Ky8vIERvIG5vdCB1c2UgdGhpcyBjbGFzcyBkaXJlY3RseSwgdXNlIHRoZSBjbGFzcyBSZXNwb25z
ZVJlc3BvbnNlIGluc3RlYWQKK2NsYXNzIFJlc291cmNlUmVzcG9uc2VCYXNlIHsKKyBwdWJsaWM6
CiAKLSAgICBSZXNvdXJjZVJlc3BvbnNlKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgbG9uZyBsb25nIGV4cGVjdGVkTGVuZ3RoLCBjb25zdCBTdHJpbmcmIHRleHRFbmNv
ZGluZ05hbWUsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCi0gICAgICAgIDogbV91cmwodXJsKQot
ICAgICAgICAsIG1fbWltZVR5cGUobWltZVR5cGUpCi0gICAgICAgICwgbV9leHBlY3RlZENvbnRl
bnRMZW5ndGgoZXhwZWN0ZWRMZW5ndGgpCi0gICAgICAgICwgbV90ZXh0RW5jb2RpbmdOYW1lKHRl
eHRFbmNvZGluZ05hbWUpCi0gICAgICAgICwgbV9zdWdnZXN0ZWRGaWxlbmFtZShmaWxlbmFtZSkK
LSAgICAgICAgLCBtX2h0dHBTdGF0dXNDb2RlKDApCi0gICAgICAgICwgbV9leHBpcmF0aW9uRGF0
ZSgwKQotICAgICAgICAsIG1faXNVcFRvRGF0ZSh0cnVlKQotICAgICAgICAsIG1faXNOdWxsKGZh
bHNlKQotICAgIHsKLSAgICB9Ci0gCiAgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBt
X2lzTnVsbDsgfQogICAgIGJvb2wgaXNIVFRQKCkgY29uc3Q7Ci0gICAgCisKICAgICBjb25zdCBL
VVJMJiB1cmwoKSBjb25zdDsKICAgICB2b2lkIHNldFVybChjb25zdCBLVVJMJiB1cmwpOwogCkBA
IC0xMDgsMjkgKzc3LDQwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldExhc3RNb2RpZmllZERhdGUo
dGltZV90KTsKICAgICB0aW1lX3QgbGFzdE1vZGlmaWVkRGF0ZSgpIGNvbnN0OwogCi0jaWYgUExB
VEZPUk0oTUFDKQotICAgIFJlc291cmNlUmVzcG9uc2UoTlNVUkxSZXNwb25zZSogbnNSZXNwb25z
ZSkKLSAgICAgICAgOiBtX2lzVXBUb0RhdGUoZmFsc2UpCi0gICAgICAgICwgbV9pc051bGwoIW5z
UmVzcG9uc2UpCi0gICAgICAgICwgbV9uc1Jlc3BvbnNlKG5zUmVzcG9uc2UpIHsgfQotICAgIAot
ICAgIE5TVVJMUmVzcG9uc2UgKm5zVVJMUmVzcG9uc2UoKSBjb25zdDsKLSNlbGlmIFVTRShDRk5F
VFdPUkspCi0gICAgUmVzb3VyY2VSZXNwb25zZShDRlVSTFJlc3BvbnNlUmVmIGNmUmVzcG9uc2Up
CisgICAgaW5saW5lIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGFzUmVzb3VyY2VSZXNwb25zZSgp
IGNvbnN0OworCisgcHJvdGVjdGVkOgorICAgIC8vIFVzZWQgd2hlbiByZXNwb25zZSBpcyBpbml0
aWFsaXplZCBmcm9tIGEgcGxhdGZvcm0gcmVwcmVzZW50YXRpb24KKyAgICBSZXNvdXJjZVJlc3Bv
bnNlQmFzZShib29sIGlzTnVsbCkKICAgICAgICAgOiBtX2lzVXBUb0RhdGUoZmFsc2UpCi0gICAg
ICAgICwgbV9pc051bGwoIWNmUmVzcG9uc2UpCi0gICAgICAgICwgbV9jZlJlc3BvbnNlKGNmUmVz
cG9uc2UpIHsgfQotICAgIAotICAgIENGVVJMUmVzcG9uc2VSZWYgY2ZVUkxSZXNwb25zZSgpIGNv
bnN0OwotI2VuZGlmCi0gICAgCi0gcHJpdmF0ZToKLSAgICB2b2lkIHVwZGF0ZVJlc291cmNlUmVz
cG9uc2UoKSBjb25zdDsgCi0gICAgCi0jaWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JL
KQotICAgIHZvaWQgZG9VcGRhdGVSZXNvdXJjZVJlc3BvbnNlKCk7Ci0jZW5kaWYKLSAgICAKKyAg
ICAgICAgLCBtX2lzTnVsbChpc051bGwpCisgICAgeworICAgIH0KKworICAgIFJlc291cmNlUmVz
cG9uc2VCYXNlKCkgIAorICAgICAgICA6IG1fZXhwZWN0ZWRDb250ZW50TGVuZ3RoKDApCisgICAg
ICAgICwgbV9odHRwU3RhdHVzQ29kZSgwKQorICAgICAgICAsIG1fZXhwaXJhdGlvbkRhdGUoMCkK
KyAgICAgICAgLCBtX2lzVXBUb0RhdGUodHJ1ZSkKKyAgICAgICAgLCBtX2lzTnVsbCh0cnVlKQor
ICAgIHsKKyAgICB9CisKKyAgICBSZXNvdXJjZVJlc3BvbnNlQmFzZShjb25zdCBLVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGxvbmcgbG9uZyBleHBlY3RlZExlbmd0aCwgY29uc3Qg
U3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lKQorICAgICAg
ICA6IG1fdXJsKHVybCkKKyAgICAgICAgLCBtX21pbWVUeXBlKG1pbWVUeXBlKQorICAgICAgICAs
IG1fZXhwZWN0ZWRDb250ZW50TGVuZ3RoKGV4cGVjdGVkTGVuZ3RoKQorICAgICAgICAsIG1fdGV4
dEVuY29kaW5nTmFtZSh0ZXh0RW5jb2RpbmdOYW1lKQorICAgICAgICAsIG1fc3VnZ2VzdGVkRmls
ZW5hbWUoZmlsZW5hbWUpCisgICAgICAgICwgbV9odHRwU3RhdHVzQ29kZSgwKQorICAgICAgICAs
IG1fZXhwaXJhdGlvbkRhdGUoMCkKKyAgICAgICAgLCBtX2lzVXBUb0RhdGUodHJ1ZSkKKyAgICAg
ICAgLCBtX2lzTnVsbChmYWxzZSkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCB1cGRhdGVSZXNv
dXJjZVJlc3BvbnNlKCkgY29uc3Q7CisKICAgICBLVVJMIG1fdXJsOwogICAgIFN0cmluZyBtX21p
bWVUeXBlOwogICAgIGxvbmcgbG9uZyBtX2V4cGVjdGVkQ29udGVudExlbmd0aDsKQEAgLTE0Mywx
MiArMTIzLDcgQEAgcHVibGljOgogICAgIHRpbWVfdCBtX2xhc3RNb2RpZmllZERhdGU7CiAgICAg
bXV0YWJsZSBib29sIG1faXNVcFRvRGF0ZTsKICAgICBib29sIG1faXNOdWxsOwotI2lmIFBMQVRG
T1JNKE1BQykKLSAgICBSZXRhaW5QdHI8TlNVUkxSZXNwb25zZT4gbV9uc1Jlc3BvbnNlOwotI2Vs
aWYgVVNFKENGTkVUV09SSykKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZXNwb25zZVJlZj4gbV9jZlJl
c3BvbnNlOyAgICAgIAotI2VuZGlmCi0gICAgCisKIH07CiAKIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiBhLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBiKTsKQEAgLTE1
Niw0ICsxMzEsNCBAQCBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFJlc291cmNlUmVzCiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIFJlc291cmNlUmVzcG9uc2VfaAor
I2VuZGlmIC8vIFJlc291cmNlUmVzcG9uc2VCYXNlX2gKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2UuaAkocmV2aXNpb24gMCkKKysrIFdlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlLmgJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNjUgQEAKKy8vIC0qLSBtb2RlOiBjKys7IGMtYmFzaWMtb2Zmc2V0OiA0IC0qLQor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKyNpZm5kZWYgUmVzb3VyY2VSZXNwb25zZV9oCisjZGVmaW5lIFJl
c291cmNlUmVzcG9uc2VfaAorCisjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZUJhc2UuaCIKKyNp
bmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK3R5cGVkZWYgc3RydWN0IF9DRlVSTFJlc3BvbnNl
KiBDRlVSTFJlc3BvbnNlUmVmOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJlc291
cmNlUmVzcG9uc2UgOiBwdWJsaWMgUmVzb3VyY2VSZXNwb25zZUJhc2UgeworcHVibGljOgorICAg
IFJlc291cmNlUmVzcG9uc2UoKQorICAgICAgICA6IFJlc291cmNlUmVzcG9uc2VCYXNlKCkKKyAg
ICB7CisgICAgfQorCisgICAgUmVzb3VyY2VSZXNwb25zZShDRlVSTFJlc3BvbnNlUmVmIGNmUmVz
cG9uc2UpCisgICAgICAgIDogUmVzb3VyY2VSZXNwb25zZUJhc2UoIWNmUmVzcG9uc2UpCisgICAg
ICAgICwgbV9jZlJlc3BvbnNlKGNmUmVzcG9uc2UpIHsgfQorCisgICAgUmVzb3VyY2VSZXNwb25z
ZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGxvbmcgbG9uZyBleHBl
Y3RlZExlbmd0aCwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBjb25zdCBTdHJpbmcm
IGZpbGVuYW1lKQorICAgICAgICA6IFJlc291cmNlUmVzcG9uc2VCYXNlKHVybCwgbWltZVR5cGUs
IGV4cGVjdGVkTGVuZ3RoLCB0ZXh0RW5jb2RpbmdOYW1lLCBmaWxlbmFtZSkKKyAgICB7CisgICAg
fQorCisgICAgQ0ZVUkxSZXNwb25zZVJlZiBjZlVSTFJlc3BvbnNlKCkgY29uc3Q7CisKK3ByaXZh
dGU6CisgICAgZnJpZW5kIGNsYXNzIFJlc291cmNlUmVzcG9uc2VCYXNlOworCisgICAgdm9pZCBk
b1VwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsKKworICAgIFJldGFpblB0cjxDRlVSTFJlc3BvbnNl
UmVmPiBtX2NmUmVzcG9uc2U7CisKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIFJlc291cmNlUmVzcG9uc2VfaApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvUmVzb3VyY2VSZXNwb25zZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL1Jlc291cmNlUmVzcG9uc2UuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlUmVzcG9uc2UuaAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw1NyBAQAorLy8gLSotIG1vZGU6IGMrKzsgYy1iYXNpYy1vZmZzZXQ6IDQgLSotCisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFJlc291cmNlUmVzcG9uc2VfaAorI2RlZmluZSBS
ZXNvdXJjZVJlc3BvbnNlX2gKKworI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2VCYXNlLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUmVzb3VyY2VSZXNwb25zZSA6IHB1YmxpYyBS
ZXNvdXJjZVJlc3BvbnNlQmFzZSB7CitwdWJsaWM6CisgICAgUmVzb3VyY2VSZXNwb25zZSgpCisg
ICAgICAgIDogUmVzb3VyY2VSZXNwb25zZUJhc2UoZmFsc2UpCisgICAgeworICAgIH0KKworICAg
IFJlc291cmNlUmVzcG9uc2UoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBsb25nIGxvbmcgZXhwZWN0ZWRMZW5ndGgsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFt
ZSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKKyAgICAgICAgOiBSZXNvdXJjZVJlc3BvbnNlQmFz
ZSh1cmwsIG1pbWVUeXBlLCBleHBlY3RlZExlbmd0aCwgdGV4dEVuY29kaW5nTmFtZSwgZmlsZW5h
bWUpCisgICAgeworICAgIH0KKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgUmVzb3VyY2VS
ZXNwb25zZUJhc2U7CisKKyAgICB2b2lkIGRvVXBkYXRlUmVzb3VyY2VSZXNwb25zZSgpCisgICAg
eworICAgIH0KKworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gUmVz
b3VyY2VSZXNwb25zZV9oCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291
cmNlUmVzcG9uc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFj
L1Jlc291cmNlUmVzcG9uc2UuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9tYWMvUmVzb3VyY2VSZXNwb25zZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcwIEBA
CisvLyAtKi0gbW9kZTogYysrOyBjLWJhc2ljLW9mZnNldDogNCAtKi0KKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRF
UiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVS
LCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpZm5kZWYgUmVzb3VyY2VSZXNwb25zZV9oCisjZGVmaW5lIFJlc291cmNlUmVzcG9u
c2VfaAorCisjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZUJhc2UuaCIKKyNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CisKKyNpZmRlZiBfX09CSkNfXworQGNsYXNzIE5TVVJMUmVzcG9uc2U7Cisj
ZWxzZQorY2xhc3MgTlNVUkxSZXNwb25zZTsKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIFJlc291cmNlUmVzcG9uc2UgOiBwdWJsaWMgUmVzb3VyY2VSZXNwb25zZUJhc2Ug
eworcHVibGljOgorICAgIFJlc291cmNlUmVzcG9uc2UoKQorICAgICAgICA6IFJlc291cmNlUmVz
cG9uc2VCYXNlKCkKKyAgICB7CisgICAgfQorCisgICAgUmVzb3VyY2VSZXNwb25zZShOU1VSTFJl
c3BvbnNlKiBuc1Jlc3BvbnNlKQorICAgICAgICA6IFJlc291cmNlUmVzcG9uc2VCYXNlKCFuc1Jl
c3BvbnNlKQorICAgICAgICAsIG1fbnNSZXNwb25zZShuc1Jlc3BvbnNlKSB7IH0KKyAgICAKKyAg
ICBSZXNvdXJjZVJlc3BvbnNlKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgbG9uZyBsb25nIGV4cGVjdGVkTGVuZ3RoLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05h
bWUsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCisgICAgICAgIDogUmVzb3VyY2VSZXNwb25zZUJh
c2UodXJsLCBtaW1lVHlwZSwgZXhwZWN0ZWRMZW5ndGgsIHRleHRFbmNvZGluZ05hbWUsIGZpbGVu
YW1lKQorICAgIHsKKyAgICB9CisKKyAgICBOU1VSTFJlc3BvbnNlICpuc1VSTFJlc3BvbnNlKCkg
Y29uc3Q7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFJlc291cmNlUmVzcG9uc2VCYXNl
OworCisgICAgdm9pZCBkb1VwZGF0ZVJlc291cmNlUmVzcG9uc2UoKSBjb25zdDsKKworICAgIFJl
dGFpblB0cjxOU1VSTFJlc3BvbnNlPiBtX25zUmVzcG9uc2U7CisKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFJlc291cmNlUmVzcG9uc2VfaApJbmRleDogV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlc3BvbnNlTWFjLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXNwb25zZU1hYy5tbQko
cmV2aXNpb24gMjY2OTkpCisrKyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNl
UmVzcG9uc2VNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAgTlNVUkxSZXNw
b25zZSAqUmVzb3VyY2VSZXNwb25zZTo6bnNVUkxSZQogICAgIHJldHVybiBtX25zUmVzcG9uc2Uu
Z2V0KCk7CiB9CiAKLXZvaWQgUmVzb3VyY2VSZXNwb25zZTo6ZG9VcGRhdGVSZXNvdXJjZVJlc3Bv
bnNlKCkKK3ZvaWQgUmVzb3VyY2VSZXNwb25zZTo6ZG9VcGRhdGVSZXNvdXJjZVJlc3BvbnNlKCkg
Y29uc3QKIHsKICAgICBpZiAobV9pc051bGwpIHsKICAgICAgICAgQVNTRVJUKCFtX25zUmVzcG9u
c2UpOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1Jlc291cmNlUmVzcG9uc2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUmVzb3VyY2VSZXNw
b25zZS5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1Jlc291
cmNlUmVzcG9uc2UuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MCBAQAorLy8gLSotIG1vZGU6
IGMrKzsgYy1iYXNpYy1vZmZzZXQ6IDQgLSotCisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IEFw
cGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVm
IFJlc291cmNlUmVzcG9uc2VfaAorI2RlZmluZSBSZXNvdXJjZVJlc3BvbnNlX2gKKworI2luY2x1
ZGUgIlJlc291cmNlUmVzcG9uc2VCYXNlLmgiCisKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJlc291cmNlUmVzcG9uc2UgOiBwdWJs
aWMgUmVzb3VyY2VSZXNwb25zZUJhc2UgeworcHVibGljOgorICAgIFJlc291cmNlUmVzcG9uc2Uo
KQorICAgICAgICA6IFJlc291cmNlUmVzcG9uc2VCYXNlKGZhbHNlKQorICAgIHsKKyAgICB9CisK
KyAgICBSZXNvdXJjZVJlc3BvbnNlKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgbG9uZyBsb25nIGV4cGVjdGVkTGVuZ3RoLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGlu
Z05hbWUsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCisgICAgICAgIDogUmVzb3VyY2VSZXNwb25z
ZUJhc2UodXJsLCBtaW1lVHlwZSwgZXhwZWN0ZWRMZW5ndGgsIHRleHRFbmNvZGluZ05hbWUsIGZp
bGVuYW1lKQorICAgIHsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFJlc291
cmNlUmVzcG9uc2VCYXNlOworCisgICAgdm9pZCBkb1VwZGF0ZVJlc291cmNlUmVzcG9uc2UoKQor
ICAgIHsKKyAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICB9CisKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFJlc291cmNlUmVzcG9uc2VfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>17172</attachid>
            <date>2007-11-10 06:08:39 -0800</date>
            <delta_ts>2007-11-10 12:15:56 -0800</delta_ts>
            <desc>Patch updated with XCode information and tested on Mac</desc>
            <filename>bug15334-final.patch</filename>
            <type>text/plain</type>
            <size>58524</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDI3NjYz
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTUgQEAKKzIwMDctMTEt
MDkgIEp1bGllbiBDaGFmZnJhaXggIDxqdWxpZW4uY2hhZmZyYWl4QGdtYWlsLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBEYXJpbi4KKworICAgICAgICBodHRwOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTMzNAorICAgICAgICBTcGxpdCBSZXNvdXJjZVJlc3BvbnNlIGlu
dG8gcGxhdGZvcm0gc3BlY2lmaWMgZmlsZXMKKyAgICAgICAgCisgICAgICAgICogV2ViQ29yZS5i
YXNlLmV4cDoKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlLmNwcDog
UmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2UuaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNl
LmNwcDogQ29waWVkIGZyb20gcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlLmNwcC4K
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjphc1Jlc291cmNlUmVzcG9u
c2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OmlzSFRUUCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6dXJsKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpzZXRVcmwpOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZUJhc2U6Om1pbWVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2VCYXNlOjpzZXRNaW1lVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlQmFzZTo6ZXhwZWN0ZWRDb250ZW50TGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2VCYXNlOjpzZXRFeHBlY3RlZENvbnRlbnRMZW5ndGgpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OnRleHRFbmNvZGluZ05hbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OnNldFRleHRFbmNvZGluZ05hbWUp
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OnN1Z2dlc3RlZEZpbGVu
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpzZXRTdWdnZXN0
ZWRGaWxlbmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6aHR0
cFN0YXR1c0NvZGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OnNl
dEhUVFBTdGF0dXNDb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNl
OjpodHRwU3RhdHVzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFz
ZTo6c2V0SFRUUFN0YXR1c1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZUJhc2U6Omh0dHBIZWFkZXJGaWVsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlQmFzZTo6c2V0SFRUUEhlYWRlckZpZWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2VCYXNlOjpodHRwSGVhZGVyRmllbGRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2VCYXNlOjppc0F0dGFjaG1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZUJhc2U6OnNldEV4cGlyYXRpb25EYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2VCYXNlOjpleHBpcmF0aW9uRGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2V0TGFzdE1vZGlmaWVkRGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6bGFzdE1vZGlmaWVkRGF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6dXBkYXRlUmVzb3VyY2VSZXNwb25zZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oOiBDb3BpZWQg
ZnJvbSBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2UuaC4KKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZSk6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6UmVzb3VyY2VSZXNwb25zZSk6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlUmVzcG9uc2UuaDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlOjpSZXNvdXJjZVJlc3BvbnNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OmRvVXBkYXRlUmVzb3VyY2VSZXNwb25zZSk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXNwb25zZS5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OlJlc291cmNlUmVzcG9uc2Up
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvcXQvUmVzb3VyY2VSZXNwb25zZS5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OlJlc291cmNlUmVzcG9uc2Up
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6ZG9VcGRhdGVSZXNvdXJjZVJl
c3BvbnNlKToKKwogMjAwNy0xMS0wOSAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5j
b20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFyayBSb3dlLgpJbmRleDogV2ViQ29yZS5iYXNl
LmV4cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlLmJhc2UuZXhwCShyZXZpc2lvbiAyNzY2MykKKysr
IFdlYkNvcmUuYmFzZS5leHAJKHdvcmtpbmcgY29weSkKQEAgLTYxNywxNCArNjE3LDE0IEBAIF9f
Wk5LN1dlYkNvcmUxNkRlcHJlY2F0ZWRTdHJpbmcyYXRFagogX19aTks3V2ViQ29yZTE2RGVwcmVj
YXRlZFN0cmluZzNtaWRFamoKIF9fWk5LN1dlYkNvcmUxNkRlcHJlY2F0ZWRTdHJpbmc4ZW5kc1dp
dGhFUktTMF8KIF9fWk5LN1dlYkNvcmUxNlJlc291cmNlUmVzcG9uc2UxM25zVVJMUmVzcG9uc2VF
dgotX19aTks3V2ViQ29yZTE2UmVzb3VyY2VSZXNwb25zZTE0aHR0cFN0YXR1c0NvZGVFdgotX19a
Tks3V2ViQ29yZTE2UmVzb3VyY2VSZXNwb25zZTE2aHR0cEhlYWRlckZpZWxkc0V2Ci1fX1pOSzdX
ZWJDb3JlMTZSZXNvdXJjZVJlc3BvbnNlMTZ0ZXh0RW5jb2RpbmdOYW1lRXYKLV9fWk5LN1dlYkNv
cmUxNlJlc291cmNlUmVzcG9uc2UxN3N1Z2dlc3RlZEZpbGVuYW1lRXYKLV9fWk5LN1dlYkNvcmUx
NlJlc291cmNlUmVzcG9uc2UyMWV4cGVjdGVkQ29udGVudExlbmd0aEV2Ci1fX1pOSzdXZWJDb3Jl
MTZSZXNvdXJjZVJlc3BvbnNlM3VybEV2Ci1fX1pOSzdXZWJDb3JlMTZSZXNvdXJjZVJlc3BvbnNl
OG1pbWVUeXBlRXYKLV9fWk5LN1dlYkNvcmUxOVJlc291cmNlUmVxdWVzdEJhc2UxNmh0dHBIZWFk
ZXJGaWVsZHNFdgorX19aTks3V2ViQ29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2UxNGh0dHBTdGF0
dXNDb2RlRXYKK19fWk5LN1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMTZodHRwSGVhZGVy
RmllbGRzRXYKK19fWk5LN1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMTZ0ZXh0RW5jb2Rp
bmdOYW1lRXYKK19fWk5LN1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMTdzdWdnZXN0ZWRG
aWxlbmFtZUV2CitfX1pON1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMjRzZXRFeHBlY3Rl
ZENvbnRlbnRMZW5ndGhFeAorX19aTks3V2ViQ29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2UzdXJs
RXYKK19fWk5LN1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlOG1pbWVUeXBlRXYKK19fWk5L
N1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMTZodHRwSGVhZGVyRmllbGRzRXYKIF9fWk5L
N1dlYkNvcmUxOVJlc291cmNlUmVxdWVzdEJhc2UzdXJsRXYKIF9fWk5LN1dlYkNvcmUxOVJlc291
cmNlUmVxdWVzdEJhc2U3aXNFbXB0eUV2CiBfX1pOSzdXZWJDb3JlMTlTZWxlY3Rpb25Db250cm9s
bGVyMTdpc0luUGFzc3dvcmRGaWVsZEV2CkluZGV4OiBXZWJDb3JlLnBybwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlLnBybwkocmV2aXNpb24gMjc2NjMpCisrKyBXZWJDb3JlLnBybwkod29ya2luZyBj
b3B5KQpAQCAtNjgyLDcgKzY4Miw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHBsYXRmb3JtL25ldHdv
cmsvUHJvdGVjdGlvblNwYWNlLmNwcCBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhh
bmRsZS5jcHAgXAogICAgIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAg
XAotICAgIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZS5jcHAgXAorICAgIHBsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwIFwKICAgICBwbGF0Zm9ybS9SZWd1
bGFyRXhwcmVzc2lvbi5jcHAgXAogICAgIHBsYXRmb3JtL1Njcm9sbEJhci5jcHAgXAogIyAgICBw
bGF0Zm9ybS9TZWFyY2hQb3B1cE1lbnUuY3BwIFwKSW5kZXg6IFdlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShy
ZXZpc2lvbiAyNzY2MykKKysrIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC00NTI1LDExICs0NTI1LDExIEBACiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJ
CQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXFJlc291cmNl
UmVzcG9uc2UuY3BwIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXFJl
c291cmNlUmVzcG9uc2VCYXNlLmNwcCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8Rmls
ZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXFJlc291cmNlUmVzcG9u
c2UuaCINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cbmV0d29ya1xSZXNvdXJjZVJl
c3BvbnNlQmFzZS5oIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWx0ZXINCkBAIC00
NTcyLDYgKzQ1NzIsMTAgQEAKIAkJCQkJCT4NCiAJCQkJCTwvRmlsZT4NCiAJCQkJCTxGaWxlDQor
CQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXGNmXFJlc291cmNlUmVzcG9u
c2UuaCINCisJCQkJCQk+DQorCQkJCQk8L0ZpbGU+DQorCQkJCQk8RmlsZQ0KIAkJCQkJCVJlbGF0
aXZlUGF0aD0iLi5ccGxhdGZvcm1cbmV0d29ya1xjZlxSZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3Bw
Ig0KIAkJCQkJCT4NCiAJCQkJCTwvRmlsZT4NCkluZGV4OiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiAyNzY2MykKKysrIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkod29ya2luZyBjb3B5KQpAQCAtMTYxLDcgKzE2MSw4IEBACiAJCTFBN0NDQjI1MENEOTQ2RkQw
MEI3QjY0RSAvKiBTUUxUcmFuc2FjdGlvbi5pZGwgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBN0NDQjIzMENEOTQ2RkQwMEI3QjY0RSAvKiBTUUxUcmFu
c2FjdGlvbi5pZGwgKi87IH07CiAJCTFBN0NDQjJFMENEOTQ5OTcwMEI3QjY0RSAvKiBKU1NRTFRy
YW5zYWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFBN0NDQjJDMENEOTQ5OTcwMEI3QjY0RSAvKiBKU1NRTFRyYW5zYWN0aW9uLmNwcCAqLzsg
fTsKIAkJMUE3Q0NCMkYwQ0Q5NDk5NzAwQjdCNjRFIC8qIEpTU1FMVHJhbnNhY3Rpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBN0NDQjJEMENEOTQ5
OTcwMEI3QjY0RSAvKiBKU1NRTFRyYW5zYWN0aW9uLmggKi87IH07Ci0JCTFBODE4MEE1MEIxRDRF
NDMwMENFNDZDNCAvKiBSZXNvdXJjZVJlc3BvbnNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBODE4MEE0MEIxRDRFNDMwMENFNDZDNCAvKiBSZXNv
dXJjZVJlc3BvbnNlLmNwcCAqLzsgfTsKKwkJRjlCOUExQUQwQ0UyNzFERDAwOUY5OTJFIC8qIFJl
c291cmNlUmVzcG9uc2VCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGOUI5QTFBQzBDRTI3MURDMDA5Rjk5MkUgLyogUmVzb3VyY2VSZXNwb25zZUJh
c2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlG
OUI5QTFBRjBDRTI3MUY2MDA5Rjk5MkUgLyogUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjlCOUExQUUwQ0UyNzFG
NjAwOUY5OTJFIC8qIFJlc291cmNlUmVzcG9uc2VCYXNlLmNwcCAqLzsgfTsKIAkJMUE4MjBEOTEw
QTEzRUJBNjAwQUY4NDNDIC8qIEltYWdlRG9jdW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE4MjBEOEYwQTEzRUJBNjAwQUY4NDNDIC8qIElt
YWdlRG9jdW1lbnQuY3BwICovOyB9OwogCQkxQTgyMEQ5MjBBMTNFQkE2MDBBRjg0M0MgLyogSW1h
Z2VEb2N1bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUE4MjBEOTAwQTEzRUJBNjAwQUY4NDNDIC8qIEltYWdlRG9jdW1lbnQuaCAqLzsgfTsKIAkJ
MUE4NUIxOEYwQTFCMThBMjAwRDhDODdDIC8qIEpTSFRNTEh0bWxFbGVtZW50LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBODVCMThEMEExQjE4QTIw
MEQ4Qzg3QyAvKiBKU0hUTUxIdG1sRWxlbWVudC5jcHAgKi87IH07CkBAIC00OTYsNyArNDk3LDcg
QEAKIAkJNjU4MkExNjMwOTk5OUQ2RDAwQkVFQjZEIC8qIFN5c3RlbVRpbWVNYWMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU4MkExNTUwOTk5OUQ2
RDAwQkVFQjZEIC8qIFN5c3RlbVRpbWVNYWMuY3BwICovOyB9OwogCQk2NTgyQTE3ODA5OTk5RUEw
MDBCRUVCNkQgLyogRGVwcmVjYXRlZFN0cmluZ01hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1ODJBMTc3MDk5OTlFQTAwMEJFRUI2RCAvKiBEZXBy
ZWNhdGVkU3RyaW5nTWFjLm1tICovOyB9OwogCQk2NTg0MzY4NjBBRTAxQjc0MDBFNTM3NTMgLyog
RnJhbWVMb2FkUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNjU4NDM2ODUwQUUwMUI3NDAwRTUzNzUzIC8qIEZyYW1lTG9hZFJlcXVlc3QuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk2NTg4MjE2
NjBBRjRDREY3MDBGMDFEMUYgLyogUmVzb3VyY2VSZXNwb25zZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU4ODIxNjUwQUY0Q0RGNzAwRjAxRDFGIC8q
IFJlc291cmNlUmVzcG9uc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQlGOTU0MUU1RTBDRTM1Qjc4MDBDQjE0RUUgLyogUmVzb3VyY2VSZXNwb25z
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjk1NDFF
NUQwQ0UzNUI3ODAwQ0IxNEVFIC8qIFJlc291cmNlUmVzcG9uc2UuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2NTg4MjE2QzBBRjRDRTEyMDBGMDFE
MUYgLyogUmVzb3VyY2VSZXNwb25zZU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDY1ODgyMTY5MEFGNENFMTIwMEYwMUQxRiAvKiBSZXNvdXJjZVJl
c3BvbnNlTWFjLm1tICovOyB9OwogCQk2NTkzOTIzNzA5QUU0MzQ2MDAyQzUzMUYgLyogS1VSTC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTkzOTIz
NTA5QUU0MzQ2MDAyQzUzMUYgLyogS1VSTC5jcHAgKi87IH07CiAJCTY1OTM5MjM4MDlBRTQzNDYw
MDJDNTMxRiAvKiBLVVJMLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2NTkzOTIzNjA5QUU0MzQ2MDAyQzUzMUYgLyogS1VSTC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC00MzA3LDcgKzQzMDgsOCBAQAog
CQkxQTdDQ0IyMzBDRDk0NkZEMDBCN0I2NEUgLyogU1FMVHJhbnNhY3Rpb24uaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFNRTFRyYW5zYWN0aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMUE3Q0NCMkMwQ0Q5NDk5NzAwQjdCNjRFIC8qIEpTU1FMVHJhbnNhY3Rpb24uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTUUxUcmFuc2FjdGlvbi5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBN0NDQjJEMENEOTQ5OTcwMEI3QjY0
RSAvKiBKU1NRTFRyYW5zYWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTU1FMVHJhbnNhY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUE4MTgw
QTQwQjFENEU0MzAwQ0U0NkM0IC8qIFJlc291cmNlUmVzcG9uc2UuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVzb3VyY2VSZXNwb25zZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUY5QjlBMUFDMENFMjcxREMwMDlGOTkyRSAvKiBSZXNvdXJjZVJl
c3BvbnNlQmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VS
ZXNwb25zZUJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjlCOUExQUUwQ0Uy
NzFGNjAwOUY5OTJFIC8qIFJlc291cmNlUmVzcG9uc2VCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBODIwRDhGMEExM0VCQTYwMEFGODQzQyAvKiBJbWFnZURv
Y3VtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZURv
Y3VtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUE4MjBEOTAwQTEzRUJB
NjAwQUY4NDNDIC8qIEltYWdlRG9jdW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEltYWdlRG9jdW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUE4
NUIxN0QwQTFCMTgzNjAwRDhDODdDIC8qIEhUTUxIdG1sRWxlbWVudC5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gSFRNTEh0bWxFbGVtZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTQ2ODgsNyArNDY5MCw3IEBACiAJCTY1ODJBMTU1MDk5OTlENkQwMEJFRUI2RCAvKiBT
eXN0ZW1UaW1lTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
eXN0ZW1UaW1lTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU4MkExNzcw
OTk5OUVBMDAwQkVFQjZEIC8qIERlcHJlY2F0ZWRTdHJpbmdNYWMubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRGVwcmVjYXRlZFN0cmluZ01hYy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU4NDM2ODUwQUUwMUI3NDAwRTUzNzUzIC8qIEZyYW1l
TG9hZFJlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZyYW1lTG9h
ZFJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNjU4ODIxNjUwQUY0Q0RG
NzAwRjAxRDFGIC8qIFJlc291cmNlUmVzcG9uc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlc291cmNlUmVzcG9uc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRjk1NDFFNUQwQ0UzNUI3ODAwQ0IxNEVFIC8qIFJlc291cmNlUmVzcG9uc2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlUmVzcG9uc2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU4ODIxNjkwQUY0Q0UxMjAwRjAxRDFGIC8qIFJlc291cmNl
UmVzcG9uc2VNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
UmVzb3VyY2VSZXNwb25zZU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU5
MzkyMzUwOUFFNDM0NjAwMkM1MzFGIC8qIEtVUkwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEtVUkwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2
NTkzOTIzNjA5QUU0MzQ2MDAyQzUzMUYgLyogS1VSTC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gS1VSTC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODA5Niw4
ICs4MDk4LDggQEAKIAkJCQk2NTZCODRERjBBRUExRDMxMDBBMDk1QjQgLyogUmVzb3VyY2VIYW5k
bGVJbnRlcm5hbC5oICovLAogCQkJCTkzRDgyQTQ3MEMyOENGMUUwMEZENzAzRCAvKiBSZXNvdXJj
ZVJlcXVlc3RCYXNlLmNwcCAqLywKIAkJCQk5M0Q4MkE0ODBDMjhDRjFFMDBGRDcwM0QgLyogUmVz
b3VyY2VSZXF1ZXN0QmFzZS5oICovLAotCQkJCTY1ODgyMTY1MEFGNENERjcwMEYwMUQxRiAvKiBS
ZXNvdXJjZVJlc3BvbnNlLmggKi8sCi0JCQkJMUE4MTgwQTQwQjFENEU0MzAwQ0U0NkM0IC8qIFJl
c291cmNlUmVzcG9uc2UuY3BwICovLAorCQkJCUY5QjlBMUFFMENFMjcxRjYwMDlGOTkyRSAvKiBS
ZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAgKi8sCisJCQkJRjlCOUExQUMwQ0UyNzFEQzAwOUY5OTJF
IC8qIFJlc291cmNlUmVzcG9uc2VCYXNlLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IG5ldHdvcms7
CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtODEwNiw2ICs4MTA4LDcgQEAKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJOTNDRERFMjcwQzIzOUE0ODAwQ0Q1
N0FFIC8qIFJlc291cmNlUmVxdWVzdC5oICovLAorCQkJCUY5NTQxRTVEMENFMzVCNzgwMENCMTRF
RSAvKiBSZXNvdXJjZVJlc3BvbnNlLmggKi8sCiAJCQkJNjUxODg4OEEwQUZGM0MxNDAwMTY0NzIw
IC8qIFJlc291cmNlRXJyb3JNYWMubW0gKi8sCiAJCQkJNjVEQUQ5RkUwQUZEODZCRjAwQ0U1M0VE
IC8qIEZvcm1EYXRhU3RyZWFtTWFjLmggKi8sCiAJCQkJNjVEQUQ5RkYwQUZEODZCRjAwQ0U1M0VE
IC8qIEZvcm1EYXRhU3RyZWFtTWFjLm1tICovLApAQCAtMTM1NzksNyArMTM1ODIsOCBAQAogCQkJ
CTY1NkQzNzNGMEFEQkE1REUwMEE0NTU0RCAvKiBSZXNvdXJjZUxvYWRlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTNDRERFMjgwQzIzOUE0ODAwQ0Q1N0FFIC8qIFJlc291cmNlUmVxdWVzdC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTNEODJBNEEwQzI4Q0YxRTAwRkQ3MDNEIC8qIFJlc291cmNlUmVx
dWVzdEJhc2UuaCBpbiBIZWFkZXJzICovLAotCQkJCTY1ODgyMTY2MEFGNENERjcwMEYwMUQxRiAv
KiBSZXNvdXJjZVJlc3BvbnNlLmggaW4gSGVhZGVycyAqLywKKwkJCQlGOTU0MUU1RTBDRTM1Qjc4
MDBDQjE0RUUgLyogUmVzb3VyY2VSZXNwb25zZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRjlCOUEx
QUQwQ0UyNzFERDAwOUY5OTJFIC8qIFJlc291cmNlUmVzcG9uc2VCYXNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBOENGRjVFMTBBMTU1QTA1MDAwQTQyMzQgLyogUm9vdElubGluZUJveC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTE5NjExNzEwQ0FDNTY1NzAwMTBBODBDIC8qIFNRTENhbGxiYWNrLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQTdDQ0FFQTBDRDkwMUExMDBCN0I2NEUgLyogU1FMRXJyb3Iu
aCBpbiBIZWFkZXJzICovLApAQCAtMTUxNDgsNyArMTUxNTIsNyBAQAogCQkJCTUxQUEzRjZGMEJE
NUFBOUUwMDg5Mjk3MSAvKiBSZXNvdXJjZUxvYWRlck1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTkzRDgyQTQ5MEMyOENGMUUwMEZENzAzRCAvKiBSZXNvdXJjZVJlcXVlc3RCYXNlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTY1MEUzRjZBMEFGNkMxNjgwMDFGQTNBRCAvKiBSZXNvdXJjZVJlcXVl
c3RNYWMubW0gaW4gU291cmNlcyAqLywKLQkJCQkxQTgxODBBNTBCMUQ0RTQzMDBDRTQ2QzQgLyog
UmVzb3VyY2VSZXNwb25zZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGOUI5QTFBRjBDRTI3MUY2
MDA5Rjk5MkUgLyogUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NjU4ODIxNkMwQUY0Q0UxMjAwRjAxRDFGIC8qIFJlc291cmNlUmVzcG9uc2VNYWMubW0gaW4gU291
cmNlcyAqLywKIAkJCQlBOENGRjVFNzBBMTU1QTA1MDAwQTQyMzQgLyogUm9vdElubGluZUJveC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTk2MTE3MzBDQUM1NjU3MDAxMEE4MEMgLyogU1FMUmVz
dWx0U2V0LmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZVJlc3BvbnNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVz
cG9uc2UuY3BwCShyZXZpc2lvbiAyNzY2MykKKysrIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VS
ZXNwb25zZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMjQ2ICswLDAgQEAKLS8vIC0qLSBtb2Rl
OiBjKys7IGMtYmFzaWMtb2Zmc2V0OiA0IC0qLQotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiBB
cHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
Ci0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1ib29sIFJlc291cmNlUmVzcG9uc2U6OmlzSFRUUCgpIGNvbnN0Ci17Ci0g
ICAgdXBkYXRlUmVzb3VyY2VSZXNwb25zZSgpOwotICAgIAotICAgIFN0cmluZyBwcm90b2NvbCA9
IG1fdXJsLnByb3RvY29sKCk7Ci0gICAgCi0gICAgcmV0dXJuIGVxdWFsSWdub3JpbmdDYXNlKHBy
b3RvY29sLCAiaHR0cCIpICB8fCBlcXVhbElnbm9yaW5nQ2FzZShwcm90b2NvbCwgImh0dHBzIik7
Ci19Ci0KLWNvbnN0IEtVUkwmIFJlc291cmNlUmVzcG9uc2U6OnVybCgpIGNvbnN0Ci17Ci0gICAg
dXBkYXRlUmVzb3VyY2VSZXNwb25zZSgpOwotICAgIAotICAgIHJldHVybiBtX3VybDsgCi19Ci0K
LXZvaWQgUmVzb3VyY2VSZXNwb25zZTo6c2V0VXJsKGNvbnN0IEtVUkwmIHVybCkKLXsKLSAgICB1
cGRhdGVSZXNvdXJjZVJlc3BvbnNlKCk7Ci0gICAgbV9pc051bGwgPSBmYWxzZTsKLSAgICAKLSAg
ICBtX3VybCA9IHVybDsgCi19Ci0KLWNvbnN0IFN0cmluZyYgUmVzb3VyY2VSZXNwb25zZTo6bWlt
ZVR5cGUoKSBjb25zdAotewotICAgIHVwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsKLQotICAgIHJl
dHVybiBtX21pbWVUeXBlOyAKLX0KLQotdm9pZCBSZXNvdXJjZVJlc3BvbnNlOjpzZXRNaW1lVHlw
ZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQotewotICAgIHVwZGF0ZVJlc291cmNlUmVzcG9uc2Uo
KTsKLSAgICBtX2lzTnVsbCA9IGZhbHNlOwotICAgIAotICAgIG1fbWltZVR5cGUgPSBtaW1lVHlw
ZTsgCi19Ci0KLWxvbmcgbG9uZyBSZXNvdXJjZVJlc3BvbnNlOjpleHBlY3RlZENvbnRlbnRMZW5n
dGgoKSBjb25zdCAKLXsKLSAgICB1cGRhdGVSZXNvdXJjZVJlc3BvbnNlKCk7Ci0KLSAgICByZXR1
cm4gbV9leHBlY3RlZENvbnRlbnRMZW5ndGg7Ci19Ci0KLXZvaWQgUmVzb3VyY2VSZXNwb25zZTo6
c2V0RXhwZWN0ZWRDb250ZW50TGVuZ3RoKGxvbmcgbG9uZyBleHBlY3RlZENvbnRlbnRMZW5ndGgp
Ci17Ci0gICAgdXBkYXRlUmVzb3VyY2VSZXNwb25zZSgpOwotICAgIG1faXNOdWxsID0gZmFsc2U7
Ci0gICAgCi0gICAgbV9leHBlY3RlZENvbnRlbnRMZW5ndGggPSBleHBlY3RlZENvbnRlbnRMZW5n
dGg7IAotfQotCi1jb25zdCBTdHJpbmcmIFJlc291cmNlUmVzcG9uc2U6OnRleHRFbmNvZGluZ05h
bWUoKSBjb25zdAotewotICAgIHVwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsKLQotICAgIHJldHVy
biBtX3RleHRFbmNvZGluZ05hbWU7Ci19Ci0KLXZvaWQgUmVzb3VyY2VSZXNwb25zZTo6c2V0VGV4
dEVuY29kaW5nTmFtZShjb25zdCBTdHJpbmcmIGVuY29kaW5nTmFtZSkKLXsKLSAgICB1cGRhdGVS
ZXNvdXJjZVJlc3BvbnNlKCk7Ci0gICAgbV9pc051bGwgPSBmYWxzZTsKLSAgICAKLSAgICBtX3Rl
eHRFbmNvZGluZ05hbWUgPSBlbmNvZGluZ05hbWU7IAotfQotCi0vLyBGSVhNRSBzaG91bGQgY29t
cHV0ZSB0aGlzIG9uIHRoZSBmbHkKLWNvbnN0IFN0cmluZyYgUmVzb3VyY2VSZXNwb25zZTo6c3Vn
Z2VzdGVkRmlsZW5hbWUoKSBjb25zdAotewotICAgIHVwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsK
LQotICAgIHJldHVybiBtX3N1Z2dlc3RlZEZpbGVuYW1lOwotfQotCi12b2lkIFJlc291cmNlUmVz
cG9uc2U6OnNldFN1Z2dlc3RlZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkTmFtZSkK
LXsKLSAgICB1cGRhdGVSZXNvdXJjZVJlc3BvbnNlKCk7Ci0gICAgbV9pc051bGwgPSBmYWxzZTsK
LSAgICAKLSAgICBtX3N1Z2dlc3RlZEZpbGVuYW1lID0gc3VnZ2VzdGVkTmFtZTsgCi19Ci0KLWlu
dCBSZXNvdXJjZVJlc3BvbnNlOjpodHRwU3RhdHVzQ29kZSgpIGNvbnN0Ci17Ci0gICAgdXBkYXRl
UmVzb3VyY2VSZXNwb25zZSgpOwotCi0gICAgcmV0dXJuIG1faHR0cFN0YXR1c0NvZGU7IAotfQot
Ci12b2lkIFJlc291cmNlUmVzcG9uc2U6OnNldEhUVFBTdGF0dXNDb2RlKGludCBzdGF0dXNDb2Rl
KQotewotICAgIHVwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsKLQotICAgIG1faHR0cFN0YXR1c0Nv
ZGUgPSBzdGF0dXNDb2RlOwotfQotCi1jb25zdCBTdHJpbmcmIFJlc291cmNlUmVzcG9uc2U6Omh0
dHBTdGF0dXNUZXh0KCkgY29uc3QgCi17Ci0gICAgdXBkYXRlUmVzb3VyY2VSZXNwb25zZSgpOwot
Ci0gICAgcmV0dXJuIG1faHR0cFN0YXR1c1RleHQ7IAotfQotCi12b2lkIFJlc291cmNlUmVzcG9u
c2U6OnNldEhUVFBTdGF0dXNUZXh0KGNvbnN0IFN0cmluZyYgc3RhdHVzVGV4dCkgCi17Ci0gICAg
dXBkYXRlUmVzb3VyY2VSZXNwb25zZSgpOwotCi0gICAgbV9odHRwU3RhdHVzVGV4dCA9IHN0YXR1
c1RleHQ7IAotfQotCi1TdHJpbmcgUmVzb3VyY2VSZXNwb25zZTo6aHR0cEhlYWRlckZpZWxkKGNv
bnN0IFN0cmluZyYgbmFtZSkgY29uc3QKLXsKLSAgICB1cGRhdGVSZXNvdXJjZVJlc3BvbnNlKCk7
Ci0KLSAgICByZXR1cm4gbV9odHRwSGVhZGVyRmllbGRzLmdldChuYW1lKTsgCi19Ci0KLXZvaWQg
UmVzb3VyY2VSZXNwb25zZTo6c2V0SFRUUEhlYWRlckZpZWxkKGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgU3RyaW5nJiB2YWx1ZSkKLXsKLSAgICB1cGRhdGVSZXNvdXJjZVJlc3BvbnNlKCk7Ci0K
LSAgICBtX2h0dHBIZWFkZXJGaWVsZHMuc2V0KG5hbWUsIHZhbHVlKTsKLX0KLQotY29uc3QgSFRU
UEhlYWRlck1hcCYgUmVzb3VyY2VSZXNwb25zZTo6aHR0cEhlYWRlckZpZWxkcygpIGNvbnN0Ci17
Ci0gICAgdXBkYXRlUmVzb3VyY2VSZXNwb25zZSgpOwotCi0gICAgcmV0dXJuIG1faHR0cEhlYWRl
ckZpZWxkczsgCi19Ci0KLWJvb2wgUmVzb3VyY2VSZXNwb25zZTo6aXNBdHRhY2htZW50KCkgY29u
c3QKLXsKLSAgICB1cGRhdGVSZXNvdXJjZVJlc3BvbnNlKCk7Ci0KLSAgICBTdHJpbmcgdmFsdWUg
PSBtX2h0dHBIZWFkZXJGaWVsZHMuZ2V0KCJDb250ZW50LURpc3Bvc2l0aW9uIik7Ci0gICAgaW50
IGxvYyA9IHZhbHVlLmZpbmQoJzsnKTsKLSAgICBpZiAobG9jICE9IC0xKQotICAgICAgICB2YWx1
ZSA9IHZhbHVlLmxlZnQobG9jKTsKLSAgICB2YWx1ZSA9IHZhbHVlLnN0cmlwV2hpdGVTcGFjZSgp
OwotICAgIHJldHVybiBlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgImF0dGFjaG1lbnQiKTsKLX0K
LQotdm9pZCBSZXNvdXJjZVJlc3BvbnNlOjpzZXRFeHBpcmF0aW9uRGF0ZSh0aW1lX3QgZXhwaXJh
dGlvbkRhdGUpCi17Ci0gICAgdXBkYXRlUmVzb3VyY2VSZXNwb25zZSgpOwotCi0gICAgbV9leHBp
cmF0aW9uRGF0ZSA9IGV4cGlyYXRpb25EYXRlOwotfQotCi10aW1lX3QgUmVzb3VyY2VSZXNwb25z
ZTo6ZXhwaXJhdGlvbkRhdGUoKSBjb25zdAotewotICAgIHVwZGF0ZVJlc291cmNlUmVzcG9uc2Uo
KTsKLQotICAgIHJldHVybiBtX2V4cGlyYXRpb25EYXRlOyAKLX0KLQotdm9pZCBSZXNvdXJjZVJl
c3BvbnNlOjpzZXRMYXN0TW9kaWZpZWREYXRlKHRpbWVfdCBsYXN0TW9kaWZpZWREYXRlKSAKLXsK
LSAgICB1cGRhdGVSZXNvdXJjZVJlc3BvbnNlKCk7Ci0KLSAgICBtX2xhc3RNb2RpZmllZERhdGUg
PSBsYXN0TW9kaWZpZWREYXRlOyAKLX0KLQotdGltZV90IFJlc291cmNlUmVzcG9uc2U6Omxhc3RN
b2RpZmllZERhdGUoKSBjb25zdAotewotICAgIHVwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsKLQot
ICAgIHJldHVybiBtX2xhc3RNb2RpZmllZERhdGU7IAotfQotCi12b2lkIFJlc291cmNlUmVzcG9u
c2U6OnVwZGF0ZVJlc291cmNlUmVzcG9uc2UoKSBjb25zdAotewotI2lmIFBMQVRGT1JNKE1BQykg
fHwgVVNFKENGTkVUV09SSykKLSAgICBpZiAobV9pc1VwVG9EYXRlKQotICAgICAgICByZXR1cm47
Ci0gICAgCi0gICAgY29uc3RfY2FzdDxSZXNvdXJjZVJlc3BvbnNlKj4odGhpcyktPmRvVXBkYXRl
UmVzb3VyY2VSZXNwb25zZSgpOwotICAgIG1faXNVcFRvRGF0ZSA9IHRydWU7Ci0jZW5kaWYKLX0K
LQotYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGEsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIGIpCi17Ci0gICAgaWYgKGEuaXNOdWxsKCkgIT0gYi5pc051bGwoKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOyAgCi0gICAgaWYgKGEudXJsKCkgIT0gYi51cmwoKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChhLm1pbWVUeXBlKCkgIT0gYi5taW1lVHlwZSgpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGEuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkg
IT0gYi5leHBlY3RlZENvbnRlbnRMZW5ndGgoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IGlmIChhLnRleHRFbmNvZGluZ05hbWUoKSAhPSBiLnRleHRFbmNvZGluZ05hbWUoKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChhLnN1Z2dlc3RlZEZpbGVuYW1lKCkgIT0gYi5zdWdn
ZXN0ZWRGaWxlbmFtZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGEuaHR0cFN0
YXR1c0NvZGUoKSAhPSBiLmh0dHBTdGF0dXNDb2RlKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICBpZiAoYS5odHRwU3RhdHVzVGV4dCgpICE9IGIuaHR0cFN0YXR1c1RleHQoKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChhLmh0dHBIZWFkZXJGaWVsZHMoKSAhPSBiLmh0dHBI
ZWFkZXJGaWVsZHMoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChhLmV4cGlyYXRp
b25EYXRlKCkgIT0gYi5leHBpcmF0aW9uRGF0ZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0j
aWYgUExBVEZPUk0oTUFDKQotICAgIGlmIChhLm5zVVJMUmVzcG9uc2UoKSAhPSBiLm5zVVJMUmVz
cG9uc2UoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi0gICAgcmV0dXJuIHRydWU7
Ci0gfQotCi19CkluZGV4OiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2UuaAkocmV2aXNpb24g
Mjc2NjMpCisrKyBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2UuaAkod29ya2luZyBj
b3B5KQpAQCAtMSwxNTkgKzAsMCBAQAotLy8gLSotIG1vZGU6IGMrKzsgYy1iYXNpYy1vZmZzZXQ6
IDQgLSotCi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIFJlc291cmNlUmVzcG9uc2VfaAot
I2RlZmluZSBSZXNvdXJjZVJlc3BvbnNlX2gKLQotI2luY2x1ZGUgIkhUVFBIZWFkZXJNYXAuaCIK
LSNpbmNsdWRlICJLVVJMLmgiCi0KLSNpZiBQTEFURk9STShNQUMpCi0jaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgotI2lmZGVmIF9fT0JKQ19fCi1AY2xhc3MgTlNVUkxSZXNwb25zZTsKLSNlbHNl
Ci1jbGFzcyBOU1VSTFJlc3BvbnNlOwotI2VuZGlmCi0jZWxpZiBVU0UoQ0ZORVRXT1JLKQotI2lu
Y2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLXR5cGVkZWYgc3RydWN0IF9DRlVSTFJlc3BvbnNlKiBD
RlVSTFJlc3BvbnNlUmVmOwotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3Mg
UmVzb3VyY2VSZXNwb25zZSB7Ci1wdWJsaWM6Ci0KLSAgICBSZXNvdXJjZVJlc3BvbnNlKCkgCi0g
ICAgICAgIDogbV9leHBlY3RlZENvbnRlbnRMZW5ndGgoMCkKLSAgICAgICAgLCBtX2h0dHBTdGF0
dXNDb2RlKDApCi0gICAgICAgICwgbV9leHBpcmF0aW9uRGF0ZSgwKQotICAgICAgICAsIG1faXNV
cFRvRGF0ZSh0cnVlKQotICAgICAgICAsIG1faXNOdWxsKHRydWUpCi0gICAgewotICAgIH0KLQot
ICAgIFJlc291cmNlUmVzcG9uc2UoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBsb25nIGxvbmcgZXhwZWN0ZWRMZW5ndGgsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5n
TmFtZSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKLSAgICAgICAgOiBtX3VybCh1cmwpCi0gICAg
ICAgICwgbV9taW1lVHlwZShtaW1lVHlwZSkKLSAgICAgICAgLCBtX2V4cGVjdGVkQ29udGVudExl
bmd0aChleHBlY3RlZExlbmd0aCkKLSAgICAgICAgLCBtX3RleHRFbmNvZGluZ05hbWUodGV4dEVu
Y29kaW5nTmFtZSkKLSAgICAgICAgLCBtX3N1Z2dlc3RlZEZpbGVuYW1lKGZpbGVuYW1lKQotICAg
ICAgICAsIG1faHR0cFN0YXR1c0NvZGUoMCkKLSAgICAgICAgLCBtX2V4cGlyYXRpb25EYXRlKDAp
Ci0gICAgICAgICwgbV9pc1VwVG9EYXRlKHRydWUpCi0gICAgICAgICwgbV9pc051bGwoZmFsc2Up
Ci0gICAgewotICAgIH0KLSAKLSAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1faXNO
dWxsOyB9Ci0gICAgYm9vbCBpc0hUVFAoKSBjb25zdDsKLSAgICAKLSAgICBjb25zdCBLVVJMJiB1
cmwoKSBjb25zdDsKLSAgICB2b2lkIHNldFVybChjb25zdCBLVVJMJiB1cmwpOwotCi0gICAgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0TWltZVR5cGUoY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSk7Ci0KLSAgICBsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50TGVuZ3Ro
KCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRFeHBlY3RlZENvbnRlbnRMZW5ndGgobG9uZyBsb25nIGV4
cGVjdGVkQ29udGVudExlbmd0aCk7Ci0KLSAgICBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05h
bWUoKSBjb25zdDsKLSAgICB2b2lkIHNldFRleHRFbmNvZGluZ05hbWUoY29uc3QgU3RyaW5nJiBu
YW1lKTsKLQotICAgIC8vIEZJWE1FIHNob3VsZCBjb21wdXRlIHRoaXMgb24gdGhlIGZseQotICAg
IGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUoKSBjb25zdDsKLSAgICB2b2lkIHNldFN1
Z2dlc3RlZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYpOwotCi0gICAgaW50IGh0dHBTdGF0dXNDb2Rl
KCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRIVFRQU3RhdHVzQ29kZShpbnQpOwotICAgIAotICAgIGNv
bnN0IFN0cmluZyYgaHR0cFN0YXR1c1RleHQoKSBjb25zdDsKLSAgICB2b2lkIHNldEhUVFBTdGF0
dXNUZXh0KGNvbnN0IFN0cmluZyYpOwotICAgIAotICAgIFN0cmluZyBodHRwSGVhZGVyRmllbGQo
Y29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdDsKLSAgICB2b2lkIHNldEhUVFBIZWFkZXJGaWVsZChj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpOwotICAgIGNvbnN0IEhUVFBI
ZWFkZXJNYXAmIGh0dHBIZWFkZXJGaWVsZHMoKSBjb25zdDsKLQotICAgIGJvb2wgaXNNdWx0aXBh
cnQoKSBjb25zdCB7IHJldHVybiBtaW1lVHlwZSgpID09ICJtdWx0aXBhcnQveC1taXhlZC1yZXBs
YWNlIjsgfQotCi0gICAgYm9vbCBpc0F0dGFjaG1lbnQoKSBjb25zdDsKLQotICAgIHZvaWQgc2V0
RXhwaXJhdGlvbkRhdGUodGltZV90KTsKLSAgICB0aW1lX3QgZXhwaXJhdGlvbkRhdGUoKSBjb25z
dDsKLQotICAgIHZvaWQgc2V0TGFzdE1vZGlmaWVkRGF0ZSh0aW1lX3QpOwotICAgIHRpbWVfdCBs
YXN0TW9kaWZpZWREYXRlKCkgY29uc3Q7Ci0KLSNpZiBQTEFURk9STShNQUMpCi0gICAgUmVzb3Vy
Y2VSZXNwb25zZShOU1VSTFJlc3BvbnNlKiBuc1Jlc3BvbnNlKQotICAgICAgICA6IG1faXNVcFRv
RGF0ZShmYWxzZSkKLSAgICAgICAgLCBtX2lzTnVsbCghbnNSZXNwb25zZSkKLSAgICAgICAgLCBt
X25zUmVzcG9uc2UobnNSZXNwb25zZSkgeyB9Ci0gICAgCi0gICAgTlNVUkxSZXNwb25zZSAqbnNV
UkxSZXNwb25zZSgpIGNvbnN0OwotI2VsaWYgVVNFKENGTkVUV09SSykKLSAgICBSZXNvdXJjZVJl
c3BvbnNlKENGVVJMUmVzcG9uc2VSZWYgY2ZSZXNwb25zZSkKLSAgICAgICAgOiBtX2lzVXBUb0Rh
dGUoZmFsc2UpCi0gICAgICAgICwgbV9pc051bGwoIWNmUmVzcG9uc2UpCi0gICAgICAgICwgbV9j
ZlJlc3BvbnNlKGNmUmVzcG9uc2UpIHsgfQotICAgIAotICAgIENGVVJMUmVzcG9uc2VSZWYgY2ZV
UkxSZXNwb25zZSgpIGNvbnN0OwotI2VuZGlmCi0gICAgCi0gcHJpdmF0ZToKLSAgICB2b2lkIHVw
ZGF0ZVJlc291cmNlUmVzcG9uc2UoKSBjb25zdDsgCi0gICAgCi0jaWYgUExBVEZPUk0oTUFDKSB8
fCBVU0UoQ0ZORVRXT1JLKQotICAgIHZvaWQgZG9VcGRhdGVSZXNvdXJjZVJlc3BvbnNlKCk7Ci0j
ZW5kaWYKLSAgICAKLSAgICBLVVJMIG1fdXJsOwotICAgIFN0cmluZyBtX21pbWVUeXBlOwotICAg
IGxvbmcgbG9uZyBtX2V4cGVjdGVkQ29udGVudExlbmd0aDsKLSAgICBTdHJpbmcgbV90ZXh0RW5j
b2RpbmdOYW1lOwotICAgIFN0cmluZyBtX3N1Z2dlc3RlZEZpbGVuYW1lOwotICAgIGludCBtX2h0
dHBTdGF0dXNDb2RlOwotICAgIFN0cmluZyBtX2h0dHBTdGF0dXNUZXh0OwotICAgIEhUVFBIZWFk
ZXJNYXAgbV9odHRwSGVhZGVyRmllbGRzOwotICAgIHRpbWVfdCBtX2V4cGlyYXRpb25EYXRlOwot
ICAgIHRpbWVfdCBtX2xhc3RNb2RpZmllZERhdGU7Ci0gICAgbXV0YWJsZSBib29sIG1faXNVcFRv
RGF0ZTsKLSAgICBib29sIG1faXNOdWxsOwotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBSZXRhaW5Q
dHI8TlNVUkxSZXNwb25zZT4gbV9uc1Jlc3BvbnNlOwotI2VsaWYgVVNFKENGTkVUV09SSykKLSAg
ICBSZXRhaW5QdHI8Q0ZVUkxSZXNwb25zZVJlZj4gbV9jZlJlc3BvbnNlOyAgICAgIAotI2VuZGlm
Ci0gICAgCi19OwotCi1ib29sIG9wZXJhdG9yPT0oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgYSwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgYik7Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIGEsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGIpIHsgcmV0dXJu
ICEoYSA9PSBiKTsgfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBSZXNv
dXJjZVJlc3BvbnNlX2gKSW5kZXg6IHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJh
c2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJh
c2UuY3BwCShyZXZpc2lvbiAyNzUxOSkJKGZyb20gcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJl
c3BvbnNlLmNwcDoyNzUxOSkKKysrIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjQ2IEBACisvLyAtKi0gbW9kZTogYysr
OyBjLWJhc2ljLW9mZnNldDogNCAtKi0KKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUg
Q29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworYm9vbCBSZXNvdXJjZVJlc3BvbnNlOjppc0hUVFAoKSBjb25zdAoreworICAgIHVw
ZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsKKyAgICAKKyAgICBTdHJpbmcgcHJvdG9jb2wgPSBtX3Vy
bC5wcm90b2NvbCgpOworICAgIAorICAgIHJldHVybiBlcXVhbElnbm9yaW5nQ2FzZShwcm90b2Nv
bCwgImh0dHAiKSAgfHwgZXF1YWxJZ25vcmluZ0Nhc2UocHJvdG9jb2wsICJodHRwcyIpOworfQor
Citjb25zdCBLVVJMJiBSZXNvdXJjZVJlc3BvbnNlOjp1cmwoKSBjb25zdAoreworICAgIHVwZGF0
ZVJlc291cmNlUmVzcG9uc2UoKTsKKyAgICAKKyAgICByZXR1cm4gbV91cmw7IAorfQorCit2b2lk
IFJlc291cmNlUmVzcG9uc2U6OnNldFVybChjb25zdCBLVVJMJiB1cmwpCit7CisgICAgdXBkYXRl
UmVzb3VyY2VSZXNwb25zZSgpOworICAgIG1faXNOdWxsID0gZmFsc2U7CisgICAgCisgICAgbV91
cmwgPSB1cmw7IAorfQorCitjb25zdCBTdHJpbmcmIFJlc291cmNlUmVzcG9uc2U6Om1pbWVUeXBl
KCkgY29uc3QKK3sKKyAgICB1cGRhdGVSZXNvdXJjZVJlc3BvbnNlKCk7CisKKyAgICByZXR1cm4g
bV9taW1lVHlwZTsgCit9CisKK3ZvaWQgUmVzb3VyY2VSZXNwb25zZTo6c2V0TWltZVR5cGUoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSkKK3sKKyAgICB1cGRhdGVSZXNvdXJjZVJlc3BvbnNlKCk7Cisg
ICAgbV9pc051bGwgPSBmYWxzZTsKKyAgICAKKyAgICBtX21pbWVUeXBlID0gbWltZVR5cGU7IAor
fQorCitsb25nIGxvbmcgUmVzb3VyY2VSZXNwb25zZTo6ZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkg
Y29uc3QgCit7CisgICAgdXBkYXRlUmVzb3VyY2VSZXNwb25zZSgpOworCisgICAgcmV0dXJuIG1f
ZXhwZWN0ZWRDb250ZW50TGVuZ3RoOworfQorCit2b2lkIFJlc291cmNlUmVzcG9uc2U6OnNldEV4
cGVjdGVkQ29udGVudExlbmd0aChsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50TGVuZ3RoKQorewor
ICAgIHVwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsKKyAgICBtX2lzTnVsbCA9IGZhbHNlOworICAg
IAorICAgIG1fZXhwZWN0ZWRDb250ZW50TGVuZ3RoID0gZXhwZWN0ZWRDb250ZW50TGVuZ3RoOyAK
K30KKworY29uc3QgU3RyaW5nJiBSZXNvdXJjZVJlc3BvbnNlOjp0ZXh0RW5jb2RpbmdOYW1lKCkg
Y29uc3QKK3sKKyAgICB1cGRhdGVSZXNvdXJjZVJlc3BvbnNlKCk7CisKKyAgICByZXR1cm4gbV90
ZXh0RW5jb2RpbmdOYW1lOworfQorCit2b2lkIFJlc291cmNlUmVzcG9uc2U6OnNldFRleHRFbmNv
ZGluZ05hbWUoY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUpCit7CisgICAgdXBkYXRlUmVzb3Vy
Y2VSZXNwb25zZSgpOworICAgIG1faXNOdWxsID0gZmFsc2U7CisgICAgCisgICAgbV90ZXh0RW5j
b2RpbmdOYW1lID0gZW5jb2RpbmdOYW1lOyAKK30KKworLy8gRklYTUUgc2hvdWxkIGNvbXB1dGUg
dGhpcyBvbiB0aGUgZmx5Citjb25zdCBTdHJpbmcmIFJlc291cmNlUmVzcG9uc2U6OnN1Z2dlc3Rl
ZEZpbGVuYW1lKCkgY29uc3QKK3sKKyAgICB1cGRhdGVSZXNvdXJjZVJlc3BvbnNlKCk7CisKKyAg
ICByZXR1cm4gbV9zdWdnZXN0ZWRGaWxlbmFtZTsKK30KKwordm9pZCBSZXNvdXJjZVJlc3BvbnNl
OjpzZXRTdWdnZXN0ZWRGaWxlbmFtZShjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZE5hbWUpCit7Cisg
ICAgdXBkYXRlUmVzb3VyY2VSZXNwb25zZSgpOworICAgIG1faXNOdWxsID0gZmFsc2U7CisgICAg
CisgICAgbV9zdWdnZXN0ZWRGaWxlbmFtZSA9IHN1Z2dlc3RlZE5hbWU7IAorfQorCitpbnQgUmVz
b3VyY2VSZXNwb25zZTo6aHR0cFN0YXR1c0NvZGUoKSBjb25zdAoreworICAgIHVwZGF0ZVJlc291
cmNlUmVzcG9uc2UoKTsKKworICAgIHJldHVybiBtX2h0dHBTdGF0dXNDb2RlOyAKK30KKwordm9p
ZCBSZXNvdXJjZVJlc3BvbnNlOjpzZXRIVFRQU3RhdHVzQ29kZShpbnQgc3RhdHVzQ29kZSkKK3sK
KyAgICB1cGRhdGVSZXNvdXJjZVJlc3BvbnNlKCk7CisKKyAgICBtX2h0dHBTdGF0dXNDb2RlID0g
c3RhdHVzQ29kZTsKK30KKworY29uc3QgU3RyaW5nJiBSZXNvdXJjZVJlc3BvbnNlOjpodHRwU3Rh
dHVzVGV4dCgpIGNvbnN0IAoreworICAgIHVwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsKKworICAg
IHJldHVybiBtX2h0dHBTdGF0dXNUZXh0OyAKK30KKwordm9pZCBSZXNvdXJjZVJlc3BvbnNlOjpz
ZXRIVFRQU3RhdHVzVGV4dChjb25zdCBTdHJpbmcmIHN0YXR1c1RleHQpIAoreworICAgIHVwZGF0
ZVJlc291cmNlUmVzcG9uc2UoKTsKKworICAgIG1faHR0cFN0YXR1c1RleHQgPSBzdGF0dXNUZXh0
OyAKK30KKworU3RyaW5nIFJlc291cmNlUmVzcG9uc2U6Omh0dHBIZWFkZXJGaWVsZChjb25zdCBT
dHJpbmcmIG5hbWUpIGNvbnN0Cit7CisgICAgdXBkYXRlUmVzb3VyY2VSZXNwb25zZSgpOworCisg
ICAgcmV0dXJuIG1faHR0cEhlYWRlckZpZWxkcy5nZXQobmFtZSk7IAorfQorCit2b2lkIFJlc291
cmNlUmVzcG9uc2U6OnNldEhUVFBIZWFkZXJGaWVsZChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IFN0cmluZyYgdmFsdWUpCit7CisgICAgdXBkYXRlUmVzb3VyY2VSZXNwb25zZSgpOworCisgICAg
bV9odHRwSGVhZGVyRmllbGRzLnNldChuYW1lLCB2YWx1ZSk7Cit9CisKK2NvbnN0IEhUVFBIZWFk
ZXJNYXAmIFJlc291cmNlUmVzcG9uc2U6Omh0dHBIZWFkZXJGaWVsZHMoKSBjb25zdAoreworICAg
IHVwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsKKworICAgIHJldHVybiBtX2h0dHBIZWFkZXJGaWVs
ZHM7IAorfQorCitib29sIFJlc291cmNlUmVzcG9uc2U6OmlzQXR0YWNobWVudCgpIGNvbnN0Cit7
CisgICAgdXBkYXRlUmVzb3VyY2VSZXNwb25zZSgpOworCisgICAgU3RyaW5nIHZhbHVlID0gbV9o
dHRwSGVhZGVyRmllbGRzLmdldCgiQ29udGVudC1EaXNwb3NpdGlvbiIpOworICAgIGludCBsb2Mg
PSB2YWx1ZS5maW5kKCc7Jyk7CisgICAgaWYgKGxvYyAhPSAtMSkKKyAgICAgICAgdmFsdWUgPSB2
YWx1ZS5sZWZ0KGxvYyk7CisgICAgdmFsdWUgPSB2YWx1ZS5zdHJpcFdoaXRlU3BhY2UoKTsKKyAg
ICByZXR1cm4gZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUsICJhdHRhY2htZW50Iik7Cit9CisKK3Zv
aWQgUmVzb3VyY2VSZXNwb25zZTo6c2V0RXhwaXJhdGlvbkRhdGUodGltZV90IGV4cGlyYXRpb25E
YXRlKQoreworICAgIHVwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsKKworICAgIG1fZXhwaXJhdGlv
bkRhdGUgPSBleHBpcmF0aW9uRGF0ZTsKK30KKwordGltZV90IFJlc291cmNlUmVzcG9uc2U6OmV4
cGlyYXRpb25EYXRlKCkgY29uc3QKK3sKKyAgICB1cGRhdGVSZXNvdXJjZVJlc3BvbnNlKCk7CisK
KyAgICByZXR1cm4gbV9leHBpcmF0aW9uRGF0ZTsgCit9CisKK3ZvaWQgUmVzb3VyY2VSZXNwb25z
ZTo6c2V0TGFzdE1vZGlmaWVkRGF0ZSh0aW1lX3QgbGFzdE1vZGlmaWVkRGF0ZSkgCit7CisgICAg
dXBkYXRlUmVzb3VyY2VSZXNwb25zZSgpOworCisgICAgbV9sYXN0TW9kaWZpZWREYXRlID0gbGFz
dE1vZGlmaWVkRGF0ZTsgCit9CisKK3RpbWVfdCBSZXNvdXJjZVJlc3BvbnNlOjpsYXN0TW9kaWZp
ZWREYXRlKCkgY29uc3QKK3sKKyAgICB1cGRhdGVSZXNvdXJjZVJlc3BvbnNlKCk7CisKKyAgICBy
ZXR1cm4gbV9sYXN0TW9kaWZpZWREYXRlOyAKK30KKwordm9pZCBSZXNvdXJjZVJlc3BvbnNlOjp1
cGRhdGVSZXNvdXJjZVJlc3BvbnNlKCkgY29uc3QKK3sKKyNpZiBQTEFURk9STShNQUMpIHx8IFVT
RShDRk5FVFdPUkspCisgICAgaWYgKG1faXNVcFRvRGF0ZSkKKyAgICAgICAgcmV0dXJuOworICAg
IAorICAgIGNvbnN0X2Nhc3Q8UmVzb3VyY2VSZXNwb25zZSo+KHRoaXMpLT5kb1VwZGF0ZVJlc291
cmNlUmVzcG9uc2UoKTsKKyAgICBtX2lzVXBUb0RhdGUgPSB0cnVlOworI2VuZGlmCit9CisKK2Jv
b2wgb3BlcmF0b3I9PShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBhLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiBiKQoreworICAgIGlmIChhLmlzTnVsbCgpICE9IGIuaXNOdWxsKCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsgIAorICAgIGlmIChhLnVybCgpICE9IGIudXJsKCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBpZiAoYS5taW1lVHlwZSgpICE9IGIubWltZVR5cGUoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChhLmV4cGVjdGVkQ29udGVudExlbmd0aCgpICE9IGIu
ZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAo
YS50ZXh0RW5jb2RpbmdOYW1lKCkgIT0gYi50ZXh0RW5jb2RpbmdOYW1lKCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBpZiAoYS5zdWdnZXN0ZWRGaWxlbmFtZSgpICE9IGIuc3VnZ2VzdGVk
RmlsZW5hbWUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChhLmh0dHBTdGF0dXND
b2RlKCkgIT0gYi5odHRwU3RhdHVzQ29kZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
aWYgKGEuaHR0cFN0YXR1c1RleHQoKSAhPSBiLmh0dHBTdGF0dXNUZXh0KCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBpZiAoYS5odHRwSGVhZGVyRmllbGRzKCkgIT0gYi5odHRwSGVhZGVy
RmllbGRzKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoYS5leHBpcmF0aW9uRGF0
ZSgpICE9IGIuZXhwaXJhdGlvbkRhdGUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworI2lmIFBM
QVRGT1JNKE1BQykKKyAgICBpZiAoYS5uc1VSTFJlc3BvbnNlKCkgIT0gYi5uc1VSTFJlc3BvbnNl
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorICAgIHJldHVybiB0cnVlOworIH0K
KworfQpJbmRleDogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAJKHJl
dmlzaW9uIDI3NTE5KQorKysgcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDI3ICsyNSwzMyBAQAogICovCiAKICNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlQmFzZS5oIgogI2luY2x1ZGUgIlJl
c291cmNlUmVzcG9uc2UuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1ib29sIFJlc291cmNl
UmVzcG9uc2U6OmlzSFRUUCgpIGNvbnN0CitpbmxpbmUgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
UmVzb3VyY2VSZXNwb25zZUJhc2U6OmFzUmVzb3VyY2VSZXNwb25zZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuICpzdGF0aWNfY2FzdDxjb25zdCBSZXNvdXJjZVJlc3BvbnNlKj4odGhpcyk7Cit9CisK
K2Jvb2wgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmlzSFRUUCgpIGNvbnN0CiB7CiAgICAgdXBkYXRl
UmVzb3VyY2VSZXNwb25zZSgpOwotICAgIAorCiAgICAgU3RyaW5nIHByb3RvY29sID0gbV91cmwu
cHJvdG9jb2woKTsKLSAgICAKKwogICAgIHJldHVybiBlcXVhbElnbm9yaW5nQ2FzZShwcm90b2Nv
bCwgImh0dHAiKSAgfHwgZXF1YWxJZ25vcmluZ0Nhc2UocHJvdG9jb2wsICJodHRwcyIpOwogfQog
Ci1jb25zdCBLVVJMJiBSZXNvdXJjZVJlc3BvbnNlOjp1cmwoKSBjb25zdAorY29uc3QgS1VSTCYg
UmVzb3VyY2VSZXNwb25zZUJhc2U6OnVybCgpIGNvbnN0CiB7CiAgICAgdXBkYXRlUmVzb3VyY2VS
ZXNwb25zZSgpOwogICAgIAogICAgIHJldHVybiBtX3VybDsgCiB9CiAKLXZvaWQgUmVzb3VyY2VS
ZXNwb25zZTo6c2V0VXJsKGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgUmVzb3VyY2VSZXNwb25zZUJh
c2U6OnNldFVybChjb25zdCBLVVJMJiB1cmwpCiB7CiAgICAgdXBkYXRlUmVzb3VyY2VSZXNwb25z
ZSgpOwogICAgIG1faXNOdWxsID0gZmFsc2U7CkBAIC01MywxNCArNTksMTQgQEAgdm9pZCBSZXNv
dXJjZVJlc3BvbnNlOjpzZXRVcmwoY29uc3QgS1VSTAogICAgIG1fdXJsID0gdXJsOyAKIH0KIAot
Y29uc3QgU3RyaW5nJiBSZXNvdXJjZVJlc3BvbnNlOjptaW1lVHlwZSgpIGNvbnN0Citjb25zdCBT
dHJpbmcmIFJlc291cmNlUmVzcG9uc2VCYXNlOjptaW1lVHlwZSgpIGNvbnN0CiB7CiAgICAgdXBk
YXRlUmVzb3VyY2VSZXNwb25zZSgpOwogCiAgICAgcmV0dXJuIG1fbWltZVR5cGU7IAogfQogCi12
b2lkIFJlc291cmNlUmVzcG9uc2U6OnNldE1pbWVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUp
Cit2b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzZXRNaW1lVHlwZShjb25zdCBTdHJpbmcmIG1p
bWVUeXBlKQogewogICAgIHVwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsKICAgICBtX2lzTnVsbCA9
IGZhbHNlOwpAQCAtNjgsMTQgKzc0LDE0IEBAIHZvaWQgUmVzb3VyY2VSZXNwb25zZTo6c2V0TWlt
ZVR5cGUoY29uc3QKICAgICBtX21pbWVUeXBlID0gbWltZVR5cGU7IAogfQogCi1sb25nIGxvbmcg
UmVzb3VyY2VSZXNwb25zZTo6ZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkgY29uc3QgCitsb25nIGxv
bmcgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmV4cGVjdGVkQ29udGVudExlbmd0aCgpIGNvbnN0IAog
ewogICAgIHVwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsKIAogICAgIHJldHVybiBtX2V4cGVjdGVk
Q29udGVudExlbmd0aDsKIH0KIAotdm9pZCBSZXNvdXJjZVJlc3BvbnNlOjpzZXRFeHBlY3RlZENv
bnRlbnRMZW5ndGgobG9uZyBsb25nIGV4cGVjdGVkQ29udGVudExlbmd0aCkKK3ZvaWQgUmVzb3Vy
Y2VSZXNwb25zZUJhc2U6OnNldEV4cGVjdGVkQ29udGVudExlbmd0aChsb25nIGxvbmcgZXhwZWN0
ZWRDb250ZW50TGVuZ3RoKQogewogICAgIHVwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsKICAgICBt
X2lzTnVsbCA9IGZhbHNlOwpAQCAtODMsMTQgKzg5LDE0IEBAIHZvaWQgUmVzb3VyY2VSZXNwb25z
ZTo6c2V0RXhwZWN0ZWRDb250ZW4KICAgICBtX2V4cGVjdGVkQ29udGVudExlbmd0aCA9IGV4cGVj
dGVkQ29udGVudExlbmd0aDsgCiB9CiAKLWNvbnN0IFN0cmluZyYgUmVzb3VyY2VSZXNwb25zZTo6
dGV4dEVuY29kaW5nTmFtZSgpIGNvbnN0Citjb25zdCBTdHJpbmcmIFJlc291cmNlUmVzcG9uc2VC
YXNlOjp0ZXh0RW5jb2RpbmdOYW1lKCkgY29uc3QKIHsKICAgICB1cGRhdGVSZXNvdXJjZVJlc3Bv
bnNlKCk7CiAKICAgICByZXR1cm4gbV90ZXh0RW5jb2RpbmdOYW1lOwogfQogCi12b2lkIFJlc291
cmNlUmVzcG9uc2U6OnNldFRleHRFbmNvZGluZ05hbWUoY29uc3QgU3RyaW5nJiBlbmNvZGluZ05h
bWUpCit2b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzZXRUZXh0RW5jb2RpbmdOYW1lKGNvbnN0
IFN0cmluZyYgZW5jb2RpbmdOYW1lKQogewogICAgIHVwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsK
ICAgICBtX2lzTnVsbCA9IGZhbHNlOwpAQCAtOTksMTQgKzEwNSwxNCBAQCB2b2lkIFJlc291cmNl
UmVzcG9uc2U6OnNldFRleHRFbmNvZGluZ05hCiB9CiAKIC8vIEZJWE1FIHNob3VsZCBjb21wdXRl
IHRoaXMgb24gdGhlIGZseQotY29uc3QgU3RyaW5nJiBSZXNvdXJjZVJlc3BvbnNlOjpzdWdnZXN0
ZWRGaWxlbmFtZSgpIGNvbnN0Citjb25zdCBTdHJpbmcmIFJlc291cmNlUmVzcG9uc2VCYXNlOjpz
dWdnZXN0ZWRGaWxlbmFtZSgpIGNvbnN0CiB7CiAgICAgdXBkYXRlUmVzb3VyY2VSZXNwb25zZSgp
OwogCiAgICAgcmV0dXJuIG1fc3VnZ2VzdGVkRmlsZW5hbWU7CiB9CiAKLXZvaWQgUmVzb3VyY2VS
ZXNwb25zZTo6c2V0U3VnZ2VzdGVkRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1l
KQordm9pZCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2V0U3VnZ2VzdGVkRmlsZW5hbWUoY29uc3Qg
U3RyaW5nJiBzdWdnZXN0ZWROYW1lKQogewogICAgIHVwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsK
ICAgICBtX2lzTnVsbCA9IGZhbHNlOwpAQCAtMTE0LDU2ICsxMjAsNTYgQEAgdm9pZCBSZXNvdXJj
ZVJlc3BvbnNlOjpzZXRTdWdnZXN0ZWRGaWxlbgogICAgIG1fc3VnZ2VzdGVkRmlsZW5hbWUgPSBz
dWdnZXN0ZWROYW1lOyAKIH0KIAotaW50IFJlc291cmNlUmVzcG9uc2U6Omh0dHBTdGF0dXNDb2Rl
KCkgY29uc3QKK2ludCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6aHR0cFN0YXR1c0NvZGUoKSBjb25z
dAogewogICAgIHVwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsKIAotICAgIHJldHVybiBtX2h0dHBT
dGF0dXNDb2RlOyAKKyAgICByZXR1cm4gbV9odHRwU3RhdHVzQ29kZTsKIH0KIAotdm9pZCBSZXNv
dXJjZVJlc3BvbnNlOjpzZXRIVFRQU3RhdHVzQ29kZShpbnQgc3RhdHVzQ29kZSkKK3ZvaWQgUmVz
b3VyY2VSZXNwb25zZUJhc2U6OnNldEhUVFBTdGF0dXNDb2RlKGludCBzdGF0dXNDb2RlKQogewog
ICAgIHVwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsKIAogICAgIG1faHR0cFN0YXR1c0NvZGUgPSBz
dGF0dXNDb2RlOwogfQogCi1jb25zdCBTdHJpbmcmIFJlc291cmNlUmVzcG9uc2U6Omh0dHBTdGF0
dXNUZXh0KCkgY29uc3QgCitjb25zdCBTdHJpbmcmIFJlc291cmNlUmVzcG9uc2VCYXNlOjpodHRw
U3RhdHVzVGV4dCgpIGNvbnN0IAogewogICAgIHVwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsKIAog
ICAgIHJldHVybiBtX2h0dHBTdGF0dXNUZXh0OyAKIH0KIAotdm9pZCBSZXNvdXJjZVJlc3BvbnNl
OjpzZXRIVFRQU3RhdHVzVGV4dChjb25zdCBTdHJpbmcmIHN0YXR1c1RleHQpIAordm9pZCBSZXNv
dXJjZVJlc3BvbnNlQmFzZTo6c2V0SFRUUFN0YXR1c1RleHQoY29uc3QgU3RyaW5nJiBzdGF0dXNU
ZXh0KSAKIHsKICAgICB1cGRhdGVSZXNvdXJjZVJlc3BvbnNlKCk7CiAKICAgICBtX2h0dHBTdGF0
dXNUZXh0ID0gc3RhdHVzVGV4dDsgCiB9CiAKLVN0cmluZyBSZXNvdXJjZVJlc3BvbnNlOjpodHRw
SGVhZGVyRmllbGQoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdAorU3RyaW5nIFJlc291cmNlUmVz
cG9uc2VCYXNlOjpodHRwSGVhZGVyRmllbGQoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdAogewog
ICAgIHVwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsKIAogICAgIHJldHVybiBtX2h0dHBIZWFkZXJG
aWVsZHMuZ2V0KG5hbWUpOyAKIH0KIAotdm9pZCBSZXNvdXJjZVJlc3BvbnNlOjpzZXRIVFRQSGVh
ZGVyRmllbGQoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQordm9pZCBS
ZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2V0SFRUUEhlYWRlckZpZWxkKGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICB1cGRhdGVSZXNvdXJjZVJlc3BvbnNlKCk7
CiAKICAgICBtX2h0dHBIZWFkZXJGaWVsZHMuc2V0KG5hbWUsIHZhbHVlKTsKIH0KIAotY29uc3Qg
SFRUUEhlYWRlck1hcCYgUmVzb3VyY2VSZXNwb25zZTo6aHR0cEhlYWRlckZpZWxkcygpIGNvbnN0
Citjb25zdCBIVFRQSGVhZGVyTWFwJiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6aHR0cEhlYWRlckZp
ZWxkcygpIGNvbnN0CiB7CiAgICAgdXBkYXRlUmVzb3VyY2VSZXNwb25zZSgpOwogCiAgICAgcmV0
dXJuIG1faHR0cEhlYWRlckZpZWxkczsgCiB9CiAKLWJvb2wgUmVzb3VyY2VSZXNwb25zZTo6aXNB
dHRhY2htZW50KCkgY29uc3QKK2Jvb2wgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmlzQXR0YWNobWVu
dCgpIGNvbnN0CiB7CiAgICAgdXBkYXRlUmVzb3VyY2VSZXNwb25zZSgpOwogCkBAIC0xNzUsNDMg
KzE4MSw0MiBAQCBib29sIFJlc291cmNlUmVzcG9uc2U6OmlzQXR0YWNobWVudCgpIGNvCiAgICAg
cmV0dXJuIGVxdWFsSWdub3JpbmdDYXNlKHZhbHVlLCAiYXR0YWNobWVudCIpOwogfQogCi12b2lk
IFJlc291cmNlUmVzcG9uc2U6OnNldEV4cGlyYXRpb25EYXRlKHRpbWVfdCBleHBpcmF0aW9uRGF0
ZSkKK3ZvaWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnNldEV4cGlyYXRpb25EYXRlKHRpbWVfdCBl
eHBpcmF0aW9uRGF0ZSkKIHsKICAgICB1cGRhdGVSZXNvdXJjZVJlc3BvbnNlKCk7CiAKICAgICBt
X2V4cGlyYXRpb25EYXRlID0gZXhwaXJhdGlvbkRhdGU7CiB9CiAKLXRpbWVfdCBSZXNvdXJjZVJl
c3BvbnNlOjpleHBpcmF0aW9uRGF0ZSgpIGNvbnN0Cit0aW1lX3QgUmVzb3VyY2VSZXNwb25zZUJh
c2U6OmV4cGlyYXRpb25EYXRlKCkgY29uc3QKIHsKICAgICB1cGRhdGVSZXNvdXJjZVJlc3BvbnNl
KCk7CiAKICAgICByZXR1cm4gbV9leHBpcmF0aW9uRGF0ZTsgCiB9CiAKLXZvaWQgUmVzb3VyY2VS
ZXNwb25zZTo6c2V0TGFzdE1vZGlmaWVkRGF0ZSh0aW1lX3QgbGFzdE1vZGlmaWVkRGF0ZSkgCit2
b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzZXRMYXN0TW9kaWZpZWREYXRlKHRpbWVfdCBsYXN0
TW9kaWZpZWREYXRlKSAKIHsKICAgICB1cGRhdGVSZXNvdXJjZVJlc3BvbnNlKCk7CiAKLSAgICBt
X2xhc3RNb2RpZmllZERhdGUgPSBsYXN0TW9kaWZpZWREYXRlOyAKKyAgICBtX2xhc3RNb2RpZmll
ZERhdGUgPSBsYXN0TW9kaWZpZWREYXRlOwogfQogCi10aW1lX3QgUmVzb3VyY2VSZXNwb25zZTo6
bGFzdE1vZGlmaWVkRGF0ZSgpIGNvbnN0Cit0aW1lX3QgUmVzb3VyY2VSZXNwb25zZUJhc2U6Omxh
c3RNb2RpZmllZERhdGUoKSBjb25zdAogewogICAgIHVwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsK
IAotICAgIHJldHVybiBtX2xhc3RNb2RpZmllZERhdGU7IAorICAgIHJldHVybiBtX2xhc3RNb2Rp
ZmllZERhdGU7CiB9CiAKLXZvaWQgUmVzb3VyY2VSZXNwb25zZTo6dXBkYXRlUmVzb3VyY2VSZXNw
b25zZSgpIGNvbnN0Cit2b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjp1cGRhdGVSZXNvdXJjZVJl
c3BvbnNlKCkgY29uc3QKIHsKLSNpZiBQTEFURk9STShNQUMpIHx8IFVTRShDRk5FVFdPUkspCiAg
ICAgaWYgKG1faXNVcFRvRGF0ZSkKICAgICAgICAgcmV0dXJuOwotICAgIAotICAgIGNvbnN0X2Nh
c3Q8UmVzb3VyY2VSZXNwb25zZSo+KHRoaXMpLT5kb1VwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsK
KworICAgIGNvbnN0X2Nhc3Q8UmVzb3VyY2VSZXNwb25zZSY+KGFzUmVzb3VyY2VSZXNwb25zZSgp
KS5kb1VwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsKKwogICAgIG1faXNVcFRvRGF0ZSA9IHRydWU7
Ci0jZW5kaWYKIH0KIAogYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGEs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGIpCkluZGV4OiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlUmVzcG9uc2VCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZVJlc3BvbnNlQmFzZS5oCShyZXZpc2lvbiAyNzUxOSkJKGZyb20gcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZVJlc3BvbnNlLmg6Mjc1MTkpCisrKyBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVz
cG9uc2VCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNTkgQEAKKy8vIC0qLSBtb2Rl
OiBjKys7IGMtYmFzaWMtb2Zmc2V0OiA0IC0qLQorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBB
cHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRl
ZiBSZXNvdXJjZVJlc3BvbnNlX2gKKyNkZWZpbmUgUmVzb3VyY2VSZXNwb25zZV9oCisKKyNpbmNs
dWRlICJIVFRQSGVhZGVyTWFwLmgiCisjaW5jbHVkZSAiS1VSTC5oIgorCisjaWYgUExBVEZPUk0o
TUFDKQorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpZmRlZiBfX09CSkNfXworQGNsYXNz
IE5TVVJMUmVzcG9uc2U7CisjZWxzZQorY2xhc3MgTlNVUkxSZXNwb25zZTsKKyNlbmRpZgorI2Vs
aWYgVVNFKENGTkVUV09SSykKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Cit0eXBlZGVmIHN0
cnVjdCBfQ0ZVUkxSZXNwb25zZSogQ0ZVUkxSZXNwb25zZVJlZjsKKyNlbmRpZgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIFJlc291cmNlUmVzcG9uc2UgeworcHVibGljOgorCisgICAg
UmVzb3VyY2VSZXNwb25zZSgpIAorICAgICAgICA6IG1fZXhwZWN0ZWRDb250ZW50TGVuZ3RoKDAp
CisgICAgICAgICwgbV9odHRwU3RhdHVzQ29kZSgwKQorICAgICAgICAsIG1fZXhwaXJhdGlvbkRh
dGUoMCkKKyAgICAgICAgLCBtX2lzVXBUb0RhdGUodHJ1ZSkKKyAgICAgICAgLCBtX2lzTnVsbCh0
cnVlKQorICAgIHsKKyAgICB9CisKKyAgICBSZXNvdXJjZVJlc3BvbnNlKGNvbnN0IEtVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgbG9uZyBsb25nIGV4cGVjdGVkTGVuZ3RoLCBjb25z
dCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCisgICAg
ICAgIDogbV91cmwodXJsKQorICAgICAgICAsIG1fbWltZVR5cGUobWltZVR5cGUpCisgICAgICAg
ICwgbV9leHBlY3RlZENvbnRlbnRMZW5ndGgoZXhwZWN0ZWRMZW5ndGgpCisgICAgICAgICwgbV90
ZXh0RW5jb2RpbmdOYW1lKHRleHRFbmNvZGluZ05hbWUpCisgICAgICAgICwgbV9zdWdnZXN0ZWRG
aWxlbmFtZShmaWxlbmFtZSkKKyAgICAgICAgLCBtX2h0dHBTdGF0dXNDb2RlKDApCisgICAgICAg
ICwgbV9leHBpcmF0aW9uRGF0ZSgwKQorICAgICAgICAsIG1faXNVcFRvRGF0ZSh0cnVlKQorICAg
ICAgICAsIG1faXNOdWxsKGZhbHNlKQorICAgIHsKKyAgICB9CisgCisgICAgYm9vbCBpc051bGwo
KSBjb25zdCB7IHJldHVybiBtX2lzTnVsbDsgfQorICAgIGJvb2wgaXNIVFRQKCkgY29uc3Q7Cisg
ICAgCisgICAgY29uc3QgS1VSTCYgdXJsKCkgY29uc3Q7CisgICAgdm9pZCBzZXRVcmwoY29uc3Qg
S1VSTCYgdXJsKTsKKworICAgIGNvbnN0IFN0cmluZyYgbWltZVR5cGUoKSBjb25zdDsKKyAgICB2
b2lkIHNldE1pbWVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOworCisgICAgbG9uZyBsb25n
IGV4cGVjdGVkQ29udGVudExlbmd0aCgpIGNvbnN0OworICAgIHZvaWQgc2V0RXhwZWN0ZWRDb250
ZW50TGVuZ3RoKGxvbmcgbG9uZyBleHBlY3RlZENvbnRlbnRMZW5ndGgpOworCisgICAgY29uc3Qg
U3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lKCkgY29uc3Q7CisgICAgdm9pZCBzZXRUZXh0RW5jb2Rp
bmdOYW1lKGNvbnN0IFN0cmluZyYgbmFtZSk7CisKKyAgICAvLyBGSVhNRSBzaG91bGQgY29tcHV0
ZSB0aGlzIG9uIHRoZSBmbHkKKyAgICBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lKCkg
Y29uc3Q7CisgICAgdm9pZCBzZXRTdWdnZXN0ZWRGaWxlbmFtZShjb25zdCBTdHJpbmcmKTsKKwor
ICAgIGludCBodHRwU3RhdHVzQ29kZSgpIGNvbnN0OworICAgIHZvaWQgc2V0SFRUUFN0YXR1c0Nv
ZGUoaW50KTsKKyAgICAKKyAgICBjb25zdCBTdHJpbmcmIGh0dHBTdGF0dXNUZXh0KCkgY29uc3Q7
CisgICAgdm9pZCBzZXRIVFRQU3RhdHVzVGV4dChjb25zdCBTdHJpbmcmKTsKKyAgICAKKyAgICBT
dHJpbmcgaHR0cEhlYWRlckZpZWxkKGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3Q7CisgICAgdm9p
ZCBzZXRIVFRQSGVhZGVyRmllbGQoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZh
bHVlKTsKKyAgICBjb25zdCBIVFRQSGVhZGVyTWFwJiBodHRwSGVhZGVyRmllbGRzKCkgY29uc3Q7
CisKKyAgICBib29sIGlzTXVsdGlwYXJ0KCkgY29uc3QgeyByZXR1cm4gbWltZVR5cGUoKSA9PSAi
bXVsdGlwYXJ0L3gtbWl4ZWQtcmVwbGFjZSI7IH0KKworICAgIGJvb2wgaXNBdHRhY2htZW50KCkg
Y29uc3Q7CisKKyAgICB2b2lkIHNldEV4cGlyYXRpb25EYXRlKHRpbWVfdCk7CisgICAgdGltZV90
IGV4cGlyYXRpb25EYXRlKCkgY29uc3Q7CisKKyAgICB2b2lkIHNldExhc3RNb2RpZmllZERhdGUo
dGltZV90KTsKKyAgICB0aW1lX3QgbGFzdE1vZGlmaWVkRGF0ZSgpIGNvbnN0OworCisjaWYgUExB
VEZPUk0oTUFDKQorICAgIFJlc291cmNlUmVzcG9uc2UoTlNVUkxSZXNwb25zZSogbnNSZXNwb25z
ZSkKKyAgICAgICAgOiBtX2lzVXBUb0RhdGUoZmFsc2UpCisgICAgICAgICwgbV9pc051bGwoIW5z
UmVzcG9uc2UpCisgICAgICAgICwgbV9uc1Jlc3BvbnNlKG5zUmVzcG9uc2UpIHsgfQorICAgIAor
ICAgIE5TVVJMUmVzcG9uc2UgKm5zVVJMUmVzcG9uc2UoKSBjb25zdDsKKyNlbGlmIFVTRShDRk5F
VFdPUkspCisgICAgUmVzb3VyY2VSZXNwb25zZShDRlVSTFJlc3BvbnNlUmVmIGNmUmVzcG9uc2Up
CisgICAgICAgIDogbV9pc1VwVG9EYXRlKGZhbHNlKQorICAgICAgICAsIG1faXNOdWxsKCFjZlJl
c3BvbnNlKQorICAgICAgICAsIG1fY2ZSZXNwb25zZShjZlJlc3BvbnNlKSB7IH0KKyAgICAKKyAg
ICBDRlVSTFJlc3BvbnNlUmVmIGNmVVJMUmVzcG9uc2UoKSBjb25zdDsKKyNlbmRpZgorICAgIAor
IHByaXZhdGU6CisgICAgdm9pZCB1cGRhdGVSZXNvdXJjZVJlc3BvbnNlKCkgY29uc3Q7IAorICAg
IAorI2lmIFBMQVRGT1JNKE1BQykgfHwgVVNFKENGTkVUV09SSykKKyAgICB2b2lkIGRvVXBkYXRl
UmVzb3VyY2VSZXNwb25zZSgpOworI2VuZGlmCisgICAgCisgICAgS1VSTCBtX3VybDsKKyAgICBT
dHJpbmcgbV9taW1lVHlwZTsKKyAgICBsb25nIGxvbmcgbV9leHBlY3RlZENvbnRlbnRMZW5ndGg7
CisgICAgU3RyaW5nIG1fdGV4dEVuY29kaW5nTmFtZTsKKyAgICBTdHJpbmcgbV9zdWdnZXN0ZWRG
aWxlbmFtZTsKKyAgICBpbnQgbV9odHRwU3RhdHVzQ29kZTsKKyAgICBTdHJpbmcgbV9odHRwU3Rh
dHVzVGV4dDsKKyAgICBIVFRQSGVhZGVyTWFwIG1faHR0cEhlYWRlckZpZWxkczsKKyAgICB0aW1l
X3QgbV9leHBpcmF0aW9uRGF0ZTsKKyAgICB0aW1lX3QgbV9sYXN0TW9kaWZpZWREYXRlOworICAg
IG11dGFibGUgYm9vbCBtX2lzVXBUb0RhdGU7CisgICAgYm9vbCBtX2lzTnVsbDsKKyNpZiBQTEFU
Rk9STShNQUMpCisgICAgUmV0YWluUHRyPE5TVVJMUmVzcG9uc2U+IG1fbnNSZXNwb25zZTsKKyNl
bGlmIFVTRShDRk5FVFdPUkspCisgICAgUmV0YWluUHRyPENGVVJMUmVzcG9uc2VSZWY+IG1fY2ZS
ZXNwb25zZTsgICAgICAKKyNlbmRpZgorICAgIAorfTsKKworYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIGEsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGIpOworaW5saW5l
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBhLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiBiKSB7IHJldHVybiAhKGEgPT0gYik7IH0KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gUmVzb3VyY2VSZXNwb25zZV9oCkluZGV4OiBwbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCShyZXZpc2lvbiAyNzUxOSkKKysrIHBsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjQsNTQgKzI0
LDIzIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVmIFJlc291cmNlUmVzcG9uc2Vf
aAotI2RlZmluZSBSZXNvdXJjZVJlc3BvbnNlX2gKKyNpZm5kZWYgUmVzb3VyY2VSZXNwb25zZUJh
c2VfaAorI2RlZmluZSBSZXNvdXJjZVJlc3BvbnNlQmFzZV9oCiAKICNpbmNsdWRlICJIVFRQSGVh
ZGVyTWFwLmgiCiAjaW5jbHVkZSAiS1VSTC5oIgogCi0jaWYgUExBVEZPUk0oTUFDKQotI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLSNpZmRlZiBfX09CSkNfXwotQGNsYXNzIE5TVVJMUmVzcG9u
c2U7Ci0jZWxzZQotY2xhc3MgTlNVUkxSZXNwb25zZTsKLSNlbmRpZgotI2VsaWYgVVNFKENGTkVU
V09SSykKLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci10eXBlZGVmIHN0cnVjdCBfQ0ZVUkxS
ZXNwb25zZSogQ0ZVUkxSZXNwb25zZVJlZjsKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIFJlc291cmNlUmVzcG9uc2UgewotcHVibGljOgorY2xhc3MgUmVzb3VyY2VSZXNw
b25zZTsKIAotICAgIFJlc291cmNlUmVzcG9uc2UoKSAKLSAgICAgICAgOiBtX2V4cGVjdGVkQ29u
dGVudExlbmd0aCgwKQotICAgICAgICAsIG1faHR0cFN0YXR1c0NvZGUoMCkKLSAgICAgICAgLCBt
X2V4cGlyYXRpb25EYXRlKDApCi0gICAgICAgICwgbV9pc1VwVG9EYXRlKHRydWUpCi0gICAgICAg
ICwgbV9pc051bGwodHJ1ZSkKLSAgICB7Ci0gICAgfQorLy8gRG8gbm90IHVzZSB0aGlzIGNsYXNz
IGRpcmVjdGx5LCB1c2UgdGhlIGNsYXNzIFJlc3BvbnNlUmVzcG9uc2UgaW5zdGVhZAorY2xhc3Mg
UmVzb3VyY2VSZXNwb25zZUJhc2UgeworIHB1YmxpYzoKIAotICAgIFJlc291cmNlUmVzcG9uc2Uo
Y29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBsb25nIGxvbmcgZXhwZWN0
ZWRMZW5ndGgsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgY29uc3QgU3RyaW5nJiBm
aWxlbmFtZSkKLSAgICAgICAgOiBtX3VybCh1cmwpCi0gICAgICAgICwgbV9taW1lVHlwZShtaW1l
VHlwZSkKLSAgICAgICAgLCBtX2V4cGVjdGVkQ29udGVudExlbmd0aChleHBlY3RlZExlbmd0aCkK
LSAgICAgICAgLCBtX3RleHRFbmNvZGluZ05hbWUodGV4dEVuY29kaW5nTmFtZSkKLSAgICAgICAg
LCBtX3N1Z2dlc3RlZEZpbGVuYW1lKGZpbGVuYW1lKQotICAgICAgICAsIG1faHR0cFN0YXR1c0Nv
ZGUoMCkKLSAgICAgICAgLCBtX2V4cGlyYXRpb25EYXRlKDApCi0gICAgICAgICwgbV9pc1VwVG9E
YXRlKHRydWUpCi0gICAgICAgICwgbV9pc051bGwoZmFsc2UpCi0gICAgewotICAgIH0KLSAKICAg
ICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1faXNOdWxsOyB9CiAgICAgYm9vbCBpc0hU
VFAoKSBjb25zdDsKLSAgICAKKwogICAgIGNvbnN0IEtVUkwmIHVybCgpIGNvbnN0OwogICAgIHZv
aWQgc2V0VXJsKGNvbnN0IEtVUkwmIHVybCk7CiAKQEAgLTEwOCw0NyArNzcsNTMgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0TGFzdE1vZGlmaWVkRGF0ZSh0aW1lX3QpOwogICAgIHRpbWVfdCBsYXN0
TW9kaWZpZWREYXRlKCkgY29uc3Q7CiAKLSNpZiBQTEFURk9STShNQUMpCi0gICAgUmVzb3VyY2VS
ZXNwb25zZShOU1VSTFJlc3BvbnNlKiBuc1Jlc3BvbnNlKQotICAgICAgICA6IG1faXNVcFRvRGF0
ZShmYWxzZSkKLSAgICAgICAgLCBtX2lzTnVsbCghbnNSZXNwb25zZSkKLSAgICAgICAgLCBtX25z
UmVzcG9uc2UobnNSZXNwb25zZSkgeyB9Ci0gICAgCi0gICAgTlNVUkxSZXNwb25zZSAqbnNVUkxS
ZXNwb25zZSgpIGNvbnN0OwotI2VsaWYgVVNFKENGTkVUV09SSykKLSAgICBSZXNvdXJjZVJlc3Bv
bnNlKENGVVJMUmVzcG9uc2VSZWYgY2ZSZXNwb25zZSkKKyAgICBpbmxpbmUgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgYXNSZXNvdXJjZVJlc3BvbnNlKCkgY29uc3Q7CisKKyBwcm90ZWN0ZWQ6Cisg
ICAgLy8gVXNlZCB3aGVuIHJlc3BvbnNlIGlzIGluaXRpYWxpemVkIGZyb20gYSBwbGF0Zm9ybSBy
ZXByZXNlbnRhdGlvbgorICAgIFJlc291cmNlUmVzcG9uc2VCYXNlKGJvb2wgaXNOdWxsKQogICAg
ICAgICA6IG1faXNVcFRvRGF0ZShmYWxzZSkKLSAgICAgICAgLCBtX2lzTnVsbCghY2ZSZXNwb25z
ZSkKLSAgICAgICAgLCBtX2NmUmVzcG9uc2UoY2ZSZXNwb25zZSkgeyB9Ci0gICAgCi0gICAgQ0ZV
UkxSZXNwb25zZVJlZiBjZlVSTFJlc3BvbnNlKCkgY29uc3Q7Ci0jZW5kaWYKLSAgICAKLSBwcml2
YXRlOgotICAgIHZvaWQgdXBkYXRlUmVzb3VyY2VSZXNwb25zZSgpIGNvbnN0OyAKLSAgICAKLSNp
ZiBQTEFURk9STShNQUMpIHx8IFVTRShDRk5FVFdPUkspCi0gICAgdm9pZCBkb1VwZGF0ZVJlc291
cmNlUmVzcG9uc2UoKTsKLSNlbmRpZgotICAgIAorICAgICAgICAsIG1faXNOdWxsKGlzTnVsbCkK
KyAgICB7CisgICAgfQorCisgICAgUmVzb3VyY2VSZXNwb25zZUJhc2UoKSAgCisgICAgICAgIDog
bV9leHBlY3RlZENvbnRlbnRMZW5ndGgoMCkKKyAgICAgICAgLCBtX2h0dHBTdGF0dXNDb2RlKDAp
CisgICAgICAgICwgbV9leHBpcmF0aW9uRGF0ZSgwKQorICAgICAgICAsIG1faXNVcFRvRGF0ZSh0
cnVlKQorICAgICAgICAsIG1faXNOdWxsKHRydWUpCisgICAgeworICAgIH0KKworICAgIFJlc291
cmNlUmVzcG9uc2VCYXNlKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
bG9uZyBsb25nIGV4cGVjdGVkTGVuZ3RoLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUs
IGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCisgICAgICAgIDogbV91cmwodXJsKQorICAgICAgICAs
IG1fbWltZVR5cGUobWltZVR5cGUpCisgICAgICAgICwgbV9leHBlY3RlZENvbnRlbnRMZW5ndGgo
ZXhwZWN0ZWRMZW5ndGgpCisgICAgICAgICwgbV90ZXh0RW5jb2RpbmdOYW1lKHRleHRFbmNvZGlu
Z05hbWUpCisgICAgICAgICwgbV9zdWdnZXN0ZWRGaWxlbmFtZShmaWxlbmFtZSkKKyAgICAgICAg
LCBtX2h0dHBTdGF0dXNDb2RlKDApCisgICAgICAgICwgbV9leHBpcmF0aW9uRGF0ZSgwKQorICAg
ICAgICAsIG1faXNVcFRvRGF0ZSh0cnVlKQorICAgICAgICAsIG1faXNOdWxsKGZhbHNlKQorICAg
IHsKKyAgICB9CisKKyAgICB2b2lkIHVwZGF0ZVJlc291cmNlUmVzcG9uc2UoKSBjb25zdDsKKwog
ICAgIEtVUkwgbV91cmw7CiAgICAgU3RyaW5nIG1fbWltZVR5cGU7CiAgICAgbG9uZyBsb25nIG1f
ZXhwZWN0ZWRDb250ZW50TGVuZ3RoOwogICAgIFN0cmluZyBtX3RleHRFbmNvZGluZ05hbWU7CiAg
ICAgU3RyaW5nIG1fc3VnZ2VzdGVkRmlsZW5hbWU7Ci0gICAgaW50IG1faHR0cFN0YXR1c0NvZGU7
CisgICAgbXV0YWJsZSBpbnQgbV9odHRwU3RhdHVzQ29kZTsKICAgICBTdHJpbmcgbV9odHRwU3Rh
dHVzVGV4dDsKICAgICBIVFRQSGVhZGVyTWFwIG1faHR0cEhlYWRlckZpZWxkczsKICAgICB0aW1l
X3QgbV9leHBpcmF0aW9uRGF0ZTsKICAgICB0aW1lX3QgbV9sYXN0TW9kaWZpZWREYXRlOwogICAg
IG11dGFibGUgYm9vbCBtX2lzVXBUb0RhdGU7CiAgICAgYm9vbCBtX2lzTnVsbDsKLSNpZiBQTEFU
Rk9STShNQUMpCi0gICAgUmV0YWluUHRyPE5TVVJMUmVzcG9uc2U+IG1fbnNSZXNwb25zZTsKLSNl
bGlmIFVTRShDRk5FVFdPUkspCi0gICAgUmV0YWluUHRyPENGVVJMUmVzcG9uc2VSZWY+IG1fY2ZS
ZXNwb25zZTsgICAgICAKLSNlbmRpZgotICAgIAorCiB9OwogCiBib29sIG9wZXJhdG9yPT0oY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgYSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgYik7CkBAIC0x
NTYsNCArMTMxLDQgQEAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBSZXNvdXJjZVJlcwog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBSZXNvdXJjZVJlc3BvbnNlX2gK
KyNlbmRpZiAvLyBSZXNvdXJjZVJlc3BvbnNlQmFzZV9oCkluZGV4OiBwbGF0Zm9ybS9uZXR3b3Jr
L2NmL1Jlc291cmNlUmVzcG9uc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwbGF0Zm9ybS9uZXR3b3JrL2Nm
L1Jlc291cmNlUmVzcG9uc2UuaAkocmV2aXNpb24gMCkKKysrIHBsYXRmb3JtL25ldHdvcmsvY2Yv
UmVzb3VyY2VSZXNwb25zZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY1IEBACisvLyAtKi0g
bW9kZTogYysrOyBjLWJhc2ljLW9mZnNldDogNCAtKi0KKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisjaWZu
ZGVmIFJlc291cmNlUmVzcG9uc2VfaAorI2RlZmluZSBSZXNvdXJjZVJlc3BvbnNlX2gKKworI2lu
Y2x1ZGUgIlJlc291cmNlUmVzcG9uc2VCYXNlLmgiCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgorCit0eXBlZGVmIHN0cnVjdCBfQ0ZVUkxSZXNwb25zZSogQ0ZVUkxSZXNwb25zZVJlZjsKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBSZXNvdXJjZVJlc3BvbnNlIDogcHVibGljIFJl
c291cmNlUmVzcG9uc2VCYXNlIHsKK3B1YmxpYzoKKyAgICBSZXNvdXJjZVJlc3BvbnNlKCkKKyAg
ICAgICAgOiBSZXNvdXJjZVJlc3BvbnNlQmFzZSgpCisgICAgeworICAgIH0KKworICAgIFJlc291
cmNlUmVzcG9uc2UoQ0ZVUkxSZXNwb25zZVJlZiBjZlJlc3BvbnNlKQorICAgICAgICA6IFJlc291
cmNlUmVzcG9uc2VCYXNlKCFjZlJlc3BvbnNlKQorICAgICAgICAsIG1fY2ZSZXNwb25zZShjZlJl
c3BvbnNlKSB7IH0KKworICAgIFJlc291cmNlUmVzcG9uc2UoY29uc3QgS1VSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBsb25nIGxvbmcgZXhwZWN0ZWRMZW5ndGgsIGNvbnN0IFN0cmlu
ZyYgdGV4dEVuY29kaW5nTmFtZSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKKyAgICAgICAgOiBS
ZXNvdXJjZVJlc3BvbnNlQmFzZSh1cmwsIG1pbWVUeXBlLCBleHBlY3RlZExlbmd0aCwgdGV4dEVu
Y29kaW5nTmFtZSwgZmlsZW5hbWUpCisgICAgeworICAgIH0KKworICAgIENGVVJMUmVzcG9uc2VS
ZWYgY2ZVUkxSZXNwb25zZSgpIGNvbnN0OworCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBS
ZXNvdXJjZVJlc3BvbnNlQmFzZTsKKworICAgIHZvaWQgZG9VcGRhdGVSZXNvdXJjZVJlc3BvbnNl
KCk7CisKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZXNwb25zZVJlZj4gbV9jZlJlc3BvbnNlOworCit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBSZXNvdXJjZVJlc3BvbnNl
X2gKSW5kZXg6IHBsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlUmVzcG9uc2UuaAkocmV2aXNp
b24gMCkKKysrIHBsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlLmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNTcgQEAKKy8vIC0qLSBtb2RlOiBjKys7IGMtYmFzaWMtb2Zmc2V0
OiA0IC0qLQorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBSZXNvdXJjZVJlc3BvbnNlX2gK
KyNkZWZpbmUgUmVzb3VyY2VSZXNwb25zZV9oCisKKyNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNl
QmFzZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJlc291cmNlUmVzcG9uc2Ug
OiBwdWJsaWMgUmVzb3VyY2VSZXNwb25zZUJhc2UgeworcHVibGljOgorICAgIFJlc291cmNlUmVz
cG9uc2UoKQorICAgICAgICA6IFJlc291cmNlUmVzcG9uc2VCYXNlKGZhbHNlKQorICAgIHsKKyAg
ICB9CisKKyAgICBSZXNvdXJjZVJlc3BvbnNlKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgbG9uZyBsb25nIGV4cGVjdGVkTGVuZ3RoLCBjb25zdCBTdHJpbmcmIHRleHRF
bmNvZGluZ05hbWUsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCisgICAgICAgIDogUmVzb3VyY2VS
ZXNwb25zZUJhc2UodXJsLCBtaW1lVHlwZSwgZXhwZWN0ZWRMZW5ndGgsIHRleHRFbmNvZGluZ05h
bWUsIGZpbGVuYW1lKQorICAgIHsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNz
IFJlc291cmNlUmVzcG9uc2VCYXNlOworCisgICAgdm9pZCBkb1VwZGF0ZVJlc291cmNlUmVzcG9u
c2UoKQorICAgIHsKKyAgICB9CisKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIFJlc291cmNlUmVzcG9uc2VfaApJbmRleDogcGxhdGZvcm0vbmV0d29yay9tYWMvUmVz
b3VyY2VSZXNwb25zZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291
cmNlUmVzcG9uc2UuaAkocmV2aXNpb24gMCkKKysrIHBsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291
cmNlUmVzcG9uc2UuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MCBAQAorLy8gLSotIG1vZGU6
IGMrKzsgYy1iYXNpYy1vZmZzZXQ6IDQgLSotCisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IEFw
cGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVm
IFJlc291cmNlUmVzcG9uc2VfaAorI2RlZmluZSBSZXNvdXJjZVJlc3BvbnNlX2gKKworI2luY2x1
ZGUgIlJlc291cmNlUmVzcG9uc2VCYXNlLmgiCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgor
CisjaWZkZWYgX19PQkpDX18KK0BjbGFzcyBOU1VSTFJlc3BvbnNlOworI2Vsc2UKK2NsYXNzIE5T
VVJMUmVzcG9uc2U7CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBSZXNv
dXJjZVJlc3BvbnNlIDogcHVibGljIFJlc291cmNlUmVzcG9uc2VCYXNlIHsKK3B1YmxpYzoKKyAg
ICBSZXNvdXJjZVJlc3BvbnNlKCkKKyAgICAgICAgOiBSZXNvdXJjZVJlc3BvbnNlQmFzZSgpCisg
ICAgeworICAgIH0KKworICAgIFJlc291cmNlUmVzcG9uc2UoTlNVUkxSZXNwb25zZSogbnNSZXNw
b25zZSkKKyAgICAgICAgOiBSZXNvdXJjZVJlc3BvbnNlQmFzZSghbnNSZXNwb25zZSkKKyAgICAg
ICAgLCBtX25zUmVzcG9uc2UobnNSZXNwb25zZSkgeyB9CisgICAgCisgICAgUmVzb3VyY2VSZXNw
b25zZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGxvbmcgbG9uZyBl
eHBlY3RlZExlbmd0aCwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBjb25zdCBTdHJp
bmcmIGZpbGVuYW1lKQorICAgICAgICA6IFJlc291cmNlUmVzcG9uc2VCYXNlKHVybCwgbWltZVR5
cGUsIGV4cGVjdGVkTGVuZ3RoLCB0ZXh0RW5jb2RpbmdOYW1lLCBmaWxlbmFtZSkKKyAgICB7Cisg
ICAgfQorCisgICAgTlNVUkxSZXNwb25zZSAqbnNVUkxSZXNwb25zZSgpIGNvbnN0OworCitwcml2
YXRlOgorICAgIGZyaWVuZCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlQmFzZTsKKworICAgIHZvaWQg
ZG9VcGRhdGVSZXNvdXJjZVJlc3BvbnNlKCk7CisKKyAgICBSZXRhaW5QdHI8TlNVUkxSZXNwb25z
ZT4gbV9uc1Jlc3BvbnNlOworCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBSZXNvdXJjZVJlc3BvbnNlX2gKSW5kZXg6IHBsYXRmb3JtL25ldHdvcmsvcXQvUmVzb3Vy
Y2VSZXNwb25zZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBsYXRmb3JtL25ldHdvcmsvcXQvUmVzb3VyY2VS
ZXNwb25zZS5oCShyZXZpc2lvbiAwKQorKysgcGxhdGZvcm0vbmV0d29yay9xdC9SZXNvdXJjZVJl
c3BvbnNlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjAgQEAKKy8vIC0qLSBtb2RlOiBjKys7
IGMtYmFzaWMtb2Zmc2V0OiA0IC0qLQorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBD
b21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBSZXNv
dXJjZVJlc3BvbnNlX2gKKyNkZWZpbmUgUmVzb3VyY2VSZXNwb25zZV9oCisKKyNpbmNsdWRlICJS
ZXNvdXJjZVJlc3BvbnNlQmFzZS5oIgorCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBSZXNvdXJjZVJlc3BvbnNlIDogcHVibGljIFJl
c291cmNlUmVzcG9uc2VCYXNlIHsKK3B1YmxpYzoKKyAgICBSZXNvdXJjZVJlc3BvbnNlKCkKKyAg
ICAgICAgOiBSZXNvdXJjZVJlc3BvbnNlQmFzZShmYWxzZSkKKyAgICB7CisgICAgfQorCisgICAg
UmVzb3VyY2VSZXNwb25zZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IGxvbmcgbG9uZyBleHBlY3RlZExlbmd0aCwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1l
LCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lKQorICAgICAgICA6IFJlc291cmNlUmVzcG9uc2VCYXNl
KHVybCwgbWltZVR5cGUsIGV4cGVjdGVkTGVuZ3RoLCB0ZXh0RW5jb2RpbmdOYW1lLCBmaWxlbmFt
ZSkKKyAgICB7CisgICAgfQorCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBSZXNvdXJjZVJl
c3BvbnNlQmFzZTsKKworICAgIHZvaWQgZG9VcGRhdGVSZXNvdXJjZVJlc3BvbnNlKCkKKyAgICB7
CisgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgfQorCit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBSZXNvdXJjZVJlc3BvbnNlX2gK
</data>
<flag name="review"
          id="7310"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>