<?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>148136</bug_id>
          
          <creation_ts>2015-08-18 12:36:35 -0700</creation_ts>
          <short_desc>Add InternalPromise to use Promises safely in the internals</short_desc>
          <delta_ts>2015-08-19 21:43:31 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>148118</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ggaren</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1118606</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-18 12:36:35 -0700</bug_when>
    <thetext>https://bugs.webkit.org/show_bug.cgi?id=147942 solve the part of the problem.
But, since resolving function always looks up &quot;then&quot; function, by setting malicious &quot;then&quot; function, we can still trap it...
To make Promises safe, we&apos;ll introduce new constructor/prototype set for InternalPromise. That is the separated instance from the usual Promise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118838</commentid>
    <comment_count>1</comment_count>
      <attachid>259357</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-18 22:32:27 -0700</bug_when>
    <thetext>Created attachment 259357
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118842</commentid>
    <comment_count>2</comment_count>
      <attachid>259358</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-18 22:39:29 -0700</bug_when>
    <thetext>Created attachment 259358
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118846</commentid>
    <comment_count>3</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-18 22:55:45 -0700</bug_when>
    <thetext>Module Loader spec requires the use of the Promise internally.
So we need some user-non-trappable Promises.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118849</commentid>
    <comment_count>4</comment_count>
      <attachid>259358</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-18 22:57:02 -0700</bug_when>
    <thetext>Comment on attachment 259358
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:29
&gt; +        to the user space.

The largest concern is this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118871</commentid>
    <comment_count>5</comment_count>
      <attachid>259358</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-19 00:28:07 -0700</bug_when>
    <thetext>Comment on attachment 259358
Patch

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

&gt;&gt; Source/JavaScriptCore/ChangeLog:29
&gt;&gt; +        to the user space.
&gt; 
&gt; The largest concern is this.

One mitigation for the leak problem is

1. freezing InternalPromise.prototype
2. prevent InternalPromise instance extension

But they raise performance concerns I guess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118884</commentid>
    <comment_count>6</comment_count>
      <attachid>259358</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-19 01:21:39 -0700</bug_when>
    <thetext>Comment on attachment 259358
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:8
&gt; +        This patch implements InternalPromise.

First, I planed to fix the issue by adding @promiseInternal flag to the existing Promise instance to switch the behavior of the Promise operations.
This will make the modification small. However, if we take the above way, it breaks the Promises implementation&apos;s one-on-one correspondence to the spec.
And when the spec is changed, we need to change the existing code so much carefully not to break the internal promise system. I think that&apos;s not good.

So I changed my mind. That&apos;s why I introduced completely separately instantiated InternalPromises in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118939</commentid>
    <comment_count>7</comment_count>
      <attachid>259358</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-19 11:33:19 -0700</bug_when>
    <thetext>Comment on attachment 259358
Patch

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

&gt; Source/JavaScriptCore/runtime/JSInternalPromiseDeferred.h:49
&gt; +    JSInternalPromise* promise() const;

I&apos;ll add JS_EXPORT_PRIVATE later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119166</commentid>
    <comment_count>8</comment_count>
      <attachid>259358</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-19 20:22:51 -0700</bug_when>
    <thetext>Comment on attachment 259358
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:21
&gt; +        the returned promise by &quot;then&quot; method, we construct the chain by executing `p2.then(resolving function)`.

Misleading, &quot;the returned promise by &quot;then&quot; method&quot; means `p3 = p1.then(...)`&apos;s p3.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119168</commentid>
    <comment_count>9</comment_count>
      <attachid>259358</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-08-19 20:43:00 -0700</bug_when>
    <thetext>Comment on attachment 259358
Patch

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

r=me

&gt; Source/JavaScriptCore/runtime/JSInternalPromiseConstructor.cpp:38
&gt; +STATIC_ASSERT_IS_TRIVIALLY_DESTRUCTIBLE(JSInternalPromiseConstructor);

Nit: Why not have this in below namespace?

&gt; Source/JavaScriptCore/runtime/JSPromise.h:52
&gt; +    // This may raises the JS exception.

&quot;raises the&quot; =&gt; &quot;raise a&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119169</commentid>
    <comment_count>10</comment_count>
      <attachid>259358</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-19 21:07:23 -0700</bug_when>
    <thetext>Comment on attachment 259358
Patch

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

Thank you!

&gt;&gt; Source/JavaScriptCore/runtime/JSInternalPromiseConstructor.cpp:38
&gt;&gt; +STATIC_ASSERT_IS_TRIVIALLY_DESTRUCTIBLE(JSInternalPromiseConstructor);
&gt; 
&gt; Nit: Why not have this in below namespace?

Originally, this namespace is the place to

1. locate `STATIC_ASSERT_IS_TRIVIALLY_DESTRUCTIBLE(JSInternalPromiseConstructor);`
2. locate the forward declarations for C++ JS methods that will become the property of the focused object (like arrayPrototypeFuncJoin etc.)

In the case of this file, there&apos;s no C++ JS method. So just (1) remains.
(2) should be locate here because it should be declared before including &quot;JSInternalPromiseConstructor.lut.h&quot; (this can be included in the global namespace), but (1) can be locate after the &quot;JSInternalPromiseConstructor.lut.h&quot;. So I&apos;ll move this before the JSInternalPromiseConstructor::s_info line.

&gt;&gt; Source/JavaScriptCore/runtime/JSPromise.h:52
&gt;&gt; +    // This may raises the JS exception.
&gt; 
&gt; &quot;raises the&quot; =&gt; &quot;raise a&quot;

Thanks! Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119178</commentid>
    <comment_count>11</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-19 21:43:31 -0700</bug_when>
    <thetext>Committed r188681: &lt;http://trac.webkit.org/changeset/188681&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259357</attachid>
            <date>2015-08-18 22:32:27 -0700</date>
            <delta_ts>2015-08-18 22:39:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148136-20150818223225.patch</filename>
            <type>text/plain</type>
            <size>80080</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4NjE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
Nzc3ZDRhNzY2MmQ0MWZmMjNjMzg5M2NkNDM0NTczNjc0M2I3NDFhLi5mNTkwZDkxMDMzN2QyMDU0
OTZmODQ4NmE3MTcwMjA2NjE4OTgxMDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwxMDQgQEAKIDIwMTUtMDgtMTggIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CiAKKyAgICAgICAgQWRkIEludGVybmFsUHJvbWlzZSB0byB1c2UgUHJvbWlzZXMgc2Fm
ZWx5IGluIHRoZSBpbnRlcm5hbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE0ODEzNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBJbnRlcm5hbFByb21pc2UuCisgICAg
ICAgIEl0IGlzIGNvbXBsZXRlbHkgZGlmZmVyZW50IGluc3RhbmNlIHNldCAoY29uc3RydWN0b3Is
IHByb3RvdHlwZSwgaW5zdGFuY2UpCisgICAgICAgIGJ1dCBpdCBoYXMgdGhlIHNhbWUgZmVhdHVy
ZSB0byB0aGUgUHJvbWlzZS4KKworICAgICAgICBJbiB0aGUgUHJvbWlzZSBvcGVyYXRpb25zLCB3
aGVuIHJlc29sdmluZyB0aGUgcHJvbWlzZSB3aXRoIHRoZSByZXR1cm5lZCBwcm9taXNlCisgICAg
ICAgIGZyb20gdGhlIGZ1bGZpbGwgaGFuZGxlciwgd2UgbmVlZCB0byBsb29rIHVwICJ0aGVuIiBt
ZXRob2QuCisKKyAgICAgICAgZS5nLgorICAgICAgICAgICAgcDEudGhlbihmdW5jdGlvbiBoYW5k
bGVyKC4uLikgeworICAgICAgICAgICAgICAgIHJldHVybiBwMjsKKyAgICAgICAgICAgIH0pOwor
CisgICAgICAgIFdoZW4gaGFuZGxlciBpcyBleGVjdXRlZCwgd2UgcmV0cmlldmUgdGhlIHJldHVy
bmVkIGBwMmAgcHJvbWlzZS4gQW5kIHRvIHJlc29sdmUKKyAgICAgICAgdGhlIHJldHVybmVkIHBy
b21pc2UgYnkgInRoZW4iIG1ldGhvZCwgd2UgY29uc3RydWN0IHRoZSBjaGFpbiBieSBleGVjdXRp
bmcgYHAyLnRoZW4ocmVzb2x2aW5nIGZ1bmN0aW9uKWAuCisgICAgICAgIFNvIGlmIHRoZSB1c2Vy
IG1vZGlmeSB0aGUgUHJvbWlzZS5wcm90b3R5cGUudGhlbiwgd2UgY2FuIG9ic2VydmUgdGhlIGlu
dGVybmFsIG9wZXJhdGlvbnMuCisKKyAgICAgICAgQnkgdXNpbmcgSW50ZXJuYWxQcm9taXNlLCB3
ZSBjb21wbGV0ZWx5IGhpZGUgSW50ZXJuYWxQcm9taXNlLnByb3RvdHlwZSBmcm9tIHRoZSB1c2Vy
cy4KKyAgICAgICAgSXQgYWxsb3dzIEpTQyB0byB1c2UgUHJvbWlzZXMgaW50ZXJuYWxseTsgZXZl
biBpZiB0aGUgdXNlciBtb2RpZnkgLyBvdmVycmlkZQorICAgICAgICB0aGUgUHJvbWlzZS5wcm90
b3R5cGUudGhlbiBmdW5jdGlvbiwgaXQgZG9lcyBub3QgZWZmZWN0IG9uIEludGVybmFsUHJvbWlz
ZS4KKworICAgICAgICBPbmUgbGltaXRhdGlvbiBpcyB0aGF0IHRoZSBpbXBsZW1lbnRhdGlvbiBu
ZWVkIHRvIHRha2UgY2FyZSBub3QgdG8gbGVhayB0aGUgSW50ZXJuYWxQcm9taXNlIGluc3RhbmNl
CisgICAgICAgIHRvIHRoZSB1c2VyIHNwYWNlLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6
CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6CisgICAgICAgICogSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBidWlsdGlu
cy9JbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5qczogQWRkZWQuCisgICAgICAgIChpbnRlcm5h
bEFsbC5uZXdSZXNvbHZlRWxlbWVudCk6CisgICAgICAgIChpbnRlcm5hbEFsbCk6CisgICAgICAg
ICogYnVpbHRpbnMvT3BlcmF0aW9ucy5Qcm9taXNlLmpzOgorICAgICAgICAobmV3UHJvbWlzZURl
ZmVycmVkKTogRGVsZXRlZC4KKyAgICAgICAgKiBidWlsdGlucy9Qcm9taXNlQ29uc3RydWN0b3Iu
anM6CisgICAgICAgIChwcml2YXRlQWxsLm5ld1Jlc29sdmVFbGVtZW50KTogRGVsZXRlZC4KKyAg
ICAgICAgKHByaXZhdGVBbGwpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRl
bnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9i
amVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5o
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cHJvbWlzZUNvbnN0cnVjdG9yKToKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yKToK
KyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Om5ld1Byb21pc2VDYXBhYmlsaXR5RnVuY3Rp
b24pOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6bmV3UHJvbWlzZURlZmVycmVkRnVu
Y3Rpb24pOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNJbnRlcm5hbFByb21pc2UuY3Bw
OiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VQcm90
b3R5cGUuaC4KKyAgICAgICAgKEpTQzo6SlNJbnRlcm5hbFByb21pc2U6OmNyZWF0ZSk6CisgICAg
ICAgIChKU0M6OkpTSW50ZXJuYWxQcm9taXNlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAo
SlNDOjpKU0ludGVybmFsUHJvbWlzZTo6SlNJbnRlcm5hbFByb21pc2UpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNJbnRlcm5hbFByb21pc2UuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNQcm9taXNlLmguCisgICAgICAgICogcnVudGltZS9KU0ludGVybmFsUHJv
bWlzZUNvbnN0cnVjdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTSW50ZXJuYWxQcm9t
aXNlQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTSW50ZXJuYWxQcm9taXNl
Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTSW50ZXJuYWxQ
cm9taXNlQ29uc3RydWN0b3I6OkpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IpOgorICAgICAg
ICAoSlNDOjpjb25zdHJ1Y3RQcm9taXNlKToKKyAgICAgICAgKEpTQzo6SlNJbnRlcm5hbFByb21p
c2VDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YSk6CisgICAgICAgIChKU0M6OkpTSW50ZXJu
YWxQcm9taXNlQ29uc3RydWN0b3I6OmdldENhbGxEYXRhKToKKyAgICAgICAgKEpTQzo6SlNJbnRl
cm5hbFByb21pc2VDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKiBy
dW50aW1lL0pTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuaDogQ29waWVkIGZyb20gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuaC4KKyAgICAgICAg
KiBydW50aW1lL0pTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQuY3BwOiBBZGRlZC4KKyAgICAgICAg
KEpTQzo6SlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6
SlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZDo6SlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZCk6Cisg
ICAgICAgIChKU0M6OkpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQ6OnByb21pc2UpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZC5oOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VQcm90b3R5cGUuaC4KKyAgICAgICAg
KiBydW50aW1lL0pTSW50ZXJuYWxQcm9taXNlUHJvdG90eXBlLmNwcDogQ29waWVkIGZyb20gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlUHJvdG90eXBlLmNwcC4KKyAgICAg
ICAgKEpTQzo6SlNJbnRlcm5hbFByb21pc2VQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgIChK
U0M6OkpTSW50ZXJuYWxQcm9taXNlUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAg
ICAoSlNDOjpKU0ludGVybmFsUHJvbWlzZVByb3RvdHlwZTo6SlNJbnRlcm5hbFByb21pc2VQcm90
b3R5cGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNJbnRlcm5hbFByb21pc2VQcm90b3R5cGUuaDog
Q29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlLmguCisg
ICAgICAgICogcnVudGltZS9KU1Byb21pc2UuY3BwOgorICAgICAgICAoSlNDOjpKU1Byb21pc2U6
OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTUHJvbWlzZTo6SlNQcm9taXNlKToKKyAgICAgICAg
KEpTQzo6SlNQcm9taXNlOjppbml0aWFsaXplKToKKyAgICAgICAgKiBydW50aW1lL0pTUHJvbWlz
ZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwOgorICAgICAg
ICAoSlNDOjpKU1Byb21pc2VDb25zdHJ1Y3Rvcjo6SlNQcm9taXNlQ29uc3RydWN0b3IpOgorICAg
ICAgICAoSlNDOjpjb25zdHJ1Y3RQcm9taXNlKToKKyAgICAgICAgKEpTQzo6SlNQcm9taXNlQ29u
c3RydWN0b3I6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpTUHJvbWlzZUNv
bnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9K
U1Byb21pc2VDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9taXNlRGVmZXJy
ZWQuY3BwOgorICAgICAgICAoSlNDOjpuZXdQcm9taXNlQ2FwYWJpbGl0eSk6CisgICAgICAgIChK
U0M6OkpTUHJvbWlzZURlZmVycmVkOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU1Byb21pc2VE
ZWZlcnJlZDo6SlNQcm9taXNlRGVmZXJyZWQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9taXNl
RGVmZXJyZWQuaDoKKyAgICAgICAgKiBydW50aW1lL0pTUHJvbWlzZVByb3RvdHlwZS5jcHA6Cisg
ICAgICAgIChKU0M6OkpTUHJvbWlzZVByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAg
ICAgICAgKiBydW50aW1lL0pTUHJvbWlzZVByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUv
Vk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoK
KworMjAxNS0wOC0xOCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKwog
ICAgICAgICBJbnRyb2R1Y2Ugbm9uLXVzZXItb2JzZXJ2YWJsZSBQcm9taXNlIGZ1bmN0aW9ucyB0
byB1c2UgUHJvbWlzZXMgaW50ZXJuYWxseQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4MTE4CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dAppbmRleCBkMjI1MjM4MTYzM2I0MmFiZWMyM2JhMDU4NjBkNDg0ZGYwOGE1ZGNjLi44Mjk2MjY3
YmJiMGM4ZWE0YWM1MmYxOGE0ZTZkZWVjMjcxNzMzNTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CkBAIC01MjUsNiArNTI1LDEwIEBAIHNldChKYXZhU2NyaXB0Q29yZV9SVU5U
SU1FX1NPVVJDRVMKICAgICBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUv
SlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmNwcAogICAgIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3RG
dW5jdGlvbnMuY3BwCisgICAgcnVudGltZS9KU0ludGVybmFsUHJvbWlzZS5jcHAKKyAgICBydW50
aW1lL0pTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuY3BwCisgICAgcnVudGltZS9KU0ludGVy
bmFsUHJvbWlzZURlZmVycmVkLmNwcAorICAgIHJ1bnRpbWUvSlNJbnRlcm5hbFByb21pc2VQcm90
b3R5cGUuY3BwCiAgICAgcnVudGltZS9KU0pvYi5jcHAKICAgICBydW50aW1lL0pTTGV4aWNhbEVu
dmlyb25tZW50LmNwcAogICAgIHJ1bnRpbWUvSlNMb2NrLmNwcApAQCAtNjUzLDYgKzY1Nyw3IEBA
IHNldChKYXZhU2NyaXB0Q29yZV9MVVRfRklMRVMKICAgICBydW50aW1lL0ludGxOdW1iZXJGb3Jt
YXRQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcAogICAg
IHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisgICAgcnVudGltZS9KU0ludGVybmFsUHJvbWlz
ZUNvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvSlNPTk9iamVjdC5jcHAKICAgICBydW50aW1l
L0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvSlNQcm9taXNlUHJvdG90eXBl
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1h
a2UgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCAxY2Iy
ZDVjYmEzYmQzNWUyMDlmOWQyYzdiYjQ2N2IyYjk2ZjdmYTVkLi41ZTQ3YTRjZTE3MDBkMTdhOWI1
MTdmZGJmMjgyNmNlOTlhODg3NmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZQpAQCAtNTEsNiArNTEsNyBAQCBhbGwgOiBcCiAgICAgSlNEYXRhVmlld1Byb3Rv
dHlwZS5sdXQuaCBcCiAgICAgSlNPTk9iamVjdC5sdXQuaCBcCiAgICAgSlNHbG9iYWxPYmplY3Qu
bHV0LmggXAorICAgIEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IubHV0LmggXAogICAgIEpT
UHJvbWlzZVByb3RvdHlwZS5sdXQuaCBcCiAgICAgSlNQcm9taXNlQ29uc3RydWN0b3IubHV0Lmgg
XAogICAgIEtleXdvcmRMb29rdXAuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4
cHJvagppbmRleCA1MDYyNDdkYTA5MzY4MGVlMzExYmI5ZjQwMjRmMjU2OTY2MTNmZTI0Li42ZmRi
YjFmMDliODc4YTQ0ZDQ4NmNiMjJjNzc0MjlkNTY0ZDNjYWYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2oKQEAgLTc3NSw2ICs3NzUsMTAgQEAKICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNGdW5jdGlvbi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxydW50aW1lXEpTR2xvYmFsT2JqZWN0LmNwcCIgLz4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwIiAvPgorICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0ludGVybmFsUHJvbWlzZS5jcHAiIC8+
CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTSW50ZXJuYWxQcm9taXNlQ29u
c3RydWN0b3IuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0lu
dGVybmFsUHJvbWlzZURlZmVycmVkLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcSlNJbnRlcm5hbFByb21pc2VQcm90b3R5cGUuY3BwIiAvPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0pvYi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxydW50aW1lXEpTTG9jay5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxydW50aW1lXEpTTWFwLmNwcCIgLz4KQEAgLTkxNyw2ICs5MjEsNyBAQAogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRl
Y3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3RvclByb3RvY29sT2Jq
ZWN0cy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3Vy
Y2VzXEpTRGF0YVZpZXdQcm90b3R5cGUubHV0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQ
cm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNHbG9iYWxPYmplY3QubHV0LmgiIC8+CisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9y
bUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNJbnRlcm5hbFBy
b21pc2VDb25zdHJ1Y3Rvci5sdXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29u
ZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3RO
YW1lKVxEZXJpdmVkU291cmNlc1xKU09OT2JqZWN0Lmx1dC5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1
cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTUHJvbWlzZUNvbnN0cnVjdG9yLmx1
dC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIp
XG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2Vz
XEpTUHJvbWlzZVByb3RvdHlwZS5sdXQuaCIgLz4KQEAgLTE2MjAsNiArMTYyNSwxMCBAQAogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0ludDE2QXJyYXkuaCIgLz4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNJbnQzMkFycmF5LmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTSW50OEFycmF5LmgiIC8+CisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTSW50ZXJuYWxQcm9taXNlLmgiIC8+CisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3Iu
aCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNJbnRlcm5hbFByb21p
c2VEZWZlcnJlZC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0lu
dGVybmFsUHJvbWlzZVByb3RvdHlwZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU0xvY2suaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SlNNYXAuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNYXBJdGVy
YXRvci5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5m
aWx0ZXJzCmluZGV4IDA2NjBmMjk3ZTJjYzdhNzNmNGIzYzFiZjk0NWQ1NmYxYTVkZjY2ZWMuLjYy
YTEzN2EyY2I2Y2IyYTkxZDM1ZjBkNTUyNTQ5N2I1NDg5NmU3ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZj
eHByb2ouZmlsdGVycworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTEwNTMsNiArMTA1Mywx
OCBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxTaW1wbGVUeXBlZEFycmF5
Q29udHJvbGxlci5jcHAiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9D
bENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTSW50ZXJuYWxQ
cm9taXNlLmNwcCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsQ29t
cGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNJbnRlcm5hbFByb21p
c2VDb25zdHJ1Y3Rvci5jcHAiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAg
PC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTSW50ZXJu
YWxQcm9taXNlRGVmZXJyZWQuY3BwIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgor
ICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0lu
dGVybmFsUHJvbWlzZVByb3RvdHlwZS5jcHAiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0
ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1l
XEpTUHJvbWlzZS5jcHAiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9D
bENvbXBpbGU+CkBAIC0zMzAwLDYgKzMzMTIsMTggQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuaCI+CiAgICAgICA8
RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNJbnRlcm5hbFByb21pc2UuaCI+CisgICAgICA8RmlsdGVy
PnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHJ1bnRpbWVcSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5oIj4KKyAgICAgIDxG
aWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccnVudGltZVxKU0ludGVybmFsUHJvbWlzZURlZmVycmVkLmgiPgorICAgICAg
PEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTSW50ZXJuYWxQcm9taXNlUHJvdG90eXBlLmgiPgorICAg
ICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTUHJvbWlzZS5oIj4KICAgICAgIDxGaWx0ZXI+cnVu
dGltZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtMzQxNyw2ICszNDQxLDkgQEAKICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRm
b3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xEYXRlQ29uc3Ry
dWN0b3IubHV0LmgiPgogICAgICAgPEZpbHRlcj5EZXJpdmVkIFNvdXJjZXM8L0ZpbHRlcj4KICAg
ICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1
aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVk
U291cmNlc1xKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmx1dC5oIj4KKyAgICAgIDxGaWx0
ZXI+RGVyaXZlZCBTb3VyY2VzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hp
dGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNQcm9taXNlQ29uc3RydWN0
b3IubHV0LmgiPgogICAgICAgPEZpbHRlcj5EZXJpdmVkIFNvdXJjZXM8L0ZpbHRlcj4KICAgICA8
L0NsSW5jbHVkZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNDhmZmNjNjk2Mzhl
ZmY5YTc0YTFkMGFhNDBlMTBjYzA3ZjFhYTkwMy4uYTM0MDE3MjM4M2Q0MmU2MTg1MjQ5ZWVmODQ0
MTI0NTIzNmVhNjhiOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE2OTcsNiAr
MTY5NywxNSBAQAogCQlFMzM2MzdBNTFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzM2MzdB
MzFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5jcHAgKi87IH07CiAJCUUzMzYzN0E2
MUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzM2MzdBNDFCNjMyMjAyMDBFRTA4NDAgLyogUmVm
bGVjdE9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUUzM0IzRTI2MUI3QUJENzUwMDQ4REIyRSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25PYmplY3QubHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMzNCM0UyNTFCN0FCRDc1MDA0OERCMkUgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
T2JqZWN0Lmx1dC5oICovOyB9OworCQlFMzNGNTA3NDFCODQyMUMwMDA0MTM4NTYgLyogSlNJbnRl
cm5hbFByb21pc2VQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTMzRjUwNzIxQjg0MjFDMDAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9t
aXNlUHJvdG90eXBlLmNwcCAqLzsgfTsKKwkJRTMzRjUwNzUxQjg0MjFDMDAwNDEzODU2IC8qIEpT
SW50ZXJuYWxQcm9taXNlUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMzNGNTA3MzFCODQyMUMwMDA0MTM4NTYgLyogSlNJbnRlcm5hbFBy
b21pc2VQcm90b3R5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQlFMzNGNTA3ODFCODQyMjU3MDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VD
b25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMzNGNTA3NjFCODQyMjU3MDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1
Y3Rvci5jcHAgKi87IH07CisJCUUzM0Y1MDc5MUI4NDIyNTcwMDQxMzg1NiAvKiBKU0ludGVybmFs
UHJvbWlzZUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMzNGNTA3NzFCODQyMjU3MDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VD
b25zdHJ1Y3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCUUzM0Y1MDgwMUI4NDI5QTQwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzNGNTA3RTFC
ODQyOUE0MDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2UuY3BwICovOyB9OworCQlFMzNGNTA4
MTFCODQyOUE0MDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzM0Y1MDdGMUI4NDI5QTQwMDQxMzg1NiAv
KiBKU0ludGVybmFsUHJvbWlzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCUUzM0Y1MDg0MUI4NDM3QTAwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJv
bWlzZURlZmVycmVkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzM0Y1MDgyMUI4NDM3QTAwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZURlZmVy
cmVkLmNwcCAqLzsgfTsKKwkJRTMzRjUwODUxQjg0MzdBMDAwNDEzODU2IC8qIEpTSW50ZXJuYWxQ
cm9taXNlRGVmZXJyZWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzM0Y1MDgzMUI4NDM3QTAwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZURlZmVy
cmVkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
RTMzRjUwODcxQjg0NDlFRjAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3Iu
bHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzNG
NTA4NjFCODQ0OUVGMDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5sdXQu
aCAqLzsgfTsKIAkJRTM1NDYyMkIxQjYwNjVEMTAwNTQ1Mzg2IC8qIENvbnN0cnVjdEFiaWxpdHku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNTQ2MjJB
MUI2MDY1RDEwMDU0NTM4NiAvKiBDb25zdHJ1Y3RBYmlsaXR5LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM1RTAzNUYxQjdBQjQzRTAwNzNBRDJB
IC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVFMDM1RDFCN0FCNDNFMDA3M0FEMkEgLyog
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcCAqLzsgfTsKIAkJRTM1RTAzNjAxQjdB
QjQzRTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1RTAzNUUxQjdBQjQzRTAw
NzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zNTMzLDYgKzM1NDIsMTYgQEAK
IAkJRTMzNjM3QTMxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVmbGVjdE9iamVjdC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzMzYzN0E0MUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0
T2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZmxlY3RPYmplY3Qu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMzQjNFMjUxQjdBQkQ3NTAwNDhEQjJF
IC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5sdXQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmx1dC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzNGNTA3MjFCODQyMUMwMDA0MTM4NTYgLyog
SlNJbnRlcm5hbFByb21pc2VQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNJbnRlcm5hbFByb21pc2VQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlFMzNGNTA3MzFCODQyMUMwMDA0MTM4NTYgLyogSlNJbnRlcm5hbFBy
b21pc2VQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNJbnRl
cm5hbFByb21pc2VQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMz
RjUwNzYxQjg0MjI1NzAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNJbnRlcm5hbFByb21pc2VD
b25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzM0Y1MDc3MUI4
NDIyNTcwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMzRjUwN0UxQjg0MjlBNDAwNDEzODU2IC8q
IEpTSW50ZXJuYWxQcm9taXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTSW50ZXJuYWxQcm9taXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RTMzRjUwN0YxQjg0MjlBNDAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSW50ZXJuYWxQcm9taXNlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUUzM0Y1MDgyMUI4NDM3QTAwMDQxMzg1NiAvKiBKU0ludGVybmFs
UHJvbWlzZURlZmVycmVkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlFMzNGNTA4MzFCODQzN0EwMDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VEZWZlcnJl
ZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0ludGVybmFsUHJvbWlzZURl
ZmVycmVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzM0Y1MDg2MUI4NDQ5RUYw
MDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmx1dC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmx1dC5o
OyBwYXRoID0gSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5sdXQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRTMzRjUwODgxQjg0NEExQTAwNDEzODU2IC8qIEludGVybmFsUHJv
bWlzZUNvbnN0cnVjdG9yLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRo
ID0gSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUUzNTQ2MjJBMUI2MDY1RDEwMDU0NTM4NiAvKiBDb25zdHJ1Y3RBYmlsaXR5LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnN0cnVjdEFiaWxpdHkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1RTAzNUQxQjdBQjQzRTAwNzNBRDJBIC8qIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFMzVFMDM1RTFCN0FCNDNFMDA3M0FEMkEgLyogSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNDM3OSw2ICs0Mzk4LDcgQEAKIAkJCQlBN0Q4MDFBNjE4ODBENkE4MDAyNkMzOUIg
LyogSlNDQnVpbHRpbnMuY3BwICovLAogCQkJCUE3RDgwMUE3MTg4MEQ2QTgwMDI2QzM5QiAvKiBK
U0NCdWlsdGlucy5oICovLAogCQkJCUJDODdDREI4MTA3MTJBQ0EwMDA2MTRDRiAvKiBKU09OT2Jq
ZWN0Lmx1dC5oICovLAorCQkJCUUzM0Y1MDg2MUI4NDQ5RUYwMDQxMzg1NiAvKiBKU0ludGVybmFs
UHJvbWlzZUNvbnN0cnVjdG9yLmx1dC5oICovLAogCQkJCTdDMTg0RTI0MTdCRkZBMzYwMDdDQjYz
QSAvKiBKU1Byb21pc2VDb25zdHJ1Y3Rvci5sdXQuaCAqLywKIAkJCQk3QzE4NEUyNTE3QkZGQTM2
MDA3Q0I2M0EgLyogSlNQcm9taXNlUHJvdG90eXBlLmx1dC5oICovLAogCQkJCTk5MjhGRjM5MThB
QzRBRUMwMEI4Q0YxMiAvKiBKU1JlcGxheUlucHV0cy5jcHAgKi8sCkBAIC00NzA5LDYgKzQ3Mjks
MTQgQEAKIAkJCQkwRjJCNjZDOTE3QjZCNUFCMDBBN0FFM0YgLyogSlNJbnQ4QXJyYXkuaCAqLywK
IAkJCQkwRjJCNjZDQTE3QjZCNUFCMDBBN0FFM0YgLyogSlNJbnQxNkFycmF5LmggKi8sCiAJCQkJ
MEYyQjY2Q0IxN0I2QjVBQjAwQTdBRTNGIC8qIEpTSW50MzJBcnJheS5oICovLAorCQkJCUUzM0Y1
MDdFMUI4NDI5QTQwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZS5jcHAgKi8sCisJCQkJRTMz
RjUwN0YxQjg0MjlBNDAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlLmggKi8sCisJCQkJRTMz
RjUwNzYxQjg0MjI1NzAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuY3Bw
ICovLAorCQkJCUUzM0Y1MDc3MUI4NDIyNTcwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZUNv
bnN0cnVjdG9yLmggKi8sCisJCQkJRTMzRjUwODIxQjg0MzdBMDAwNDEzODU2IC8qIEpTSW50ZXJu
YWxQcm9taXNlRGVmZXJyZWQuY3BwICovLAorCQkJCUUzM0Y1MDgzMUI4NDM3QTAwMDQxMzg1NiAv
KiBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkLmggKi8sCisJCQkJRTMzRjUwNzIxQjg0MjFDMDAw
NDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlUHJvdG90eXBlLmNwcCAqLywKKwkJCQlFMzNGNTA3
MzFCODQyMUMwMDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VQcm90b3R5cGUuaCAqLywKIAkJ
CQk3MDEzQ0E4OTFCNDkxQTk0MDBDQUU2MTMgLyogSlNKb2IuY3BwICovLAogCQkJCTcwMTNDQThB
MUI0OTFBOTQwMENBRTYxMyAvKiBKU0pvYi5oICovLAogCQkJCTE0REE4MThGMEQ5OUZEMjAwMEIw
QTRGQiAvKiBKU0xleGljYWxFbnZpcm9ubWVudC5jcHAgKi8sCkBAIC01NzMxLDYgKzU3NTksNyBA
QAogCQkJCUE3QTk3OUM0MThCRThEOUUwMDJDMzczMyAvKiBGdW5jdGlvbi5wcm90b3R5cGUuanMg
Ki8sCiAJCQkJN0NGOUJDNUExQjY1RDlBMzAwOURCMUVGIC8qIEdsb2JhbE9iamVjdC5qcyAqLywK
IAkJCQlFMzVFMDM2MTFCN0FCNDg1MDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
T2JqZWN0LmpzICovLAorCQkJCUUzM0Y1MDg4MUI4NDRBMUEwMDQxMzg1NiAvKiBJbnRlcm5hbFBy
b21pc2VDb25zdHJ1Y3Rvci5qcyAqLywKIAkJCQk3Q0Y5QkM1QjFCNjVEOUEzMDA5REIxRUYgLyog
SXRlcmF0b3IucHJvdG90eXBlLmpzICovLAogCQkJCTdDRjlCQzVDMUI2NUQ5QjEwMDlEQjFFRiAv
KiBPYmplY3RDb25zdHJ1Y3Rvci5qcyAqLywKIAkJCQk3Q0Y5QkM1RDFCNjVEOUIxMDA5REIxRUYg
LyogT3BlcmF0aW9ucy5Qcm9taXNlLmpzICovLApAQCAtNTkzOSw2ICs1OTY4LDcgQEAKIAkJCQkw
RjBCODNBNzE0QkNGNTA3MDA4ODVCNEYgLyogQ29kZVR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDMThDM0YzMEUxNkY1Q0QwMEIzNDQ2MCAvKiBDb21tb25JZGVudGlmaWVycy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNzA5RkI4NkMxQUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRQcm90b3R5cGUu
aCBpbiBIZWFkZXJzICovLAorCQkJCUUzM0Y1MDgxMUI4NDI5QTQwMDQxMzg1NiAvKiBKU0ludGVy
bmFsUHJvbWlzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxNUYxNUYxNEI3QTczRTAwNURFMzdE
IC8qIENvbW1vblNsb3dQYXRocy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjU1M0EzMzIxN0ExRjFF
RTAwOENGNkYzIC8qIENvbW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGRDgyRTM5MTQxQUIxNEQwMDE3OUM5NCAvKiBDb21wYWN0SklUQ29kZU1hcC5oIGluIEhl
YWRlcnMgKi8sCkBAIC02MDQ2LDYgKzYwNzYsNyBAQAogCQkJCTg2RUM5REM2MTMyOERGODIwMDJC
MkFENyAvKiBERkdHZW5lcmF0aW9uSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZFQzlEQzgx
MzI4REY4MjAwMkIyQUQ3IC8qIERGR0dyYXBoLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJGQ0NG
QTE4QTYwMDcwMDAxQTI3RjggLyogREZHR3JhcGhTYWZlcG9pbnQuaCBpbiBIZWFkZXJzICovLAor
CQkJCUUzM0Y1MDg3MUI4NDQ5RUYwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVj
dG9yLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCMTRFMjExODEyNTcwQjAwOUI2QjREIC8q
IERGR0lubGluZUNhY2hlV3JhcHBlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCMTRFMjMxODEz
MDk1NTAwOUI2QjREIC8qIERGR0lubGluZUNhY2hlV3JhcHBlcklubGluZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGNzkwODU2MTlBMjkwQjIwMEY2MzEwQyAvKiBERkdTdHJ1Y3R1cmVSZWdpc3Ry
YXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCkBAIC02MDcyLDYgKzYxMDMsNyBAQAogCQkJCTBG
MkU4OTJEMTZEMDJCQUYwMDlFNEZEMiAvKiBERkdNaW5pZmllZElELmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjJCREM0NjE1MjI4MDIwMDBDRDg5MTAgLyogREZHTWluaWZpZWROb2RlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNzM3ODEwRTE3OTlFQTJFMDA4MTc1MzMgLyogREZHTmF0dXJhbExvb3Bz
LmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzNGNTA3OTFCODQyMjU3MDA0MTM4NTYgLyogSlNJbnRl
cm5hbFByb21pc2VDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZFQ0EzRUExMzJE
RUYxQzAwMkIyQUQ3IC8qIERGR05vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkI5MjFCMTZE
MDJGMDEwMDU1QTVEQiAvKiBERkdOb2RlQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RkE1ODFCQjE1MEU5NTMwMDBCOUEyRDkgLyogREZHTm9kZUZsYWdzLmggaW4gSGVhZGVycyAqLywK
QEAgLTYzNTQsNiArNjM4Niw3IEBACiAJCQkJQkMxOEM0MUIwRTE2RjVDRDAwQjM0NDYwIC8qIEpT
Q2FsbGJhY2tPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDFDMEUxNkY1Q0QwMEIz
NDQ2MCAvKiBKU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
N0Q4MDFBOTE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovLAor
CQkJCUUzM0Y1MDg1MUI4NDM3QTAwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZURlZmVycmVk
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzExNjdEQTBFMTlCQ0M5MDA4MDY2REQgLyogSlNDZWxs
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjk3NDk3MTE2ODdBREU0MDBBNEZGNkEgLyogSlNDZWxs
SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxREQ4NEExOEE5NDVCRTAwMjZGM0ZBIC8q
IEpTQ0lubGluZXMuaCBpbiBIZWFkZXJzICovLApAQCAtNjQ0Niw2ICs2NDc5LDcgQEAKIAkJCQkw
RjJCNjZGRjE3QjZCNUFCMDBBN0FFM0YgLyogSlNUeXBlZEFycmF5cy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNjUwN0QyOUUwRTg3MUU1RTAwRDdEODk2IC8qIEpTVHlwZUluZm8uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGMkI2NzAyMTdCNkI1QUIwMEE3QUUzRiAvKiBKU1VpbnQxNkFycmF5LmggaW4g
SGVhZGVycyAqLywKKwkJCQlFMzNGNTA3NTFCODQyMUMwMDA0MTM4NTYgLyogSlNJbnRlcm5hbFBy
b21pc2VQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NzAzMTdCNkI1QUIwMEE3
QUUzRiAvKiBKU1VpbnQzMkFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJENERGMDE5ODMy
REQ2MDA3RDRCMTkgLyogVHlwZVNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY3MDAxN0I2
QjVBQjAwQTdBRTNGIC8qIEpTVWludDhBcnJheS5oIGluIEhlYWRlcnMgKi8sCkBAIC03Mzc4LDYg
Kzc0MTIsNyBAQAogCQkJCTBGMkJEQzE1MTUxQzVENEQwMENEODkxMCAvKiBERkdGaXh1cFBoYXNl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRDEyMDMzMUE4Qzg1QkQwMDBGNTI4MCAvKiBGVExK
U0NhbGxWYXJhcmdzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOUQzMzk2MTdGRkM0RTYwMDcz
QzJCQyAvKiBERkdGbHVzaGVkQXQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTMzRjUwODQxQjg0
MzdBMDAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMEY5RDM2OTQxQUU5Q0MzMzAwMEQ0REZCIC8qIERGR0NsZWFuVXBQaGFzZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBN0Q4OUNGNzE3QTBCOENDMDA3NzNBRDggLyogREZHRmx1c2hG
b3JtYXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0IzOUY3NkQxQjYyREUyRTAwMzYwRkI0IC8q
IFdBU01Nb2R1bGVQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC03NDkxLDYgKzc1MjYsNyBA
QAogCQkJCTBGRUEwQTBCMTcwNTEzREIwMEJCNzIyQyAvKiBGVExDb21waWxlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGRTk1Rjc5MThCNTY5NDcwMEI1MzFGQiAvKiBGVExEYXRhU2VjdGlvbi5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkyQUM5MjJCQjE4QTE2MTgyMDAzQ0UwRkIgLyogRlRMRFdB
UkZEZWJ1Z0xpbmVJbmZvLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUzM0Y1MDgwMUI4NDI5QTQw
MDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjIz
NUJEMzE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdEFyZ3VtZW50LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGMjM1QkQ1MTcxNzhFMUMwMDY5MEM3RiAvKiBGVExFeGl0QXJndW1lbnRGb3JPcGVy
YW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjM1QkQ4MTcxNzhFMUMwMDY5MEM3RiAvKiBG
VExFeGl0VGh1bmtHZW5lcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC03NzIyLDYgKzc3NTgs
NyBAQAogCQkJCTBGRUIzRUNGMTYyMzdGNkMwMEFCNjdBRCAvKiBNYWNyb0Fzc2VtYmxlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBMUQ3OTMwMDFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJl
ckZvcm1hdFByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkM1NjhFMDExQTIxM0VF
MDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJBUk0uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTMz
RjUwNzQxQjg0MjFDMDAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlUHJvdG90eXBlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUE3MjkwMDlDMTc5NzZDNjAwMDMxNzI5OCAvKiBNYWNyb0Fzc2Vt
YmxlckFSTXY3LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1M0NFMDg1MThCQzFBNTYwMEJFREY3
NiAvKiBDb25zb2xlUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3QTRBRTA4MTc5
NzNCMjYwMDU2MTJCMSAvKiBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5jcHAgaW4gU291cmNlcyAq
LywKQEAgLTc3OTcsNiArNzgzNCw3IEBACiAJCQkJMEY2QjFDQkQxODYxMjQ2QTAwODQ1RDk3IC8q
IFJlZ2lzdGVyUHJlc2VydmF0aW9uV3JhcHBlckdlbmVyYXRvci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRkMzMTQxNTE4MTQ2RDcwMDAwMzMyMzIgLyogUmVnaXN0ZXJTZXQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTU3RDIzRUQxODkxQjU1NDAwMzFDN0ZBIC8qIFJlZ3VsYXJFeHByZXNzaW9u
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUzM0Y1MDc4MUI4NDIyNTcwMDQxMzg1NiAvKiBKU0lu
dGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1QkExNUU5
MTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3IubW0gaW4gU291cmNlcyAqLywKIAkJ
CQkyQURGQTI2MzE4RUYzNTQwMDA0RjlGQ0MgLyogR0NMb2dnaW5nLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUE1OTQ1NThGMTgyNDVFRkQwMENDMzg0MyAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dh
YmxlLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmpzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjUxNzc3YzZhYzg0ZmUyNDc5MjQzNTc0OTZkY2E3MTcyZDE1MmJiYmMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvSW50ZXJuYWxQcm9taXNlQ29uc3Ry
dWN0b3IuanMKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKK2Z1bmN0aW9uIGludGVybmFsQWxsKGFycmF5KQoreworICAgIC8vIFRo
aXMgZnVuY3Rpb24gaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBpbiB0aGUgSlNDIGludGVybmFscy4K
KyAgICAvLyBUaGUgaW1wbGVtZW50YXRpb24gc2hvdWxkIHRha2UgY2FyZSBub3QgdG8gcGVyZm9y
bSB0aGUgdXNlcgorICAgIC8vIG9ic2VydmFibGUgLyB0cmFwcGFibGUgb3BlcmF0aW9ucy4KKyAg
ICAvLworICAgIC8vIDEuIERvbid0IHVzZSBmb3Itb2YgYW5kIGl0ZXJhYmxlcy4gVGhpcyBmdW5j
dGlvbiBvbmx5IGFjY2VwdHMKKyAgICAvLyAgICB0aGUgZGVuc2UgYXJyYXkgb2YgdGhlIHByb21p
c2VzLgorICAgIC8vIDIuIERvbid0IGxvb2sgdXAgdGhpcy5jb25zdHJ1Y3RvciAvIEBAc3BlY2ll
cy4gQWx3YXlzIGNvbnN0cnVjdAorICAgIC8vICAgIHRoZSBwbGFpbiBQcm9taXNlIG9iamVjdC4K
KworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHZhciBwcm9taXNlQ2FwYWJpbGl0eSA9IEBuZXdQ
cm9taXNlQ2FwYWJpbGl0eShASW50ZXJuYWxQcm9taXNlKTsKKworICAgIHZhciB2YWx1ZXMgPSBb
XTsKKyAgICB2YXIgaW5kZXggPSAwOworICAgIHZhciByZW1haW5pbmdFbGVtZW50c0NvdW50ID0g
MDsKKworICAgIGZ1bmN0aW9uIG5ld1Jlc29sdmVFbGVtZW50KGluZGV4KQorICAgIHsKKyAgICAg
ICAgdmFyIGFscmVhZHlDYWxsZWQgPSBmYWxzZTsKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChh
cmd1bWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGFscmVhZHlDYWxsZWQpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKKyAgICAgICAgICAgIGFscmVhZHlDYWxsZWQg
PSB0cnVlOworCisgICAgICAgICAgICBAcHV0QnlWYWxEaXJlY3QodmFsdWVzLCBpbmRleCwgYXJn
dW1lbnQpOworCisgICAgICAgICAgICAtLXJlbWFpbmluZ0VsZW1lbnRzQ291bnQ7CisgICAgICAg
ICAgICBpZiAocmVtYWluaW5nRWxlbWVudHNDb3VudCA9PT0gMCkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gcHJvbWlzZUNhcGFiaWxpdHkuQHJlc29sdmUuQGNhbGwodW5kZWZpbmVkLCB2YWx1ZXMp
OworCisgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkOworICAgICAgICB9CisgICAgfQorCisg
ICAgdHJ5IHsKKyAgICAgICAgaWYgKGFycmF5Lmxlbmd0aCA9PT0gMCkKKyAgICAgICAgICAgIHBy
b21pc2VDYXBhYmlsaXR5LkByZXNvbHZlLkBjYWxsKHVuZGVmaW5lZCwgdmFsdWVzKTsKKyAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICBmb3IgKHZhciBpbmRleCA9IDAsIGxlbmd0aCA9IGFycmF5
Lmxlbmd0aDsgaW5kZXggPCBsZW5ndGg7ICsraW5kZXgpIHsKKyAgICAgICAgICAgICAgICB2YXIg
dmFsdWUgPSBhcnJheVtpbmRleF07CisgICAgICAgICAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KHZh
bHVlcywgaW5kZXgsIHVuZGVmaW5lZCk7CisKKyAgICAgICAgICAgICAgICB2YXIgbmV4dFByb21p
c2VDYXBhYmlsaXR5ID0gQG5ld1Byb21pc2VDYXBhYmlsaXR5KEBJbnRlcm5hbFByb21pc2UpOwor
ICAgICAgICAgICAgICAgIG5leHRQcm9taXNlQ2FwYWJpbGl0eS5AcmVzb2x2ZS5AY2FsbCh1bmRl
ZmluZWQsIHZhbHVlKTsKKyAgICAgICAgICAgICAgICB2YXIgbmV4dFByb21pc2UgPSBuZXh0UHJv
bWlzZUNhcGFiaWxpdHkuQHByb21pc2U7CisKKyAgICAgICAgICAgICAgICB2YXIgcmVzb2x2ZUVs
ZW1lbnQgPSBuZXdSZXNvbHZlRWxlbWVudChpbmRleCk7CisgICAgICAgICAgICAgICAgKytyZW1h
aW5pbmdFbGVtZW50c0NvdW50OworICAgICAgICAgICAgICAgIG5leHRQcm9taXNlLnRoZW4ocmVz
b2x2ZUVsZW1lbnQsIHByb21pc2VDYXBhYmlsaXR5LkByZWplY3QpOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfSBjYXRjaCAoZXJyb3IpIHsKKyAgICAgICAgcHJvbWlzZUNhcGFiaWxp
dHkuQHJlamVjdC5AY2FsbCh1bmRlZmluZWQsIGVycm9yKTsKKyAgICB9CisKKyAgICByZXR1cm4g
cHJvbWlzZUNhcGFiaWxpdHkuQHByb21pc2U7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnVpbHRpbnMvT3BlcmF0aW9ucy5Qcm9taXNlLmpzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL09wZXJhdGlvbnMuUHJvbWlzZS5qcwppbmRleCA2NmY5YzI1MTUzNTlj
N2E1MTI1NGY5MzdmYzdmNTFjY2QxMzEyNDFkLi5hNDBkYTgyMzU4ZDQzMzRlMzNmMGZjZDFhOTM5
ODE5NzNjZWRiMGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMv
T3BlcmF0aW9ucy5Qcm9taXNlLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9PcGVyYXRpb25zLlByb21pc2UuanMKQEAgLTQwLDEzICs0MCw2IEBAIGZ1bmN0aW9uIG5ld1By
b21pc2VSZWFjdGlvbihjYXBhYmlsaXR5LCBoYW5kbGVyKQogICAgIH07CiB9CiAKLWZ1bmN0aW9u
IG5ld1Byb21pc2VEZWZlcnJlZCgpCi17Ci0gICAgInVzZSBzdHJpY3QiOwotCi0gICAgcmV0dXJu
IEBuZXdQcm9taXNlQ2FwYWJpbGl0eShAUHJvbWlzZSk7Ci19Ci0KIGZ1bmN0aW9uIG5ld1Byb21p
c2VDYXBhYmlsaXR5KGNvbnN0cnVjdG9yKQogewogICAgICJ1c2Ugc3RyaWN0IjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Qcm9taXNlQ29uc3RydWN0b3IuanMg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvUHJvbWlzZUNvbnN0cnVjdG9yLmpzCmlu
ZGV4IDM5YzgxMDY5MTljMmMzZWYyOTlhNWFjOTkzNDFlNGY3MTc5ZTQxZjEuLjFmODNiNDdmNzkw
YTc1ZTViZjhjOTNkNWU2NjQ5NjE4Y2IxYWVjNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9Qcm9taXNlQ29uc3RydWN0b3IuanMKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL1Byb21pc2VDb25zdHJ1Y3Rvci5qcwpAQCAtMTM3LDY1ICsxMzcs
MyBAQCBmdW5jdGlvbiByZXNvbHZlKHZhbHVlKQogCiAgICAgcmV0dXJuIHByb21pc2VDYXBhYmls
aXR5LkBwcm9taXNlOwogfQotCi1mdW5jdGlvbiBwcml2YXRlQWxsKGFycmF5KQotewotICAgIC8v
IFRoaXMgZnVuY3Rpb24gaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBpbiB0aGUgSlNDIGludGVybmFs
cy4KLSAgICAvLyBUaGUgaW1wbGVtZW50YXRpb24gc2hvdWxkIHRha2UgY2FyZSBub3QgdG8gcGVy
Zm9ybSB0aGUgdXNlcgotICAgIC8vIG9ic2VydmFibGUgLyB0cmFwcGFibGUgb3BlcmF0aW9ucy4K
LSAgICAvLwotICAgIC8vIDEuIERvbid0IHVzZSBmb3Itb2YgYW5kIGl0ZXJhYmxlcy4gVGhpcyBm
dW5jdGlvbiBvbmx5IGFjY2VwdHMKLSAgICAvLyAgICB0aGUgZGVuc2UgYXJyYXkgb2YgdGhlIHBy
b21pc2VzLgotICAgIC8vIDIuIERvbid0IGxvb2sgdXAgdGhpcy5jb25zdHJ1Y3RvciAvIEBAc3Bl
Y2llcy4gQWx3YXlzIGNvbnN0cnVjdAotICAgIC8vICAgIHRoZSBwbGFpbiBQcm9taXNlIG9iamVj
dC4KLQotICAgICJ1c2Ugc3RyaWN0IjsKLQotICAgIHZhciBwcm9taXNlQ2FwYWJpbGl0eSA9IEBu
ZXdQcm9taXNlRGVmZXJyZWQoKTsKLQotICAgIHZhciB2YWx1ZXMgPSBbXTsKLSAgICB2YXIgaW5k
ZXggPSAwOwotICAgIHZhciByZW1haW5pbmdFbGVtZW50c0NvdW50ID0gMDsKLQotICAgIGZ1bmN0
aW9uIG5ld1Jlc29sdmVFbGVtZW50KGluZGV4KQotICAgIHsKLSAgICAgICAgdmFyIGFscmVhZHlD
YWxsZWQgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChhcmd1bWVudCkKLSAgICAg
ICAgewotICAgICAgICAgICAgaWYgKGFscmVhZHlDYWxsZWQpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIHVuZGVmaW5lZDsKLSAgICAgICAgICAgIGFscmVhZHlDYWxsZWQgPSB0cnVlOwotCi0gICAg
ICAgICAgICBAcHV0QnlWYWxEaXJlY3QodmFsdWVzLCBpbmRleCwgYXJndW1lbnQpOwotCi0gICAg
ICAgICAgICAtLXJlbWFpbmluZ0VsZW1lbnRzQ291bnQ7Ci0gICAgICAgICAgICBpZiAocmVtYWlu
aW5nRWxlbWVudHNDb3VudCA9PT0gMCkKLSAgICAgICAgICAgICAgICByZXR1cm4gcHJvbWlzZUNh
cGFiaWxpdHkuQHJlc29sdmUuQGNhbGwodW5kZWZpbmVkLCB2YWx1ZXMpOwotCi0gICAgICAgICAg
ICByZXR1cm4gdW5kZWZpbmVkOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdHJ5IHsKLSAgICAg
ICAgaWYgKGFycmF5Lmxlbmd0aCA9PT0gMCkKLSAgICAgICAgICAgIHByb21pc2VDYXBhYmlsaXR5
LkByZXNvbHZlLkBjYWxsKHVuZGVmaW5lZCwgdmFsdWVzKTsKLSAgICAgICAgZWxzZSB7Ci0gICAg
ICAgICAgICBmb3IgKHZhciBpbmRleCA9IDAsIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDsgaW5kZXgg
PCBsZW5ndGg7ICsraW5kZXgpIHsKLSAgICAgICAgICAgICAgICB2YXIgdmFsdWUgPSBhcnJheVtp
bmRleF07Ci0gICAgICAgICAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KHZhbHVlcywgaW5kZXgsIHVu
ZGVmaW5lZCk7Ci0KLSAgICAgICAgICAgICAgICB2YXIgbmV4dFByb21pc2VDYXBhYmlsaXR5ID0g
QG5ld1Byb21pc2VEZWZlcnJlZCgpOwotICAgICAgICAgICAgICAgIG5leHRQcm9taXNlQ2FwYWJp
bGl0eS5AcmVzb2x2ZS5AY2FsbCh1bmRlZmluZWQsIHZhbHVlKTsKLSAgICAgICAgICAgICAgICB2
YXIgbmV4dFByb21pc2UgPSBuZXh0UHJvbWlzZUNhcGFiaWxpdHkuQHByb21pc2U7Ci0KLSAgICAg
ICAgICAgICAgICB2YXIgcmVzb2x2ZUVsZW1lbnQgPSBuZXdSZXNvbHZlRWxlbWVudChpbmRleCk7
Ci0gICAgICAgICAgICAgICAgKytyZW1haW5pbmdFbGVtZW50c0NvdW50OwotICAgICAgICAgICAg
ICAgIG5leHRQcm9taXNlLnRoZW4ocmVzb2x2ZUVsZW1lbnQsIHByb21pc2VDYXBhYmlsaXR5LkBy
ZWplY3QpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfSBjYXRjaCAoZXJyb3IpIHsK
LSAgICAgICAgcHJvbWlzZUNhcGFiaWxpdHkuQHJlamVjdC5AY2FsbCh1bmRlZmluZWQsIGVycm9y
KTsKLSAgICB9Ci0KLSAgICByZXR1cm4gcHJvbWlzZUNhcGFiaWxpdHkuQHByb21pc2U7Ci19CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVy
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApp
bmRleCAzNDQ3YjM5OGZkMDYxODA1OTA5ZTZmMDIyZTNkNjY1MjNiYWM0Njk4Li4xNmE1MjMwMGI5
YWU5MjQ5NjVlMmRhMjhkYThiYmU3MjIwZjIzMjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKQEAgLTI4Miw2ICsyODIsNyBAQAog
ICAgIG1hY3JvKEFycmF5KSBcCiAgICAgbWFjcm8oU3RyaW5nKSBcCiAgICAgbWFjcm8oUHJvbWlz
ZSkgXAorICAgIG1hY3JvKEludGVybmFsUHJvbWlzZSkgXAogICAgIG1hY3JvKGFicykgXAogICAg
IG1hY3JvKGZsb29yKSBcCiAgICAgbWFjcm8oaXNGaW5pdGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBlMGMzZmFkZmM0ZjNi
NTJkZDZiYTcxYjc4ODZkOGVjNjA4ZDQ0MTdlLi5lMjg1ZjY2ZGYzNDI1NzQ2ODdlOGJhZmU5NjU1
ZWEwOTExNGQ4Njg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwCkBAIC03Niw2ICs3Niw5IEBACiAjaW5jbHVkZSAiSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQ
cm90b3R5cGVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIK
KyNpbmNsdWRlICJKU0ludGVybmFsUHJvbWlzZS5oIgorI2luY2x1ZGUgIkpTSW50ZXJuYWxQcm9t
aXNlQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJKU0ludGVybmFsUHJvbWlzZVByb3RvdHlwZS5o
IgogI2luY2x1ZGUgIkpTSm9iLmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIK
ICNpbmNsdWRlICJKU0xvY2suaCIKQEAgLTI3Miw3ICsyNzUsNyBAQCB2b2lkIEpTR2xvYmFsT2Jq
ZWN0Ojppbml0KFZNJiB2bSkKICAgICBtX2FwcGx5RnVuY3Rpb24uc2V0KHZtLCB0aGlzLCBhcHBs
eUZ1bmN0aW9uKTsKICAgICBtX2FycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbi5zZXQodm0sIHRoaXMs
IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgdm0ucHJvcGVydHlOYW1lcy0+dmFsdWVz
LnN0cmluZygpLCBhcnJheVByb3RvRnVuY1ZhbHVlcykpOwogICAgIG1faW5pdGlhbGl6ZVByb21p
c2VGdW5jdGlvbi5zZXQodm0sIHRoaXMsIEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlv
bih2bSwgb3BlcmF0aW9uc1Byb21pc2VJbml0aWFsaXplUHJvbWlzZUNvZGVHZW5lcmF0b3Iodm0p
LCB0aGlzKSk7Ci0gICAgbV9uZXdQcm9taXNlRGVmZXJyZWRGdW5jdGlvbi5zZXQodm0sIHRoaXMs
IEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2bSwgb3BlcmF0aW9uc1Byb21pc2VO
ZXdQcm9taXNlRGVmZXJyZWRDb2RlR2VuZXJhdG9yKHZtKSwgdGhpcykpOworICAgIG1fbmV3UHJv
bWlzZUNhcGFiaWxpdHlGdW5jdGlvbi5zZXQodm0sIHRoaXMsIEpTRnVuY3Rpb246OmNyZWF0ZUJ1
aWx0aW5GdW5jdGlvbih2bSwgb3BlcmF0aW9uc1Byb21pc2VOZXdQcm9taXNlQ2FwYWJpbGl0eUNv
ZGVHZW5lcmF0b3Iodm0pLCB0aGlzKSk7CiAgICAgbV9udWxsR2V0dGVyRnVuY3Rpb24uc2V0KHZt
LCB0aGlzLCBOdWxsR2V0dGVyRnVuY3Rpb246OmNyZWF0ZSh2bSwgTnVsbEdldHRlckZ1bmN0aW9u
OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpKSk7
CiAgICAgbV9udWxsU2V0dGVyRnVuY3Rpb24uc2V0KHZtLCB0aGlzLCBOdWxsU2V0dGVyRnVuY3Rp
b246OmNyZWF0ZSh2bSwgTnVsbFNldHRlckZ1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRo
aXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpKSk7CiAgICAgbV9vYmplY3RQcm90b3R5cGUu
c2V0KHZtLCB0aGlzLCBPYmplY3RQcm90b3R5cGU6OmNyZWF0ZSh2bSwgdGhpcywgT2JqZWN0UHJv
dG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIGpzTnVsbCgpKSkpOwpAQCAtMzg3LDYg
KzM5MCw4IEBAIG1fICMjIGxvd2VyTmFtZSAjIyBQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jCiAjdW5kZWYgQ1JFQVRFX0NPTlNUUlVD
VE9SX0ZPUl9TSU1QTEVfVFlQRQogICAgIAogICAgIG1fZXJyb3JDb25zdHJ1Y3Rvci5zZXQodm0s
IHRoaXMsIGVycm9yQ29uc3RydWN0b3IpOworICAgIG1fcHJvbWlzZUNvbnN0cnVjdG9yLnNldCh2
bSwgdGhpcywgcHJvbWlzZUNvbnN0cnVjdG9yKTsKKyAgICBtX2ludGVybmFsUHJvbWlzZUNvbnN0
cnVjdG9yLnNldCh2bSwgdGhpcywgaW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IpOwogICAgIAog
ICAgIFN0cnVjdHVyZSogbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUgPSBOYXRpdmVFcnJv
clByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Vycm9yUHJvdG90eXBlLmdl
dCgpKTsKICAgICBTdHJ1Y3R1cmUqIG5hdGl2ZUVycm9yU3RydWN0dXJlID0gTmF0aXZlRXJyb3JD
b25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBl
LmdldCgpKTsKQEAgLTQ4OCw2ICs0OTMsNyBAQCBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgdm0ucHJvcGVydHlOYW1lcy0+IGpzTmFtZSwgbG93ZXJOYW1lICMjIENvbnN0cnVjdAogICAg
ICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YXJyYXlJdGVyYXRpb25L
aW5kS2V5VmFsdWVQcml2YXRlTmFtZSwganNOdW1iZXIoQXJyYXlJdGVyYXRlS2V5VmFsdWUpLCBE
b250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5
SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5zeW1ib2xJdGVyYXRvclByaXZh
dGVOYW1lKCksIFN5bWJvbDo6Y3JlYXRlKHZtLCBzdGF0aWNfY2FzdDxTeW1ib2xJbXBsJj4oKnZt
LnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLmltcGwoKSkpLCBEb250RW51bSB8IERvbnRE
ZWxldGUgfCBSZWFkT25seSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0
eU5hbWVzLT5Qcm9taXNlUHJpdmF0ZU5hbWUsIHByb21pc2VDb25zdHJ1Y3RvciwgRG9udEVudW0g
fCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0u
cHJvcGVydHlOYW1lcy0+SW50ZXJuYWxQcm9taXNlUHJpdmF0ZU5hbWUsIGludGVybmFsUHJvbWlz
ZUNvbnN0cnVjdG9yLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCiAgICAgICAg
IEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5wcm9taXNlUGVuZGluZ1ByaXZh
dGVOYW1lLCBqc051bWJlcihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNQcm9taXNlOjpTdGF0dXM6
OlBlbmRpbmcpKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBH
bG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucHJvbWlz
ZUZ1bGZpbGxlZFByaXZhdGVOYW1lKCksIGpzTnVtYmVyKHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U1Byb21pc2U6OlN0YXR1czo6RnVsZmlsbGVkKSksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJl
YWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1
aWx0aW5OYW1lcygpLnByb21pc2VSZWplY3RlZFByaXZhdGVOYW1lKCksIGpzTnVtYmVyKHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU1Byb21pc2U6OlN0YXR1czo6UmVqZWN0ZWQpKSwgRG9udEVudW0g
fCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLApAQCAtNDk2LDE0ICs1MDIsMTMgQEAgcHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPiBqc05hbWUsIGxvd2VyTmFt
ZSAjIyBDb25zdHJ1Y3QKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLmlzT2JqZWN0UHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3Jl
YXRlQnVpbHRpbkZ1bmN0aW9uKHZtLCBnbG9iYWxPYmplY3RJc09iamVjdENvZGVHZW5lcmF0b3Io
dm0pLCB0aGlzKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBH
bG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaXNQcm9t
aXNlUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHZtLCBv
cGVyYXRpb25zUHJvbWlzZUlzUHJvbWlzZUNvZGVHZW5lcmF0b3Iodm0pLCB0aGlzKSwgRG9udEVu
dW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8o
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkubmV3UHJvbWlzZVJlYWN0aW9uUHJpdmF0
ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHZtLCBvcGVyYXRpb25z
UHJvbWlzZU5ld1Byb21pc2VSZWFjdGlvbkNvZGVHZW5lcmF0b3Iodm0pLCB0aGlzKSwgRG9udEVu
dW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8o
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkubmV3UHJvbWlzZUNhcGFiaWxpdHlQcml2
YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24odm0sIG9wZXJhdGlv
bnNQcm9taXNlTmV3UHJvbWlzZUNhcGFiaWxpdHlDb2RlR2VuZXJhdG9yKHZtKSwgdGhpcyksIERv
bnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJ
bmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLm5ld1Byb21pc2VDYXBhYmlsaXR5
UHJpdmF0ZU5hbWUoKSwgbV9uZXdQcm9taXNlQ2FwYWJpbGl0eUZ1bmN0aW9uLmdldCgpLCBEb250
RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5m
byh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS50cmlnZ2VyUHJvbWlzZVJlYWN0aW9u
c1ByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2bSwgb3Bl
cmF0aW9uc1Byb21pc2VUcmlnZ2VyUHJvbWlzZVJlYWN0aW9uc0NvZGVHZW5lcmF0b3Iodm0pLCB0
aGlzKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQ
cm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucmVqZWN0UHJvbWlz
ZVByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2bSwgb3Bl
cmF0aW9uc1Byb21pc2VSZWplY3RQcm9taXNlQ29kZUdlbmVyYXRvcih2bSksIHRoaXMpLCBEb250
RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5m
byh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5mdWxmaWxsUHJvbWlzZVByaXZhdGVO
YW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2bSwgb3BlcmF0aW9uc1By
b21pc2VGdWxmaWxsUHJvbWlzZUNvZGVHZW5lcmF0b3Iodm0pLCB0aGlzKSwgRG9udEVudW0gfCBE
b250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJv
cGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuY3JlYXRlUmVzb2x2aW5nRnVuY3Rpb25zUHJpdmF0
ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHZtLCBvcGVyYXRpb25z
UHJvbWlzZUNyZWF0ZVJlc29sdmluZ0Z1bmN0aW9uc0NvZGVHZW5lcmF0b3Iodm0pLCB0aGlzKSwg
RG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0
eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucHJvbWlzZVJlYWN0aW9uSm9i
UHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHZtLCBvcGVy
YXRpb25zUHJvbWlzZVByb21pc2VSZWFjdGlvbkpvYkNvZGVHZW5lcmF0b3Iodm0pLCB0aGlzKSwg
RG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0
eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucHJvbWlzZVJlc29sdmVUaGVu
YWJsZUpvYlByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2
bSwgb3BlcmF0aW9uc1Byb21pc2VQcm9taXNlUmVzb2x2ZVRoZW5hYmxlSm9iQ29kZUdlbmVyYXRv
cih2bSksIHRoaXMpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCi0gICAgICAg
IEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5uZXdQ
cm9taXNlRGVmZXJyZWRQcml2YXRlTmFtZSgpLCBtX25ld1Byb21pc2VEZWZlcnJlZEZ1bmN0aW9u
LmdldCgpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCiAgICAgICAgIEdsb2Jh
bFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25Qcml2YXRlTmFtZSgpLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmpl
Y3Q6OmNyZWF0ZSh2bSwgdGhpcywgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0OjpjcmVh
dGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSksIERvbnRFbnVt
IHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKICAgICB9OwogICAgIGFkZFN0YXRpY0dsb2JhbHMo
c3RhdGljR2xvYmFscywgV1RGX0FSUkFZX0xFTkdUSChzdGF0aWNHbG9iYWxzKSk7CkBAIC03NDcs
NiArNzUyLDggQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNl
bGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0
LT5tX3R5cGVFcnJvckNvbnN0cnVjdG9yKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9VUklFcnJvckNvbnN0cnVjdG9yKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9vYmplY3RDb25zdHJ1Y3Rvcik7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3Qt
Pm1fcHJvbWlzZUNvbnN0cnVjdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bV9pbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvcik7CiAKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhp
c09iamVjdC0+bV9udWxsR2V0dGVyRnVuY3Rpb24pOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlz
T2JqZWN0LT5tX251bGxTZXR0ZXJGdW5jdGlvbik7CkBAIC03NTgsNyArNzY1LDcgQEAgdm9pZCBK
U0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2
aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2RlZmluZVByb3BlcnR5
RnVuY3Rpb24pOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2FycmF5UHJvdG9W
YWx1ZXNGdW5jdGlvbik7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1faW5pdGlh
bGl6ZVByb21pc2VGdW5jdGlvbik7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
bmV3UHJvbWlzZURlZmVycmVkRnVuY3Rpb24pOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2Jq
ZWN0LT5tX25ld1Byb21pc2VDYXBhYmlsaXR5RnVuY3Rpb24pOwogICAgIHZpc2l0b3IuYXBwZW5k
KCZ0aGlzT2JqZWN0LT5tX3Rocm93VHlwZUVycm9yR2V0dGVyU2V0dGVyKTsKIAogICAgIHZpc2l0
b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX29iamVjdFByb3RvdHlwZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCBhNmNkYzMyMmQxY2M5
MDIwZjkxNjhjN2RlNjg1ZWQxZjU2ZTE0NjM1Li42ZGIzMDNhZWMwNzA2NmZhMmExNWVkYWZhY2M1
MTgzOWNhYTBjNzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmgKQEAgLTExNiw2ICsxMTYsNyBAQCBzdHJ1Y3QgSGFzaFRhYmxlOwogCiAjZGVm
aW5lIEZPUl9FQUNIX1NJTVBMRV9CVUlMVElOX1RZUEUobWFjcm8pIFwKICAgICBGT1JfRUFDSF9T
SU1QTEVfQlVJTFRJTl9UWVBFX1dJVEhfQ09OU1RSVUNUT1IobWFjcm8pIFwKKyAgICBtYWNybyhK
U0ludGVybmFsUHJvbWlzZSwgaW50ZXJuYWxQcm9taXNlLCBpbnRlcm5hbFByb21pc2UsIEpTSW50
ZXJuYWxQcm9taXNlLCBJbnRlcm5hbFByb21pc2UpIFwKIAogI2RlZmluZSBERUNMQVJFX1NJTVBM
RV9CVUlMVElOX1RZUEUoY2FwaXRhbE5hbWUsIGxvd2VyTmFtZSwgcHJvcGVyTmFtZSwgaW5zdGFu
Y2VUeXBlLCBqc05hbWUpIFwKICAgICBjbGFzcyBKUyAjIyBjYXBpdGFsTmFtZTsgXApAQCAtMTg1
LDYgKzE4Niw4IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFy
aWFibGVPYmplY3QgewogICAgIFdyaXRlQmFycmllcjxOYXRpdmVFcnJvckNvbnN0cnVjdG9yPiBt
X3R5cGVFcnJvckNvbnN0cnVjdG9yOwogICAgIFdyaXRlQmFycmllcjxOYXRpdmVFcnJvckNvbnN0
cnVjdG9yPiBtX1VSSUVycm9yQ29uc3RydWN0b3I7CiAgICAgV3JpdGVCYXJyaWVyPE9iamVjdENv
bnN0cnVjdG9yPiBtX29iamVjdENvbnN0cnVjdG9yOworICAgIFdyaXRlQmFycmllcjxKU1Byb21p
c2VDb25zdHJ1Y3Rvcj4gbV9wcm9taXNlQ29uc3RydWN0b3I7CisgICAgV3JpdGVCYXJyaWVyPEpT
SW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3I+IG1faW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3I7
CiAKICAgICBXcml0ZUJhcnJpZXI8TnVsbEdldHRlckZ1bmN0aW9uPiBtX251bGxHZXR0ZXJGdW5j
dGlvbjsKICAgICBXcml0ZUJhcnJpZXI8TnVsbFNldHRlckZ1bmN0aW9uPiBtX251bGxTZXR0ZXJG
dW5jdGlvbjsKQEAgLTE5Nyw3ICsyMDAsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1Ymxp
YyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlv
bj4gbV9kZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uOwogICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9u
PiBtX2FycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbjsKICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlv
bj4gbV9pbml0aWFsaXplUHJvbWlzZUZ1bmN0aW9uOwotICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0
aW9uPiBtX25ld1Byb21pc2VEZWZlcnJlZEZ1bmN0aW9uOworICAgIFdyaXRlQmFycmllcjxKU0Z1
bmN0aW9uPiBtX25ld1Byb21pc2VDYXBhYmlsaXR5RnVuY3Rpb247CiAgICAgV3JpdGVCYXJyaWVy
PEdldHRlclNldHRlcj4gbV90aHJvd1R5cGVFcnJvckdldHRlclNldHRlcjsKIAogICAgIFdyaXRl
QmFycmllcjxPYmplY3RQcm90b3R5cGU+IG1fb2JqZWN0UHJvdG90eXBlOwpAQCAtMzc5LDYgKzM4
Miw4IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVP
YmplY3QgewogCiAgICAgRXJyb3JDb25zdHJ1Y3RvciogZXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0
IHsgcmV0dXJuIG1fZXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQogICAgIE9iamVjdENvbnN0cnVj
dG9yKiBvYmplY3RDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0Q29uc3RydWN0
b3IuZ2V0KCk7IH0KKyAgICBKU1Byb21pc2VDb25zdHJ1Y3RvciogcHJvbWlzZUNvbnN0cnVjdG9y
KCkgY29uc3QgeyByZXR1cm4gbV9wcm9taXNlQ29uc3RydWN0b3IuZ2V0KCk7IH0KKyAgICBKU0lu
dGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yKiBpbnRlcm5hbFByb21pc2VDb25zdHJ1Y3RvcigpIGNv
bnN0IHsgcmV0dXJuIG1faW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuZ2V0KCk7IH0KICAgICBO
YXRpdmVFcnJvckNvbnN0cnVjdG9yKiBldmFsRXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0
dXJuIG1fZXZhbEVycm9yQ29uc3RydWN0b3IuZ2V0KCk7IH0KICAgICBOYXRpdmVFcnJvckNvbnN0
cnVjdG9yKiByYW5nZUVycm9yQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3JhbmdlRXJy
b3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQogICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIHJlZmVy
ZW5jZUVycm9yQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3JlZmVyZW5jZUVycm9yQ29u
c3RydWN0b3IuZ2V0KCk7IH0KQEAgLTM5Nyw3ICs0MDIsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVj
dCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBKU0Z1bmN0aW9uKiBk
ZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kZWZpbmVQcm9wZXJ0eUZ1
bmN0aW9uLmdldCgpOyB9CiAgICAgSlNGdW5jdGlvbiogYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9hcnJheVByb3RvVmFsdWVzRnVuY3Rpb24uZ2V0KCk7IH0KICAg
ICBKU0Z1bmN0aW9uKiBpbml0aWFsaXplUHJvbWlzZUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9pbml0aWFsaXplUHJvbWlzZUZ1bmN0aW9uLmdldCgpOyB9Ci0gICAgSlNGdW5jdGlvbiogbmV3
UHJvbWlzZURlZmVycmVkRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX25ld1Byb21pc2VEZWZl
cnJlZEZ1bmN0aW9uLmdldCgpOyB9CisgICAgSlNGdW5jdGlvbiogbmV3UHJvbWlzZUNhcGFiaWxp
dHlGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbmV3UHJvbWlzZUNhcGFiaWxpdHlGdW5jdGlv
bi5nZXQoKTsgfQogICAgIEdldHRlclNldHRlciogdGhyb3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXIo
Vk0mIHZtKQogICAgIHsKICAgICAgICAgaWYgKCFtX3Rocm93VHlwZUVycm9yR2V0dGVyU2V0dGVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbnRlcm5hbFBy
b21pc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbnRlcm5hbFByb21p
c2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjQyMjRkMmY0ZWQ4NjMyNGEwZGQyZWRjOGZkNWQwYTA2Y2ViMDcy
YzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0lu
dGVybmFsUHJvbWlzZS5jcHAKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0ludGVybmFsUHJvbWlzZS5oIgorCisjaW5jbHVkZSAi
SlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVk
ZSAiU3RydWN0dXJlSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJ
bmZvIEpTSW50ZXJuYWxQcm9taXNlOjpzX2luZm8gPSB7ICJJbnRlcm5hbFByb21pc2UiLCAmQmFz
ZTo6c19pbmZvLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTSW50ZXJuYWxQcm9taXNl
KSB9OworCitKU0ludGVybmFsUHJvbWlzZSogSlNJbnRlcm5hbFByb21pc2U6OmNyZWF0ZShWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIEpTSW50ZXJuYWxQcm9taXNlKiBwcm9t
aXNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNJbnRlcm5hbFByb21pc2U+KHZtLmhl
YXApKSBKU0ludGVybmFsUHJvbWlzZSh2bSwgc3RydWN0dXJlKTsKKyAgICBwcm9taXNlLT5maW5p
c2hDcmVhdGlvbih2bSk7CisgICAgcmV0dXJuIHByb21pc2U7Cit9CisKK1N0cnVjdHVyZSogSlNJ
bnRlcm5hbFByb21pc2U6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUs
IFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworSlNJbnRlcm5hbFByb21pc2U6OkpTSW50
ZXJuYWxQcm9taXNlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZt
LCBzdHJ1Y3R1cmUpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbnRlcm5hbFByb21pc2UuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW50ZXJuYWxQcm9taXNlLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTkz
NmFlZWU0ZjAwNzIyMjUwNzc0MTRkYWY0YTQ1YzY2MDA5MjBkNgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW50ZXJuYWxQcm9taXNlLmgKQEAgLTAs
MCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSlNJbnRlcm5hbFByb21pc2VfaAorI2Rl
ZmluZSBKU0ludGVybmFsUHJvbWlzZV9oCisKKyNpbmNsdWRlICJKU1Byb21pc2UuaCIKKworbmFt
ZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpTSW50ZXJuYWxQcm9taXNlIDogcHVibGljIEpTUHJvbWlz
ZSB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU1Byb21pc2UgQmFzZTsKKworICAgIHN0YXRpYyBK
U0ludGVybmFsUHJvbWlzZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIFN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsK
KworICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CisKK3ByaXZhdGU6CisgICAgSlNJbnRlcm5hbFBy
b21pc2UoVk0mLCBTdHJ1Y3R1cmUqKTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5k
aWYgLy8gSlNJbnRlcm5hbFByb21pc2VfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43YWJjMjQzNzQ2YzZkMTU2YWM3YjY0ZTI5YzAwZmU5Nzg0YmZlNGZiCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbnRlcm5hbFByb21p
c2VDb25zdHJ1Y3Rvci5jcHAKQEAgLTAsMCArMSw5NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmgiCisK
KyNpbmNsdWRlICJKU0NCdWlsdGlucy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgi
CisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTSW50ZXJuYWxQcm9taXNl
LmgiCisjaW5jbHVkZSAiSlNJbnRlcm5hbFByb21pc2VQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJT
dHJ1Y3R1cmVJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitTVEFUSUNfQVNTRVJUX0lT
X1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvcik7CisK
K30KKworI2luY2x1ZGUgIkpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IubHV0LmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1
Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCAmaW50ZXJuYWxQcm9t
aXNlQ29uc3RydWN0b3JUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0ludGVybmFsUHJvbWlz
ZUNvbnN0cnVjdG9yKSB9OworCisvKiBTb3VyY2UgZm9yIEpTSW50ZXJuYWxQcm9taXNlQ29uc3Ry
dWN0b3IubHV0LmgKK0BiZWdpbiBpbnRlcm5hbFByb21pc2VDb25zdHJ1Y3RvclRhYmxlCisgIGlu
dGVybmFsQWxsICBKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yRnVuY0ludGVybmFsQWxsIERv
bnRFbnVtfEZ1bmN0aW9uIDEKK0BlbmQKKyovCisKK0pTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0
b3IqIEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBKU0ludGVybmFsUHJvbWlzZVByb3RvdHlwZSogcHJvbWlzZVByb3RvdHlw
ZSkKK3sKKyAgICBKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3I+KHZt
LmhlYXApKSBKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAg
IGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgcHJvbWlzZVByb3RvdHlwZSk7CisgICAg
cmV0dXJuIGNvbnN0cnVjdG9yOworfQorCitTdHJ1Y3R1cmUqIEpTSW50ZXJuYWxQcm9taXNlQ29u
c3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVj
dHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvcjo6
SlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
KQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQoreworfQorCitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RQcm9taXNlKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+Y2FsbGVlKCktPmdsb2JhbE9i
amVjdCgpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgSlNJbnRlcm5hbFByb21pc2Uq
IHByb21pc2UgPSBKU0ludGVybmFsUHJvbWlzZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmlu
dGVybmFsUHJvbWlzZVN0cnVjdHVyZSgpKTsKKyAgICBwcm9taXNlLT5pbml0aWFsaXplKGV4ZWMs
IGdsb2JhbE9iamVjdCwgZXhlYy0+YXJndW1lbnQoMCkpOworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUocHJvbWlzZSk7Cit9CisKK0NvbnN0cnVjdFR5cGUgSlNJbnRlcm5hbFByb21pc2VDb25z
dHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1
Y3REYXRhKQoreworICAgIGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0
UHJvbWlzZTsKKyAgICByZXR1cm4gQ29uc3RydWN0VHlwZUhvc3Q7Cit9CisKK0NhbGxUeXBlIEpT
SW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3I6OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRh
JiBjYWxsRGF0YSkKK3sKKyAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3RQ
cm9taXNlOworICAgIHJldHVybiBDYWxsVHlwZUhvc3Q7Cit9CisKK2Jvb2wgSlNJbnRlcm5hbFBy
b21pc2VDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBz
bG90KQoreworICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8QmFzZT4oZXhlYywgaW50
ZXJuYWxQcm9taXNlQ29uc3RydWN0b3JUYWJsZSwganNDYXN0PEpTSW50ZXJuYWxQcm9taXNlQ29u
c3RydWN0b3IqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworfQorCit9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW50
ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41OTkzNDM3OTY4ODM4
MDkzN2VhMDg0ZWE0YzZkMGRlMGQ5YWQzYWY1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5oCkBAIC0w
LDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEpTSW50ZXJuYWxQcm9taXNlQ29uc3Ry
dWN0b3JfaAorI2RlZmluZSBKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yX2gKKworI2luY2x1
ZGUgIkpTUHJvbWlzZUNvbnN0cnVjdG9yLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBK
U0ludGVybmFsUHJvbWlzZTsKK2NsYXNzIEpTSW50ZXJuYWxQcm9taXNlUHJvdG90eXBlOworCitj
bGFzcyBKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yIDogcHVibGljIEpTUHJvbWlzZUNvbnN0
cnVjdG9yIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTUHJvbWlzZUNvbnN0cnVjdG9yIEJhc2U7
CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0
dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7CisKKyAgICBzdGF0aWMgSlNJ
bnRlcm5hbFByb21pc2VDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgSlNJbnRl
cm5hbFByb21pc2VQcm90b3R5cGUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZP
OworCitwcml2YXRlOgorICAgIEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IoVk0mLCBTdHJ1
Y3R1cmUqKTsKKyAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2Vs
bCosIENvbnN0cnVjdERhdGEmKTsKKyAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlND
ZWxsKiwgQ2FsbERhdGEmKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVj
dG9yX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW50ZXJu
YWxQcm9taXNlRGVmZXJyZWQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJ
bnRlcm5hbFByb21pc2VEZWZlcnJlZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWY4OGYxOTU5MWZlNGU2Zjcy
ODJhZWNjMTRhOGI4ODNkMTIwNTI3NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQuY3BwCkBAIC0wLDAgKzEs
NjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNJbnRl
cm5hbFByb21pc2VEZWZlcnJlZC5oIgorCisjaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCisjaW5j
bHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJFeGNlcHRpb24uaCIKKyNpbmNsdWRlICJKU0NKU1Zh
bHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJKU0lu
dGVybmFsUHJvbWlzZS5oIgorI2luY2x1ZGUgIkpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3Iu
aCIKKyNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJ
bmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSlNJbnRlcm5h
bFByb21pc2VEZWZlcnJlZDo6c19pbmZvID0geyAiSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZCIs
IG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNJbnRlcm5hbFByb21pc2VE
ZWZlcnJlZCkgfTsKKworSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZCogSlNJbnRlcm5hbFByb21p
c2VEZWZlcnJlZDo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworCisgICAgSlNWYWx1ZSBkZWZl
cnJlZCA9IG5ld1Byb21pc2VDYXBhYmlsaXR5KGV4ZWMsIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2Jq
ZWN0LT5pbnRlcm5hbFByb21pc2VDb25zdHJ1Y3RvcigpKTsKKworICAgIEpTVmFsdWUgcHJvbWlz
ZSA9IGRlZmVycmVkLmdldChleGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm9taXNlUHJpdmF0ZU5h
bWUpOworICAgIEFTU0VSVChwcm9taXNlLmluaGVyaXRzKEpTSW50ZXJuYWxQcm9taXNlOjppbmZv
KCkpKTsKKyAgICBKU1ZhbHVlIHJlc29sdmUgPSBkZWZlcnJlZC5nZXQoZXhlYywgdm0ucHJvcGVy
dHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucmVzb2x2ZVByaXZhdGVOYW1lKCkpOworICAgIEpTVmFs
dWUgcmVqZWN0ID0gZGVmZXJyZWQuZ2V0KGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLnJlamVjdFByaXZhdGVOYW1lKCkpOworCisgICAgSlNJbnRlcm5hbFByb21pc2VEZWZl
cnJlZCogcmVzdWx0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNJbnRlcm5hbFByb21p
c2VEZWZlcnJlZD4odm0uaGVhcCkpIEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQodm0pOworICAg
IHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0sIGpzQ2FzdDxKU09iamVjdCo+KHByb21pc2UpLCBy
ZXNvbHZlLCByZWplY3QpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0pTSW50ZXJuYWxQcm9t
aXNlRGVmZXJyZWQ6OkpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQoVk0mIHZtKQorICAgIDogQmFz
ZSh2bSwgdm0uaW50ZXJuYWxQcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmUuZ2V0KCkpCit7Cit9CisK
K0pTSW50ZXJuYWxQcm9taXNlKiBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkOjpwcm9taXNlKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4ganNDYXN0PEpTSW50ZXJuYWxQcm9taXNlKj4oQmFzZTo6cHJv
bWlzZSgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0ludGVybmFsUHJvbWlzZURlZmVycmVkLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ludGVybmFsUHJvbWlzZURlZmVycmVkLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZGVmMmI1NWQ5ZjAzZTM1MTkzNjg4MzQ4ZWY2MmU3YzIxNDBhYTg0YwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW50ZXJuYWxQcm9taXNl
RGVmZXJyZWQuaApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBKU0ludGVy
bmFsUHJvbWlzZURlZmVycmVkX2gKKyNkZWZpbmUgSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZF9o
CisKKyNpbmNsdWRlICJKU1Byb21pc2VEZWZlcnJlZC5oIgorCituYW1lc3BhY2UgSlNDIHsKKwor
Y2xhc3MgSlNJbnRlcm5hbFByb21pc2U7CisKK2NsYXNzIEpTSW50ZXJuYWxQcm9taXNlRGVmZXJy
ZWQgZmluYWwgOiBwdWJsaWMgSlNQcm9taXNlRGVmZXJyZWQgeworcHVibGljOgorICAgIHR5cGVk
ZWYgSlNQcm9taXNlRGVmZXJyZWQgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3Ry
dWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7
CisKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNJbnRlcm5hbFByb21pc2VEZWZlcnJl
ZCogY3JlYXRlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0Kik7CisKKyAgICBzdGF0aWMgU3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKENlbGxUeXBlLCBT
dHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCisgICAgREVDTEFSRV9FWFBPUlRfSU5G
TzsKKworICAgIEpTSW50ZXJuYWxQcm9taXNlKiBwcm9taXNlKCkgY29uc3Q7CisKK3ByaXZhdGU6
CisgICAgSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZChWTSYpOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCisKKyNlbmRpZiAvLyBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW50ZXJuYWxQcm9taXNlUHJvdG90
eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW50ZXJuYWxQcm9taXNl
UHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYzIzOGFiYTJkYWExMzFmYzkxYTkwODQ5YzA3NDY5
ZWJiZGQ4NjQ4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNJbnRlcm5hbFByb21pc2VQcm90b3R5cGUuY3BwCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNJbnRlcm5hbFByb21pc2VQ
cm90b3R5cGUuaCIKKworI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSlNDQnVpbHRpbnMu
aCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGlu
ZXMuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkpTSW50ZXJuYWxQ
cm9taXNlLmgiCisjaW5jbHVkZSAiTWljcm90YXNrLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlSW5s
aW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlf
REVTVFJVQ1RJQkxFKEpTSW50ZXJuYWxQcm9taXNlUHJvdG90eXBlKTsKKworfQorCisjaW5jbHVk
ZSAiSlNJbnRlcm5hbFByb21pc2VQcm90b3R5cGUubHV0LmgiCisKK25hbWVzcGFjZSBKU0Mgewor
Citjb25zdCBDbGFzc0luZm8gSlNJbnRlcm5hbFByb21pc2VQcm90b3R5cGU6OnNfaW5mbyA9IHsg
IkludGVybmFsUHJvbWlzZVByb3RvdHlwZSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIENSRUFU
RV9NRVRIT0RfVEFCTEUoSlNJbnRlcm5hbFByb21pc2VQcm90b3R5cGUpIH07CisKK0pTSW50ZXJu
YWxQcm9taXNlUHJvdG90eXBlKiBKU0ludGVybmFsUHJvbWlzZVByb3RvdHlwZTo6Y3JlYXRlKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBKU0lu
dGVybmFsUHJvbWlzZVByb3RvdHlwZSogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8SlNJbnRlcm5hbFByb21pc2VQcm90b3R5cGU+KHZtLmhlYXApKSBKU0ludGVybmFsUHJvbWlz
ZVByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZt
LCBzdHJ1Y3R1cmUpOworICAgIHJldHVybiBvYmplY3Q7Cit9CisKK1N0cnVjdHVyZSogSlNJbnRl
cm5hbFByb21pc2VQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1
Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVj
dFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworSlNJbnRlcm5hbFByb21pc2VQ
cm90b3R5cGU6OkpTSW50ZXJuYWxQcm9taXNlUHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK30gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbnRl
cm5hbFByb21pc2VQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
SW50ZXJuYWxQcm9taXNlUHJvdG90eXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWQzNmU5ZTg1NTgzM2Q4NDRi
MzkwYzljYzNmOWRjYmM4Yzk5MmU1ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTSW50ZXJuYWxQcm9taXNlUHJvdG90eXBlLmgKQEAgLTAsMCArMSw0
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSlNJbnRlcm5hbFByb21pc2VQcm90b3R5cGVfaAor
I2RlZmluZSBKU0ludGVybmFsUHJvbWlzZVByb3RvdHlwZV9oCisKKyNpbmNsdWRlICJKU1Byb21p
c2VQcm90b3R5cGUuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpTSW50ZXJuYWxQcm9t
aXNlUHJvdG90eXBlIDogcHVibGljIEpTUHJvbWlzZVByb3RvdHlwZSB7CitwdWJsaWM6CisgICAg
dHlwZWRlZiBKU1Byb21pc2VQcm90b3R5cGUgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKworICAgIHN0YXRpYyBK
U0ludGVybmFsUHJvbWlzZVByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBK
U0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCitwcml2YXRl
OgorICAgIEpTSW50ZXJuYWxQcm9taXNlUHJvdG90eXBlKFZNJiwgU3RydWN0dXJlKik7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEpTSW50ZXJuYWxQcm9taXNlUHJvdG90
eXBlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlz
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2UuY3BwCmluZGV4
IDI1MzE5NzZiNTVmMjQwNDM3M2ZmODczMjcxZGNkNzAyMmY3NGI4ZWEuLjIyZjQwZjAyOTk3ODc5
YmU4MGRiNDZjOWI0YjE1OGYxNTczMDFmNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTUHJvbWlzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNQcm9taXNlLmNwcApAQCAtMzgsOSArMzgsOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
Y29uc3QgQ2xhc3NJbmZvIEpTUHJvbWlzZTo6c19pbmZvID0geyAiUHJvbWlzZSIsICZCYXNlOjpz
X2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNQcm9taXNlKSB9OwogCi1KU1Byb21pc2Uq
IEpTUHJvbWlzZTo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
K0pTUHJvbWlzZSogSlNQcm9taXNlOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKIHsKLSAgICBKU1Byb21pc2UqIHByb21pc2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxKU1Byb21pc2U+KHZtLmhlYXApKSBKU1Byb21pc2Uodm0sIGdsb2JhbE9iamVjdC0+cHJvbWlz
ZVN0cnVjdHVyZSgpKTsKKyAgICBKU1Byb21pc2UqIHByb21pc2UgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxKU1Byb21pc2U+KHZtLmhlYXApKSBKU1Byb21pc2Uodm0sIHN0cnVjdHVyZSk7
CiAgICAgcHJvbWlzZS0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJldHVybiBwcm9taXNlOwog
fQpAQCAtNTEsNyArNTEsNyBAQCBTdHJ1Y3R1cmUqIEpTUHJvbWlzZTo6Y3JlYXRlU3RydWN0dXJl
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogfQogCiBKU1Byb21p
c2U6OkpTUHJvbWlzZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQotICAgIDogSlNOb25G
aW5hbE9iamVjdCh2bSwgc3RydWN0dXJlKQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQogewog
fQogCkBAIC02NCw2ICs2NCwxOCBAQCB2b2lkIEpTUHJvbWlzZTo6ZmluaXNoQ3JlYXRpb24oVk0m
IHZtKQogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvbWlzZVJlc3VsdFBy
aXZhdGVOYW1lLCBqc1VuZGVmaW5lZCgpKTsKIH0KIAordm9pZCBKU1Byb21pc2U6OmluaXRpYWxp
emUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IGV4ZWN1dG9yKQoreworICAgIEpTRnVuY3Rpb24qIGluaXRpYWxpemVQcm9taXNlID0gZ2xvYmFs
T2JqZWN0LT5pbml0aWFsaXplUHJvbWlzZUZ1bmN0aW9uKCk7CisgICAgQ2FsbERhdGEgY2FsbERh
dGE7CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBKU0M6OmdldENhbGxEYXRhKGluaXRpYWxpemVQ
cm9taXNlLCBjYWxsRGF0YSk7CisgICAgQVNTRVJUKGNhbGxUeXBlICE9IENhbGxUeXBlTm9uZSk7
CisKKyAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CisgICAgYXJndW1lbnRzLmFw
cGVuZChleGVjdXRvcik7CisgICAgY2FsbChleGVjLCBpbml0aWFsaXplUHJvbWlzZSwgY2FsbFR5
cGUsIGNhbGxEYXRhLCB0aGlzLCBhcmd1bWVudHMpOworfQorCiBhdXRvIEpTUHJvbWlzZTo6c3Rh
dHVzKFZNJiB2bSkgY29uc3QgLT4gU3RhdHVzCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IGdldERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvbWlzZVN0YXRlUHJpdmF0ZU5hbWUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2UuaAppbmRleCA4OGU0YzA0M2U5OTZm
ZjViOGZiZmY5MDMzYTA3YzZiMjE4MzgyZjllLi45ZjYzYTMxZTMxZjdhMzI5YzU1ZDJhNDIyYzc3
NmJhMTE5MDZkNDEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1Byb21pc2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2Uu
aApAQCAtMzQsNyArMzQsNyBAQCBjbGFzcyBKU1Byb21pc2UgOiBwdWJsaWMgSlNOb25GaW5hbE9i
amVjdCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CiAKLSAg
ICBzdGF0aWMgSlNQcm9taXNlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCopOworICAgIHN0
YXRpYyBKU1Byb21pc2UqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSopOwogICAgIHN0YXRpYyBTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiAK
ICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwpAQCAtNDgsNyArNDgsMTEgQEAgY2xhc3MgSlNQcm9t
aXNlIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIFN0YXR1cyBzdGF0dXMoVk0mKSBj
b25zdDsKICAgICBKU1ZhbHVlIHJlc3VsdChWTSYpIGNvbnN0OwogCi1wcml2YXRlOgorICAgIC8v
IEluaXRpYWxpemUgdGhlIHByb21pc2Ugd2l0aCB0aGUgZXhlY3V0b3IuCisgICAgLy8gVGhpcyBt
YXkgcmFpc2VzIHRoZSBKUyBleGNlcHRpb24uCisgICAgdm9pZCBpbml0aWFsaXplKEV4ZWNTdGF0
ZSosIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBleGVjdXRvcik7CisKK3Byb3RlY3RlZDoKICAg
ICBKU1Byb21pc2UoVk0mLCBTdHJ1Y3R1cmUqKTsKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZN
Jik7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9t
aXNlQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9t
aXNlQ29uc3RydWN0b3IuY3BwCmluZGV4IDI0M2JjNTI3YzQ2ZmZkNWVkYWQzNjRkNTIwMGZmOGVm
OTQ2YzJkODUuLjUzNTFmNTBlYjU4ZWVhYzA4ZTFhNmY3MGQxMzRlZjQwMTM4NDRhOGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9y
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1
Y3Rvci5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVT
VFJVQ1RJQkxFKEpTUHJvbWlzZUNvbnN0cnVjdG9yKTsKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNv
bnN0IENsYXNzSW5mbyBKU1Byb21pc2VDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24i
LCAmSW50ZXJuYWxGdW5jdGlvbjo6c19pbmZvLCAmcHJvbWlzZUNvbnN0cnVjdG9yVGFibGUsIENS
RUFURV9NRVRIT0RfVEFCTEUoSlNQcm9taXNlQ29uc3RydWN0b3IpIH07Citjb25zdCBDbGFzc0lu
Zm8gSlNQcm9taXNlQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNf
aW5mbywgJnByb21pc2VDb25zdHJ1Y3RvclRhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTUHJv
bWlzZUNvbnN0cnVjdG9yKSB9OwogCiAvKiBTb3VyY2UgZm9yIEpTUHJvbWlzZUNvbnN0cnVjdG9y
Lmx1dC5oCiBAYmVnaW4gcHJvbWlzZUNvbnN0cnVjdG9yVGFibGUKQEAgLTczLDcgKzczLDcgQEAg
U3RydWN0dXJlKiBKU1Byb21pc2VDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KIH0KIAogSlNQcm9taXNlQ29uc3RydWN0b3I6OkpTUHJv
bWlzZUNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgOiBJbnRl
cm5hbEZ1bmN0aW9uKHZtLCBzdHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCiB7
CiB9CiAKQEAgLTgyLDI0ICs4MiwxNSBAQCB2b2lkIEpTUHJvbWlzZUNvbnN0cnVjdG9yOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIEpTUHJvbWlzZVByb3RvdHlwZSogcHJvbWlzZVBybwogICAgIEJh
c2U6OmZpbmlzaENyZWF0aW9uKHZtLCBBU0NJSUxpdGVyYWwoIlByb21pc2UiKSk7CiAgICAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwg
cHJvbWlzZVByb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwogICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgs
IGpzTnVtYmVyKDEpLCBSZWFkT25seSB8IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7Ci0gICAgcHV0
RGlyZWN0QnVpbHRpbkZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCgp
LCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5hbGxQcml2YXRlTmFtZSgpLCBwcm9t
aXNlQ29uc3RydWN0b3JQcml2YXRlQWxsQ29kZUdlbmVyYXRvcih2bSksIFJlYWRPbmx5IHwgRG9u
dEVudW0gfCBEb250RGVsZXRlKTsKIH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY29uc3RydWN0UHJvbWlzZShFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+Y2Fs
bGVlKCktPmdsb2JhbE9iamVjdCgpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAKLSAgICBK
U1Byb21pc2UqIHByb21pc2UgPSBKU1Byb21pc2U6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0KTsK
LQotICAgIEpTRnVuY3Rpb24qIGluaXRpYWxpemVQcm9taXNlID0gZ2xvYmFsT2JqZWN0LT5pbml0
aWFsaXplUHJvbWlzZUZ1bmN0aW9uKCk7Ci0gICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgQ2Fs
bFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShpbml0aWFsaXplUHJvbWlzZSwgY2FsbERhdGEp
OwotICAgIEFTU0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZU5vbmUpOwotCi0gICAgTWFya2VkQXJn
dW1lbnRCdWZmZXIgYXJndW1lbnRzOwotICAgIGFyZ3VtZW50cy5hcHBlbmQoZXhlYy0+YXJndW1l
bnQoMCkpOwotICAgIGNhbGwoZXhlYywgaW5pdGlhbGl6ZVByb21pc2UsIGNhbGxUeXBlLCBjYWxs
RGF0YSwgcHJvbWlzZSwgYXJndW1lbnRzKTsKKyAgICBKU1Byb21pc2UqIHByb21pc2UgPSBKU1By
b21pc2U6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5wcm9taXNlU3RydWN0dXJlKCkpOworICAg
IHByb21pc2UtPmluaXRpYWxpemUoZXhlYywgZ2xvYmFsT2JqZWN0LCBleGVjLT5hcmd1bWVudCgw
KSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHByb21pc2UpOwogfQpAQCAtMTE4LDcg
KzEwOSw3IEBAIENhbGxUeXBlIEpTUHJvbWlzZUNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YShKU0Nl
bGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCiAKIGJvb2wgSlNQcm9taXNlQ29uc3RydWN0b3I6Omdl
dE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKLSAgICByZXR1cm4g
Z2V0U3RhdGljRnVuY3Rpb25TbG90PEludGVybmFsRnVuY3Rpb24+KGV4ZWMsIHByb21pc2VDb25z
dHJ1Y3RvclRhYmxlLCBqc0Nhc3Q8SlNQcm9taXNlQ29uc3RydWN0b3IqPihvYmplY3QpLCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpOworICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8QmFzZT4o
ZXhlYywgcHJvbWlzZUNvbnN0cnVjdG9yVGFibGUsIGpzQ2FzdDxKU1Byb21pc2VDb25zdHJ1Y3Rv
cio+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29u
c3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0
cnVjdG9yLmgKaW5kZXggNTg4MWUxNjMwY2U4NTE0ZDEwZGJiMDZkN2YwNDRjMzFmZTFlZjcyMS4u
ZGFlNTJkM2E4Y2Y1MGJkMmQ2Mjk3MmYxNmI3MjU2N2JmZDBjMzVkNyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5oCkBAIC00
MywxNCArNDMsMTUgQEAgY2xhc3MgSlNQcm9taXNlQ29uc3RydWN0b3IgOiBwdWJsaWMgSW50ZXJu
YWxGdW5jdGlvbiB7CiAKICAgICBERUNMQVJFX0lORk87CiAKKyAgICBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCYpOworCiBwcm90ZWN0ZWQ6CisgICAgSlNQcm9taXNlQ29uc3RydWN0b3IoVk0mLCBT
dHJ1Y3R1cmUqKTsKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNQcm9taXNlUHJvdG90
eXBlKik7CiAKIHByaXZhdGU6Ci0gICAgSlNQcm9taXNlQ29uc3RydWN0b3IoVk0mLCBTdHJ1Y3R1
cmUqKTsKICAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCos
IENvbnN0cnVjdERhdGEmKTsKICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxs
KiwgQ2FsbERhdGEmKTsKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Byb21pc2VEZWZlcnJlZC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1Byb21pc2VEZWZlcnJlZC5jcHAKaW5kZXggNDk4ZmFhYTcyNmQ1YmMxNWI3ZTAwODYwNWM2Yzc1
MmQ1OTIwN2MzOS4uYmE3Njk3MzQ0MjBjZjNiM2NjOTRkY2U3YTJkNzk4Y2UzNTNlMjI2YSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlRGVmZXJyZWQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZURlZmVycmVk
LmNwcApAQCAtNDAsMTcgKzQwLDI0IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjb25zdCBDbGFzc0lu
Zm8gSlNQcm9taXNlRGVmZXJyZWQ6OnNfaW5mbyA9IHsgIkpTUHJvbWlzZURlZmVycmVkIiwgMCwg
MCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Byb21pc2VEZWZlcnJlZCkgfTsKIAotSlNQcm9taXNl
RGVmZXJyZWQqIEpTUHJvbWlzZURlZmVycmVkOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorSlNWYWx1ZSBuZXdQcm9taXNlQ2FwYWJpbGl0eShF
eGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTUHJvbWlzZUNv
bnN0cnVjdG9yKiBwcm9taXNlQ29uc3RydWN0b3IpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKLQotICAgIEpTRnVuY3Rpb24qIG5ld1Byb21pc2VEZWZlcnJlZEZ1bmN0aW9uID0gZ2xvYmFs
T2JqZWN0LT5uZXdQcm9taXNlRGVmZXJyZWRGdW5jdGlvbigpOworICAgIEpTRnVuY3Rpb24qIG5l
d1Byb21pc2VDYXBhYmlsaXR5RnVuY3Rpb24gPSBnbG9iYWxPYmplY3QtPm5ld1Byb21pc2VDYXBh
YmlsaXR5RnVuY3Rpb24oKTsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBj
YWxsVHlwZSA9IEpTQzo6Z2V0Q2FsbERhdGEobmV3UHJvbWlzZURlZmVycmVkRnVuY3Rpb24sIGNh
bGxEYXRhKTsKKyAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IEpTQzo6Z2V0Q2FsbERhdGEobmV3UHJv
bWlzZUNhcGFiaWxpdHlGdW5jdGlvbiwgY2FsbERhdGEpOwogICAgIEFTU0VSVChjYWxsVHlwZSAh
PSBDYWxsVHlwZU5vbmUpOwogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwot
ICAgIEpTVmFsdWUgZGVmZXJyZWQgPSBjYWxsKGV4ZWMsIG5ld1Byb21pc2VEZWZlcnJlZEZ1bmN0
aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIGpzVW5kZWZpbmVkKCksIGFyZ3VtZW50cyk7CisgICAg
YXJndW1lbnRzLmFwcGVuZChwcm9taXNlQ29uc3RydWN0b3IpOworICAgIHJldHVybiBjYWxsKGV4
ZWMsIG5ld1Byb21pc2VDYXBhYmlsaXR5RnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwganNV
bmRlZmluZWQoKSwgYXJndW1lbnRzKTsKK30KKworCitKU1Byb21pc2VEZWZlcnJlZCogSlNQcm9t
aXNlRGVmZXJyZWQ6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKworICAgIEpTVmFsdWUgZGVm
ZXJyZWQgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eShleGVjLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9i
amVjdC0+cHJvbWlzZUNvbnN0cnVjdG9yKCkpOwogCiAgICAgSlNWYWx1ZSBwcm9taXNlID0gZGVm
ZXJyZWQuZ2V0KGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPnByb21pc2VQcml2YXRlTmFtZSk7CiAg
ICAgQVNTRVJUKHByb21pc2UuaW5oZXJpdHMoSlNQcm9taXNlOjppbmZvKCkpKTsKQEAgLTY4LDcg
Kzc1LDEyIEBAIEpTUHJvbWlzZURlZmVycmVkKiBKU1Byb21pc2VEZWZlcnJlZDo6Y3JlYXRlKFZN
JiB2bSwgSlNPYmplY3QqIHByb21pc2UsIEpTVmFsdWUKIH0KIAogSlNQcm9taXNlRGVmZXJyZWQ6
OkpTUHJvbWlzZURlZmVycmVkKFZNJiB2bSkKLSAgICA6IEJhc2Uodm0sIHZtLnByb21pc2VEZWZl
cnJlZFN0cnVjdHVyZS5nZXQoKSkKKyAgICA6IEpTUHJvbWlzZURlZmVycmVkKHZtLCB2bS5wcm9t
aXNlRGVmZXJyZWRTdHJ1Y3R1cmUuZ2V0KCkpCit7Cit9CisKK0pTUHJvbWlzZURlZmVycmVkOjpK
U1Byb21pc2VEZWZlcnJlZChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogQmFz
ZSh2bSwgc3RydWN0dXJlKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1Byb21pc2VEZWZlcnJlZC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNQcm9taXNlRGVmZXJyZWQuaAppbmRleCA0YTBiNGI4NTY4YTQ3YmRkOWZlMmMzOGY4
NTA0NzZmMmRiOTFkYTI3Li5kYjdkYzU1ZDllNmUxMTNlNDE1NTU2ZDZjZDNlMWEyZjBmMWZkZTc1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VEZWZl
cnJlZC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZURlZmVy
cmVkLmgKQEAgLTMxLDcgKzMxLDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNzIEpTUHJv
bWlzZURlZmVycmVkIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CitjbGFzcyBKU1Byb21pc2VDb25z
dHJ1Y3RvcjsKKworY2xhc3MgSlNQcm9taXNlRGVmZXJyZWQgOiBwdWJsaWMgSlNDZWxsIHsKIHB1
YmxpYzoKICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgU3RydWN0dXJlSXNJbW1v
cnRhbDsKQEAgLTUzLDE2ICs1NSwyMSBAQCBjbGFzcyBKU1Byb21pc2VEZWZlcnJlZCBmaW5hbCA6
IHB1YmxpYyBKU0NlbGwgewogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVzb2x2ZShFeGVj
U3RhdGUqLCBKU1ZhbHVlKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHJlamVjdChFeGVj
U3RhdGUqLCBKU1ZhbHVlKTsKIAotcHJpdmF0ZToKLSAgICBKU1Byb21pc2VEZWZlcnJlZChWTSYp
OworcHJvdGVjdGVkOgorICAgIEpTUHJvbWlzZURlZmVycmVkKFZNJiwgU3RydWN0dXJlKik7CiAg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTT2JqZWN0KiwgSlNWYWx1ZSwgSlNWYWx1ZSk7
CiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwog
Citwcml2YXRlOgorICAgIEpTUHJvbWlzZURlZmVycmVkKFZNJik7CisKICAgICBXcml0ZUJhcnJp
ZXI8SlNPYmplY3Q+IG1fcHJvbWlzZTsKICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4gbV9yZXNv
bHZlOwogICAgIFdyaXRlQmFycmllcjxVbmtub3duPiBtX3JlamVjdDsKIH07CiAKK0pTVmFsdWUg
bmV3UHJvbWlzZUNhcGFiaWxpdHkoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBKU1Byb21p
c2VDb25zdHJ1Y3RvciopOworCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEpTUHJv
bWlzZURlZmVycmVkX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTUHJvbWlzZVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1Byb21pc2VQcm90b3R5cGUuY3BwCmluZGV4IDNkZDQwYjc1YmVjM2M3NzM5OGEwOWMyN2M5MWZj
N2MzYzk1ZWRhODQuLjFkMzIzMzVmM2QwNTVlMDQwNzA3Y2Q1MTc4NTcxNmJjZGE5NWVhYjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVByb3RvdHlw
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlUHJvdG90
eXBlLmNwcApAQCAtNDUsNyArNDUsNyBAQCBTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNU
UlVDVElCTEUoSlNQcm9taXNlUHJvdG90eXBlKTsKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNvbnN0
IENsYXNzSW5mbyBKU1Byb21pc2VQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlByb21pc2VQcm90b3R5
cGUiLCAmSlNOb25GaW5hbE9iamVjdDo6c19pbmZvLCAmcHJvbWlzZVByb3RvdHlwZVRhYmxlLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEpTUHJvbWlzZVByb3RvdHlwZSkgfTsKK2NvbnN0IENsYXNzSW5m
byBKU1Byb21pc2VQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlByb21pc2VQcm90b3R5cGUiLCAmQmFz
ZTo6c19pbmZvLCAmcHJvbWlzZVByb3RvdHlwZVRhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpT
UHJvbWlzZVByb3RvdHlwZSkgfTsKIAogLyogU291cmNlIGZvciBKU1Byb21pc2VQcm90b3R5cGUu
bHV0LmgKIEBiZWdpbiBwcm9taXNlUHJvdG90eXBlVGFibGUKQEAgLTc4LDcgKzc4LDcgQEAgdm9p
ZCBKU1Byb21pc2VQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU3RydWN0dXJlKikK
IAogYm9vbCBKU1Byb21pc2VQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCog
b2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCYgc2xvdCkKIHsKLSAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25TbG90PEpTT2Jq
ZWN0PihleGVjLCBwcm9taXNlUHJvdG90eXBlVGFibGUsIGpzQ2FzdDxKU1Byb21pc2VQcm90b3R5
cGUqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgIHJldHVybiBnZXRTdGF0aWNG
dW5jdGlvblNsb3Q8QmFzZT4oZXhlYywgcHJvbWlzZVByb3RvdHlwZVRhYmxlLCBqc0Nhc3Q8SlNQ
cm9taXNlUHJvdG90eXBlKj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Byb21pc2VQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
UHJvbWlzZVByb3RvdHlwZS5oCmluZGV4IDRlODcxYzc1NmNjOGU3NTc3YTA3MDQxMTU2MDNmOTNl
ODU1M2UxZjcuLmE2MjQxOTIyY2QzYzAwMTBjY2M5MGYyZjk1NTczMzA1ZGFkNWYzZWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVByb3RvdHlwZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVByb3RvdHlwZS5o
CkBAIC00MCwxMiArNDAsMTEgQEAgY2xhc3MgSlNQcm9taXNlUHJvdG90eXBlIDogcHVibGljIEpT
Tm9uRmluYWxPYmplY3QgewogCiAgICAgREVDTEFSRV9JTkZPOwogCisgICAgc3RhdGljIGJvb2wg
Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eVNsb3QmKTsKKwogcHJvdGVjdGVkOgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0m
LCBTdHJ1Y3R1cmUqKTsKLQotcHJpdmF0ZToKICAgICBKU1Byb21pc2VQcm90b3R5cGUoVk0mLCBT
dHJ1Y3R1cmUqKTsKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3Qq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggOTE3YzU1
ZmI0MWI1MTAxODJlNzdhNjAzZTgyZWFjZjNhYjY3YjY3Zi4uODEwNjRlOTcyN2UwOTA4OTJhMjkz
MGRjYmQwODNmNDkwYWNjYjMyYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApA
QCAtNTksNiArNTksNyBAQAogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0Z1
bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKKyNpbmNsdWRl
ICJKU0ludGVybmFsUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJv
bm1lbnQuaCIKICNpbmNsdWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJKU05vdEFuT2JqZWN0Lmgi
CkBAIC0yMzcsNiArMjM4LDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBU
eXBlKQogICAgIGZ1bmN0aW9uUmFyZURhdGFTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBGdW5jdGlvblJh
cmVEYXRhOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgZXhjZXB0
aW9uU3RydWN0dXJlLnNldCgqdGhpcywgRXhjZXB0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMs
IDAsIGpzTnVsbCgpKSk7CiAgICAgcHJvbWlzZURlZmVycmVkU3RydWN0dXJlLnNldCgqdGhpcywg
SlNQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsK
KyAgICBpbnRlcm5hbFByb21pc2VEZWZlcnJlZFN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTSW50ZXJu
YWxQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsK
ICAgICBpdGVyYXRpb25UZXJtaW5hdG9yLnNldCgqdGhpcywgSlNGaW5hbE9iamVjdDo6Y3JlYXRl
KCp0aGlzLCBKU0ZpbmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgp
LCAxKSkpOwogICAgIHNtYWxsU3RyaW5ncy5pbml0aWFsaXplQ29tbW9uU3RyaW5ncygqdGhpcyk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IDE4YWU3Zjc4YTA2M2I2NTExM2Jh
NDhlZWM2NWE0NTQ0Y2NkYWZiMTAuLmU4M2FmNGJlZTE1Yjc5N2U0ZThhYjZmMDQxZWU2YTk2Njcx
ZDE1N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtMjk3LDYgKzI5Nyw3IEBA
IGNsYXNzIFZNIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiB7CiAgICAgU3Ryb25n
PFN0cnVjdHVyZT4gZnVuY3Rpb25SYXJlRGF0YVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0
dXJlPiBleGNlcHRpb25TdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gcHJvbWlzZURl
ZmVycmVkU3RydWN0dXJlOworICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGludGVybmFsUHJvbWlzZURl
ZmVycmVkU3RydWN0dXJlOwogICAgIFN0cm9uZzxKU0NlbGw+IGl0ZXJhdGlvblRlcm1pbmF0b3I7
CiAgICAgU3Ryb25nPEpTQ2VsbD4gZW1wdHlQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259358</attachid>
            <date>2015-08-18 22:39:29 -0700</date>
            <delta_ts>2015-08-19 20:43:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148136-20150818223927.patch</filename>
            <type>text/plain</type>
            <size>80009</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4NjE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
Nzc3ZDRhNzY2MmQ0MWZmMjNjMzg5M2NkNDM0NTczNjc0M2I3NDFhLi5mNTkwZDkxMDMzN2QyMDU0
OTZmODQ4NmE3MTcwMjA2NjE4OTgxMDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwxMDQgQEAKIDIwMTUtMDgtMTggIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CiAKKyAgICAgICAgQWRkIEludGVybmFsUHJvbWlzZSB0byB1c2UgUHJvbWlzZXMgc2Fm
ZWx5IGluIHRoZSBpbnRlcm5hbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE0ODEzNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBJbnRlcm5hbFByb21pc2UuCisgICAg
ICAgIEl0IGlzIGNvbXBsZXRlbHkgZGlmZmVyZW50IGluc3RhbmNlIHNldCAoY29uc3RydWN0b3Is
IHByb3RvdHlwZSwgaW5zdGFuY2UpCisgICAgICAgIGJ1dCBpdCBoYXMgdGhlIHNhbWUgZmVhdHVy
ZSB0byB0aGUgUHJvbWlzZS4KKworICAgICAgICBJbiB0aGUgUHJvbWlzZSBvcGVyYXRpb25zLCB3
aGVuIHJlc29sdmluZyB0aGUgcHJvbWlzZSB3aXRoIHRoZSByZXR1cm5lZCBwcm9taXNlCisgICAg
ICAgIGZyb20gdGhlIGZ1bGZpbGwgaGFuZGxlciwgd2UgbmVlZCB0byBsb29rIHVwICJ0aGVuIiBt
ZXRob2QuCisKKyAgICAgICAgZS5nLgorICAgICAgICAgICAgcDEudGhlbihmdW5jdGlvbiBoYW5k
bGVyKC4uLikgeworICAgICAgICAgICAgICAgIHJldHVybiBwMjsKKyAgICAgICAgICAgIH0pOwor
CisgICAgICAgIFdoZW4gaGFuZGxlciBpcyBleGVjdXRlZCwgd2UgcmV0cmlldmUgdGhlIHJldHVy
bmVkIGBwMmAgcHJvbWlzZS4gQW5kIHRvIHJlc29sdmUKKyAgICAgICAgdGhlIHJldHVybmVkIHBy
b21pc2UgYnkgInRoZW4iIG1ldGhvZCwgd2UgY29uc3RydWN0IHRoZSBjaGFpbiBieSBleGVjdXRp
bmcgYHAyLnRoZW4ocmVzb2x2aW5nIGZ1bmN0aW9uKWAuCisgICAgICAgIFNvIGlmIHRoZSB1c2Vy
IG1vZGlmeSB0aGUgUHJvbWlzZS5wcm90b3R5cGUudGhlbiwgd2UgY2FuIG9ic2VydmUgdGhlIGlu
dGVybmFsIG9wZXJhdGlvbnMuCisKKyAgICAgICAgQnkgdXNpbmcgSW50ZXJuYWxQcm9taXNlLCB3
ZSBjb21wbGV0ZWx5IGhpZGUgSW50ZXJuYWxQcm9taXNlLnByb3RvdHlwZSBmcm9tIHRoZSB1c2Vy
cy4KKyAgICAgICAgSXQgYWxsb3dzIEpTQyB0byB1c2UgUHJvbWlzZXMgaW50ZXJuYWxseTsgZXZl
biBpZiB0aGUgdXNlciBtb2RpZnkgLyBvdmVycmlkZQorICAgICAgICB0aGUgUHJvbWlzZS5wcm90
b3R5cGUudGhlbiBmdW5jdGlvbiwgaXQgZG9lcyBub3QgZWZmZWN0IG9uIEludGVybmFsUHJvbWlz
ZS4KKworICAgICAgICBPbmUgbGltaXRhdGlvbiBpcyB0aGF0IHRoZSBpbXBsZW1lbnRhdGlvbiBu
ZWVkIHRvIHRha2UgY2FyZSBub3QgdG8gbGVhayB0aGUgSW50ZXJuYWxQcm9taXNlIGluc3RhbmNl
CisgICAgICAgIHRvIHRoZSB1c2VyIHNwYWNlLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6
CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6CisgICAgICAgICogSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBidWlsdGlu
cy9JbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5qczogQWRkZWQuCisgICAgICAgIChpbnRlcm5h
bEFsbC5uZXdSZXNvbHZlRWxlbWVudCk6CisgICAgICAgIChpbnRlcm5hbEFsbCk6CisgICAgICAg
ICogYnVpbHRpbnMvT3BlcmF0aW9ucy5Qcm9taXNlLmpzOgorICAgICAgICAobmV3UHJvbWlzZURl
ZmVycmVkKTogRGVsZXRlZC4KKyAgICAgICAgKiBidWlsdGlucy9Qcm9taXNlQ29uc3RydWN0b3Iu
anM6CisgICAgICAgIChwcml2YXRlQWxsLm5ld1Jlc29sdmVFbGVtZW50KTogRGVsZXRlZC4KKyAg
ICAgICAgKHByaXZhdGVBbGwpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRl
bnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9i
amVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5o
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cHJvbWlzZUNvbnN0cnVjdG9yKToKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yKToK
KyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Om5ld1Byb21pc2VDYXBhYmlsaXR5RnVuY3Rp
b24pOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6bmV3UHJvbWlzZURlZmVycmVkRnVu
Y3Rpb24pOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNJbnRlcm5hbFByb21pc2UuY3Bw
OiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VQcm90
b3R5cGUuaC4KKyAgICAgICAgKEpTQzo6SlNJbnRlcm5hbFByb21pc2U6OmNyZWF0ZSk6CisgICAg
ICAgIChKU0M6OkpTSW50ZXJuYWxQcm9taXNlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAo
SlNDOjpKU0ludGVybmFsUHJvbWlzZTo6SlNJbnRlcm5hbFByb21pc2UpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNJbnRlcm5hbFByb21pc2UuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNQcm9taXNlLmguCisgICAgICAgICogcnVudGltZS9KU0ludGVybmFsUHJv
bWlzZUNvbnN0cnVjdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTSW50ZXJuYWxQcm9t
aXNlQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTSW50ZXJuYWxQcm9taXNl
Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTSW50ZXJuYWxQ
cm9taXNlQ29uc3RydWN0b3I6OkpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IpOgorICAgICAg
ICAoSlNDOjpjb25zdHJ1Y3RQcm9taXNlKToKKyAgICAgICAgKEpTQzo6SlNJbnRlcm5hbFByb21p
c2VDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YSk6CisgICAgICAgIChKU0M6OkpTSW50ZXJu
YWxQcm9taXNlQ29uc3RydWN0b3I6OmdldENhbGxEYXRhKToKKyAgICAgICAgKEpTQzo6SlNJbnRl
cm5hbFByb21pc2VDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKiBy
dW50aW1lL0pTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuaDogQ29waWVkIGZyb20gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuaC4KKyAgICAgICAg
KiBydW50aW1lL0pTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQuY3BwOiBBZGRlZC4KKyAgICAgICAg
KEpTQzo6SlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6
SlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZDo6SlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZCk6Cisg
ICAgICAgIChKU0M6OkpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQ6OnByb21pc2UpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZC5oOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VQcm90b3R5cGUuaC4KKyAgICAgICAg
KiBydW50aW1lL0pTSW50ZXJuYWxQcm9taXNlUHJvdG90eXBlLmNwcDogQ29waWVkIGZyb20gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlUHJvdG90eXBlLmNwcC4KKyAgICAg
ICAgKEpTQzo6SlNJbnRlcm5hbFByb21pc2VQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgIChK
U0M6OkpTSW50ZXJuYWxQcm9taXNlUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAg
ICAoSlNDOjpKU0ludGVybmFsUHJvbWlzZVByb3RvdHlwZTo6SlNJbnRlcm5hbFByb21pc2VQcm90
b3R5cGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNJbnRlcm5hbFByb21pc2VQcm90b3R5cGUuaDog
Q29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlLmguCisg
ICAgICAgICogcnVudGltZS9KU1Byb21pc2UuY3BwOgorICAgICAgICAoSlNDOjpKU1Byb21pc2U6
OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTUHJvbWlzZTo6SlNQcm9taXNlKToKKyAgICAgICAg
KEpTQzo6SlNQcm9taXNlOjppbml0aWFsaXplKToKKyAgICAgICAgKiBydW50aW1lL0pTUHJvbWlz
ZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwOgorICAgICAg
ICAoSlNDOjpKU1Byb21pc2VDb25zdHJ1Y3Rvcjo6SlNQcm9taXNlQ29uc3RydWN0b3IpOgorICAg
ICAgICAoSlNDOjpjb25zdHJ1Y3RQcm9taXNlKToKKyAgICAgICAgKEpTQzo6SlNQcm9taXNlQ29u
c3RydWN0b3I6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpTUHJvbWlzZUNv
bnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9K
U1Byb21pc2VDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9taXNlRGVmZXJy
ZWQuY3BwOgorICAgICAgICAoSlNDOjpuZXdQcm9taXNlQ2FwYWJpbGl0eSk6CisgICAgICAgIChK
U0M6OkpTUHJvbWlzZURlZmVycmVkOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU1Byb21pc2VE
ZWZlcnJlZDo6SlNQcm9taXNlRGVmZXJyZWQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9taXNl
RGVmZXJyZWQuaDoKKyAgICAgICAgKiBydW50aW1lL0pTUHJvbWlzZVByb3RvdHlwZS5jcHA6Cisg
ICAgICAgIChKU0M6OkpTUHJvbWlzZVByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAg
ICAgICAgKiBydW50aW1lL0pTUHJvbWlzZVByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUv
Vk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoK
KworMjAxNS0wOC0xOCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKwog
ICAgICAgICBJbnRyb2R1Y2Ugbm9uLXVzZXItb2JzZXJ2YWJsZSBQcm9taXNlIGZ1bmN0aW9ucyB0
byB1c2UgUHJvbWlzZXMgaW50ZXJuYWxseQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4MTE4CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dAppbmRleCBkMjI1MjM4MTYzM2I0MmFiZWMyM2JhMDU4NjBkNDg0ZGYwOGE1ZGNjLi44Mjk2MjY3
YmJiMGM4ZWE0YWM1MmYxOGE0ZTZkZWVjMjcxNzMzNTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CkBAIC01MjUsNiArNTI1LDEwIEBAIHNldChKYXZhU2NyaXB0Q29yZV9SVU5U
SU1FX1NPVVJDRVMKICAgICBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUv
SlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmNwcAogICAgIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3RG
dW5jdGlvbnMuY3BwCisgICAgcnVudGltZS9KU0ludGVybmFsUHJvbWlzZS5jcHAKKyAgICBydW50
aW1lL0pTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuY3BwCisgICAgcnVudGltZS9KU0ludGVy
bmFsUHJvbWlzZURlZmVycmVkLmNwcAorICAgIHJ1bnRpbWUvSlNJbnRlcm5hbFByb21pc2VQcm90
b3R5cGUuY3BwCiAgICAgcnVudGltZS9KU0pvYi5jcHAKICAgICBydW50aW1lL0pTTGV4aWNhbEVu
dmlyb25tZW50LmNwcAogICAgIHJ1bnRpbWUvSlNMb2NrLmNwcApAQCAtNjUzLDYgKzY1Nyw3IEBA
IHNldChKYXZhU2NyaXB0Q29yZV9MVVRfRklMRVMKICAgICBydW50aW1lL0ludGxOdW1iZXJGb3Jt
YXRQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcAogICAg
IHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisgICAgcnVudGltZS9KU0ludGVybmFsUHJvbWlz
ZUNvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvSlNPTk9iamVjdC5jcHAKICAgICBydW50aW1l
L0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvSlNQcm9taXNlUHJvdG90eXBl
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1h
a2UgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCAxY2Iy
ZDVjYmEzYmQzNWUyMDlmOWQyYzdiYjQ2N2IyYjk2ZjdmYTVkLi41ZTQ3YTRjZTE3MDBkMTdhOWI1
MTdmZGJmMjgyNmNlOTlhODg3NmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZQpAQCAtNTEsNiArNTEsNyBAQCBhbGwgOiBcCiAgICAgSlNEYXRhVmlld1Byb3Rv
dHlwZS5sdXQuaCBcCiAgICAgSlNPTk9iamVjdC5sdXQuaCBcCiAgICAgSlNHbG9iYWxPYmplY3Qu
bHV0LmggXAorICAgIEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IubHV0LmggXAogICAgIEpT
UHJvbWlzZVByb3RvdHlwZS5sdXQuaCBcCiAgICAgSlNQcm9taXNlQ29uc3RydWN0b3IubHV0Lmgg
XAogICAgIEtleXdvcmRMb29rdXAuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4
cHJvagppbmRleCA1MDYyNDdkYTA5MzY4MGVlMzExYmI5ZjQwMjRmMjU2OTY2MTNmZTI0Li42ZmRi
YjFmMDliODc4YTQ0ZDQ4NmNiMjJjNzc0MjlkNTY0ZDNjYWYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2oKQEAgLTc3NSw2ICs3NzUsMTAgQEAKICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNGdW5jdGlvbi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxydW50aW1lXEpTR2xvYmFsT2JqZWN0LmNwcCIgLz4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwIiAvPgorICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0ludGVybmFsUHJvbWlzZS5jcHAiIC8+
CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTSW50ZXJuYWxQcm9taXNlQ29u
c3RydWN0b3IuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0lu
dGVybmFsUHJvbWlzZURlZmVycmVkLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcSlNJbnRlcm5hbFByb21pc2VQcm90b3R5cGUuY3BwIiAvPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0pvYi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxydW50aW1lXEpTTG9jay5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxydW50aW1lXEpTTWFwLmNwcCIgLz4KQEAgLTkxNyw2ICs5MjEsNyBAQAogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRl
Y3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3RvclByb3RvY29sT2Jq
ZWN0cy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3Vy
Y2VzXEpTRGF0YVZpZXdQcm90b3R5cGUubHV0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQ
cm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNHbG9iYWxPYmplY3QubHV0LmgiIC8+CisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9y
bUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNJbnRlcm5hbFBy
b21pc2VDb25zdHJ1Y3Rvci5sdXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29u
ZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3RO
YW1lKVxEZXJpdmVkU291cmNlc1xKU09OT2JqZWN0Lmx1dC5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1
cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTUHJvbWlzZUNvbnN0cnVjdG9yLmx1
dC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIp
XG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2Vz
XEpTUHJvbWlzZVByb3RvdHlwZS5sdXQuaCIgLz4KQEAgLTE2MjAsNiArMTYyNSwxMCBAQAogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0ludDE2QXJyYXkuaCIgLz4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNJbnQzMkFycmF5LmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTSW50OEFycmF5LmgiIC8+CisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTSW50ZXJuYWxQcm9taXNlLmgiIC8+CisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3Iu
aCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNJbnRlcm5hbFByb21p
c2VEZWZlcnJlZC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0lu
dGVybmFsUHJvbWlzZVByb3RvdHlwZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU0xvY2suaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SlNNYXAuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNYXBJdGVy
YXRvci5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5m
aWx0ZXJzCmluZGV4IDA2NjBmMjk3ZTJjYzdhNzNmNGIzYzFiZjk0NWQ1NmYxYTVkZjY2ZWMuLjYy
YTEzN2EyY2I2Y2IyYTkxZDM1ZjBkNTUyNTQ5N2I1NDg5NmU3ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZj
eHByb2ouZmlsdGVycworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTEwNTMsNiArMTA1Mywx
OCBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxTaW1wbGVUeXBlZEFycmF5
Q29udHJvbGxlci5jcHAiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9D
bENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTSW50ZXJuYWxQ
cm9taXNlLmNwcCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsQ29t
cGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNJbnRlcm5hbFByb21p
c2VDb25zdHJ1Y3Rvci5jcHAiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAg
PC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTSW50ZXJu
YWxQcm9taXNlRGVmZXJyZWQuY3BwIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgor
ICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0lu
dGVybmFsUHJvbWlzZVByb3RvdHlwZS5jcHAiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0
ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1l
XEpTUHJvbWlzZS5jcHAiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9D
bENvbXBpbGU+CkBAIC0zMzAwLDYgKzMzMTIsMTggQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuaCI+CiAgICAgICA8
RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNJbnRlcm5hbFByb21pc2UuaCI+CisgICAgICA8RmlsdGVy
PnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHJ1bnRpbWVcSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5oIj4KKyAgICAgIDxG
aWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccnVudGltZVxKU0ludGVybmFsUHJvbWlzZURlZmVycmVkLmgiPgorICAgICAg
PEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTSW50ZXJuYWxQcm9taXNlUHJvdG90eXBlLmgiPgorICAg
ICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTUHJvbWlzZS5oIj4KICAgICAgIDxGaWx0ZXI+cnVu
dGltZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtMzQxNyw2ICszNDQxLDkgQEAKICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRm
b3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xEYXRlQ29uc3Ry
dWN0b3IubHV0LmgiPgogICAgICAgPEZpbHRlcj5EZXJpdmVkIFNvdXJjZXM8L0ZpbHRlcj4KICAg
ICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1
aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVk
U291cmNlc1xKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmx1dC5oIj4KKyAgICAgIDxGaWx0
ZXI+RGVyaXZlZCBTb3VyY2VzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hp
dGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNQcm9taXNlQ29uc3RydWN0
b3IubHV0LmgiPgogICAgICAgPEZpbHRlcj5EZXJpdmVkIFNvdXJjZXM8L0ZpbHRlcj4KICAgICA8
L0NsSW5jbHVkZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNDhmZmNjNjk2Mzhl
ZmY5YTc0YTFkMGFhNDBlMTBjYzA3ZjFhYTkwMy4uYTM0MDE3MjM4M2Q0MmU2MTg1MjQ5ZWVmODQ0
MTI0NTIzNmVhNjhiOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE2OTcsNiAr
MTY5NywxNSBAQAogCQlFMzM2MzdBNTFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzM2MzdB
MzFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5jcHAgKi87IH07CiAJCUUzMzYzN0E2
MUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzM2MzdBNDFCNjMyMjAyMDBFRTA4NDAgLyogUmVm
bGVjdE9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUUzM0IzRTI2MUI3QUJENzUwMDQ4REIyRSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25PYmplY3QubHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMzNCM0UyNTFCN0FCRDc1MDA0OERCMkUgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
T2JqZWN0Lmx1dC5oICovOyB9OworCQlFMzNGNTA3NDFCODQyMUMwMDA0MTM4NTYgLyogSlNJbnRl
cm5hbFByb21pc2VQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTMzRjUwNzIxQjg0MjFDMDAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9t
aXNlUHJvdG90eXBlLmNwcCAqLzsgfTsKKwkJRTMzRjUwNzUxQjg0MjFDMDAwNDEzODU2IC8qIEpT
SW50ZXJuYWxQcm9taXNlUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMzNGNTA3MzFCODQyMUMwMDA0MTM4NTYgLyogSlNJbnRlcm5hbFBy
b21pc2VQcm90b3R5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQlFMzNGNTA3ODFCODQyMjU3MDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VD
b25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMzNGNTA3NjFCODQyMjU3MDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1
Y3Rvci5jcHAgKi87IH07CisJCUUzM0Y1MDc5MUI4NDIyNTcwMDQxMzg1NiAvKiBKU0ludGVybmFs
UHJvbWlzZUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMzNGNTA3NzFCODQyMjU3MDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VD
b25zdHJ1Y3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCUUzM0Y1MDgwMUI4NDI5QTQwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzNGNTA3RTFC
ODQyOUE0MDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2UuY3BwICovOyB9OworCQlFMzNGNTA4
MTFCODQyOUE0MDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzM0Y1MDdGMUI4NDI5QTQwMDQxMzg1NiAv
KiBKU0ludGVybmFsUHJvbWlzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCUUzM0Y1MDg0MUI4NDM3QTAwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJv
bWlzZURlZmVycmVkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzM0Y1MDgyMUI4NDM3QTAwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZURlZmVy
cmVkLmNwcCAqLzsgfTsKKwkJRTMzRjUwODUxQjg0MzdBMDAwNDEzODU2IC8qIEpTSW50ZXJuYWxQ
cm9taXNlRGVmZXJyZWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzM0Y1MDgzMUI4NDM3QTAwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZURlZmVy
cmVkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
RTMzRjUwODcxQjg0NDlFRjAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3Iu
bHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzNG
NTA4NjFCODQ0OUVGMDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5sdXQu
aCAqLzsgfTsKIAkJRTM1NDYyMkIxQjYwNjVEMTAwNTQ1Mzg2IC8qIENvbnN0cnVjdEFiaWxpdHku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNTQ2MjJB
MUI2MDY1RDEwMDU0NTM4NiAvKiBDb25zdHJ1Y3RBYmlsaXR5LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM1RTAzNUYxQjdBQjQzRTAwNzNBRDJB
IC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVFMDM1RDFCN0FCNDNFMDA3M0FEMkEgLyog
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcCAqLzsgfTsKIAkJRTM1RTAzNjAxQjdB
QjQzRTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1RTAzNUUxQjdBQjQzRTAw
NzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zNTMzLDYgKzM1NDIsMTYgQEAK
IAkJRTMzNjM3QTMxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVmbGVjdE9iamVjdC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzMzYzN0E0MUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0
T2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZmxlY3RPYmplY3Qu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMzQjNFMjUxQjdBQkQ3NTAwNDhEQjJF
IC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5sdXQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmx1dC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzNGNTA3MjFCODQyMUMwMDA0MTM4NTYgLyog
SlNJbnRlcm5hbFByb21pc2VQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNJbnRlcm5hbFByb21pc2VQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlFMzNGNTA3MzFCODQyMUMwMDA0MTM4NTYgLyogSlNJbnRlcm5hbFBy
b21pc2VQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNJbnRl
cm5hbFByb21pc2VQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMz
RjUwNzYxQjg0MjI1NzAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNJbnRlcm5hbFByb21pc2VD
b25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzM0Y1MDc3MUI4
NDIyNTcwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMzRjUwN0UxQjg0MjlBNDAwNDEzODU2IC8q
IEpTSW50ZXJuYWxQcm9taXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTSW50ZXJuYWxQcm9taXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RTMzRjUwN0YxQjg0MjlBNDAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSW50ZXJuYWxQcm9taXNlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUUzM0Y1MDgyMUI4NDM3QTAwMDQxMzg1NiAvKiBKU0ludGVybmFs
UHJvbWlzZURlZmVycmVkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlFMzNGNTA4MzFCODQzN0EwMDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VEZWZlcnJl
ZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0ludGVybmFsUHJvbWlzZURl
ZmVycmVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzM0Y1MDg2MUI4NDQ5RUYw
MDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmx1dC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmx1dC5o
OyBwYXRoID0gSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5sdXQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRTMzRjUwODgxQjg0NEExQTAwNDEzODU2IC8qIEludGVybmFsUHJv
bWlzZUNvbnN0cnVjdG9yLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRo
ID0gSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUUzNTQ2MjJBMUI2MDY1RDEwMDU0NTM4NiAvKiBDb25zdHJ1Y3RBYmlsaXR5LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnN0cnVjdEFiaWxpdHkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1RTAzNUQxQjdBQjQzRTAwNzNBRDJBIC8qIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFMzVFMDM1RTFCN0FCNDNFMDA3M0FEMkEgLyogSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNDM3OSw2ICs0Mzk4LDcgQEAKIAkJCQlBN0Q4MDFBNjE4ODBENkE4MDAyNkMzOUIg
LyogSlNDQnVpbHRpbnMuY3BwICovLAogCQkJCUE3RDgwMUE3MTg4MEQ2QTgwMDI2QzM5QiAvKiBK
U0NCdWlsdGlucy5oICovLAogCQkJCUJDODdDREI4MTA3MTJBQ0EwMDA2MTRDRiAvKiBKU09OT2Jq
ZWN0Lmx1dC5oICovLAorCQkJCUUzM0Y1MDg2MUI4NDQ5RUYwMDQxMzg1NiAvKiBKU0ludGVybmFs
UHJvbWlzZUNvbnN0cnVjdG9yLmx1dC5oICovLAogCQkJCTdDMTg0RTI0MTdCRkZBMzYwMDdDQjYz
QSAvKiBKU1Byb21pc2VDb25zdHJ1Y3Rvci5sdXQuaCAqLywKIAkJCQk3QzE4NEUyNTE3QkZGQTM2
MDA3Q0I2M0EgLyogSlNQcm9taXNlUHJvdG90eXBlLmx1dC5oICovLAogCQkJCTk5MjhGRjM5MThB
QzRBRUMwMEI4Q0YxMiAvKiBKU1JlcGxheUlucHV0cy5jcHAgKi8sCkBAIC00NzA5LDYgKzQ3Mjks
MTQgQEAKIAkJCQkwRjJCNjZDOTE3QjZCNUFCMDBBN0FFM0YgLyogSlNJbnQ4QXJyYXkuaCAqLywK
IAkJCQkwRjJCNjZDQTE3QjZCNUFCMDBBN0FFM0YgLyogSlNJbnQxNkFycmF5LmggKi8sCiAJCQkJ
MEYyQjY2Q0IxN0I2QjVBQjAwQTdBRTNGIC8qIEpTSW50MzJBcnJheS5oICovLAorCQkJCUUzM0Y1
MDdFMUI4NDI5QTQwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZS5jcHAgKi8sCisJCQkJRTMz
RjUwN0YxQjg0MjlBNDAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlLmggKi8sCisJCQkJRTMz
RjUwNzYxQjg0MjI1NzAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuY3Bw
ICovLAorCQkJCUUzM0Y1MDc3MUI4NDIyNTcwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZUNv
bnN0cnVjdG9yLmggKi8sCisJCQkJRTMzRjUwODIxQjg0MzdBMDAwNDEzODU2IC8qIEpTSW50ZXJu
YWxQcm9taXNlRGVmZXJyZWQuY3BwICovLAorCQkJCUUzM0Y1MDgzMUI4NDM3QTAwMDQxMzg1NiAv
KiBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkLmggKi8sCisJCQkJRTMzRjUwNzIxQjg0MjFDMDAw
NDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlUHJvdG90eXBlLmNwcCAqLywKKwkJCQlFMzNGNTA3
MzFCODQyMUMwMDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VQcm90b3R5cGUuaCAqLywKIAkJ
CQk3MDEzQ0E4OTFCNDkxQTk0MDBDQUU2MTMgLyogSlNKb2IuY3BwICovLAogCQkJCTcwMTNDQThB
MUI0OTFBOTQwMENBRTYxMyAvKiBKU0pvYi5oICovLAogCQkJCTE0REE4MThGMEQ5OUZEMjAwMEIw
QTRGQiAvKiBKU0xleGljYWxFbnZpcm9ubWVudC5jcHAgKi8sCkBAIC01NzMxLDYgKzU3NTksNyBA
QAogCQkJCUE3QTk3OUM0MThCRThEOUUwMDJDMzczMyAvKiBGdW5jdGlvbi5wcm90b3R5cGUuanMg
Ki8sCiAJCQkJN0NGOUJDNUExQjY1RDlBMzAwOURCMUVGIC8qIEdsb2JhbE9iamVjdC5qcyAqLywK
IAkJCQlFMzVFMDM2MTFCN0FCNDg1MDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
T2JqZWN0LmpzICovLAorCQkJCUUzM0Y1MDg4MUI4NDRBMUEwMDQxMzg1NiAvKiBJbnRlcm5hbFBy
b21pc2VDb25zdHJ1Y3Rvci5qcyAqLywKIAkJCQk3Q0Y5QkM1QjFCNjVEOUEzMDA5REIxRUYgLyog
SXRlcmF0b3IucHJvdG90eXBlLmpzICovLAogCQkJCTdDRjlCQzVDMUI2NUQ5QjEwMDlEQjFFRiAv
KiBPYmplY3RDb25zdHJ1Y3Rvci5qcyAqLywKIAkJCQk3Q0Y5QkM1RDFCNjVEOUIxMDA5REIxRUYg
LyogT3BlcmF0aW9ucy5Qcm9taXNlLmpzICovLApAQCAtNTkzOSw2ICs1OTY4LDcgQEAKIAkJCQkw
RjBCODNBNzE0QkNGNTA3MDA4ODVCNEYgLyogQ29kZVR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDMThDM0YzMEUxNkY1Q0QwMEIzNDQ2MCAvKiBDb21tb25JZGVudGlmaWVycy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNzA5RkI4NkMxQUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRQcm90b3R5cGUu
aCBpbiBIZWFkZXJzICovLAorCQkJCUUzM0Y1MDgxMUI4NDI5QTQwMDQxMzg1NiAvKiBKU0ludGVy
bmFsUHJvbWlzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxNUYxNUYxNEI3QTczRTAwNURFMzdE
IC8qIENvbW1vblNsb3dQYXRocy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjU1M0EzMzIxN0ExRjFF
RTAwOENGNkYzIC8qIENvbW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGRDgyRTM5MTQxQUIxNEQwMDE3OUM5NCAvKiBDb21wYWN0SklUQ29kZU1hcC5oIGluIEhl
YWRlcnMgKi8sCkBAIC02MDQ2LDYgKzYwNzYsNyBAQAogCQkJCTg2RUM5REM2MTMyOERGODIwMDJC
MkFENyAvKiBERkdHZW5lcmF0aW9uSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZFQzlEQzgx
MzI4REY4MjAwMkIyQUQ3IC8qIERGR0dyYXBoLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJGQ0NG
QTE4QTYwMDcwMDAxQTI3RjggLyogREZHR3JhcGhTYWZlcG9pbnQuaCBpbiBIZWFkZXJzICovLAor
CQkJCUUzM0Y1MDg3MUI4NDQ5RUYwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVj
dG9yLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCMTRFMjExODEyNTcwQjAwOUI2QjREIC8q
IERGR0lubGluZUNhY2hlV3JhcHBlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCMTRFMjMxODEz
MDk1NTAwOUI2QjREIC8qIERGR0lubGluZUNhY2hlV3JhcHBlcklubGluZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGNzkwODU2MTlBMjkwQjIwMEY2MzEwQyAvKiBERkdTdHJ1Y3R1cmVSZWdpc3Ry
YXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCkBAIC02MDcyLDYgKzYxMDMsNyBAQAogCQkJCTBG
MkU4OTJEMTZEMDJCQUYwMDlFNEZEMiAvKiBERkdNaW5pZmllZElELmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjJCREM0NjE1MjI4MDIwMDBDRDg5MTAgLyogREZHTWluaWZpZWROb2RlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNzM3ODEwRTE3OTlFQTJFMDA4MTc1MzMgLyogREZHTmF0dXJhbExvb3Bz
LmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzNGNTA3OTFCODQyMjU3MDA0MTM4NTYgLyogSlNJbnRl
cm5hbFByb21pc2VDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZFQ0EzRUExMzJE
RUYxQzAwMkIyQUQ3IC8qIERGR05vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkI5MjFCMTZE
MDJGMDEwMDU1QTVEQiAvKiBERkdOb2RlQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RkE1ODFCQjE1MEU5NTMwMDBCOUEyRDkgLyogREZHTm9kZUZsYWdzLmggaW4gSGVhZGVycyAqLywK
QEAgLTYzNTQsNiArNjM4Niw3IEBACiAJCQkJQkMxOEM0MUIwRTE2RjVDRDAwQjM0NDYwIC8qIEpT
Q2FsbGJhY2tPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDFDMEUxNkY1Q0QwMEIz
NDQ2MCAvKiBKU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
N0Q4MDFBOTE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovLAor
CQkJCUUzM0Y1MDg1MUI4NDM3QTAwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZURlZmVycmVk
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzExNjdEQTBFMTlCQ0M5MDA4MDY2REQgLyogSlNDZWxs
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjk3NDk3MTE2ODdBREU0MDBBNEZGNkEgLyogSlNDZWxs
SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxREQ4NEExOEE5NDVCRTAwMjZGM0ZBIC8q
IEpTQ0lubGluZXMuaCBpbiBIZWFkZXJzICovLApAQCAtNjQ0Niw2ICs2NDc5LDcgQEAKIAkJCQkw
RjJCNjZGRjE3QjZCNUFCMDBBN0FFM0YgLyogSlNUeXBlZEFycmF5cy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNjUwN0QyOUUwRTg3MUU1RTAwRDdEODk2IC8qIEpTVHlwZUluZm8uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGMkI2NzAyMTdCNkI1QUIwMEE3QUUzRiAvKiBKU1VpbnQxNkFycmF5LmggaW4g
SGVhZGVycyAqLywKKwkJCQlFMzNGNTA3NTFCODQyMUMwMDA0MTM4NTYgLyogSlNJbnRlcm5hbFBy
b21pc2VQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NzAzMTdCNkI1QUIwMEE3
QUUzRiAvKiBKU1VpbnQzMkFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJENERGMDE5ODMy
REQ2MDA3RDRCMTkgLyogVHlwZVNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY3MDAxN0I2
QjVBQjAwQTdBRTNGIC8qIEpTVWludDhBcnJheS5oIGluIEhlYWRlcnMgKi8sCkBAIC03Mzc4LDYg
Kzc0MTIsNyBAQAogCQkJCTBGMkJEQzE1MTUxQzVENEQwMENEODkxMCAvKiBERkdGaXh1cFBoYXNl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRDEyMDMzMUE4Qzg1QkQwMDBGNTI4MCAvKiBGVExK
U0NhbGxWYXJhcmdzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOUQzMzk2MTdGRkM0RTYwMDcz
QzJCQyAvKiBERkdGbHVzaGVkQXQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTMzRjUwODQxQjg0
MzdBMDAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMEY5RDM2OTQxQUU5Q0MzMzAwMEQ0REZCIC8qIERGR0NsZWFuVXBQaGFzZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBN0Q4OUNGNzE3QTBCOENDMDA3NzNBRDggLyogREZHRmx1c2hG
b3JtYXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0IzOUY3NkQxQjYyREUyRTAwMzYwRkI0IC8q
IFdBU01Nb2R1bGVQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC03NDkxLDYgKzc1MjYsNyBA
QAogCQkJCTBGRUEwQTBCMTcwNTEzREIwMEJCNzIyQyAvKiBGVExDb21waWxlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGRTk1Rjc5MThCNTY5NDcwMEI1MzFGQiAvKiBGVExEYXRhU2VjdGlvbi5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkyQUM5MjJCQjE4QTE2MTgyMDAzQ0UwRkIgLyogRlRMRFdB
UkZEZWJ1Z0xpbmVJbmZvLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUzM0Y1MDgwMUI4NDI5QTQw
MDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjIz
NUJEMzE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdEFyZ3VtZW50LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGMjM1QkQ1MTcxNzhFMUMwMDY5MEM3RiAvKiBGVExFeGl0QXJndW1lbnRGb3JPcGVy
YW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjM1QkQ4MTcxNzhFMUMwMDY5MEM3RiAvKiBG
VExFeGl0VGh1bmtHZW5lcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC03NzIyLDYgKzc3NTgs
NyBAQAogCQkJCTBGRUIzRUNGMTYyMzdGNkMwMEFCNjdBRCAvKiBNYWNyb0Fzc2VtYmxlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBMUQ3OTMwMDFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJl
ckZvcm1hdFByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkM1NjhFMDExQTIxM0VF
MDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJBUk0uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTMz
RjUwNzQxQjg0MjFDMDAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlUHJvdG90eXBlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUE3MjkwMDlDMTc5NzZDNjAwMDMxNzI5OCAvKiBNYWNyb0Fzc2Vt
YmxlckFSTXY3LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1M0NFMDg1MThCQzFBNTYwMEJFREY3
NiAvKiBDb25zb2xlUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3QTRBRTA4MTc5
NzNCMjYwMDU2MTJCMSAvKiBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5jcHAgaW4gU291cmNlcyAq
LywKQEAgLTc3OTcsNiArNzgzNCw3IEBACiAJCQkJMEY2QjFDQkQxODYxMjQ2QTAwODQ1RDk3IC8q
IFJlZ2lzdGVyUHJlc2VydmF0aW9uV3JhcHBlckdlbmVyYXRvci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRkMzMTQxNTE4MTQ2RDcwMDAwMzMyMzIgLyogUmVnaXN0ZXJTZXQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTU3RDIzRUQxODkxQjU1NDAwMzFDN0ZBIC8qIFJlZ3VsYXJFeHByZXNzaW9u
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUzM0Y1MDc4MUI4NDIyNTcwMDQxMzg1NiAvKiBKU0lu
dGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1QkExNUU5
MTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3IubW0gaW4gU291cmNlcyAqLywKIAkJ
CQkyQURGQTI2MzE4RUYzNTQwMDA0RjlGQ0MgLyogR0NMb2dnaW5nLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUE1OTQ1NThGMTgyNDVFRkQwMENDMzg0MyAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dh
YmxlLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmpzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjUxNzc3YzZhYzg0ZmUyNDc5MjQzNTc0OTZkY2E3MTcyZDE1MmJiYmMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvSW50ZXJuYWxQcm9taXNlQ29uc3Ry
dWN0b3IuanMKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKK2Z1bmN0aW9uIGludGVybmFsQWxsKGFycmF5KQoreworICAgIC8vIFRo
aXMgZnVuY3Rpb24gaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBpbiB0aGUgSlNDIGludGVybmFscy4K
KyAgICAvLyBUaGUgaW1wbGVtZW50YXRpb24gc2hvdWxkIHRha2UgY2FyZSBub3QgdG8gcGVyZm9y
bSB0aGUgdXNlcgorICAgIC8vIG9ic2VydmFibGUgLyB0cmFwcGFibGUgb3BlcmF0aW9ucy4KKyAg
ICAvLworICAgIC8vIDEuIERvbid0IHVzZSBmb3Itb2YgYW5kIGl0ZXJhYmxlcy4gVGhpcyBmdW5j
dGlvbiBvbmx5IGFjY2VwdHMKKyAgICAvLyAgICB0aGUgZGVuc2UgYXJyYXkgb2YgdGhlIHByb21p
c2VzLgorICAgIC8vIDIuIERvbid0IGxvb2sgdXAgdGhpcy5jb25zdHJ1Y3RvciAvIEBAc3BlY2ll
cy4gQWx3YXlzIGNvbnN0cnVjdAorICAgIC8vICAgIHRoZSBwbGFpbiBQcm9taXNlIG9iamVjdC4K
KworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHZhciBwcm9taXNlQ2FwYWJpbGl0eSA9IEBuZXdQ
cm9taXNlQ2FwYWJpbGl0eShASW50ZXJuYWxQcm9taXNlKTsKKworICAgIHZhciB2YWx1ZXMgPSBb
XTsKKyAgICB2YXIgaW5kZXggPSAwOworICAgIHZhciByZW1haW5pbmdFbGVtZW50c0NvdW50ID0g
MDsKKworICAgIGZ1bmN0aW9uIG5ld1Jlc29sdmVFbGVtZW50KGluZGV4KQorICAgIHsKKyAgICAg
ICAgdmFyIGFscmVhZHlDYWxsZWQgPSBmYWxzZTsKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChh
cmd1bWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGFscmVhZHlDYWxsZWQpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKKyAgICAgICAgICAgIGFscmVhZHlDYWxsZWQg
PSB0cnVlOworCisgICAgICAgICAgICBAcHV0QnlWYWxEaXJlY3QodmFsdWVzLCBpbmRleCwgYXJn
dW1lbnQpOworCisgICAgICAgICAgICAtLXJlbWFpbmluZ0VsZW1lbnRzQ291bnQ7CisgICAgICAg
ICAgICBpZiAocmVtYWluaW5nRWxlbWVudHNDb3VudCA9PT0gMCkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gcHJvbWlzZUNhcGFiaWxpdHkuQHJlc29sdmUuQGNhbGwodW5kZWZpbmVkLCB2YWx1ZXMp
OworCisgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkOworICAgICAgICB9CisgICAgfQorCisg
ICAgdHJ5IHsKKyAgICAgICAgaWYgKGFycmF5Lmxlbmd0aCA9PT0gMCkKKyAgICAgICAgICAgIHBy
b21pc2VDYXBhYmlsaXR5LkByZXNvbHZlLkBjYWxsKHVuZGVmaW5lZCwgdmFsdWVzKTsKKyAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICBmb3IgKHZhciBpbmRleCA9IDAsIGxlbmd0aCA9IGFycmF5
Lmxlbmd0aDsgaW5kZXggPCBsZW5ndGg7ICsraW5kZXgpIHsKKyAgICAgICAgICAgICAgICB2YXIg
dmFsdWUgPSBhcnJheVtpbmRleF07CisgICAgICAgICAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KHZh
bHVlcywgaW5kZXgsIHVuZGVmaW5lZCk7CisKKyAgICAgICAgICAgICAgICB2YXIgbmV4dFByb21p
c2VDYXBhYmlsaXR5ID0gQG5ld1Byb21pc2VDYXBhYmlsaXR5KEBJbnRlcm5hbFByb21pc2UpOwor
ICAgICAgICAgICAgICAgIG5leHRQcm9taXNlQ2FwYWJpbGl0eS5AcmVzb2x2ZS5AY2FsbCh1bmRl
ZmluZWQsIHZhbHVlKTsKKyAgICAgICAgICAgICAgICB2YXIgbmV4dFByb21pc2UgPSBuZXh0UHJv
bWlzZUNhcGFiaWxpdHkuQHByb21pc2U7CisKKyAgICAgICAgICAgICAgICB2YXIgcmVzb2x2ZUVs
ZW1lbnQgPSBuZXdSZXNvbHZlRWxlbWVudChpbmRleCk7CisgICAgICAgICAgICAgICAgKytyZW1h
aW5pbmdFbGVtZW50c0NvdW50OworICAgICAgICAgICAgICAgIG5leHRQcm9taXNlLnRoZW4ocmVz
b2x2ZUVsZW1lbnQsIHByb21pc2VDYXBhYmlsaXR5LkByZWplY3QpOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfSBjYXRjaCAoZXJyb3IpIHsKKyAgICAgICAgcHJvbWlzZUNhcGFiaWxp
dHkuQHJlamVjdC5AY2FsbCh1bmRlZmluZWQsIGVycm9yKTsKKyAgICB9CisKKyAgICByZXR1cm4g
cHJvbWlzZUNhcGFiaWxpdHkuQHByb21pc2U7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnVpbHRpbnMvT3BlcmF0aW9ucy5Qcm9taXNlLmpzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL09wZXJhdGlvbnMuUHJvbWlzZS5qcwppbmRleCA2NmY5YzI1MTUzNTlj
N2E1MTI1NGY5MzdmYzdmNTFjY2QxMzEyNDFkLi5hNDBkYTgyMzU4ZDQzMzRlMzNmMGZjZDFhOTM5
ODE5NzNjZWRiMGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMv
T3BlcmF0aW9ucy5Qcm9taXNlLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9PcGVyYXRpb25zLlByb21pc2UuanMKQEAgLTQwLDEzICs0MCw2IEBAIGZ1bmN0aW9uIG5ld1By
b21pc2VSZWFjdGlvbihjYXBhYmlsaXR5LCBoYW5kbGVyKQogICAgIH07CiB9CiAKLWZ1bmN0aW9u
IG5ld1Byb21pc2VEZWZlcnJlZCgpCi17Ci0gICAgInVzZSBzdHJpY3QiOwotCi0gICAgcmV0dXJu
IEBuZXdQcm9taXNlQ2FwYWJpbGl0eShAUHJvbWlzZSk7Ci19Ci0KIGZ1bmN0aW9uIG5ld1Byb21p
c2VDYXBhYmlsaXR5KGNvbnN0cnVjdG9yKQogewogICAgICJ1c2Ugc3RyaWN0IjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Qcm9taXNlQ29uc3RydWN0b3IuanMg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvUHJvbWlzZUNvbnN0cnVjdG9yLmpzCmlu
ZGV4IDM5YzgxMDY5MTljMmMzZWYyOTlhNWFjOTkzNDFlNGY3MTc5ZTQxZjEuLjFmODNiNDdmNzkw
YTc1ZTViZjhjOTNkNWU2NjQ5NjE4Y2IxYWVjNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9Qcm9taXNlQ29uc3RydWN0b3IuanMKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL1Byb21pc2VDb25zdHJ1Y3Rvci5qcwpAQCAtMTM3LDY1ICsxMzcs
MyBAQCBmdW5jdGlvbiByZXNvbHZlKHZhbHVlKQogCiAgICAgcmV0dXJuIHByb21pc2VDYXBhYmls
aXR5LkBwcm9taXNlOwogfQotCi1mdW5jdGlvbiBwcml2YXRlQWxsKGFycmF5KQotewotICAgIC8v
IFRoaXMgZnVuY3Rpb24gaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBpbiB0aGUgSlNDIGludGVybmFs
cy4KLSAgICAvLyBUaGUgaW1wbGVtZW50YXRpb24gc2hvdWxkIHRha2UgY2FyZSBub3QgdG8gcGVy
Zm9ybSB0aGUgdXNlcgotICAgIC8vIG9ic2VydmFibGUgLyB0cmFwcGFibGUgb3BlcmF0aW9ucy4K
LSAgICAvLwotICAgIC8vIDEuIERvbid0IHVzZSBmb3Itb2YgYW5kIGl0ZXJhYmxlcy4gVGhpcyBm
dW5jdGlvbiBvbmx5IGFjY2VwdHMKLSAgICAvLyAgICB0aGUgZGVuc2UgYXJyYXkgb2YgdGhlIHBy
b21pc2VzLgotICAgIC8vIDIuIERvbid0IGxvb2sgdXAgdGhpcy5jb25zdHJ1Y3RvciAvIEBAc3Bl
Y2llcy4gQWx3YXlzIGNvbnN0cnVjdAotICAgIC8vICAgIHRoZSBwbGFpbiBQcm9taXNlIG9iamVj
dC4KLQotICAgICJ1c2Ugc3RyaWN0IjsKLQotICAgIHZhciBwcm9taXNlQ2FwYWJpbGl0eSA9IEBu
ZXdQcm9taXNlRGVmZXJyZWQoKTsKLQotICAgIHZhciB2YWx1ZXMgPSBbXTsKLSAgICB2YXIgaW5k
ZXggPSAwOwotICAgIHZhciByZW1haW5pbmdFbGVtZW50c0NvdW50ID0gMDsKLQotICAgIGZ1bmN0
aW9uIG5ld1Jlc29sdmVFbGVtZW50KGluZGV4KQotICAgIHsKLSAgICAgICAgdmFyIGFscmVhZHlD
YWxsZWQgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChhcmd1bWVudCkKLSAgICAg
ICAgewotICAgICAgICAgICAgaWYgKGFscmVhZHlDYWxsZWQpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIHVuZGVmaW5lZDsKLSAgICAgICAgICAgIGFscmVhZHlDYWxsZWQgPSB0cnVlOwotCi0gICAg
ICAgICAgICBAcHV0QnlWYWxEaXJlY3QodmFsdWVzLCBpbmRleCwgYXJndW1lbnQpOwotCi0gICAg
ICAgICAgICAtLXJlbWFpbmluZ0VsZW1lbnRzQ291bnQ7Ci0gICAgICAgICAgICBpZiAocmVtYWlu
aW5nRWxlbWVudHNDb3VudCA9PT0gMCkKLSAgICAgICAgICAgICAgICByZXR1cm4gcHJvbWlzZUNh
cGFiaWxpdHkuQHJlc29sdmUuQGNhbGwodW5kZWZpbmVkLCB2YWx1ZXMpOwotCi0gICAgICAgICAg
ICByZXR1cm4gdW5kZWZpbmVkOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdHJ5IHsKLSAgICAg
ICAgaWYgKGFycmF5Lmxlbmd0aCA9PT0gMCkKLSAgICAgICAgICAgIHByb21pc2VDYXBhYmlsaXR5
LkByZXNvbHZlLkBjYWxsKHVuZGVmaW5lZCwgdmFsdWVzKTsKLSAgICAgICAgZWxzZSB7Ci0gICAg
ICAgICAgICBmb3IgKHZhciBpbmRleCA9IDAsIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDsgaW5kZXgg
PCBsZW5ndGg7ICsraW5kZXgpIHsKLSAgICAgICAgICAgICAgICB2YXIgdmFsdWUgPSBhcnJheVtp
bmRleF07Ci0gICAgICAgICAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KHZhbHVlcywgaW5kZXgsIHVu
ZGVmaW5lZCk7Ci0KLSAgICAgICAgICAgICAgICB2YXIgbmV4dFByb21pc2VDYXBhYmlsaXR5ID0g
QG5ld1Byb21pc2VEZWZlcnJlZCgpOwotICAgICAgICAgICAgICAgIG5leHRQcm9taXNlQ2FwYWJp
bGl0eS5AcmVzb2x2ZS5AY2FsbCh1bmRlZmluZWQsIHZhbHVlKTsKLSAgICAgICAgICAgICAgICB2
YXIgbmV4dFByb21pc2UgPSBuZXh0UHJvbWlzZUNhcGFiaWxpdHkuQHByb21pc2U7Ci0KLSAgICAg
ICAgICAgICAgICB2YXIgcmVzb2x2ZUVsZW1lbnQgPSBuZXdSZXNvbHZlRWxlbWVudChpbmRleCk7
Ci0gICAgICAgICAgICAgICAgKytyZW1haW5pbmdFbGVtZW50c0NvdW50OwotICAgICAgICAgICAg
ICAgIG5leHRQcm9taXNlLnRoZW4ocmVzb2x2ZUVsZW1lbnQsIHByb21pc2VDYXBhYmlsaXR5LkBy
ZWplY3QpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfSBjYXRjaCAoZXJyb3IpIHsK
LSAgICAgICAgcHJvbWlzZUNhcGFiaWxpdHkuQHJlamVjdC5AY2FsbCh1bmRlZmluZWQsIGVycm9y
KTsKLSAgICB9Ci0KLSAgICByZXR1cm4gcHJvbWlzZUNhcGFiaWxpdHkuQHByb21pc2U7Ci19CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVy
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApp
bmRleCAzNDQ3YjM5OGZkMDYxODA1OTA5ZTZmMDIyZTNkNjY1MjNiYWM0Njk4Li4xNmE1MjMwMGI5
YWU5MjQ5NjVlMmRhMjhkYThiYmU3MjIwZjIzMjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKQEAgLTI4Miw2ICsyODIsNyBAQAog
ICAgIG1hY3JvKEFycmF5KSBcCiAgICAgbWFjcm8oU3RyaW5nKSBcCiAgICAgbWFjcm8oUHJvbWlz
ZSkgXAorICAgIG1hY3JvKEludGVybmFsUHJvbWlzZSkgXAogICAgIG1hY3JvKGFicykgXAogICAg
IG1hY3JvKGZsb29yKSBcCiAgICAgbWFjcm8oaXNGaW5pdGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBlMGMzZmFkZmM0ZjNi
NTJkZDZiYTcxYjc4ODZkOGVjNjA4ZDQ0MTdlLi5lMjg1ZjY2ZGYzNDI1NzQ2ODdlOGJhZmU5NjU1
ZWEwOTExNGQ4Njg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwCkBAIC03Niw2ICs3Niw5IEBACiAjaW5jbHVkZSAiSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQ
cm90b3R5cGVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIK
KyNpbmNsdWRlICJKU0ludGVybmFsUHJvbWlzZS5oIgorI2luY2x1ZGUgIkpTSW50ZXJuYWxQcm9t
aXNlQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJKU0ludGVybmFsUHJvbWlzZVByb3RvdHlwZS5o
IgogI2luY2x1ZGUgIkpTSm9iLmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIK
ICNpbmNsdWRlICJKU0xvY2suaCIKQEAgLTI3Miw3ICsyNzUsNyBAQCB2b2lkIEpTR2xvYmFsT2Jq
ZWN0Ojppbml0KFZNJiB2bSkKICAgICBtX2FwcGx5RnVuY3Rpb24uc2V0KHZtLCB0aGlzLCBhcHBs
eUZ1bmN0aW9uKTsKICAgICBtX2FycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbi5zZXQodm0sIHRoaXMs
IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgdm0ucHJvcGVydHlOYW1lcy0+dmFsdWVz
LnN0cmluZygpLCBhcnJheVByb3RvRnVuY1ZhbHVlcykpOwogICAgIG1faW5pdGlhbGl6ZVByb21p
c2VGdW5jdGlvbi5zZXQodm0sIHRoaXMsIEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlv
bih2bSwgb3BlcmF0aW9uc1Byb21pc2VJbml0aWFsaXplUHJvbWlzZUNvZGVHZW5lcmF0b3Iodm0p
LCB0aGlzKSk7Ci0gICAgbV9uZXdQcm9taXNlRGVmZXJyZWRGdW5jdGlvbi5zZXQodm0sIHRoaXMs
IEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2bSwgb3BlcmF0aW9uc1Byb21pc2VO
ZXdQcm9taXNlRGVmZXJyZWRDb2RlR2VuZXJhdG9yKHZtKSwgdGhpcykpOworICAgIG1fbmV3UHJv
bWlzZUNhcGFiaWxpdHlGdW5jdGlvbi5zZXQodm0sIHRoaXMsIEpTRnVuY3Rpb246OmNyZWF0ZUJ1
aWx0aW5GdW5jdGlvbih2bSwgb3BlcmF0aW9uc1Byb21pc2VOZXdQcm9taXNlQ2FwYWJpbGl0eUNv
ZGVHZW5lcmF0b3Iodm0pLCB0aGlzKSk7CiAgICAgbV9udWxsR2V0dGVyRnVuY3Rpb24uc2V0KHZt
LCB0aGlzLCBOdWxsR2V0dGVyRnVuY3Rpb246OmNyZWF0ZSh2bSwgTnVsbEdldHRlckZ1bmN0aW9u
OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpKSk7
CiAgICAgbV9udWxsU2V0dGVyRnVuY3Rpb24uc2V0KHZtLCB0aGlzLCBOdWxsU2V0dGVyRnVuY3Rp
b246OmNyZWF0ZSh2bSwgTnVsbFNldHRlckZ1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRo
aXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpKSk7CiAgICAgbV9vYmplY3RQcm90b3R5cGUu
c2V0KHZtLCB0aGlzLCBPYmplY3RQcm90b3R5cGU6OmNyZWF0ZSh2bSwgdGhpcywgT2JqZWN0UHJv
dG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIGpzTnVsbCgpKSkpOwpAQCAtMzg3LDYg
KzM5MCw4IEBAIG1fICMjIGxvd2VyTmFtZSAjIyBQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jCiAjdW5kZWYgQ1JFQVRFX0NPTlNUUlVD
VE9SX0ZPUl9TSU1QTEVfVFlQRQogICAgIAogICAgIG1fZXJyb3JDb25zdHJ1Y3Rvci5zZXQodm0s
IHRoaXMsIGVycm9yQ29uc3RydWN0b3IpOworICAgIG1fcHJvbWlzZUNvbnN0cnVjdG9yLnNldCh2
bSwgdGhpcywgcHJvbWlzZUNvbnN0cnVjdG9yKTsKKyAgICBtX2ludGVybmFsUHJvbWlzZUNvbnN0
cnVjdG9yLnNldCh2bSwgdGhpcywgaW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IpOwogICAgIAog
ICAgIFN0cnVjdHVyZSogbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUgPSBOYXRpdmVFcnJv
clByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Vycm9yUHJvdG90eXBlLmdl
dCgpKTsKICAgICBTdHJ1Y3R1cmUqIG5hdGl2ZUVycm9yU3RydWN0dXJlID0gTmF0aXZlRXJyb3JD
b25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBl
LmdldCgpKTsKQEAgLTQ4OCw2ICs0OTMsNyBAQCBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgdm0ucHJvcGVydHlOYW1lcy0+IGpzTmFtZSwgbG93ZXJOYW1lICMjIENvbnN0cnVjdAogICAg
ICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YXJyYXlJdGVyYXRpb25L
aW5kS2V5VmFsdWVQcml2YXRlTmFtZSwganNOdW1iZXIoQXJyYXlJdGVyYXRlS2V5VmFsdWUpLCBE
b250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5
SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5zeW1ib2xJdGVyYXRvclByaXZh
dGVOYW1lKCksIFN5bWJvbDo6Y3JlYXRlKHZtLCBzdGF0aWNfY2FzdDxTeW1ib2xJbXBsJj4oKnZt
LnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLmltcGwoKSkpLCBEb250RW51bSB8IERvbnRE
ZWxldGUgfCBSZWFkT25seSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0
eU5hbWVzLT5Qcm9taXNlUHJpdmF0ZU5hbWUsIHByb21pc2VDb25zdHJ1Y3RvciwgRG9udEVudW0g
fCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0u
cHJvcGVydHlOYW1lcy0+SW50ZXJuYWxQcm9taXNlUHJpdmF0ZU5hbWUsIGludGVybmFsUHJvbWlz
ZUNvbnN0cnVjdG9yLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCiAgICAgICAg
IEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5wcm9taXNlUGVuZGluZ1ByaXZh
dGVOYW1lLCBqc051bWJlcihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNQcm9taXNlOjpTdGF0dXM6
OlBlbmRpbmcpKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBH
bG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucHJvbWlz
ZUZ1bGZpbGxlZFByaXZhdGVOYW1lKCksIGpzTnVtYmVyKHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U1Byb21pc2U6OlN0YXR1czo6RnVsZmlsbGVkKSksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJl
YWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1
aWx0aW5OYW1lcygpLnByb21pc2VSZWplY3RlZFByaXZhdGVOYW1lKCksIGpzTnVtYmVyKHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU1Byb21pc2U6OlN0YXR1czo6UmVqZWN0ZWQpKSwgRG9udEVudW0g
fCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLApAQCAtNDk2LDE0ICs1MDIsMTMgQEAgcHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPiBqc05hbWUsIGxvd2VyTmFt
ZSAjIyBDb25zdHJ1Y3QKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLmlzT2JqZWN0UHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3Jl
YXRlQnVpbHRpbkZ1bmN0aW9uKHZtLCBnbG9iYWxPYmplY3RJc09iamVjdENvZGVHZW5lcmF0b3Io
dm0pLCB0aGlzKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBH
bG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaXNQcm9t
aXNlUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHZtLCBv
cGVyYXRpb25zUHJvbWlzZUlzUHJvbWlzZUNvZGVHZW5lcmF0b3Iodm0pLCB0aGlzKSwgRG9udEVu
dW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8o
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkubmV3UHJvbWlzZVJlYWN0aW9uUHJpdmF0
ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHZtLCBvcGVyYXRpb25z
UHJvbWlzZU5ld1Byb21pc2VSZWFjdGlvbkNvZGVHZW5lcmF0b3Iodm0pLCB0aGlzKSwgRG9udEVu
dW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8o
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkubmV3UHJvbWlzZUNhcGFiaWxpdHlQcml2
YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24odm0sIG9wZXJhdGlv
bnNQcm9taXNlTmV3UHJvbWlzZUNhcGFiaWxpdHlDb2RlR2VuZXJhdG9yKHZtKSwgdGhpcyksIERv
bnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJ
bmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLm5ld1Byb21pc2VDYXBhYmlsaXR5
UHJpdmF0ZU5hbWUoKSwgbV9uZXdQcm9taXNlQ2FwYWJpbGl0eUZ1bmN0aW9uLmdldCgpLCBEb250
RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5m
byh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS50cmlnZ2VyUHJvbWlzZVJlYWN0aW9u
c1ByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2bSwgb3Bl
cmF0aW9uc1Byb21pc2VUcmlnZ2VyUHJvbWlzZVJlYWN0aW9uc0NvZGVHZW5lcmF0b3Iodm0pLCB0
aGlzKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQ
cm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucmVqZWN0UHJvbWlz
ZVByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2bSwgb3Bl
cmF0aW9uc1Byb21pc2VSZWplY3RQcm9taXNlQ29kZUdlbmVyYXRvcih2bSksIHRoaXMpLCBEb250
RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5m
byh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5mdWxmaWxsUHJvbWlzZVByaXZhdGVO
YW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2bSwgb3BlcmF0aW9uc1By
b21pc2VGdWxmaWxsUHJvbWlzZUNvZGVHZW5lcmF0b3Iodm0pLCB0aGlzKSwgRG9udEVudW0gfCBE
b250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJv
cGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuY3JlYXRlUmVzb2x2aW5nRnVuY3Rpb25zUHJpdmF0
ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHZtLCBvcGVyYXRpb25z
UHJvbWlzZUNyZWF0ZVJlc29sdmluZ0Z1bmN0aW9uc0NvZGVHZW5lcmF0b3Iodm0pLCB0aGlzKSwg
RG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0
eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucHJvbWlzZVJlYWN0aW9uSm9i
UHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHZtLCBvcGVy
YXRpb25zUHJvbWlzZVByb21pc2VSZWFjdGlvbkpvYkNvZGVHZW5lcmF0b3Iodm0pLCB0aGlzKSwg
RG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0
eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucHJvbWlzZVJlc29sdmVUaGVu
YWJsZUpvYlByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2
bSwgb3BlcmF0aW9uc1Byb21pc2VQcm9taXNlUmVzb2x2ZVRoZW5hYmxlSm9iQ29kZUdlbmVyYXRv
cih2bSksIHRoaXMpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCi0gICAgICAg
IEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5uZXdQ
cm9taXNlRGVmZXJyZWRQcml2YXRlTmFtZSgpLCBtX25ld1Byb21pc2VEZWZlcnJlZEZ1bmN0aW9u
LmdldCgpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCiAgICAgICAgIEdsb2Jh
bFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25Qcml2YXRlTmFtZSgpLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmpl
Y3Q6OmNyZWF0ZSh2bSwgdGhpcywgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0OjpjcmVh
dGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSksIERvbnRFbnVt
IHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKICAgICB9OwogICAgIGFkZFN0YXRpY0dsb2JhbHMo
c3RhdGljR2xvYmFscywgV1RGX0FSUkFZX0xFTkdUSChzdGF0aWNHbG9iYWxzKSk7CkBAIC03NDcs
NiArNzUyLDggQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNl
bGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0
LT5tX3R5cGVFcnJvckNvbnN0cnVjdG9yKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9VUklFcnJvckNvbnN0cnVjdG9yKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9vYmplY3RDb25zdHJ1Y3Rvcik7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3Qt
Pm1fcHJvbWlzZUNvbnN0cnVjdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bV9pbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvcik7CiAKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhp
c09iamVjdC0+bV9udWxsR2V0dGVyRnVuY3Rpb24pOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlz
T2JqZWN0LT5tX251bGxTZXR0ZXJGdW5jdGlvbik7CkBAIC03NTgsNyArNzY1LDcgQEAgdm9pZCBK
U0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2
aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2RlZmluZVByb3BlcnR5
RnVuY3Rpb24pOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2FycmF5UHJvdG9W
YWx1ZXNGdW5jdGlvbik7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1faW5pdGlh
bGl6ZVByb21pc2VGdW5jdGlvbik7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
bmV3UHJvbWlzZURlZmVycmVkRnVuY3Rpb24pOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2Jq
ZWN0LT5tX25ld1Byb21pc2VDYXBhYmlsaXR5RnVuY3Rpb24pOwogICAgIHZpc2l0b3IuYXBwZW5k
KCZ0aGlzT2JqZWN0LT5tX3Rocm93VHlwZUVycm9yR2V0dGVyU2V0dGVyKTsKIAogICAgIHZpc2l0
b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX29iamVjdFByb3RvdHlwZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCBhNmNkYzMyMmQxY2M5
MDIwZjkxNjhjN2RlNjg1ZWQxZjU2ZTE0NjM1Li42ZGIzMDNhZWMwNzA2NmZhMmExNWVkYWZhY2M1
MTgzOWNhYTBjNzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmgKQEAgLTExNiw2ICsxMTYsNyBAQCBzdHJ1Y3QgSGFzaFRhYmxlOwogCiAjZGVm
aW5lIEZPUl9FQUNIX1NJTVBMRV9CVUlMVElOX1RZUEUobWFjcm8pIFwKICAgICBGT1JfRUFDSF9T
SU1QTEVfQlVJTFRJTl9UWVBFX1dJVEhfQ09OU1RSVUNUT1IobWFjcm8pIFwKKyAgICBtYWNybyhK
U0ludGVybmFsUHJvbWlzZSwgaW50ZXJuYWxQcm9taXNlLCBpbnRlcm5hbFByb21pc2UsIEpTSW50
ZXJuYWxQcm9taXNlLCBJbnRlcm5hbFByb21pc2UpIFwKIAogI2RlZmluZSBERUNMQVJFX1NJTVBM
RV9CVUlMVElOX1RZUEUoY2FwaXRhbE5hbWUsIGxvd2VyTmFtZSwgcHJvcGVyTmFtZSwgaW5zdGFu
Y2VUeXBlLCBqc05hbWUpIFwKICAgICBjbGFzcyBKUyAjIyBjYXBpdGFsTmFtZTsgXApAQCAtMTg1
LDYgKzE4Niw4IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFy
aWFibGVPYmplY3QgewogICAgIFdyaXRlQmFycmllcjxOYXRpdmVFcnJvckNvbnN0cnVjdG9yPiBt
X3R5cGVFcnJvckNvbnN0cnVjdG9yOwogICAgIFdyaXRlQmFycmllcjxOYXRpdmVFcnJvckNvbnN0
cnVjdG9yPiBtX1VSSUVycm9yQ29uc3RydWN0b3I7CiAgICAgV3JpdGVCYXJyaWVyPE9iamVjdENv
bnN0cnVjdG9yPiBtX29iamVjdENvbnN0cnVjdG9yOworICAgIFdyaXRlQmFycmllcjxKU1Byb21p
c2VDb25zdHJ1Y3Rvcj4gbV9wcm9taXNlQ29uc3RydWN0b3I7CisgICAgV3JpdGVCYXJyaWVyPEpT
SW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3I+IG1faW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3I7
CiAKICAgICBXcml0ZUJhcnJpZXI8TnVsbEdldHRlckZ1bmN0aW9uPiBtX251bGxHZXR0ZXJGdW5j
dGlvbjsKICAgICBXcml0ZUJhcnJpZXI8TnVsbFNldHRlckZ1bmN0aW9uPiBtX251bGxTZXR0ZXJG
dW5jdGlvbjsKQEAgLTE5Nyw3ICsyMDAsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1Ymxp
YyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlv
bj4gbV9kZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uOwogICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9u
PiBtX2FycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbjsKICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlv
bj4gbV9pbml0aWFsaXplUHJvbWlzZUZ1bmN0aW9uOwotICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0
aW9uPiBtX25ld1Byb21pc2VEZWZlcnJlZEZ1bmN0aW9uOworICAgIFdyaXRlQmFycmllcjxKU0Z1
bmN0aW9uPiBtX25ld1Byb21pc2VDYXBhYmlsaXR5RnVuY3Rpb247CiAgICAgV3JpdGVCYXJyaWVy
PEdldHRlclNldHRlcj4gbV90aHJvd1R5cGVFcnJvckdldHRlclNldHRlcjsKIAogICAgIFdyaXRl
QmFycmllcjxPYmplY3RQcm90b3R5cGU+IG1fb2JqZWN0UHJvdG90eXBlOwpAQCAtMzc5LDYgKzM4
Miw4IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVP
YmplY3QgewogCiAgICAgRXJyb3JDb25zdHJ1Y3RvciogZXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0
IHsgcmV0dXJuIG1fZXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQogICAgIE9iamVjdENvbnN0cnVj
dG9yKiBvYmplY3RDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0Q29uc3RydWN0
b3IuZ2V0KCk7IH0KKyAgICBKU1Byb21pc2VDb25zdHJ1Y3RvciogcHJvbWlzZUNvbnN0cnVjdG9y
KCkgY29uc3QgeyByZXR1cm4gbV9wcm9taXNlQ29uc3RydWN0b3IuZ2V0KCk7IH0KKyAgICBKU0lu
dGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yKiBpbnRlcm5hbFByb21pc2VDb25zdHJ1Y3RvcigpIGNv
bnN0IHsgcmV0dXJuIG1faW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuZ2V0KCk7IH0KICAgICBO
YXRpdmVFcnJvckNvbnN0cnVjdG9yKiBldmFsRXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0
dXJuIG1fZXZhbEVycm9yQ29uc3RydWN0b3IuZ2V0KCk7IH0KICAgICBOYXRpdmVFcnJvckNvbnN0
cnVjdG9yKiByYW5nZUVycm9yQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3JhbmdlRXJy
b3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQogICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIHJlZmVy
ZW5jZUVycm9yQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3JlZmVyZW5jZUVycm9yQ29u
c3RydWN0b3IuZ2V0KCk7IH0KQEAgLTM5Nyw3ICs0MDIsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVj
dCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBKU0Z1bmN0aW9uKiBk
ZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kZWZpbmVQcm9wZXJ0eUZ1
bmN0aW9uLmdldCgpOyB9CiAgICAgSlNGdW5jdGlvbiogYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9hcnJheVByb3RvVmFsdWVzRnVuY3Rpb24uZ2V0KCk7IH0KICAg
ICBKU0Z1bmN0aW9uKiBpbml0aWFsaXplUHJvbWlzZUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9pbml0aWFsaXplUHJvbWlzZUZ1bmN0aW9uLmdldCgpOyB9Ci0gICAgSlNGdW5jdGlvbiogbmV3
UHJvbWlzZURlZmVycmVkRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX25ld1Byb21pc2VEZWZl
cnJlZEZ1bmN0aW9uLmdldCgpOyB9CisgICAgSlNGdW5jdGlvbiogbmV3UHJvbWlzZUNhcGFiaWxp
dHlGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbmV3UHJvbWlzZUNhcGFiaWxpdHlGdW5jdGlv
bi5nZXQoKTsgfQogICAgIEdldHRlclNldHRlciogdGhyb3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXIo
Vk0mIHZtKQogICAgIHsKICAgICAgICAgaWYgKCFtX3Rocm93VHlwZUVycm9yR2V0dGVyU2V0dGVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbnRlcm5hbFBy
b21pc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbnRlcm5hbFByb21p
c2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjQyMjRkMmY0ZWQ4NjMyNGEwZGQyZWRjOGZkNWQwYTA2Y2ViMDcy
YzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0lu
dGVybmFsUHJvbWlzZS5jcHAKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0ludGVybmFsUHJvbWlzZS5oIgorCisjaW5jbHVkZSAi
SlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVk
ZSAiU3RydWN0dXJlSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJ
bmZvIEpTSW50ZXJuYWxQcm9taXNlOjpzX2luZm8gPSB7ICJJbnRlcm5hbFByb21pc2UiLCAmQmFz
ZTo6c19pbmZvLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTSW50ZXJuYWxQcm9taXNl
KSB9OworCitKU0ludGVybmFsUHJvbWlzZSogSlNJbnRlcm5hbFByb21pc2U6OmNyZWF0ZShWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIEpTSW50ZXJuYWxQcm9taXNlKiBwcm9t
aXNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNJbnRlcm5hbFByb21pc2U+KHZtLmhl
YXApKSBKU0ludGVybmFsUHJvbWlzZSh2bSwgc3RydWN0dXJlKTsKKyAgICBwcm9taXNlLT5maW5p
c2hDcmVhdGlvbih2bSk7CisgICAgcmV0dXJuIHByb21pc2U7Cit9CisKK1N0cnVjdHVyZSogSlNJ
bnRlcm5hbFByb21pc2U6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUs
IFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworSlNJbnRlcm5hbFByb21pc2U6OkpTSW50
ZXJuYWxQcm9taXNlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZt
LCBzdHJ1Y3R1cmUpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbnRlcm5hbFByb21pc2UuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW50ZXJuYWxQcm9taXNlLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTkz
NmFlZWU0ZjAwNzIyMjUwNzc0MTRkYWY0YTQ1YzY2MDA5MjBkNgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW50ZXJuYWxQcm9taXNlLmgKQEAgLTAs
MCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSlNJbnRlcm5hbFByb21pc2VfaAorI2Rl
ZmluZSBKU0ludGVybmFsUHJvbWlzZV9oCisKKyNpbmNsdWRlICJKU1Byb21pc2UuaCIKKworbmFt
ZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpTSW50ZXJuYWxQcm9taXNlIDogcHVibGljIEpTUHJvbWlz
ZSB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU1Byb21pc2UgQmFzZTsKKworICAgIHN0YXRpYyBK
U0ludGVybmFsUHJvbWlzZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIFN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsK
KworICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CisKK3ByaXZhdGU6CisgICAgSlNJbnRlcm5hbFBy
b21pc2UoVk0mLCBTdHJ1Y3R1cmUqKTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5k
aWYgLy8gSlNJbnRlcm5hbFByb21pc2VfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43YWJjMjQzNzQ2YzZkMTU2YWM3YjY0ZTI5YzAwZmU5Nzg0YmZlNGZiCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbnRlcm5hbFByb21p
c2VDb25zdHJ1Y3Rvci5jcHAKQEAgLTAsMCArMSw5NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmgiCisK
KyNpbmNsdWRlICJKU0NCdWlsdGlucy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgi
CisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTSW50ZXJuYWxQcm9taXNl
LmgiCisjaW5jbHVkZSAiSlNJbnRlcm5hbFByb21pc2VQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJT
dHJ1Y3R1cmVJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitTVEFUSUNfQVNTRVJUX0lT
X1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvcik7CisK
K30KKworI2luY2x1ZGUgIkpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IubHV0LmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1
Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCAmaW50ZXJuYWxQcm9t
aXNlQ29uc3RydWN0b3JUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0ludGVybmFsUHJvbWlz
ZUNvbnN0cnVjdG9yKSB9OworCisvKiBTb3VyY2UgZm9yIEpTSW50ZXJuYWxQcm9taXNlQ29uc3Ry
dWN0b3IubHV0LmgKK0BiZWdpbiBpbnRlcm5hbFByb21pc2VDb25zdHJ1Y3RvclRhYmxlCisgIGlu
dGVybmFsQWxsICBKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yRnVuY0ludGVybmFsQWxsIERv
bnRFbnVtfEZ1bmN0aW9uIDEKK0BlbmQKKyovCisKK0pTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0
b3IqIEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBKU0ludGVybmFsUHJvbWlzZVByb3RvdHlwZSogcHJvbWlzZVByb3RvdHlw
ZSkKK3sKKyAgICBKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3I+KHZt
LmhlYXApKSBKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAg
IGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgcHJvbWlzZVByb3RvdHlwZSk7CisgICAg
cmV0dXJuIGNvbnN0cnVjdG9yOworfQorCitTdHJ1Y3R1cmUqIEpTSW50ZXJuYWxQcm9taXNlQ29u
c3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVj
dHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvcjo6
SlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
KQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQoreworfQorCitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RQcm9taXNlKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+Y2FsbGVlKCktPmdsb2JhbE9i
amVjdCgpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgSlNJbnRlcm5hbFByb21pc2Uq
IHByb21pc2UgPSBKU0ludGVybmFsUHJvbWlzZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmlu
dGVybmFsUHJvbWlzZVN0cnVjdHVyZSgpKTsKKyAgICBwcm9taXNlLT5pbml0aWFsaXplKGV4ZWMs
IGdsb2JhbE9iamVjdCwgZXhlYy0+YXJndW1lbnQoMCkpOworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUocHJvbWlzZSk7Cit9CisKK0NvbnN0cnVjdFR5cGUgSlNJbnRlcm5hbFByb21pc2VDb25z
dHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1
Y3REYXRhKQoreworICAgIGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0
UHJvbWlzZTsKKyAgICByZXR1cm4gQ29uc3RydWN0VHlwZUhvc3Q7Cit9CisKK0NhbGxUeXBlIEpT
SW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3I6OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRh
JiBjYWxsRGF0YSkKK3sKKyAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3RQ
cm9taXNlOworICAgIHJldHVybiBDYWxsVHlwZUhvc3Q7Cit9CisKK2Jvb2wgSlNJbnRlcm5hbFBy
b21pc2VDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBz
bG90KQoreworICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8QmFzZT4oZXhlYywgaW50
ZXJuYWxQcm9taXNlQ29uc3RydWN0b3JUYWJsZSwganNDYXN0PEpTSW50ZXJuYWxQcm9taXNlQ29u
c3RydWN0b3IqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworfQorCit9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW50
ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41OTkzNDM3OTY4ODM4
MDkzN2VhMDg0ZWE0YzZkMGRlMGQ5YWQzYWY1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5oCkBAIC0w
LDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEpTSW50ZXJuYWxQcm9taXNlQ29uc3Ry
dWN0b3JfaAorI2RlZmluZSBKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yX2gKKworI2luY2x1
ZGUgIkpTUHJvbWlzZUNvbnN0cnVjdG9yLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBK
U0ludGVybmFsUHJvbWlzZTsKK2NsYXNzIEpTSW50ZXJuYWxQcm9taXNlUHJvdG90eXBlOworCitj
bGFzcyBKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yIDogcHVibGljIEpTUHJvbWlzZUNvbnN0
cnVjdG9yIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTUHJvbWlzZUNvbnN0cnVjdG9yIEJhc2U7
CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0
dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7CisKKyAgICBzdGF0aWMgSlNJ
bnRlcm5hbFByb21pc2VDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgSlNJbnRl
cm5hbFByb21pc2VQcm90b3R5cGUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZP
OworCitwcml2YXRlOgorICAgIEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IoVk0mLCBTdHJ1
Y3R1cmUqKTsKKyAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2Vs
bCosIENvbnN0cnVjdERhdGEmKTsKKyAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlND
ZWxsKiwgQ2FsbERhdGEmKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVj
dG9yX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW50ZXJu
YWxQcm9taXNlRGVmZXJyZWQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJ
bnRlcm5hbFByb21pc2VEZWZlcnJlZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWY4OGYxOTU5MWZlNGU2Zjcy
ODJhZWNjMTRhOGI4ODNkMTIwNTI3NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQuY3BwCkBAIC0wLDAgKzEs
NjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNJbnRl
cm5hbFByb21pc2VEZWZlcnJlZC5oIgorCisjaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCisjaW5j
bHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJFeGNlcHRpb24uaCIKKyNpbmNsdWRlICJKU0NKU1Zh
bHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJKU0lu
dGVybmFsUHJvbWlzZS5oIgorI2luY2x1ZGUgIkpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3Iu
aCIKKyNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJ
bmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSlNJbnRlcm5h
bFByb21pc2VEZWZlcnJlZDo6c19pbmZvID0geyAiSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZCIs
IG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNJbnRlcm5hbFByb21pc2VE
ZWZlcnJlZCkgfTsKKworSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZCogSlNJbnRlcm5hbFByb21p
c2VEZWZlcnJlZDo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworCisgICAgSlNWYWx1ZSBkZWZl
cnJlZCA9IG5ld1Byb21pc2VDYXBhYmlsaXR5KGV4ZWMsIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2Jq
ZWN0LT5pbnRlcm5hbFByb21pc2VDb25zdHJ1Y3RvcigpKTsKKworICAgIEpTVmFsdWUgcHJvbWlz
ZSA9IGRlZmVycmVkLmdldChleGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm9taXNlUHJpdmF0ZU5h
bWUpOworICAgIEFTU0VSVChwcm9taXNlLmluaGVyaXRzKEpTSW50ZXJuYWxQcm9taXNlOjppbmZv
KCkpKTsKKyAgICBKU1ZhbHVlIHJlc29sdmUgPSBkZWZlcnJlZC5nZXQoZXhlYywgdm0ucHJvcGVy
dHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucmVzb2x2ZVByaXZhdGVOYW1lKCkpOworICAgIEpTVmFs
dWUgcmVqZWN0ID0gZGVmZXJyZWQuZ2V0KGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLnJlamVjdFByaXZhdGVOYW1lKCkpOworCisgICAgSlNJbnRlcm5hbFByb21pc2VEZWZl
cnJlZCogcmVzdWx0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNJbnRlcm5hbFByb21p
c2VEZWZlcnJlZD4odm0uaGVhcCkpIEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQodm0pOworICAg
IHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0sIGpzQ2FzdDxKU09iamVjdCo+KHByb21pc2UpLCBy
ZXNvbHZlLCByZWplY3QpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0pTSW50ZXJuYWxQcm9t
aXNlRGVmZXJyZWQ6OkpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQoVk0mIHZtKQorICAgIDogQmFz
ZSh2bSwgdm0uaW50ZXJuYWxQcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmUuZ2V0KCkpCit7Cit9CisK
K0pTSW50ZXJuYWxQcm9taXNlKiBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkOjpwcm9taXNlKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4ganNDYXN0PEpTSW50ZXJuYWxQcm9taXNlKj4oQmFzZTo6cHJv
bWlzZSgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0ludGVybmFsUHJvbWlzZURlZmVycmVkLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ludGVybmFsUHJvbWlzZURlZmVycmVkLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZGVmMmI1NWQ5ZjAzZTM1MTkzNjg4MzQ4ZWY2MmU3YzIxNDBhYTg0YwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW50ZXJuYWxQcm9taXNl
RGVmZXJyZWQuaApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBKU0ludGVy
bmFsUHJvbWlzZURlZmVycmVkX2gKKyNkZWZpbmUgSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZF9o
CisKKyNpbmNsdWRlICJKU1Byb21pc2VEZWZlcnJlZC5oIgorCituYW1lc3BhY2UgSlNDIHsKKwor
Y2xhc3MgSlNJbnRlcm5hbFByb21pc2U7CisKK2NsYXNzIEpTSW50ZXJuYWxQcm9taXNlRGVmZXJy
ZWQgZmluYWwgOiBwdWJsaWMgSlNQcm9taXNlRGVmZXJyZWQgeworcHVibGljOgorICAgIHR5cGVk
ZWYgSlNQcm9taXNlRGVmZXJyZWQgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3Ry
dWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7
CisKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNJbnRlcm5hbFByb21pc2VEZWZlcnJl
ZCogY3JlYXRlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0Kik7CisKKyAgICBzdGF0aWMgU3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKENlbGxUeXBlLCBT
dHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCisgICAgREVDTEFSRV9FWFBPUlRfSU5G
TzsKKworICAgIEpTSW50ZXJuYWxQcm9taXNlKiBwcm9taXNlKCkgY29uc3Q7CisKK3ByaXZhdGU6
CisgICAgSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZChWTSYpOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCisKKyNlbmRpZiAvLyBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW50ZXJuYWxQcm9taXNlUHJvdG90
eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW50ZXJuYWxQcm9taXNl
UHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lY2VkZmFmZjNkZmNhNDZjMzU5NDg1ZDA1MzlhYWYz
ODg5ZDVhOTRkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNJbnRlcm5hbFByb21pc2VQcm90b3R5cGUuY3BwCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNJbnRlcm5hbFByb21pc2VQ
cm90b3R5cGUuaCIKKworI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSlNDQnVpbHRpbnMu
aCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGlu
ZXMuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkpTSW50ZXJuYWxQ
cm9taXNlLmgiCisjaW5jbHVkZSAiTWljcm90YXNrLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlSW5s
aW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlf
REVTVFJVQ1RJQkxFKEpTSW50ZXJuYWxQcm9taXNlUHJvdG90eXBlKTsKKworY29uc3QgQ2xhc3NJ
bmZvIEpTSW50ZXJuYWxQcm9taXNlUHJvdG90eXBlOjpzX2luZm8gPSB7ICJJbnRlcm5hbFByb21p
c2VQcm90b3R5cGUiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxF
KEpTSW50ZXJuYWxQcm9taXNlUHJvdG90eXBlKSB9OworCitKU0ludGVybmFsUHJvbWlzZVByb3Rv
dHlwZSogSlNJbnRlcm5hbFByb21pc2VQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgSlNJbnRlcm5hbFByb21pc2VQ
cm90b3R5cGUqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTSW50ZXJuYWxQ
cm9taXNlUHJvdG90eXBlPih2bS5oZWFwKSkgSlNJbnRlcm5hbFByb21pc2VQcm90b3R5cGUodm0s
IHN0cnVjdHVyZSk7CisgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSwgc3RydWN0dXJlKTsK
KyAgICByZXR1cm4gb2JqZWN0OworfQorCitTdHJ1Y3R1cmUqIEpTSW50ZXJuYWxQcm9taXNlUHJv
dG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1
cmVGbGFncyksIGluZm8oKSk7Cit9CisKK0pTSW50ZXJuYWxQcm9taXNlUHJvdG90eXBlOjpKU0lu
dGVybmFsUHJvbWlzZVByb3RvdHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAg
IDogQmFzZSh2bSwgc3RydWN0dXJlKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW50ZXJuYWxQcm9taXNlUHJv
dG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ludGVybmFsUHJvbWlz
ZVByb3RvdHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVkMzZlOWU4NTU4MzNkODQ0YjM5MGM5Y2MzZjlkY2Jj
OGM5OTJlNWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0ludGVybmFsUHJvbWlzZVByb3RvdHlwZS5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIEpTSW50ZXJuYWxQcm9taXNlUHJvdG90eXBlX2gKKyNkZWZpbmUgSlNJbnRl
cm5hbFByb21pc2VQcm90b3R5cGVfaAorCisjaW5jbHVkZSAiSlNQcm9taXNlUHJvdG90eXBlLmgi
CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBKU0ludGVybmFsUHJvbWlzZVByb3RvdHlwZSA6
IHB1YmxpYyBKU1Byb21pc2VQcm90b3R5cGUgeworcHVibGljOgorICAgIHR5cGVkZWYgSlNQcm9t
aXNlUHJvdG90eXBlIEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7CisKKyAgICBzdGF0aWMgSlNJbnRlcm5hbFByb21p
c2VQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7Cisg
ICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3Qq
LCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworcHJpdmF0ZToKKyAgICBKU0ludGVy
bmFsUHJvbWlzZVByb3RvdHlwZShWTSYsIFN0cnVjdHVyZSopOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCisKKyNlbmRpZiAvLyBKU0ludGVybmFsUHJvbWlzZVByb3RvdHlwZV9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2UuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlLmNwcAppbmRleCAyNTMxOTc2YjU1ZjI0
MDQzNzNmZjg3MzI3MWRjZDcwMjJmNzRiOGVhLi4yMmY0MGYwMjk5Nzg3OWJlODBkYjQ2YzliNGIx
NThmMTU3MzAxZjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1Byb21pc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlz
ZS5jcHAKQEAgLTM4LDkgKzM4LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNvbnN0IENsYXNzSW5m
byBKU1Byb21pc2U6OnNfaW5mbyA9IHsgIlByb21pc2UiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKEpTUHJvbWlzZSkgfTsKIAotSlNQcm9taXNlKiBKU1Byb21pc2U6OmNy
ZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCitKU1Byb21pc2UqIEpT
UHJvbWlzZTo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7Ci0gICAgSlNQ
cm9taXNlKiBwcm9taXNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNQcm9taXNlPih2
bS5oZWFwKSkgSlNQcm9taXNlKHZtLCBnbG9iYWxPYmplY3QtPnByb21pc2VTdHJ1Y3R1cmUoKSk7
CisgICAgSlNQcm9taXNlKiBwcm9taXNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNQ
cm9taXNlPih2bS5oZWFwKSkgSlNQcm9taXNlKHZtLCBzdHJ1Y3R1cmUpOwogICAgIHByb21pc2Ut
PmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gcHJvbWlzZTsKIH0KQEAgLTUxLDcgKzUx
LDcgQEAgU3RydWN0dXJlKiBKU1Byb21pc2U6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmEKIH0KIAogSlNQcm9taXNlOjpKU1Byb21pc2Uo
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLSAgICA6IEpTTm9uRmluYWxPYmplY3Qodm0s
IHN0cnVjdHVyZSkKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKIHsKIH0KIApAQCAtNjQsNiAr
NjQsMTggQEAgdm9pZCBKU1Byb21pc2U6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICAgICBwdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb21pc2VSZXN1bHRQcml2YXRlTmFtZSwganNV
bmRlZmluZWQoKSk7CiB9CiAKK3ZvaWQgSlNQcm9taXNlOjppbml0aWFsaXplKEV4ZWNTdGF0ZSog
ZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBleGVjdXRvcikKK3sK
KyAgICBKU0Z1bmN0aW9uKiBpbml0aWFsaXplUHJvbWlzZSA9IGdsb2JhbE9iamVjdC0+aW5pdGlh
bGl6ZVByb21pc2VGdW5jdGlvbigpOworICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAgIENhbGxU
eXBlIGNhbGxUeXBlID0gSlNDOjpnZXRDYWxsRGF0YShpbml0aWFsaXplUHJvbWlzZSwgY2FsbERh
dGEpOworICAgIEFTU0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZU5vbmUpOworCisgICAgTWFya2Vk
QXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOworICAgIGFyZ3VtZW50cy5hcHBlbmQoZXhlY3V0b3Ip
OworICAgIGNhbGwoZXhlYywgaW5pdGlhbGl6ZVByb21pc2UsIGNhbGxUeXBlLCBjYWxsRGF0YSwg
dGhpcywgYXJndW1lbnRzKTsKK30KKwogYXV0byBKU1Byb21pc2U6OnN0YXR1cyhWTSYgdm0pIGNv
bnN0IC0+IFN0YXR1cwogewogICAgIEpTVmFsdWUgdmFsdWUgPSBnZXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPnByb21pc2VTdGF0ZVByaXZhdGVOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNQcm9taXNlLmgKaW5kZXggODhlNGMwNDNlOTk2ZmY1YjhmYmZmOTAzM2Ew
N2M2YjIxODM4MmY5ZS4uOWY2M2EzMWUzMWY3YTMyOWM1NWQyYTQyMmM3NzZiYTExOTA2ZDQxMiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlLmgKQEAgLTM0LDcgKzM0
LDcgQEAgY2xhc3MgSlNQcm9taXNlIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogcHVibGlj
OgogICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOwogCi0gICAgc3RhdGljIEpTUHJv
bWlzZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqKTsKKyAgICBzdGF0aWMgSlNQcm9taXNl
KiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwogCiAgICAgREVDTEFSRV9F
WFBPUlRfSU5GTzsKQEAgLTQ4LDcgKzQ4LDExIEBAIGNsYXNzIEpTUHJvbWlzZSA6IHB1YmxpYyBK
U05vbkZpbmFsT2JqZWN0IHsKICAgICBTdGF0dXMgc3RhdHVzKFZNJikgY29uc3Q7CiAgICAgSlNW
YWx1ZSByZXN1bHQoVk0mKSBjb25zdDsKIAotcHJpdmF0ZToKKyAgICAvLyBJbml0aWFsaXplIHRo
ZSBwcm9taXNlIHdpdGggdGhlIGV4ZWN1dG9yLgorICAgIC8vIFRoaXMgbWF5IHJhaXNlcyB0aGUg
SlMgZXhjZXB0aW9uLgorICAgIHZvaWQgaW5pdGlhbGl6ZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9i
amVjdCosIEpTVmFsdWUgZXhlY3V0b3IpOworCitwcm90ZWN0ZWQ6CiAgICAgSlNQcm9taXNlKFZN
JiwgU3RydWN0dXJlKik7CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9y
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9y
LmNwcAppbmRleCAyNDNiYzUyN2M0NmZmZDVlZGFkMzY0ZDUyMDBmZjhlZjk0NmMyZDg1Li41MzUx
ZjUwZWI1OGVlYWMwOGUxYTZmNzBkMTM0ZWY0MDEzODQ0YThhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwCkBAIC00
OSw3ICs0OSw3IEBAIFNUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShKU1By
b21pc2VDb25zdHJ1Y3Rvcik7CiAKIG5hbWVzcGFjZSBKU0MgewogCi1jb25zdCBDbGFzc0luZm8g
SlNQcm9taXNlQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkludGVybmFsRnVu
Y3Rpb246OnNfaW5mbywgJnByb21pc2VDb25zdHJ1Y3RvclRhYmxlLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKEpTUHJvbWlzZUNvbnN0cnVjdG9yKSB9OworY29uc3QgQ2xhc3NJbmZvIEpTUHJvbWlzZUNv
bnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sICZwcm9taXNl
Q29uc3RydWN0b3JUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Byb21pc2VDb25zdHJ1Y3Rv
cikgfTsKIAogLyogU291cmNlIGZvciBKU1Byb21pc2VDb25zdHJ1Y3Rvci5sdXQuaAogQGJlZ2lu
IHByb21pc2VDb25zdHJ1Y3RvclRhYmxlCkBAIC03Myw3ICs3Myw3IEBAIFN0cnVjdHVyZSogSlNQ
cm9taXNlQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPCiB9CiAKIEpTUHJvbWlzZUNvbnN0cnVjdG9yOjpKU1Byb21pc2VDb25zdHJ1Y3Rv
cihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQotICAgIDogSW50ZXJuYWxGdW5jdGlvbih2
bSwgc3RydWN0dXJlKQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQogewogfQogCkBAIC04Miwy
NCArODIsMTUgQEAgdm9pZCBKU1Byb21pc2VDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0m
IHZtLCBKU1Byb21pc2VQcm90b3R5cGUqIHByb21pc2VQcm8KICAgICBCYXNlOjpmaW5pc2hDcmVh
dGlvbih2bSwgQVNDSUlMaXRlcmFsKCJQcm9taXNlIikpOwogICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHByb21pc2VQcm90b3R5
cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKICAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigxKSwg
UmVhZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOwotICAgIHB1dERpcmVjdEJ1aWx0aW5G
dW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QoKSwgdm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkuYWxsUHJpdmF0ZU5hbWUoKSwgcHJvbWlzZUNvbnN0cnVjdG9y
UHJpdmF0ZUFsbENvZGVHZW5lcmF0b3Iodm0pLCBSZWFkT25seSB8IERvbnRFbnVtIHwgRG9udERl
bGV0ZSk7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVj
dFByb21pc2UoRXhlY1N0YXRlKiBleGVjKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmNhbGxlZSgpLT5nbG9iYWxP
YmplY3QoKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogCi0gICAgSlNQcm9taXNlKiBwcm9t
aXNlID0gSlNQcm9taXNlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCk7Ci0KLSAgICBKU0Z1bmN0
aW9uKiBpbml0aWFsaXplUHJvbWlzZSA9IGdsb2JhbE9iamVjdC0+aW5pdGlhbGl6ZVByb21pc2VG
dW5jdGlvbigpOwotICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxUeXBlIGNhbGxUeXBl
ID0gZ2V0Q2FsbERhdGEoaW5pdGlhbGl6ZVByb21pc2UsIGNhbGxEYXRhKTsKLSAgICBBU1NFUlQo
Y2FsbFR5cGUgIT0gQ2FsbFR5cGVOb25lKTsKLQotICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFy
Z3VtZW50czsKLSAgICBhcmd1bWVudHMuYXBwZW5kKGV4ZWMtPmFyZ3VtZW50KDApKTsKLSAgICBj
YWxsKGV4ZWMsIGluaXRpYWxpemVQcm9taXNlLCBjYWxsVHlwZSwgY2FsbERhdGEsIHByb21pc2Us
IGFyZ3VtZW50cyk7CisgICAgSlNQcm9taXNlKiBwcm9taXNlID0gSlNQcm9taXNlOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdC0+cHJvbWlzZVN0cnVjdHVyZSgpKTsKKyAgICBwcm9taXNlLT5pbml0
aWFsaXplKGV4ZWMsIGdsb2JhbE9iamVjdCwgZXhlYy0+YXJndW1lbnQoMCkpOwogCiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShwcm9taXNlKTsKIH0KQEAgLTExOCw3ICsxMDksNyBAQCBDYWxs
VHlwZSBKU1Byb21pc2VDb25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEm
IGNhbGxEYXRhKQogCiBib29sIEpTUHJvbWlzZUNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7Ci0gICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0
aW9uU2xvdDxJbnRlcm5hbEZ1bmN0aW9uPihleGVjLCBwcm9taXNlQ29uc3RydWN0b3JUYWJsZSwg
anNDYXN0PEpTUHJvbWlzZUNvbnN0cnVjdG9yKj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBzbG90
KTsKKyAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25TbG90PEJhc2U+KGV4ZWMsIHByb21pc2VD
b25zdHJ1Y3RvclRhYmxlLCBqc0Nhc3Q8SlNQcm9taXNlQ29uc3RydWN0b3IqPihvYmplY3QpLCBw
cm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5oCmluZGV4
IDU4ODFlMTYzMGNlODUxNGQxMGRiYjA2ZDdmMDQ0YzMxZmUxZWY3MjEuLmRhZTUyZDNhOGNmNTBi
ZDJkNjI5NzJmMTZiNzI1NjdiZmQwYzM1ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuaApAQCAtNDMsMTQgKzQzLDE1IEBA
IGNsYXNzIEpTUHJvbWlzZUNvbnN0cnVjdG9yIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewog
CiAgICAgREVDTEFSRV9JTkZPOwogCisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKwog
cHJvdGVjdGVkOgorICAgIEpTUHJvbWlzZUNvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7CiAg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTUHJvbWlzZVByb3RvdHlwZSopOwogCiBwcml2
YXRlOgotICAgIEpTUHJvbWlzZUNvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7CiAgICAgc3Rh
dGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRh
Jik7CiAgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7
Ci0gICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlRGVm
ZXJyZWQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlRGVmZXJy
ZWQuY3BwCmluZGV4IDQ5OGZhYWE3MjZkNWJjMTViN2UwMDg2MDVjNmM3NTJkNTkyMDdjMzkuLmJh
NzY5NzM0NDIwY2YzYjNjYzk0ZGNlN2EyZDc5OGNlMzUzZTIyNmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZURlZmVycmVkLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VEZWZlcnJlZC5jcHAKQEAgLTQwLDE3
ICs0MCwyNCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJbmZvIEpTUHJvbWlzZURl
ZmVycmVkOjpzX2luZm8gPSB7ICJKU1Byb21pc2VEZWZlcnJlZCIsIDAsIDAsIENSRUFURV9NRVRI
T0RfVEFCTEUoSlNQcm9taXNlRGVmZXJyZWQpIH07CiAKLUpTUHJvbWlzZURlZmVycmVkKiBKU1By
b21pc2VEZWZlcnJlZDo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkKK0pTVmFsdWUgbmV3UHJvbWlzZUNhcGFiaWxpdHkoRXhlY1N0YXRlKiBleGVj
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Byb21pc2VDb25zdHJ1Y3RvciogcHJv
bWlzZUNvbnN0cnVjdG9yKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0KLSAgICBKU0Z1
bmN0aW9uKiBuZXdQcm9taXNlRGVmZXJyZWRGdW5jdGlvbiA9IGdsb2JhbE9iamVjdC0+bmV3UHJv
bWlzZURlZmVycmVkRnVuY3Rpb24oKTsKKyAgICBKU0Z1bmN0aW9uKiBuZXdQcm9taXNlQ2FwYWJp
bGl0eUZ1bmN0aW9uID0gZ2xvYmFsT2JqZWN0LT5uZXdQcm9taXNlQ2FwYWJpbGl0eUZ1bmN0aW9u
KCk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBKU0M6
OmdldENhbGxEYXRhKG5ld1Byb21pc2VEZWZlcnJlZEZ1bmN0aW9uLCBjYWxsRGF0YSk7CisgICAg
Q2FsbFR5cGUgY2FsbFR5cGUgPSBKU0M6OmdldENhbGxEYXRhKG5ld1Byb21pc2VDYXBhYmlsaXR5
RnVuY3Rpb24sIGNhbGxEYXRhKTsKICAgICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGVOb25l
KTsKIAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKLSAgICBKU1ZhbHVlIGRl
ZmVycmVkID0gY2FsbChleGVjLCBuZXdQcm9taXNlRGVmZXJyZWRGdW5jdGlvbiwgY2FsbFR5cGUs
IGNhbGxEYXRhLCBqc1VuZGVmaW5lZCgpLCBhcmd1bWVudHMpOworICAgIGFyZ3VtZW50cy5hcHBl
bmQocHJvbWlzZUNvbnN0cnVjdG9yKTsKKyAgICByZXR1cm4gY2FsbChleGVjLCBuZXdQcm9taXNl
Q2FwYWJpbGl0eUZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIGpzVW5kZWZpbmVkKCksIGFy
Z3VtZW50cyk7Cit9CisKKworSlNQcm9taXNlRGVmZXJyZWQqIEpTUHJvbWlzZURlZmVycmVkOjpj
cmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorewor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisKKyAgICBKU1ZhbHVlIGRlZmVycmVkID0gbmV3UHJv
bWlzZUNhcGFiaWxpdHkoZXhlYywgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPnByb21pc2VD
b25zdHJ1Y3RvcigpKTsKIAogICAgIEpTVmFsdWUgcHJvbWlzZSA9IGRlZmVycmVkLmdldChleGVj
LCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm9taXNlUHJpdmF0ZU5hbWUpOwogICAgIEFTU0VSVChwcm9t
aXNlLmluaGVyaXRzKEpTUHJvbWlzZTo6aW5mbygpKSk7CkBAIC02OCw3ICs3NSwxMiBAQCBKU1By
b21pc2VEZWZlcnJlZCogSlNQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZShWTSYgdm0sIEpTT2JqZWN0
KiBwcm9taXNlLCBKU1ZhbHVlCiB9CiAKIEpTUHJvbWlzZURlZmVycmVkOjpKU1Byb21pc2VEZWZl
cnJlZChWTSYgdm0pCi0gICAgOiBCYXNlKHZtLCB2bS5wcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmUu
Z2V0KCkpCisgICAgOiBKU1Byb21pc2VEZWZlcnJlZCh2bSwgdm0ucHJvbWlzZURlZmVycmVkU3Ry
dWN0dXJlLmdldCgpKQoreworfQorCitKU1Byb21pc2VEZWZlcnJlZDo6SlNQcm9taXNlRGVmZXJy
ZWQoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVy
ZSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQ
cm9taXNlRGVmZXJyZWQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlz
ZURlZmVycmVkLmgKaW5kZXggNGEwYjRiODU2OGE0N2JkZDlmZTJjMzhmODUwNDc2ZjJkYjkxZGEy
Ny4uZGI3ZGM1NWQ5ZTZlMTEzZTQxNTU1NmQ2Y2QzZTFhMmYwZjFmZGU3NSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlRGVmZXJyZWQuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VEZWZlcnJlZC5oCkBAIC0zMSw3
ICszMSw5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBKU1Byb21pc2VEZWZlcnJlZCBm
aW5hbCA6IHB1YmxpYyBKU0NlbGwgeworY2xhc3MgSlNQcm9taXNlQ29uc3RydWN0b3I7CisKK2Ns
YXNzIEpTUHJvbWlzZURlZmVycmVkIDogcHVibGljIEpTQ2VsbCB7CiBwdWJsaWM6CiAgICAgdHlw
ZWRlZiBKU0NlbGwgQmFzZTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxh
Z3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7CkBAIC01Mywx
NiArNTUsMjEgQEAgY2xhc3MgSlNQcm9taXNlRGVmZXJyZWQgZmluYWwgOiBwdWJsaWMgSlNDZWxs
IHsKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHJlc29sdmUoRXhlY1N0YXRlKiwgSlNWYWx1
ZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCByZWplY3QoRXhlY1N0YXRlKiwgSlNWYWx1
ZSk7CiAKLXByaXZhdGU6Ci0gICAgSlNQcm9taXNlRGVmZXJyZWQoVk0mKTsKK3Byb3RlY3RlZDoK
KyAgICBKU1Byb21pc2VEZWZlcnJlZChWTSYsIFN0cnVjdHVyZSopOwogICAgIHZvaWQgZmluaXNo
Q3JlYXRpb24oVk0mLCBKU09iamVjdCosIEpTVmFsdWUsIEpTVmFsdWUpOwogICAgIHN0YXRpYyB2
b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAorcHJpdmF0ZToKKyAg
ICBKU1Byb21pc2VEZWZlcnJlZChWTSYpOworCiAgICAgV3JpdGVCYXJyaWVyPEpTT2JqZWN0PiBt
X3Byb21pc2U7CiAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+IG1fcmVzb2x2ZTsKICAgICBXcml0
ZUJhcnJpZXI8VW5rbm93bj4gbV9yZWplY3Q7CiB9OwogCitKU1ZhbHVlIG5ld1Byb21pc2VDYXBh
YmlsaXR5KEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgSlNQcm9taXNlQ29uc3RydWN0b3Iq
KTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBKU1Byb21pc2VEZWZlcnJlZF9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VQcm90
b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlUHJvdG90
eXBlLmNwcAppbmRleCAzZGQ0MGI3NWJlYzNjNzczOThhMDljMjdjOTFmYzdjM2M5NWVkYTg0Li4x
ZDMyMzM1ZjNkMDU1ZTA0MDcwN2NkNTE3ODU3MTZiY2RhOTVlYWI0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VQcm90b3R5cGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVByb3RvdHlwZS5jcHAKQEAgLTQ1
LDcgKzQ1LDcgQEAgU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEpTUHJv
bWlzZVByb3RvdHlwZSk7CiAKIG5hbWVzcGFjZSBKU0MgewogCi1jb25zdCBDbGFzc0luZm8gSlNQ
cm9taXNlUHJvdG90eXBlOjpzX2luZm8gPSB7ICJQcm9taXNlUHJvdG90eXBlIiwgJkpTTm9uRmlu
YWxPYmplY3Q6OnNfaW5mbywgJnByb21pc2VQcm90b3R5cGVUYWJsZSwgQ1JFQVRFX01FVEhPRF9U
QUJMRShKU1Byb21pc2VQcm90b3R5cGUpIH07Citjb25zdCBDbGFzc0luZm8gSlNQcm9taXNlUHJv
dG90eXBlOjpzX2luZm8gPSB7ICJQcm9taXNlUHJvdG90eXBlIiwgJkJhc2U6OnNfaW5mbywgJnBy
b21pc2VQcm90b3R5cGVUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Byb21pc2VQcm90b3R5
cGUpIH07CiAKIC8qIFNvdXJjZSBmb3IgSlNQcm9taXNlUHJvdG90eXBlLmx1dC5oCiBAYmVnaW4g
cHJvbWlzZVByb3RvdHlwZVRhYmxlCkBAIC03OCw3ICs3OCw3IEBAIHZvaWQgSlNQcm9taXNlUHJv
dG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFN0cnVjdHVyZSopCiAKIGJvb2wgSlNQcm9t
aXNlUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3Qp
CiB7Ci0gICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxKU09iamVjdD4oZXhlYywgcHJv
bWlzZVByb3RvdHlwZVRhYmxlLCBqc0Nhc3Q8SlNQcm9taXNlUHJvdG90eXBlKj4ob2JqZWN0KSwg
cHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25TbG90PEJh
c2U+KGV4ZWMsIHByb21pc2VQcm90b3R5cGVUYWJsZSwganNDYXN0PEpTUHJvbWlzZVByb3RvdHlw
ZSo+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlUHJv
dG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VQcm90b3R5
cGUuaAppbmRleCA0ZTg3MWM3NTZjYzhlNzU3N2EwNzA0MTE1NjAzZjkzZTg1NTNlMWY3Li5hNjI0
MTkyMmNkM2MwMDEwY2NjOTBmMmY5NTU3MzMwNWRhZDVmM2VhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VQcm90b3R5cGUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VQcm90b3R5cGUuaApAQCAtNDAsMTIgKzQw
LDExIEBAIGNsYXNzIEpTUHJvbWlzZVByb3RvdHlwZSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0
IHsKIAogICAgIERFQ0xBUkVfSU5GTzsKIAorICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5
U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7
CisKIHByb3RlY3RlZDoKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgU3RydWN0dXJlKik7
Ci0KLXByaXZhdGU6CiAgICAgSlNQcm9taXNlUHJvdG90eXBlKFZNJiwgU3RydWN0dXJlKik7Ci0g
ICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDkxN2M1NWZiNDFiNTEwMTgyZTc3
YTYwM2U4MmVhY2YzYWI2N2I2N2YuLjgxMDY0ZTk3MjdlMDkwODkyYTI5MzBkY2JkMDgzZjQ5MGFj
Y2IzMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTU5LDYgKzU5LDcg
QEAKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2lu
Y2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCisjaW5jbHVkZSAiSlNJbnRlcm5hbFBy
b21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCiAjaW5j
bHVkZSAiSlNMb2NrLmgiCiAjaW5jbHVkZSAiSlNOb3RBbk9iamVjdC5oIgpAQCAtMjM3LDYgKzIz
OCw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICBmdW5j
dGlvblJhcmVEYXRhU3RydWN0dXJlLnNldCgqdGhpcywgRnVuY3Rpb25SYXJlRGF0YTo6Y3JlYXRl
U3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGV4Y2VwdGlvblN0cnVjdHVyZS5z
ZXQoKnRoaXMsIEV4Y2VwdGlvbjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkp
OwogICAgIHByb21pc2VEZWZlcnJlZFN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTUHJvbWlzZURlZmVy
cmVkOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CisgICAgaW50ZXJuYWxQ
cm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU0ludGVybmFsUHJvbWlzZURlZmVy
cmVkOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgaXRlcmF0aW9u
VGVybWluYXRvci5zZXQoKnRoaXMsIEpTRmluYWxPYmplY3Q6OmNyZWF0ZSgqdGhpcywgSlNGaW5h
bE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSwgMSkpKTsKICAgICBz
bWFsbFN0cmluZ3MuaW5pdGlhbGl6ZUNvbW1vblN0cmluZ3MoKnRoaXMpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uaAppbmRleCAxOGFlN2Y3OGEwNjNiNjUxMTNiYTQ4ZWVjNjVhNDU0NGNj
ZGFmYjEwLi5lODNhZjRiZWUxNWI3OTdlNGU4YWI2ZjA0MWVlNmE5NjY3MWQxNTdiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTI5Nyw2ICsyOTcsNyBAQCBjbGFzcyBWTSA6IHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4gewogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGZ1
bmN0aW9uUmFyZURhdGFTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gZXhjZXB0aW9u
U3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHByb21pc2VEZWZlcnJlZFN0cnVjdHVy
ZTsKKyAgICBTdHJvbmc8U3RydWN0dXJlPiBpbnRlcm5hbFByb21pc2VEZWZlcnJlZFN0cnVjdHVy
ZTsKICAgICBTdHJvbmc8SlNDZWxsPiBpdGVyYXRpb25UZXJtaW5hdG9yOwogICAgIFN0cm9uZzxK
U0NlbGw+IGVtcHR5UHJvcGVydHlOYW1lRW51bWVyYXRvcjsKIAo=
</data>
<flag name="review"
          id="284529"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>